diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-07-26 23:45:07 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-07-26 23:45:07 +0000 |
commit | 1836e600234bc53bf0db60cbedc750ed635fd62d (patch) | |
tree | 08ce88c84901fe8f33e88a57767122103a97b632 /clang/test/SemaCXX/lambda-expressions.cpp | |
parent | 3cf7eb50a9b9096f8a26ab2e232f1dd62b221a87 (diff) | |
download | bcm5719-llvm-1836e600234bc53bf0db60cbedc750ed635fd62d.tar.gz bcm5719-llvm-1836e600234bc53bf0db60cbedc750ed635fd62d.zip |
Handle a difference in lambda return type deduction between C++11 and C++1y: if
no return type is specified, C++11 will deduce a cv-qualified return type in
some cases, but C++1y never will.
llvm-svn: 187275
Diffstat (limited to 'clang/test/SemaCXX/lambda-expressions.cpp')
-rw-r--r-- | clang/test/SemaCXX/lambda-expressions.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/test/SemaCXX/lambda-expressions.cpp b/clang/test/SemaCXX/lambda-expressions.cpp index 8736afe4b0b..e8e2eb612a0 100644 --- a/clang/test/SemaCXX/lambda-expressions.cpp +++ b/clang/test/SemaCXX/lambda-expressions.cpp @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 -std=c++0x -Wno-unused-value -fsyntax-only -verify -fblocks %s +// RUN: %clang_cc1 -std=c++11 -Wno-unused-value -fsyntax-only -verify -fblocks %s +// RUN: %clang_cc1 -std=c++1y -Wno-unused-value -fsyntax-only -verify -fblocks %s namespace std { class type_info; }; @@ -251,3 +252,16 @@ namespace PR16708 { return 0; }; } + +namespace TypeDeduction { + struct S {}; + void f() { + const S s {}; + S &&t = [&] { return s; } (); +#if __cplusplus <= 201103L + // expected-error@-2 {{drops qualifiers}} +#else + S &&u = [&] () -> auto { return s; } (); +#endif + } +} |