https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65354
--- Comment #2 from Charlie <charlie at charliedyson dot net> --- Here's a more succinct example (using the "+" trick to convert to a function pointer): #include <iostream> int main () { auto f = +[] (std::string s) { return std::string (std::move (s)); }; std::string s ("hello"); f (std::move (s)); }