https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110441
--- Comment #2 from Gašper Ažman <gasper.azman at gmail dot com> --- Some more color from twitter, courtesy of @matthewecross: Interestingly both "return S::f();" and "auto s = S(); return s.f();" both pass. It's only when you create a temporary instance of S in the return statement that it fails.