http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57253
Bug ID: 57253 Summary: GCC ignores ref-qualifiers of pseudo-function types in explicit specializations Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: lucdanton at free dot fr $ g++-snapshot --version g++-snapshot (Debian 20130509-1) 4.9.0 20130509 (experimental) [trunk revision 198734] $ cat main.cpp template<typename T> struct foo; template<> struct foo<void()&> {}; template<> struct foo<void()> {}; int main() {} $ g++-snapshot -std=c++11 main.cpp main.cpp:4:19: error: redefinition of 'struct foo<void()>' template<> struct foo<void()> {}; ^ main.cpp:3:19: error: previous definition of 'struct foo<void()>' template<> struct foo<void()&> {}; ^ Aren't the specializations different, much like specializing on void() and void() const?