Secondo this link, la deduzione argomento argomento non consentita per std::forward
e std::remove_reference
ci sta aiutando a raggiungere questo obiettivo. Ma in che modo utilizzare remove_reference
impedisce che la deduzione del modello si verifichi qui?In che modo remove_reference disabilita le deduzioni degli argomenti del modello?
template <class S>
S&& forward(typename std::remove_reference<S>::type& t) noexcept
{
return static_cast<S&&>(t);
}
"Potrei avere un tipo completamente diverso' Foo' per il quale sono specializzato 'remove_reference' per avere il tipo 'int'." Questo è tecnicamente UB :) –
@ T.C. Ok, rimuoverò quella parte. Non vorrei diffondere cattive idee! – Barry
Raccomando di riformulare "perché S è lo specificatore del nome nidificato" per qualcosa di simile "perché S appare nello specificatore nome-nidificato" –