[PR87012] canonicalize ref type for tmpl arg
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 19 Dec 2018 06:51:30 +0000 (06:51 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 19 Dec 2018 06:51:30 +0000 (06:51 +0000)
commitde62200f8374e1137b20ea9c85eb690169f43449
tree31ff5fdea79ebfc4e3e256600b38f3932f6f858c
parentbceca9b3f7d9cd935574652edc62a117c8736823
[PR87012] canonicalize ref type for tmpl arg

When binding an object to a template parameter of reference type, we
take the address of the object and dereference that address.  The type
of the address may still carry (template) typedefs, but
verify_unstripped_args_1 rejects such typedefs other than in the top
level of template arguments.

Canonicalizing the type we want to convert to right after any
substitutions or deductions avoids that issue.

for  gcc/cp/ChangeLog

PR c++/87012
* pt.c (convert_template_argument): Canonicalize type after
tsubst/deduce.

for  gcc/testsuite/ChangeLog

PR c++/87012
* g++.dg/cpp0x/pr87012.C: New.

From-SVN: r267251
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/pr87012.C [new file with mode: 0644]