aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/lambda.c
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2016-05-29 08:29:46 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2016-05-29 08:29:46 +0000
commit036dc0a0571c61a55286a21e8e9ef58ddd913e73 (patch)
treeac834b453bda5704a2846736cfcb58809712e130 /gcc/cp/lambda.c
parentb6d4f8e8549572f272cc03869a64d0d02af7ec70 (diff)
downloadgcc-036dc0a0571c61a55286a21e8e9ef58ddd913e73.zip
gcc-036dc0a0571c61a55286a21e8e9ef58ddd913e73.tar.gz
gcc-036dc0a0571c61a55286a21e8e9ef58ddd913e73.tar.bz2
re PR c++/71105 (lambdas with default captures improperly have function pointer conversions)
/cp 2016-05-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71105 * lambda.c (maybe_add_lambda_conv_op): Early return also when LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE. /testsuite 2016-05-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71105 * g++.dg/cpp0x/lambda/lambda-conv11.C: New. * g++.dg/cpp1y/lambda-conv1.C: Likewise. * g++.dg/cpp1y/lambda-conv2.C: Likewise. From-SVN: r236861
Diffstat (limited to 'gcc/cp/lambda.c')
-rw-r--r--gcc/cp/lambda.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index 08d6d82..85ad9f8 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -872,8 +872,10 @@ maybe_add_lambda_conv_op (tree type)
bool nested = (cfun != NULL);
bool nested_def = decl_function_context (TYPE_MAIN_DECL (type));
tree callop = lambda_function (type);
+ tree lam = CLASSTYPE_LAMBDA_EXPR (type);
- if (LAMBDA_EXPR_CAPTURE_LIST (CLASSTYPE_LAMBDA_EXPR (type)) != NULL_TREE)
+ if (LAMBDA_EXPR_CAPTURE_LIST (lam) != NULL_TREE
+ || LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lam) != CPLD_NONE)
return;
if (processing_template_decl)