は、私が2つのstruct
Sがあるとオブジェクトのメンバーを転送しますまたはX&&
~f()
、パーフェクト
template <typename T>
void g(T&& t) {
if (is_lvalue_reference<T>::value) {
f(t.x);
} else {
f(move(t.x));
}
}
上記のコードは私の意図を示していますが、パラメータの数が増えるにつれてスケーラビリティがあまり高くありません。完璧なフォワーディングを実現し、スケーラブルにする方法はありますか?私はよく分からないが、
私が変える 'is_lvalue_reference :: [値] is_lvalue_reference'へを::(t)を考えます)> :: value'はあなたが望むセマンティクスを持っていますが、私はあなたが望むセマンティクスは疑問だと思います... –
ildjarn
(ひどい答えをお送りください。)私はそれが縮尺されていない理由はデザインがまずは疑わしい。サブオブジェクトを「移動」するのはどういう意味ですか?これは主な目的をどの状態で残していますか?これを書く簡単な方法があったとしても、構造化されていないコードのように見えます。 –