【发布时间】:2021-06-30 17:51:23
【问题描述】:
最近意外发现gcc和msvc接受如下代码(注意template-list中的requires-clause):
#include <vector>
template <template <class> requires true class>
void f() {}
int main() {
f<std::vector>();
}
然后叮当rejects它的语法是:
<source>:3:28: error: template template parameter requires 'class' after the parameter list
template <template <class> requires true class>
^
我应该信任哪个编译器?这段代码在语法上有效吗?
【问题讨论】:
-
请记住,许多格式错误的程序都是合法的语法(例如,
int x = "";)。我不确定您是在寻找具体的语法答案,还是在语义上也正确。
标签: c++ templates language-lawyer c++20 c++-concepts