我可以执行以下操作来检查类模板整数参数是否为偶数:
template<int N>
struct S
{
static_assert( N % 2 == 0, "fail" );
};
这是用gcc 4.8.3编译的,但我不确定这段代码是否违反了C ++ 11标准,以及它是否适用于其他符合标准的编译器。
答案 0 :(得分:3)
使用static_assert
的唯一真正要求是所使用的表达式必须是常量表达式(即该值必须在编译时可以确定),因此如果您尝试使用a,则会遇到问题直到运行时才知道的值。
因此,只要您使用的值是编译时常量,就可以了。