https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112642
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Further reduced: #include <string> using namespace std::literals; template<typename T> constexpr auto fold2(T init) { return std::move(init); } template<typename T> constexpr auto fold(T init) { return fold2(std::move(init)); } constexpr auto foo() { return fold(""s); } constexpr auto bar() { return foo().size(); } int main() { constexpr auto i = bar(); return i; }