类模板参数的static_assert

时间:2014-07-10 18:25:51

标签: c++ c++11 assert static-assert

我可以执行以下操作来检查类模板整数参数是否为偶数:

template<int N>
struct S
{
     static_assert( N % 2 == 0, "fail" );
};

这是用gcc 4.8.3编译的,但我不确定这段代码是否违反了C ++ 11标准,以及它是否适用于其他符合标准的编译器。

1 个答案:

答案 0 :(得分:3)

使用static_assert的唯一真正要求是所使用的表达式必须是常量表达式(即该值必须在编译时可以确定),因此如果您尝试使用a,则会遇到问题直到运行时才知道的值。

因此,只要您使用的值是编译时常量,就可以了。