【发布时间】:2021-04-29 03:35:46
【问题描述】:
考虑以下示例:
void f() requires true { }
int main() { f(); }
Clang(1) (DEMO) 接受这个程序,而 GCC(1) (DEMO) 拒绝它并出现以下错误:
error: constraints on a non-templated function
请注意,约束表达式实际上可以用于 Clang 的情况,因为以下程序被 Clang 拒绝:
void f() requires false { }
int main() { f(); } // // error: no matching function for call to 'f'
Clang 指出声明的 f 不是候选对象,因为不满足约束条件(因为它是 f() 调用的候选对象;DEMO)。
- 此处哪个编译器是正确的,管理此问题的相关标准规则是什么?
(1) GCC HEAD 11.0.0 20210124 和 Clang HEAD 12.0.0 (20210124),-std=c++20.
【问题讨论】:
-
我个人觉得它们很有趣;我希望您继续发布此类问答。
标签: c++ gcc clang language-lawyer c++20