いつものように、コード:C++ 98ではC++で完璧な転送を行うと、reference_wrapperは非推奨になりますか?最初
#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
}
は、我々はテンプレート関数によってパラメータを前方pefectするための良い方法はありません。だからC++の達人はその目的を達成するためにrefとcrefを発明しました。
r値参照と完璧な転送ができたので、refやcrefなどを非推奨にする必要がありますか?