C ++ 20概念的角落之一是在某些情况下您必须编写requires requires
。例如,此示例来自[expr.prim.req] / 3:
甲需要表达也可以在使用需要子句([温度])作为写在模板参数特设约束,如下面的一个的一种方法:
template<typename T> requires requires (T x) { x + x; } T add(T a, T b) { return a + b; }
第一个需求引入了require-clause,第二个需求引入了require-expression。
需要第二个requires
关键字的技术原因是什么?为什么我们不能只允许写作:
template<typename T>
requires (T x) { x + x; }
T add(T a, T b) { return a + b; }
(注意:请不要回答语法requires
问题)
requires
我认为这两个是同音异义词:它们看起来相同,拼写相同,气味相同,但是本质上是不同的。如果我建议修复,则建议重命名其中之一。
co_requires
吗?(对不起,无法抗拒)。
long long
。
noexcept(noexcept(...))
。