[Bug c++/77435] New: Dependent reference non-type template parameter not matched for partial specialization
ed at catmur dot co.uk
gcc-bugzilla@gcc.gnu.org
Wed Aug 31 20:59:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77435
Bug ID: 77435
Summary: Dependent reference non-type template parameter not
matched for partial specialization
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ed at catmur dot co.uk
Target Milestone: ---
template<int, class T, T> struct S;
template<class T, T A> struct S<0, T, A> {};
int i;
S<0, int*, &i> r; // OK
S<0, int&, i> s; // error: aggregate 'S<0, int&, i> s' has incomplete type
Clang, MSVC accept this.
I can't find anything in [temp.deduct] that would be cause to consider the
partial specialization non-matching.
Workaround is to add a more specialized partial specialization for reference
types:
template<class T, T& A> struct S<0, T&, A> {};
If instead I add a partial specialization for reference non-type parameters,
gcc accepts but clang and MSVC consider ambiguous:
template<class T, T& A> struct S<0, T, A> {};
More information about the Gcc-bugs
mailing list