問題タブ [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.

0 投票する
1 に答える
205 参照

c++ - 実行時インデックスに関連する型を取得するには?

私が持っているとしましょうboost::mpl::list< A, B, C ...>

実行時にインデックス値を指定して、これらの型の 1 つにアクセスするにはどうすればよいですか? それは可能ですか?

0 投票する
3 に答える
965 参照

c++ - MPL をブーストして、オブジェクトのシリアライゼーション用のコードを生成しますか?

のシリアライゼーション/デシリアライゼーション コードを生成したい

mpl シーケンスを見て、オブジェクトを識別して取得できるようにする必要があります。メンバーの名前を取得する方法がわかりません。それを知る必要がありますか?

コードは次のようになります

オブジェクトのレイアウトに対応する mpl シーケンスを定義するだけで上記のコードを生成したいのですが、実行できますか?ヒントを教えてください。

私の目的は:

mpl::vector<String, int, long, char>ユーザーが上記のオブジェクトを定義すると、metaprogram必要なコードを生成できます。

0 投票する
3 に答える
2224 参照

c++ - boost-mpl を使用した c++ コンパイル時の文字列連結

boost-mpl を使用してコンパイル時に文字列を連結しようとしていますが、gcc からエラーが発生しています。これがサンプルです-

だから、私が達成しようとしているのは:

問題は、gcc の上記のコードが次のエラーをスローすることです。

誰かが上記のコードの問題を指摘し、それを行う正しい方法を説明できますか? ありがとう

EDIT 1: フォーマットの修正といくつかのタイプミス

EDIT 2: Lambdageekの後、Andyの提案により、コードはコンパイルされますが、結果を印刷しようとすると

、コンパイラが不平を言う -

私はテンプレート プログラミングに非常に慣れていないことを認めているので、問題は初歩的なものに違いないと確信しています。助けてくれてありがとう

編集 3: コンバータ構造体の push_back 行を変更しました。

エラー:

0 投票する
2 に答える
987 参照

c++ - boost::mpl::vector - 型のベース オフセットを取得する

mpl::vectoraを実行した後に a のオフセットを取得することは可能mpl::find<seq,type>ですか?

別の言い方をすれば、次のコンパイル時間に相当するものを実行したいと考えています。

これに失敗すると、私の型にmpl::vectortype_trait<T>::ordinalconst がハードコーディングされています。可能であればこれを避けたいと思います。

重要な注意、私はboost::variantベクトルからも作成しています。ランタイム関数を実行することで序数を取得できることがわかりますvariant::which()。ただし、これには、デフォルトで初期化された値でダミー オブジェクトを作成する必要があります。これはかなり醜いです。バリアントでそれを行う他の方法を知っていれば、それも私の問題の解決策になります。

0 投票する
1 に答える
385 参照

c++ - boost-mpl比較イテレータ

おやおや、mplライブラリを操作するとき、構文を理解することは当たり前の経験です(前の質問)。2つのmplitteratorを比較するための正しい構文、つまりit != v.end()テストは何ですか?

アサーションを削除すると、ファンクターはコンパイルされて正常に実行されます。

0 投票する
1 に答える
542 参照

c++ - boostmplインサーターイテレーターを使用した予期しない結果

私は次のことが同じ結果をもたらすと期待していました:

しかし、そうではありません。

ここで何が起こっているのか分かりますか?

Example2番目の方法を使用して、タイプのmpl :: vectorを作成します。ここで、

しかし、私はそれを機能させることができません。

どうもありがとう

0 投票する
1 に答える
923 参照

c++ - メタプログラミング: ブースト mpl::vector のすべてのクラスから継承する

ブースト mpl::vector に含まれる一連のクラスから継承したいと考えています。これは可能ですか?

test具体的には、mpl::vector として渡される任意の多くのテンプレート パラメーターを拡張したいと考えています。

パラメータが 2 つしかないことがわかっている場合は、次のように簡単に記述できます。

任意の mpl::vector に対してこれを行うことは可能ですか?

私のテストプログラムは次のようになります。

0 投票する
2 に答える
1141 参照

c++ - mpl::transform on boost::fusion::tuple

g++ (GCC) 4.6.0 20110603 (prerelease)次のコードは、 と-std=c++0xでコンパイルされませんBoost 1.46.1。インクルードがありませんか、これは実際にはバグですか? 後者の場合、それを回避する方法は?

0 投票する
2 に答える
2247 参照

boost - boost::MPL と boost::fusion の違い

boost::fusion および boost::mpl ライブラリは初めてです。これら2つのライブラリの主な違いを教えてください。

今までは fusion::vector と他のいくつかの単純なものしか使用していませんでした。現在、fusion::map または MPL::map を使用したいのですが、正しいものを選択する方法がわかりません。

単純型を複雑型 (alisa 型) にマップする必要があります。現在、次のスニペットがあり、両方とも必要なだけ機能します。

ブースト::フュージョン:

ブースト::MPL:

MPLと融合の間に違いはありますか? あるライブラリが別のライブラリよりも優先されるシナリオはありますか?

返信ありがとうございます。

0 投票する
1 に答える
1615 参照

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 > とは異なる型情報を失うようです。

タグ、サイズなど、指定するものがありませんでしたか? ありがとう!