https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101227
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- clang is failing because of "requirement 'is_constructible_v<Bar::Foo>' was not satisfied [with _Tp = Bar::Foo, _Args = <>]" But it seems like it should be true. from https://en.cppreference.com/w/cpp/types/is_constructible: "If T is an object or reference type and the variable definition T obj(std::declval<Args>()...); is well-formed, provides the member constant value equal to true. In all other cases, value is false. For the purposes of this check, the variable definition is never interpreted as a function declaration, and the use of std::declval is not considered an odr-use. " So the question becomes why is std::is_constructible<Bar::Foo>::value is false.