Gemäß this link hilft uns der Vorlagenargumentabzug, der für std::forward
und std::remove_reference
nicht zulässig ist, uns dies zu erreichen. Aber wie verhindert die Verwendung von remove_reference
hier den Abzug von Vorlagen? DieseWie remove_reference Schablonenargumentabzüge deaktivieren?
template <class S>
S&& forward(typename std::remove_reference<S>::type& t) noexcept
{
return static_cast<S&&>(t);
}
"Ich könnte einen völlig unzusammenhängenden Typ' Foo' haben, auf den ich mich spezialisiert habe "remove_reference', um den Typ 'int' zu haben." Das ist technisch UB :) –
@ T.C. Ok, ich werde diesen Teil entfernen. Ich möchte keine schlechten Ideen verbreiten! – Barry
Ich empfehle, "weil S ist der Nested-Name-Specifier" zu etwas wie "weil S erscheint im Nested-Name-Specifier" umformulieren –