get rid of std::move for RVO-able rvalues