diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dee21a972b4..9abb9c8d395 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2005-01-07 Nathan Sidwell + + PR c++/19298 + * pt.c (tsubst_qualified_id): Call convert_from_reference. + 2005-01-06 Mark Mitchell PR c++/19244 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index ad852c5a136..972e2669b55 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7648,6 +7648,8 @@ tsubst_qualified_id (tree qualified_id, tree args, (expr, scope, current_class_type)); expr = finish_qualified_id_expr (scope, expr, done, address_p); } + + expr = convert_from_reference (expr); return expr; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 832d43a2505..46a2093794e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-01-07 Nathan Sidwell + + PR c++/19298 + * g++.dg/template/ref2.C: New. + 2005-01-07 Andrew Pinski * gcc.c-torture/compile/pr17529.c (y): Change size of array to 1 diff --git a/gcc/testsuite/g++.dg/template/ref2.C b/gcc/testsuite/g++.dg/template/ref2.C new file mode 100644 index 00000000000..9feb19d2f40 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ref2.C @@ -0,0 +1,27 @@ +// Copyright (C) 2005 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Jan 2005 + +// PR 19298: Rejects legal +// Origin: Andrew Pinski + +struct t +{ + void f() const; +}; + +template +struct A +{ + static t const& c; +}; + +template +void g(void) +{ + A<_Tp>::c.f(); +} + +void h(void) +{ + g(); +}