https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100231
Bug ID: 100231
Summary: [C++17] Variable template specialization inside a
class gives compilation error
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: krzyk240 at gmail dot com
Target Milestone: ---
On the following code:
```
template<class T>
struct X {};
class Foo {
template<class...>
static constexpr inline bool bar = false;
template<class T>
static constexpr inline bool bar<X<T>> = true;
};
```
GCC gives error:
<source>:8:34: error: explicit template argument list not allowed
8 | static constexpr inline bool bar<X<T>> = true;
| ^~~~~~~~~
But Clang, ICC and MSVC compile it correctly.
Defining variable template bar outside of Foo class produces no compile errors.
Compilation command: g++ example.cpp -std=c++17
Live example: https://godbolt.org/z/54hqYxe4P