https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68784
--- Comment #5 from Ville Voutilainen <ville.voutilainen at gmail dot com> --- And to add insult to injury, msvc accepts binding lvalue reference to temporaries, and chances are that their thread constructor does what it does partly because of that non-conforming core language extension.