From c6b9be29f270e6adc0922cb6e9be000f7102b663 Mon Sep 17 00:00:00 2001 From: Faisal Vali Date: Sat, 23 Jul 2016 04:05:19 +0000 Subject: [cxx1z-constexpr-lambda] Make a lambda's closure type eligible as a literal-type in C++1z Additionally, for pre-C++1z, instead of forbidding a lambda's closure type from being a literal type through circumlocutorily setting HasNonLiteralTypeFieldsOrBases falsely to true -- handle lambda's more directly in CXXRecordDecl::isLiteral(). One additional small step towards implementing constexpr-lambdas. Thanks to Richard Smith for his review! https://reviews.llvm.org/D22662 llvm-svn: 276514 --- clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp') diff --git a/clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp b/clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp index 8e7657fb6e8..610d8144437 100644 --- a/clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp +++ b/clang/test/SemaCXX/cxx1z-constexpr-lambdas.cpp @@ -1,8 +1,8 @@ // RUN: %clang_cc1 -std=c++1z -verify -fsyntax-only -fblocks %s // RUN: %clang_cc1 -std=c++1z -verify -fsyntax-only -fblocks -fdelayed-template-parsing %s -// RUN: %clang_cc1 -std=c++1z -verify -fsyntax-only -fblocks -fms-extensions %s -// RUN: %clang_cc1 -std=c++1z -verify -fsyntax-only -fblocks -fdelayed-template-parsing -fms-extensions %s +// RUN: %clang_cc1 -std=c++14 -verify -fsyntax-only -fblocks %s -DCPP14_AND_EARLIER +#ifndef CPP14_AND_EARLIER namespace test_constexpr_checking { namespace ns1 { @@ -33,4 +33,16 @@ namespace ns3 { L(3); //expected-note{{non-constexpr function}} } -} // end ns test_constexpr_call \ No newline at end of file +} // end ns test_constexpr_call + +#endif + +namespace test_lambda_is_literal { +#ifdef CPP14_AND_EARLIER +//expected-error@+4{{not a literal type}} +//expected-note@+2{{not an aggregate and has no constexpr constructors}} +#endif +auto L = [] { }; +constexpr int foo(decltype(L) l) { return 0; } + +} \ No newline at end of file -- cgit v1.2.3