This is the right way to do this. (Literally nothing to add)
If you are testing it with something like Coliru, note that you will not see any output, say
void asv(std::string s){
std::cout << s << std::endl;
}
(std::launch::async std::launch::deferred) std::launch::deferred, . ( .)
, , . , std::thread - , .
--- ---
, libstd++ swap move ( 27.9). , GCC Clang libstd++, , , , .
, Visual Studio , , , . . . , , std::async .