mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 12:00:11 -05:00
2017-09-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/65949 * g++.dg/cpp1y/lambda-generic-variadic5.C: New. From-SVN: r253322
62 lines
896 B
C
62 lines
896 B
C
// PR c++/65949
|
|
// { dg-do compile { target c++14 } }
|
|
|
|
#include <initializer_list>
|
|
|
|
template<class T, class... Ts>
|
|
struct Over : T, Over<Ts...>::type
|
|
{
|
|
using type = Over;
|
|
|
|
Over(T f1, Ts... f2)
|
|
: T(f1), Over<Ts...>::type(f2...)
|
|
{
|
|
}
|
|
|
|
using T::operator();
|
|
using Over<Ts...>::type::operator();
|
|
};
|
|
|
|
template<class T>
|
|
struct Over<T> : T
|
|
{
|
|
using type = T;
|
|
using T::operator();
|
|
};
|
|
|
|
template <class... Lambdas>
|
|
auto CreateLambdas(Lambdas... lambdas)
|
|
{
|
|
return Over<Lambdas...>(lambdas...);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
auto mesLambda = CreateLambdas
|
|
(
|
|
[]()
|
|
{
|
|
|
|
},
|
|
|
|
[](auto i)
|
|
{
|
|
(void)i;
|
|
},
|
|
|
|
[](auto... args)
|
|
{
|
|
auto list = {args...};
|
|
|
|
for(auto &&a : list)
|
|
(void)a;
|
|
|
|
return 3;
|
|
}
|
|
);
|
|
|
|
mesLambda();
|
|
mesLambda(1);
|
|
mesLambda(12,24,36,48);
|
|
}
|