c++ 20概念的一个角落是,在某些情况下你必须编写requires requires
。例如,下面的例子来自(expr.prim.req) / 3:
requires-expression也可以在requires-clause ([temp])中使用,作为对模板参数编写特殊约束的方式,如下所示:
template<typename T> requires requires (T x) { x + x; } T add(T a, T b) { return a + b; }
第一个require引入requires-clause,第二个require引入requires-expression。
需要第二个requires
关键字的技术原因是什么?为什么我们不允许这样写:
template<typename T>
requires (T x) { x + x; }
T add(T a, T b) { return a + b; }
(注意:请不要回答语法requires
吧)