This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/46394] [C++0X] [4.6 Regression] no matching function with default template parameter
- From: "dodji at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 4 Jan 2011 15:33:16 +0000
- Subject: [Bug c++/46394] [C++0X] [4.6 Regression] no matching function with default template parameter
- Auto-submitted: auto-generated
- References: <bug-46394-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46394
--- Comment #4 from Dodji Seketeli <dodji at gcc dot gnu.org> 2011-01-04 15:32:53 UTC ---
I think what's happening is, at some point during template parameters
fixup (to build proper canonical types for dependent parms) we try to
substitute the U template parameter pack [and the the remaining unamed
template parm] into the pattern of the default argument
std::remote_reference<U>::type... . The TYPENAME_TYPE case of tsubst then
logically calls tsubst_aggr_type on 'std::remote_reference<U>'. That
later function in turn calls lookup_template_class with
std::remote_reference as argument to D1 and a TYPE_PACK_EXPANSION
built for the template parameter U (by template_parm_to_arg) and
argument to ARGLIST.
At that point we are trying to match a template argument which is
a pack expansion with a template parameter that is not a
parameter pack - and we hit
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35722.
So I think I am going to focus on that bug and see.