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));
}
}
上記のコードは私の意図を示していますが、パラメーターの数が増えるにつれてあまりスケーラブルではありません。完全な転送のために機能させ、スケーラブルにする方法はありますか?