https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111608
Bug ID: 111608
Summary: Cannot declare partial specialization after full
specialization
Product: gcc
Version: 13.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: raplonu.jb at gmail dot com
Target Milestone: ---
The following code fails to compile with GCC 13.2 and under.
// primary template
template<typename T>
struct X {
void f();
};
// definition of full template specialization before partial template
specialization
template<>
void X<int*>::f() {}
// partial template specialization declaration
template<typename T>
struct X<T*> {
void f();
};
int main() {
X<int*>{}.f();
}
gcc give the following message:
error: partial specialization of 'struct X<T*>' after instantiation of 'struct
X<int*>
which seems incorrect since their have different levels of specialization.