Wie üblich Code zuerst:Ist die perfekte Weiterleitung in C++ 0x reference_wrapper veraltet?
#include <functional>
using namespace std;
using namespace std::tr1;
void f(int& r) { r++; }
template<class F, class P> void g1(F f, P t) { f(t); }
template<class F, class P> void g2(F f, P&& t) { f(forward<P>(t)); }
int main()
{
int i = 0;
g1(f, ref(i)); // old way, ugly way
g2(f, i); // new way, elegant way
}
In C++ 98, haben wir nicht eine schöne Art und Weise Parameter durch Template-Funktionen perfekt vereint vorwärts. Also erfanden die C++ - Gurus Ref und Cref, um dieses Ziel zu erreichen.
Nun, da wir r-Wert Referenz und perfekte Weiterleitung hatten, bedeutet das, dass ref und cref und dergleichen veraltet sein sollten?