// 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);
}