[解決済み] 可変個体関数のすべての引数に対してstd::forwardをどのように呼び出すか?
2022-07-15 04:25:41
質問
私はちょうど汎用オブジェクトファクトリを書いていて、boost プリプロセッサのメタライブラリを使用して可変個体テンプレートを作っていました (2010 を使用していて、それはそれらをサポートしていません)。私の関数は rval 参照を使用し
std::forward
を使用して完璧な転送を行い、私は考えました...C++0X が出て、標準のコンパイラがあれば、本当の可変個体テンプレートでこれを行うでしょう。 しかし、どのようにして
std::forward
を引数で呼び出すのでしょうか?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
私が思いつく唯一の方法は、...paramsを手動で解凍する必要があり、私はまだそこに到達していません。もっと手っ取り早い構文があるのでしょうか?
どのように解決するのですか?
あなたはそうするでしょう。
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
は
...
は、左側にあるものを取り、それぞれのテンプレート・パラメータについて、それに応じて解凍してください、と言っています。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】デバッグアサーションに失敗しました