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

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

可以使用gcc 4.8.3进行编译,但是我不确定该代码是否不违反C++ 11标准,以及是否可以与其他符合标准的编译器一起使用。

最佳答案

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

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

关于c++ - 类模板参数的static_assert,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24683755/

10-10 08:18