https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61528
--- Comment #4 from Lisp2D <lisp2d at lisp2d dot net> --- Likely error in the standard. The right set of functions must return a copy of the data and return a the temporary link with real data. Working version of it: size_t const & min2(size_t const & x,size_t const & y){ return std::min(x,y);} size_t min2(size_t const && x,size_t const & y){ return {std::min(x,y)};} size_t min2(size_t const & x,size_t const && y){ return {std::min(x,y)};} May be do like this?