https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119848
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler@googlemail. | |com --- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- As you say, that is not actually a gcc issue. Even the declaration of this specific member function requires the return type to be a complete type. You can also declare your member function like this to prevent this issue: template<class Ret = Failing> Holder<Ret> return_my_own_type_wrapped();