要在编译时强制评估houghLines
函数,我应该这样做
能够将其返回值分配给constexpr
变量。
constexpr
这似乎适用于constexpr bool const_d_ref(const double& v) { return false; }
int main() {
constexpr double dd = 0.0;
constexpr bool cb = const_d_ref(dd);
}
和g++
。
为了隐藏消费者的clang++
,我移动了实际的功能
定义到constexpr
,创建一个新的函数来分配
将值返回到namespace detail
变量并将其返回。
constexpr
它与namespace detail {
constexpr bool const_d_ref(const double& v) { return false; }
}
constexpr bool const_d_ref(const double& v) {
constexpr bool b = detail::const_d_ref(v);
return b;
}
int main() {
constexpr double dd = 0.0;
bool b = const_t_ref(dd);
constexpr bool cb = detail::const_t_ref(dd);
}
一样正常工作,但g++
返回编译器错误:
错误:constexpr变量' b'必须通过常量表达式初始化
我正在做什么?或clang++
是限制性的?或者clang
是否允许?
答案 0 :(得分:4)
v
中的 constexpr bool const_d_ref(const double& v) {
不是编译时表达式。因此detail::const_d_ref(v)
也不是编译时表达式。
如果您将b
更改为const
:
const bool b = detail::const_d_ref(v);