nya*_*108 2 c++ constexpr c++11
我想建立一个可以选择constexpr-ness的课程.当然,我想利用编译时错误检查.
constexpr当给定参数不是常量表达式时,包含的每个函数(构造函数)也必须在运行时工作.这应该是为什么每次你使用的原因static_assert在constexpr功能后,它无法编译函数参数.
这样说,我已经读过,可以使用抛出mechnanism的异常,因为当函数被调用为常量表达式时,可以在编译时评估这些异常.如果可行,那么对于功能问题就解决了.
但是问题仍然没有解决构造函数,因为constexpr构造函数似乎必须没有正文......所以看起来我不能从那里使用异常抛出!
任何的想法?
以下可能有所帮助
class A
{
public:
constexpr A(int i) : i(i != 42 ? throw 42 : i) {}
private:
int i;
};
int main(int argc, char *argv[])
{
constexpr A a1(42);
//constexpr A a2(41); // Compile error as expected.
return 0;
}
Run Code Online (Sandbox Code Playgroud)