向static_assert添加字符串文字

adding string literal to static_assert

本文关键字:字符串 文字 添加 assert static      更新时间:2023-10-16

是否有一种方法来组合将由static_assert输出的内容?我的意思是:

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

基于不能编译

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,那么我不得不得出结论,这是不可能的。

"字符串字面值由0个或多个由双引号(")包围的源字符集字符组成。字符串字面值表示一个字符序列,这些字符组合在一起形成一个以空结尾的字符串。c++ String literal

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