Wenn Metaprogrammierung in C++, ich laufe oft in etwa wie folgt:Unterschied zwischen std :: Verfall und std :: remove_reference
template <typename T>
S<T> make_wrapper(T&& t) { return S<T>(std::forward<T>(t)); }
Ich weiß, dass ich so etwas wie std::decay
in dem Rückgabetyp verwenden soll, aber Warum würde nicht std::remove_reference
auch funktionieren? Was ist der Unterschied hier? Was ist mit std::remove_cvref
?
[Verfall kann viel mehr tun] (http://en.cppreference.com/w/cpp/types/decay) abhängig davon, was 'T' ist. –
Haben Sie versucht, über sie zu lesen? Zum Beispiel [diese »std :: decay« -Referenz] (http://en.cppreference.com/w/cpp/types/decay) und [diese »std :: remove_reference« -Referenz] (http: //en.cppreference .com/w/cpp/types/remove_reference). –