C++ 20概念的一个角落是,在某些情况下你必须编写requires requires.例如,[expr.prim.req]/3中的这个例子:
甲需要表达也可以在使用需要子句([温度])作为写在模板参数特设约束,如下面的一个的一种方法:
Run Code Online (Sandbox Code Playgroud)template<typename T> requires requires (T x) { x + x; } T add(T a, T b) { return a + b; }第一个需要引入requires子句,第二个需要引入requires-expression.
需要第二个requires关键字的技术原因是什么?为什么我们不能只允许写作:
template<typename T>
requires (T x) { x + x; }
T add(T a, T b) { return a + b; }
Run Code Online (Sandbox Code Playgroud)
(注意:请不要回答那个语法requires吧)