: there are some interesting challenges that one may run into building a compile time format library. In specific, I want to share techniques to answer these questions.
1. How can we pass a constant expression to a metafunction and retain its const-ness? This is easy if the expression is an integral, it gets more difficult when we have types such as const char * or std::tuple.
2. Can we get reasonable error messages? I share a technique to use a combination of SFINAE and static_assert to get cleaner error messages. Namely, we don't want to see all the candidates of operator<<.
I hope you can join me to explore these techniques :)