确认compound-requirement语法是否为simple-requirement加嵌套需求的语法糖
Compound-Requirement 是否为 Simple-Requirement 加嵌套需求的语法糖?
是的,Compound-Requirement 本质就是 Simple-Requirement 后跟对应嵌套需求的语法糖,C++标准在 [expr.prim.req.compound] 章节给出的示例已经明确了这种等价关系:
给定概念C和D,以下Compound-Requirement写法:
requires { { E1 } -> C; { E2 } -> D<A1, …, An>; };
完全等价于展开后的Simple-Requirement加嵌套需求写法:
requires { E1; requires C<decltype((E1))>; E2; requires D<decltype((E2)), A1, …, An>; };
该等价关系同样适用于n=0的场景(即D<> 的情况)。
你提到示例属于嵌套列表项而非 [expr.prim.req.compound-1] 主段落,但这个示例本身就是标准用于定义Compound-Requirement语义的官方说明,足以确认两者的等价性——Compound-Requirement就是对后者写法的语法简化。
内容的提问来源于stack exchange,提问作者Enlico
相关产品推荐
相关产品推荐

