// PR c++/123075 // { dg-do compile { target c++20 } } // { dg-additional-options "-fkeep-inline-functions" } template concept r = []{ return true; }(); template inline auto foo() { static_assert(r); r; return []{ return false; }; } template struct S { static_assert(r); decltype([]{ return true; }) l; }; S s; bool use = (foo()() || s.l()); // There should only be one lambda keyed to 'foo()' and 'S::l' // { dg-final { scan-assembler {_ZZ3fooIidEDavENKUlvE_clEv:} } } // { dg-final { scan-assembler {_ZNK1SIcEUlvE_clEv:} } } // { dg-final { scan-assembler-not {_ZZ3fooIidEDavENKUlvE0_clEv:} } } // { dg-final { scan-assembler-not {_ZNK1SIcEUlvE0_clEv:} } }