相关疑难解决方法(0)

使用引用参数嵌套调用 consteval 函数

下面的程序

template<class T>
consteval auto foo(const T&) {
   return 0;
}

template<class T>
consteval auto bar(const T& t) {
   auto n = foo(t);
   return n;
}

int main() {
   static_assert(foo("abc") == 0);
   static_assert(bar("abc") == 0);
}
Run Code Online (Sandbox Code Playgroud)

在 GCC 中构建得很好,但 Clang 拒绝了它,并显示以下消息:

error: call to consteval function 'foo<char[4]>' is not a constant expression
note: in instantiation of function template specialization 'bar<char[4]>' requested here
   static_assert(bar("abc") == 0);
note: function parameter 't' with unknown value cannot be used in a constant expression
   auto …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++20 consteval

8
推荐指数
1
解决办法
492
查看次数

标签 统计

c++ ×1

c++20 ×1

consteval ×1

language-lawyer ×1