From cabe6e4db49d70512f795dd87a2c6e67f2587648 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 25 May 2011 01:08:24 +0000 Subject: [PATCH] PR c++/47336 * error.c (dump_template_bindings): Suppress access control. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174160 138bc75d-0d04-0410-961f-82ee72b054a4 index 28305d2..2477123 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -312,7 +312,9 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) pp_cxx_whitespace (cxx_pp); pp_equal (cxx_pp); pp_cxx_whitespace (cxx_pp); + push_deferring_access_checks (dk_no_check); t = tsubst (t, args, tf_none, NULL_TREE); + pop_deferring_access_checks (); /* Strip typedefs. We can't just use TFF_CHASE_TYPEDEF because pp_simple_type_specifier doesn't know about it. */ t = strip_typedefs (t); new file mode 100644 index 0000000..e7da961 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/error3.C @@ -0,0 +1,24 @@ +// PR c++/47336 +// { dg-options -std=c++0x } + +template +void g(T t) +{ + t+1; // { dg-error "no match" } +} + +template +class C +{ + struct D {} d; +public: + decltype(g(d)) h() + { + return g(d); + } +}; + +int main() +{ + C().h(); +} -- 1.7.0.4