問題タブ [stdtuple]
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++ - 型のパラメーター パックと対応する値の入力配列を使用して型を構築する
この質問を投稿する前に、ここ、ここ、ここで言及されているアプローチに適合するように既に試みました。ただし、いくつかの調整が必要な中間関数があるため、私の要件を解決することはできませんでした。
基本的に、私が持っているものは次のとおりです。型がパラメーター パックに格納され、対応する値が配列にT
格納されている引数に基づいて、型を構築する必要があります。Args
ARGValue *ptr
ただし、タイプ from の値をARGValue* ptr
タイプ inArgs...
にマップするには、次のような中間操作を行う必要があります。
これを解決するにはどうすればよいですか?Args...
からすべての型の値を安全に取得し、ARGValue*
型を構築するにはどうすればよいT
ですか?
コードが乱雑になる可能性があるため、複数の引数の特殊化を作成したくありません。
c++ - 1 つの参照の C++ 複数転送: 最初にコピーしてから移動する
同じ参照が基本クラスに 2 回転送され、そこでタプルを構築するために使用される次のコードを考えてみましょう。
Derived
最初にasで基本クラス コンストラクターを呼び出しBase<T, T>{t, std::forward<_T>(t)}
、その後でタプル コンストラクターを使用することtup{std::forward<Ts>(ts)...}
には、次の理由があります。
が右辺値参照の場合t
、最初のタプル引数は に左辺値参照を渡されるt
ため、 のコピーを介して構築されますがt
、2 番目のタプル要素は右辺値参照を取得する必要があるため、可能であれば構築に move を使用します。
このアプローチは、ブレース初期化リストがその引数の左から右への評価を実行すると述べているSO に関するいくつかの質問と回答 (たとえば、 here、here、およびhere ) によってサポートされているようです。
ただし、単純な例で上記のコードを使用すると、実際の動作は (一貫して) 予想とは逆になります。
Coliruで gcc を使用した例を次に示します。(gcc コンパイラには、これに関連して 1 回バグがあったようですが、それから約 2 年が経過しており、もはや問題にはなっていないはずです。)
質問:
- ここでの実装または仮定のどこが間違っていますか?
- 上記のコードを修正して、期待どおりに動作させるにはどうすればよいでしょうか: 最初にコピーしてから移動しますか?
c++ - タプルを再帰するにはどうすればよいですか?
要素のベクトルのタプルを格納する可変個引数テンプレート コンテナーを作成しようとしています。このコンテナーのポイントは、すべてのベクトルの要素がすべて関連していることです。後でその相関関係を維持したいのですが、計算には必要ありません。もしよろしければ、vector_3 と何らかのタイプの ref_id を想像してみてください。
コンテナーは、ベクトルを一緒に均一に変異させるだけです。したがって、私が理解している部分は次のようになります。
私は挿入方法に苦労しています。私は次のようなことを考えていました:
しかし、この「挿入者」タプルを初期化する方法がわかりません。私はここでさまざまな再帰テンプレートの例をstackoverflowで見てきましたが、理解するのに十分な時間、頭の中にすべてを保持することはできません.
そのようなタプルがあれば、単純な割り当てを使用できると推測していました。
また、値のタプルを返すすべての配列にまたがるアクセサーを書きたいと思います。
しかし、繰り返しになりますが、このタプルを初期化する方法がわかりません。
これをやりたいと思ったのは私だけではなく、それを学ぶための良いリソースが見つかりません. それまでの間、0x の元の可変個引数テンプレートの提案を消化しようとしています。洞察をいただければ幸いです。私は MSVC 2012 の実装によって制限されています。
c++11 - タプルを異なる項目タイプの別のタプルに変換する方法はありますか?
std::string
タプル内のすべてのアイテムをに変換することは可能const char*
ですか?
私が直面している問題は、可変長テンプレートをファイルに出力しようとすることです
tup の最初の項目はフォーマット文字列 (const char*
確かに) で、残りは出力引数です。引数には が含まれる場合がありますstd::string
。問題は、それfprintf
がかからないことstd::string
です。std::string
タプル内のすべてを別のタプルに変換して形成するにはどうすればよいconst char*
ですか?
tup
プリントが終了する前に範囲外に出ることはありません。
c++ - 呼び出し可能なタプルの結果からタプルを作成する
呼び出し可能な型のタプルがあります。
各 callable の結果の型を持つ別のタプルを作成したいと思います。たとえば、次をfuncs
含むint->int
double->std::string
results
の各要素に依存するタプルを作成するにはどうすればよいですかfuncs
。これは次のようになります。
c++ - 可変個引数テンプレート クラスのコンストラクターでタプル メンバーを初期化する
変数のクラスがあるとします。
次に、変数を含むシステムのクラスを定義します。
System
どういうわけか引数を渡してそれぞれを初期化するコンストラクタを定義するにはどうすればよいvariables
ですか? 私はこのようなものを書くことができるようにしたいと思います: