任何 type_traits 或方法都可以找出参数是否为 constexpr?
例子
size_t fibo_runtime(size_t num)
{
//implementation
}
constexpr size_t fibo(size_t num)
{
return is_constexpr<size_t>::value ? //this type traits looks weird and unreasonable
(num > 1 ? fibo(num - 1) * num : 1) :
fibo_runtime(num);
}
constexpr 可以应用于 constexpr 参数,并且该参数在运行时确定。但是,递归在运行时可能不够高效。
无论如何,我们是否必须将 constexpr 函数的运行时实现和编译时间分开?如果我们不能这样做,我们是否可以强制用户不能使用 constexpr 函数进行一些运行时评估?