【发布时间】:2012-03-20 15:37:22
【问题描述】:
我有一个看起来像这样的 constexpr 函数:
constexpr int foo(int bar)
{
static_assert(bar>arbitrary_number, "Use a lower number please");
return something_const;
}
然而,用 GCC 4.6.3 编译这个总是告诉我
错误:'bar' 不能出现在常量表达式中
我尝试了类似的东西
constexpr int foo(constexpr const int bar)
{
static_assert(bar>arbitrary_number, "Use a lower number please");
return something_const;
}
但是 constexpr 不能用于函数参数。
是否有一些简单的方法可以告诉编译器 bar 始终是编译时常量?
【问题讨论】:
-
糟糕,完全忘记编纂那部分了。谢谢@Henrik
-
一个 constexpr 函数可以用非 const 参数调用,它只是丧失了它的 constexpr'ness。