問題タブ [boost-mpl]
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++ - 実行時インデックスに関連する型を取得するには?
私が持っているとしましょうboost::mpl::list< A, B, C ...>
。
実行時にインデックス値を指定して、これらの型の 1 つにアクセスするにはどうすればよいですか? それは可能ですか?
c++ - MPL をブーストして、オブジェクトのシリアライゼーション用のコードを生成しますか?
のシリアライゼーション/デシリアライゼーション コードを生成したい
mpl シーケンスを見て、オブジェクトを識別して取得できるようにする必要があります。メンバーの名前を取得する方法がわかりません。それを知る必要がありますか?
コードは次のようになります
オブジェクトのレイアウトに対応する mpl シーケンスを定義するだけで上記のコードを生成したいのですが、実行できますか?ヒントを教えてください。
私の目的は:
mpl::vector<String, int, long, char>
ユーザーが上記のオブジェクトを定義すると、metaprogram
必要なコードを生成できます。
c++ - boost-mpl を使用した c++ コンパイル時の文字列連結
boost-mpl を使用してコンパイル時に文字列を連結しようとしていますが、gcc からエラーが発生しています。これがサンプルです-
だから、私が達成しようとしているのは:
問題は、gcc の上記のコードが次のエラーをスローすることです。
誰かが上記のコードの問題を指摘し、それを行う正しい方法を説明できますか? ありがとう
EDIT 1: フォーマットの修正といくつかのタイプミス
EDIT 2: Lambdageekの後、Andyの提案により、コードはコンパイルされますが、結果を印刷しようとすると
、コンパイラが不平を言う -
私はテンプレート プログラミングに非常に慣れていないことを認めているので、問題は初歩的なものに違いないと確信しています。助けてくれてありがとう
編集 3: コンバータ構造体の push_back 行を変更しました。
エラー:
c++ - boost::mpl::vector - 型のベース オフセットを取得する
mpl::vector
aを実行した後に a のオフセットを取得することは可能mpl::find<seq,type>
ですか?
別の言い方をすれば、次のコンパイル時間に相当するものを実行したいと考えています。
これに失敗すると、私の型にmpl::vector
はtype_trait<T>::ordinal
const がハードコーディングされています。可能であればこれを避けたいと思います。
重要な注意、私はboost::variant
ベクトルからも作成しています。ランタイム関数を実行することで序数を取得できることがわかりますvariant::which()
。ただし、これには、デフォルトで初期化された値でダミー オブジェクトを作成する必要があります。これはかなり醜いです。バリアントでそれを行う他の方法を知っていれば、それも私の問題の解決策になります。
c++ - boost-mpl比較イテレータ
おやおや、mplライブラリを操作するとき、構文を理解することは当たり前の経験です(前の質問)。2つのmplitteratorを比較するための正しい構文、つまりit != v.end()
テストは何ですか?
アサーションを削除すると、ファンクターはコンパイルされて正常に実行されます。
c++ - boostmplインサーターイテレーターを使用した予期しない結果
私は次のことが同じ結果をもたらすと期待していました:
しかし、そうではありません。
ここで何が起こっているのか分かりますか?
Example
2番目の方法を使用して、タイプのmpl :: vectorを作成します。ここで、
しかし、私はそれを機能させることができません。
どうもありがとう
c++ - メタプログラミング: ブースト mpl::vector のすべてのクラスから継承する
ブースト mpl::vector に含まれる一連のクラスから継承したいと考えています。これは可能ですか?
test
具体的には、mpl::vector として渡される任意の多くのテンプレート パラメーターを拡張したいと考えています。
パラメータが 2 つしかないことがわかっている場合は、次のように簡単に記述できます。
任意の mpl::vector に対してこれを行うことは可能ですか?
私のテストプログラムは次のようになります。
c++ - mpl::transform on boost::fusion::tuple
g++ (GCC) 4.6.0 20110603 (prerelease)
次のコードは、 と-std=c++0x
でコンパイルされませんBoost 1.46.1
。インクルードがありませんか、これは実際にはバグですか? 後者の場合、それを回避する方法は?
boost - boost::MPL と boost::fusion の違い
boost::fusion および boost::mpl ライブラリは初めてです。これら2つのライブラリの主な違いを教えてください。
今までは fusion::vector と他のいくつかの単純なものしか使用していませんでした。現在、fusion::map または MPL::map を使用したいのですが、正しいものを選択する方法がわかりません。
単純型を複雑型 (alisa 型) にマップする必要があります。現在、次のスニペットがあり、両方とも必要なだけ機能します。
ブースト::フュージョン:
ブースト::MPL:
MPLと融合の間に違いはありますか? あるライブラリが別のライブラリよりも優先されるシナリオはありますか?
返信ありがとうございます。
c++ - 複雑な (ネストされた) mpl シーケンスから変換された boost::fusion::result_of::as_set (または as_vector)
::boost::mpl::vector< node_a, node_b, node_c > のような単純な mpl シーケンスから融合シーケンスへの変換は正常に機能します。しかし、後処理された mpl シーケンスを複雑な mpl シーケンス (ネストされた mpl ベクトルなど) から融合シーケンス (result_of::as_set または as_vector を介して) に変換しようとすると、コンパイル時にエラーが発生しました。
「restored_set_type」の出力は次のとおりです。
、しかし、単純な mpl シーケンス ::boost::mpl::vector< node_c, node_b, node_a > とは異なる型情報を失うようです。
タグ、サイズなど、指定するものがありませんでしたか? ありがとう!