Скажем, я хочу static_cast объект типа S
, набрать T
и переместить присвоить результат:
template <typename S, typename T>
void f(T& t, S s);
Я могу придумать четыре способа написать:
template <typename S, typename T>
void f(T& t, S s) {
t = static_cast<T>(s);
t = static_cast<T>(std::move(s));
t = static_cast<std::remove_reference_t<T>&&>(s);
t = static_cast<std::remove_reference_t<T>&&>(std::move(s));
}
Некоторые или все эти четыре строки делают одно и то же? Какой предпочтительный способ сделать это?