// PR c++/71386
// { dg-do run { target c++14 } }
template<class...XS>
auto List(XS...xs)
{
  return [=](auto processList){return processList(xs...);};
}
auto l1 = List(42);
int test (int a)
{
  if (a != 42)
    __builtin_abort ();
  return 0;
}
auto foo = [](auto... xs1)
  {
    return [=]()
    { 
      return l1([=](auto)
      {
	return test (xs1...);
      });
    };
  };
int main()
{
  auto concat = l1(foo);
  concat();
}