diff options
Diffstat (limited to 'clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp')
-rw-r--r-- | clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp b/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp index b8022d20912..5c1eb32ad2c 100644 --- a/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp +++ b/clang/test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp @@ -122,3 +122,16 @@ namespace PR33082 { b(Pack<int*, float*>(), 1, 2, 3); // expected-note {{instantiation of}} } } + +void pr42587() { + (void)[](auto... args) -> decltype(args) {}; // expected-error {{type contains unexpanded parameter pack}} + (void)[](auto... args, int = args) {}; // expected-error {{default argument contains unexpanded parameter pack}} + (void)[](auto... args, decltype(args)) {}; // expected-error {{type contains unexpanded parameter pack}} + (void)[](auto... args, decltype(args)...) {}; // (ok) + (void)[](auto... args, int = [=] { return args; }()) {}; // expected-error {{default argument contains unexpanded parameter pack}} + (void)([]<typename ...T> (T t) {} + ...); // expected-error {{contains unexpanded parameter pack 'T'}} expected-error {{does not contain any unexpanded}} expected-warning 0-2{{extension}} + (void)([]<int ...N> (int k = N) {} + ...); // expected-error {{contains unexpanded parameter pack 'N'}} expected-error {{does not contain any unexpanded}} expected-warning 0-2{{extension}} + (void)([]<template<typename> typename ...T> (T<int>) {} + ...); // expected-error {{contains unexpanded parameter pack 'T'}} expected-error {{does not contain any unexpanded}} expected-warning 0-3{{extension}} +} + +template<typename ...T> int v = {[...x = T()] { int k = x; } ...}; // expected-error {{contains unexpanded parameter pack 'x'}} expected-error {{does not contain any unexpanded}} expected-warning 0-1{{extension}} |