// PR c++/54947
// { dg-do compile { target c++11 } }

struct X
{
  template<typename L>
    X(L)
    { }
};

template<typename A>
  void
  test()
  {
    int i = 0;

    A a_ok_1( [=] { return i; } );  // OK
    A a_ok_2( [i] { return i; } );  // OK

    A a_err_1{ [i] { return i; } };  // error
    A a_err_2{ [=] { return i; } };  // error
  }

int main()
{
  test<X>();
}
