Так что в последнем случае мы пропускаем вызов функции-члена.Почему?
Потому что вызов, ну, в общем, отложен.Он начнется только после того, как вы фактически запросите его результаты, например, позвонив get()
на будущее (чего вы не сделали):
auto fut = std::async(std::launch::deferred, Task());
fut.get();
Я могу подумать, что конструктор второго ходавызывается std :: future, не так ли?
Это скорее зависит от реализации, будет ли и сколько вызовов будет у конструктора копирования.Создание его, например, в clang, дало мне даже три вызова конструктору перемещения.Таким образом, просто не беспокойтесь об этом.Но если вы это сделаете, вы должны посмотреть сами реализации стандартной библиотеки, если таковые имеются.