将字符串文字添加到static_assert

时间:2011-04-09 09:56:01

标签: 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
};

1 个答案:

答案 0 :(得分:2)

基于此不编译

int main()
{
   const char c[2] = "1";
   static_assert(1==1, c)
}

也不是这个

int main()
{
   const char* c = "1";
   static_assert(1==1, c)
}

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

“字符串文字由源字符集中的零个或多个字符组成,由双引号(”)包围。字符串文字表示一系列字符,它们一起形成一个以空字符结尾的字符串。“ - C++ String Literals

您可能需要考虑使用Boost::StaticAssert,因为这可能会为您提供所需内容。