diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:11:37 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:11:37 +0000 |
commit | 461a67fa15370a9ec88f8f8a240bf7c123bb2029 (patch) | |
tree | 6942083d7d56bba40ec790a453ca58ad3baf6832 /test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp | |
parent | 75c3240472ba6ac2669ee72ca67eb72d4e2851fc (diff) |
Vendor import of clang trunk r321017:vendor/clang/clang-trunk-r321017
Notes
Notes:
svn path=/vendor/clang/dist/; revision=326941
svn path=/vendor/clang/clang-trunk-r321017/; revision=326942; tag=vendor/clang/clang-trunk-r321017
Diffstat (limited to 'test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp')
-rw-r--r-- | test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp b/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp index b0b86e387721..b8022d209122 100644 --- a/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp +++ b/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp @@ -98,3 +98,27 @@ namespace variadic_expansion { } #endif +namespace PR33082 { + template<int ...I> void a() { + int arr[] = { [](auto ...K) { (void)I; } ... }; // expected-error {{no viable conversion}} expected-note {{candidate}} + } + + template<typename ...T> struct Pack {}; + template<typename ...T, typename ...U> void b(Pack<U...>, T ...t) { + int arr[] = {[t...]() { // expected-error 2{{cannot initialize an array element of type 'int' with}} + U u; + return u; + }()...}; + } + + void c() { + int arr[] = {[](auto... v) { + v; // expected-error {{unexpanded parameter pack 'v'}} + }...}; // expected-error {{pack expansion does not contain any unexpanded parameter packs}} + } + + void run() { + a<1>(); // expected-note {{instantiation of}} + b(Pack<int*, float*>(), 1, 2, 3); // expected-note {{instantiation of}} + } +} |