問題タブ [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++ - std::tuple から "cons list" 動作を取得できますか?
std::tuple のすべての要素を設定する関数を再帰的に定義したいと考えています。boost::tuple の場合は、ここを見て、この例をコピーします。
これまでのところ、std::tuple についてそれほど単純なものは見つかりません。近いものはありますか?
更新: わかりました、問題をもう少し具体化する必要があります。
私は、タプルをラップするクラス foo を書いています。これは、すべての要素を設定する 1 つだけで、多くのことを行うためです。この種の foo の再帰的な定義を維持したいと考えていましたが、boost::tuples から std::tuples に切り替えました。
c++ - 大きなプロジェクトでの c++11 std::tuple の使用
C++11 は非常に便利なコンテナ std::tuple を追加しました。今では多くの構造体を std::tuple に変換できます:
に
ただし、大きなプロジェクトで std::tuple を使用する場合の欠点が 1 つだけあります。タプルの各タイプの意味を簡単に忘れてしまう可能性があります。これは、名前ではなく、インデックスのみでアクセスするためです。
そのため、古い Field クラスを使用します。
私の質問は、この欠点をシンプルかつ美しく解決できるかということです。
c++ - 可変個引数テンプレート パラメーターを抽出/展開する方法
t1
なるstd::tuple<QList<int>, QList<double>>
t2
なるstd::tuple<QVector<int>, QVector<double>>
これが一般的に可能かどうかはわかりません。現在、私はそのためにプリプロセッサマジックを使用しています。しかし、可変個引数テンプレートでもそれができることを願っていました。では、テンプレートを抽出するために再帰的なことなどを行うことはできますか?
c++ - C++ のオーバーロードされた関数を異種のタプルにマップしますか?
C++ では、オーバーロードされた関数を異種のタプルにマップすることは可能ですか? 例えば:
の同じオーバーロードされたインスタンスを各タプル要素にマップするマップ関数を作成できますが(以下のコード)、の呼び出しからinsideの呼び出しまでf
のオーバーロードの解決を延期する方法がわかりません。誰もこれを行う方法を考え出しましたか?f
map
f
map
オーバーロードされた関数の単一のインスタンスをタプルにマップするコードは次のとおりです (seq と gens はこの回答https://stackoverflow.com/a/7858971/431282から取得されます):
c++ - C++ std::tuple 射影関数の作成
の射影関数を探していstd::tuple
ます。つまり、関数はテンプレート パラメータとして整数のリストを受け取り、これらのインデックスの値のみを持つタプルを返します。
たとえば、 タプル があるとします。tuple<int,String,char,float> t
を呼び出すとproject<1,3>(t)
タイプ のタプルになりtuple<String,float>
ます。
もちろん、キーは再帰的なテンプレートのようです。しかし、私はそれを機能させることができません。射影演算の戻り値の型を計算する構造体を宣言することから始めてみました。それでも失敗します。これが私が試したものです:
これはコンパイルされます。空のタプルを使用した基本ケースも機能します。つまり、次のようになります。
t
空のタプルになります。ただし、再帰ケースはコンパイルされません。
次のエラーが表示されます。
再帰ケースが認識されないようですが、なぜですか?
c++ - std::array コンパイル時間控除
待っているデータ型を指定して、バッファを自動的にデコードしようとしたコードがあります。データはタプルとして表されます。
また、タプルを反復処理し、タプルごとにファンクターを実行するタプル ヘプラーもあります。
そして、ここに私のデコーダファンクタがあります:
そして、これがコードが呼び出される場所です:
したがって、すべてが整数型で正常に機能し、完全にデコードされます。ただし、新しいデコード メソッド (配列用) を実装しようとすると、コンパイルされませんでした。
これがエラーです(gcc-4.9)。
したがって、このエラーが発生する理由がわかりません。テストのため、データは正しくstd::is_integral<X>::value
評価されるべきではありませんか?DecodeIntegral( x, buffer, index );
これは進行中の作業であるため、いくつかの間違いや改善点があることは間違いありません。そして、あなたの助けに感謝します!