我可以执行以下操作来检查类模板整数参数是否为偶数吗?
template<int N>
struct S
{
static_assert( N % 2 == 0, "fail" );
};
使用gcc 4.8.3进行编译,但我不确定这段代码是否违反c++ 11标准,以及它是否将与其他标准兼容的编译器一起工作。
使用static_assert
的唯一真正要求是所使用的表达式必须是常量表达式(即值必须在编译时可确定),因此如果您试图使用直到运行时才知道的值,您将遇到问题。
所以只要你使用的值是编译时常量,你就应该没问题。