(More so since c++17) std::move should not be used for returns because this pessimises optimisations.