std :: async с использованием ссылки на rvalue, привязанной к лямбде

Я пытаюсь связать ссылку Rvalue лямбда с помощьюstd::bind, но у меня есть проблемы, когда я бросаю это вstd::async вызов: (источник)

auto lambda = [] (std::string&& message) {
    std::cout << message << std::endl;
};
auto bound = std::bind(lambda, std::string{"hello world"});
auto future = std::async(bound); // Compiler error here
future.get()

Это приводит к ошибке компилятора, я не совсем уверен, как интерпретировать:

ошибка: нет типа с именем 'type' в 'классе std :: result_of (std :: basic_string)> & ()>'

Что тут происходит? Интересно, что небольшая модификация компилируется и работает как положено. Если я изменюstd::string{"hello world"} к строковому литералу все отлично работает :(источник)

auto lambda = [] (std::string&& message) {
    std::cout << message << std::endl;
};
auto bound = std::bind(lambda, "hello world");
auto future = std::async(bound);
future.get(); // Prints "hello world" as expected

Почему это работает, но не первый пример?

Ответы на вопрос(1)

Ваш ответ на вопрос