Da quello che ho capito, std::forward<T>(x)
equivale a static_cast<T&&>(x)
.C++ std :: forward <T> vs static_cast <T>
Ma da quello che ho visto, static_cast<T>(x)
sembra fare la stessa cosa, come si può vedere nella seguente code
La mia domanda è quindi il motivo per cui std::forward<T>
è implementato come static_cast<T&&>(x)
, e non static_cast<T>(x)
, se entrambi hanno lo stesso effetto?
Non hai provato con 'int &'. – Quentin
@Quentin In tal caso, restituisce sempre un lvalue. – Mikrosaft
'statico_cast' creerebbe una copia di rvalues –