gpt4 book ai didi

c++ - Requires-clause 出现在模板模板参数 : is this legal grammar? 之后

转载 作者:行者123 更新时间:2023-12-03 15:47:23 24 4
gpt4 key购买 nike

最近意外发现gcc和msvc接受如下代码(注意template-list中的requires-clause):

#include <vector>

template <template <class> requires true class>
void f() {}

int main() {
f<std::vector>();
}
和 clang rejects它的语法为:
<source>:3:28: error: template template parameter requires 'class' after the parameter list
template <template <class> requires true class>
^
我应该信任哪个编译器?这段代码在语法上有效吗?

最佳答案

是的,这似乎是法律语法。模板以 template-head 开头这是

template < template-parameter-list > requires-clause opt


然后是 template-parameter-list

template-parameter


哪里 template-parameter

type-parameter


然后 type-parameter

template-head type-parameter-key ...opt identifieropt


现在这包括模板头,它允许如上所述的要求子句。

关于c++ - Requires-clause 出现在模板模板参数 : is this legal grammar? 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66943348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com