(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
cpp0x/
pr83160.C
// { dg-do run { target c++11 } }
// PR c++/83160 failed to capture as lvalue

int main ()
{
  const int a = 0;

  if (![&a] (const int *p)
      {
	const int &b = a;
	// We should bind to the outer a
	return &b == p;
      } (&a))
    return 1;

  if (![&] (const int *p)
      {
	const int &b = a;
	// We should bind to the outer a
	return &b == p;
      } (&a))
    return 2;

  if ([=] (const int *p)
      {
	const int &b = a;
	// We should bind to the captured instance
	return &b == p;
      }(&a))
    return 3;

  return 0;
}