相关疑难解决方法(0)

编译时constexpr错误,但在运行时没有开销

有一个众所周知的技巧,constexpr通过执行以下操作来在函数求值中导致编译时错误:

constexpr int f(int x) {
    return (x != 0) ? x : throw std::logic_error("Oh no!");
}
Run Code Online (Sandbox Code Playgroud)

如果在constexpr上下文中使用该函数,则会出现编译时错误x == 0.但是,如果参数f不是constexpr,那么它将在运行时抛出异常x == 0,但由于性能原因,这可能并不总是需要.

类似于assert被保护的理论NDEBUG,是否有一种方法可以导致constexpr函数的编译时错误,但是在运行时没有做任何事情?

最后,constexprC++ 1y(C++ 14)中的宽松规则会改变什么吗?

c++ constexpr c++11 c++14

25
推荐指数
1
解决办法
4695
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

constexpr ×1