将字符串文字添加到 static_assert

The*_* do 5 c++ static-assert

有没有办法结合 static_assert 的输出?我的意思是这样的:

template<class T>
struct X
{
static_assert(std::is_signed<T>::value, "Type " + T + " must be signed.");//this doesn't work
};
Run Code Online (Sandbox Code Playgroud)

bri*_*ler 4

在此基础上,不能编译

int main()
{
   const char c[2] = "1";
   static_assert(1==1, c)
}
Run Code Online (Sandbox Code Playgroud)

也不是这个

int main()
{
   const char* c = "1";
   static_assert(1==1, c)
}
Run Code Online (Sandbox Code Playgroud)

两者都有错误,error: expected a string literal那么我就不得不得出结论,这是不可能的。

“字符串文字由源字符集中的零个或多个字符组成,并用双引号 (") 括起来。字符串文字表示一个字符序列,这些字符组合在一起形成一个以 null 结尾的字符串。” - C++ 字符串文字

您可能需要考虑使用,Boost::StaticAssert因为这可能会给您带来您正在寻找的东西。