view gcc/testsuite/g++.dg/cpp1y/auto-fn33.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/77337
// { dg-do compile { target c++14 } }

template<typename Functor>
struct fix_type {
  Functor functor;

  decltype(auto) operator()()
  { return functor(*this); }
};

template<typename Functor>
fix_type<Functor> fix(Functor functor)
{ return { functor }; }

int main()
{
  auto zero = fix
    ([](auto& self) -> int // N.B. non-deduced, non-dependent return type
     {
       return 0;

       self(); // { dg-bogus "use of \[^\n\r]* before deduction of 'auto'" }
     });

  return zero();
}