https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93048
--- Comment #4 from Pilar Latiesa <pilarlatiesa at gmail dot com> --- Minimal testcase ;-) #include <valarray> struct TTensor {}; struct TCoefs { double aP; std::valarray<double> aF; TTensor b; }; TCoefs CalcCoefs() { double aP = 0.0; return {aP, {}, {}}; } I still don't understand why one of the members must be std::valarray. With a contrived valarray class with the same constructors and noexcept qualifiers as the std version the code compiles fine.