問題タブ [variadic-templates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 先頭ではなく末尾から可変個引数のテンプレート引数を引き出すにはどうすればよいですか?
ばかげた理由でここには立ち入りませんが、コメントアウトされた行が機能し、その上の行が機能しないようにする必要があります。
と交換しようと_Arg
しまし_Args...
たが、コンパイルされません (少なくとも GCC 4.6 では):
頭ではなく尻尾からアイテムを引き離すにはどうすればよいですか?
c++ - 可変個引数を持つタプル コンテンツの部分特殊化
現在、私はいくつかのコードをさまざまなタイプに異なる方法で反応させようとしています。これは正確なコードではありませんが、メッセージは伝わります。
このコードが示す以上のことを試しましたが、これまでのところ何も機能せず、名前空間以外のスコープでの明示的な特殊化に関する問題に遭遇しました。参考までに、私は gcc 4.6 (oneiric サーバーに付属するもの) に取り組んでおり、可変個引数テンプレートを完全にサポートしていると思います。実装がパラメーター パックの最後の引数と他の型も検出するように機能する場合、それがどれほど醜くなるかは気にしません。助言がありますか?
編集:回答に基づいて使用したソリューションを共有したかった(これは一例です)。
c# - C# で可変個引数テンプレートをシミュレートする
C# で可変個引数テンプレート機能をシミュレートするためのよく知られた方法はありますか?
たとえば、任意のパラメーター セットを持つラムダを取るメソッドを書きたいと思います。ここに私が欲しいものを疑似コードで示します:
c++ - 可変個引数テンプレートを使用してデフォルトパラメータの効果を得るにはどうすればよいですか?
私はしばらくの間この問題にぶつかっていて、それを解決する方法を理解することができません。コンテキストは、C++のリフレクションシステムです。問題のスリムな説明はこれです。私はそれらの2つの構造体を持っています。1つは、ClassTypeタイプの複数の親を表すもので、もう1つは、Orphanクラス(ClassTypeタイプのクラスで、親がないもの)を表します。
次に、反映されるクラスの宣言で、このマクロを使用します。クラスReflectionHelper::Parentsは上記のクラスです。
孤立したクラスの使用法は次のようになります。
ここで問題となるのは、__ VA_ARGS__が空であり、
したがって、は無効です。
これを解決するために私が考えた1つの方法は、デフォルトのテンプレート引数を使用することですが、可変個引数テンプレートでは許可されていません。
誰かがこの問題を解決するためのテクニックを持っていますか?
どうもありがとう
c++11 - 関数呼び出し用に拡張された可変個引数テンプレートパラメータパック
私はそのようなものを探しています:
パラメータパックの展開が別の関数呼び出し内で行われる場合、それは機能します。
パラメーターパックの拡張は、基本クラスの初期化子のリストでも機能します。
'void'を返す関数でも機能するソリューションはありますか?上記の回避策は機能しませんが、パラメーターリスト内でvoidを返す関数呼び出しを使用すると機能しません。
何か案は?
c++11 - 可変数の引数を持つ関数呼び出し
テンプレート引数の数に応じて、可変数の引数で関数呼び出し (関数テンプレート内) を構築することは可能ですか? 何かのようなもの:
c++ - make_unique と完全転送
std::make_unique
標準 C++11 ライブラリに関数テンプレートがないのはなぜですか? 私は見つける
少し冗長です。次のほうがずっといいと思いませんか?
これにより、 がnew
適切に非表示になり、タイプが 1 回だけ言及されます。
とにかく、これが私の実装の試みですmake_unique
:
コンパイルするのにかなり時間がかかりましたが、std::forward
それが正しいかどうかはわかりません。それは...ですか?とはstd::forward<Args>(args)...
どういう意味ですか? コンパイラはそれから何を作りますか?
c++ - メタ演算子の優先順位は何ですか...?
...
テンプレート型のパラメーター パックを展開するメタオペレーターの優先順位は? かなり低いと思いますが、どのくらいですか?C++ 標準は次のように述べています。
演算子の優先順位は直接指定されていませんが、構文から導き出すことができます。
挑戦する人はいますか?もちろん、...
C++03 演算子の優先順位表には表示されません。
では、 が演算子ではない場合、たとえばだけでなく、シーケンス全体に適用される...
ことを正確に決定するものは何ですか?std::forward<Args>(args)...
std::forward<Args>(args)
(args)
c++ - C++11 initializer_list を使用して std::array のようなコンテナーを実装する
唯一の非常に不便な注意点はstd::array
、組み込みの C 配列のように初期化リストからそのサイズを推測できないことです。そのサイズはテンプレートとして渡す必要があります。
initializer_list を使用して std::array のようなコンテナー (組み込み C 配列の薄いラッパー) を実装することは可能C++11
ですか?
std::array とは異なり、イニシャライザ リストから配列のサイズが自動的に推測されるため、より便利です。例えば:
初期化子リストが提供されていない場合は、サイズを指定するコンストラクターも提供する必要があります。例えば:
これにより、コンテナーは他の標準コンテナー (vector、deque、list など) とより一貫したものになります。
私の知る限り、T elems [size] などのラップされた C 配列は一定のサイズでなければならず、initializer_list の size() メンバー関数は一定ではないため、これは不可能です。
また、可変個引数テンプレートを使用してそのようなコンテナーを実装できるかどうか疑問に思っていましたが、私が読んだことからは可能ではないと思います。
c++ - Variadic テンプレート 多次元配列コンテナ
C++0x Variadic Templates Proposal paper Linkには、任意の数の次元をサポートするクラスの例があります。以下にコピーしました。
残念ながら、実装は提供されていません。私は可変個引数テンプレートに比較的慣れていないので、このコンテナーの実装に興味があります。
簡単な実装を提供できる人に感謝します。