将字符串文字添加到 static_assert

发布于 2024-10-31 11:08:57 字数 206 浏览 3 评论 0原文

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

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

Is there a way to combine what's going to be output by static_assert? What I mean is this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泪是无色的血 2024-11-07 11:08:57

基于这不能编译

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

或这

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

两者都出现错误错误:预期字符串文字,那么我不得不得出结论,这是不可能的。

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

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

On the basis that this does not compile

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

nor this

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

Both with errors error: expected a string literal then I would have to conclude that it is not possible.

"A string literal consists of zero or more characters from the source character set surrounded by double quotation marks ("). A string literal represents a sequence of characters that, taken together, form a null-terminated string." - C++ String Literals

You might want to consider using Boost::StaticAssert as this might give you what you are looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文