2 つstructのがあるとします。
struct X {};
struct Y { X x; }
私は機能を持っています:
void f(X&);
void f(X&&);
それぞれ、または完全な転送またはtog()を取る関数を作成するにはどうすればよいですか。Y&Y&&X&X&&f()
template <typename T>
void g(T&& t) {
if (is_lvalue_reference<T>::value) {
f(t.x);
} else {
f(move(t.x));
}
}
上記のコードは私の意図を示していますが、パラメーターの数が増えるにつれてあまりスケーラブルではありません。完全な転送のために機能させ、スケーラブルにする方法はありますか?