c++ 20模板id问题



我用std=c++17编译了这段代码。

现在迁移到c++20.

出现错误。

template<typename T>
struct S {
S<T>(){};
};
error expected unqualified-id before ')' token line 3

是否有一个解决方案来避免这个问题而不修改代码,因为它属于一个外部库?

PS: gcc 11.1正在报告问题,但没有clang !!

https://godbolt.org/z/svqY77WTP

这可能不是c++的问题,而是编译器的问题。Gcc版本8.3工作正常,如下所示。

$ cat test.cpp
#include <iostream>
template<typename T>
struct S {
S<T>(){};
};
int main() {
std::cout << "hellon";
}
$ g++ -std=c++2a test.cpp
$ $ ./a.out 
hello
$ g++ -v 2>&1 | grep "gcc version"
gcc version 8.3.0 (Debian 8.3.0-6) 

最新更新