re PR c++/48523 ([C++0x] lambda cannot capture 'this' in class template)

PR c++/48523
	* tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
	than cp_build_indirect_ref.

From-SVN: r172283
This commit is contained in:
Jason Merrill 2011-04-11 18:00:20 -04:00 committed by Jason Merrill
parent b24290fb5b
commit ac4b1cc036
4 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,9 @@
2011-04-11 Jason Merrill <jason@redhat.com>
PR c++/48523
* tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
than cp_build_indirect_ref.
PR c++/48457, Core 1238
* call.c (reference_binding): Allow rvalue reference to bind to
function lvalue.

View File

@ -2423,7 +2423,7 @@ maybe_dummy_object (tree type, tree* binfop)
else if (current != current_class_type
&& context == nonlambda_method_basetype ())
/* In a lambda, need to go through 'this' capture. */
decl = (cp_build_indirect_ref
decl = (build_x_indirect_ref
((lambda_expr_this_capture
(CLASSTYPE_LAMBDA_EXPR (current_class_type))),
RO_NULL, tf_warning_or_error));

View File

@ -1,5 +1,7 @@
2011-04-11 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/lambda/lambda-this4.C: New.
* g++.dg/cpp0x/rv-func.C: New.
2011-04-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>

View File

@ -0,0 +1,13 @@
// PR c++/48523
// { dg-options -std=c++0x }
template<typename>
struct X
{
bool b;
void f()
{
[this]{ return b; };
}
};