Hi,

C++20 will bring about constraints and concepts, which will provide more useful messages for diagnosing errors. However, as far as I know, it is still not possible to throw at compile-time custom error messages built from compile-time information. 

Our current mechanism for doing something along those lines is to use static_assert, but that requires the provided message to be a string literal. My suggestion here is to relax this restriction to allow messages to be a constexpr static char const* type. 

With the ability to handle compile-time strings (char const*) much more easily in C++20, it would then be feasible to do something like the following:

template<typename T, typename S>
constexpr void foo(){
constexpr auto t_size = sizeof(T);
constexpr auto s_size = sizeof(S);
constexpr bool same = (t_size == s_size);
constexpr static char const* msg = str_lit<"These are not the same", t_size, s_size>{}; // Build a constexpr static char const* with the embedded compile-time sizes
static_assert(!same, msg); 
}

Is something like this already possible, and if not, does this idea interest anyone?

Thanks,

Garrett