我用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)