問題タブ [boost-fusion]

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 投票する
4 に答える
9971 参照

c++ - Boost Fusionの記事、例、チュートリアル?

boost ::fusionライブラリの使用法に関する優れたリソース/記事/例を知っていますか?

Boost Fusionは非常に興味深く見えます。それがどのように機能し、基本をどのように使用するかは理解していると思いますが、記事やブログ(boost.org自体は別として)などの興味深い使用法/実践を示すリソースを探しています。

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

c++ - mpl::vector から fusion::vector を生成する

fusion::vectorから生成する方法はmpl::vector? mpl::vectorから生成する方法はfusion::vector?

generate_fusion_vectorgenerate_mpl_vectorメタ関数が必要です。私は独自のメタ関数を書くことができますが、それらは既に存在していると思われます。

fusion::map以前にhelpで生成した経験がありresult_of::as_mapましたが、現在のboost(trunk、1.39も)ではこんなエラーが出ます。

私は何が起こっているのか理解できませんか?

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

c++ - boost::mpl::fold を boost::fusion::map で使用するにはどうすればよいですか?

これをコンパイルしようとすると:

次のエラーが表示されます。

Fusion のドキュメントから: 「Fusion は MPL との完全な互換性を提供します。Fusion シーケンスは MPL シーケンスに完全に準拠しており、MPL シーケンスは Fusion と完全に互換性があります。タイプのみで作業したい場合は、MPL で Fusion シーケンスを使用できます。」

boost::mpl::map を渡すと機能します。

手がかりはありますか?

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

c++ - Boost.MPL と型リストの生成

バックグラウンド

これは、ゲーム エンジンのメモリ マネージャー用です。私はfreelist実装しており、これらの場合はコンパイル時のリストが必要です。(たとえば、MPL または融合ベクター)。はfreelist割り当てサイズに対応し、定数より小さいサイズのオブジェクトを割り当て/割り当て解除すると、対応する に移動しfreelistます。

結局のところ、これは小さなオブジェクトが一定時間の割り当てと一定時間の割り当て解除をグローバルに償却したことを意味します。(わーい。)

問題

問題は必要な型を生成することなので、最終的には Fusion を使用してそれらの型をインスタンス化する可能性があります。使用されているタイプは次のとおりです (短縮など):

は、最小値から最大値までの 2 のべき乗サイズのfreelistを管理します。data_blockだから私が欲しいのは:

これを生成するには:

明らかに、これを手動で行うこともできますが、より一般的で微調整可能なインターフェイスのために、それは避けたいと思います。コードでの Fusion ベクターの使用も、ハードコードされたメンバーよりも簡単です。

質問

これについて最善の方法がわかりません。これまで MPL を広範囲に使用したことはありません。何か案は?範囲を作ったり、remove_if2 の累乗ではないなど、いくつかの悪いアイデアがありましたが、確かにそれは最善ではありません。代わりに、毎回倍増して結果ベクトルにプッシュする再帰的なものでしょうか? どうすればいいのかわかりません。

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

c++ - ブーストフュージョン:ベクターの要素数に応じた奇妙な問題

個人的なプロジェクトで Boost::Fusion (Boost v1.42.0) を使用しようとしています。このコードで興味深いエラーが発生します。

コンパイルに失敗します (gcc 4.4.1):

しかし、ベクトルとメソッドの引数の数を 6 から 5 に変更すると、int,float,float,char,int,int問題int,float,float,char,intなくコンパイルできます。

引数の最大数が制限されているのではないかと疑っていましたが、定義して変更しようとしましたがFUSION_MAX_VECTOR_SIZE成功しませんでした。

何が間違っているのかわかりません。これを再現できますか?ブーストバグでしょうか(疑いますが、不可能ではありません)?

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

c++ - boost ::fusion :: push_backの適切な使用法は何ですか?

for_each(newStuff、chug())を機能させるにはどうすればよいですか?

(注: boost ::fusionに関する非常に短いドキュメントから、 push_backを呼び出すたびに新しいベクトルを作成することになっていると想定しているだけです。)

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

c++ - 異種コンテナでboost::fusion:: transformを使用する方法は?

Fusion::transformのBoost.orgのは次のとおりです。

しかし、私は「それを理解している」わけではありません。それらの例のベクトルには、すべて同じタイプの要素が含まれていますが、融合を使用する主なポイントは、異種タイプのコンテナーです。彼らがmake_vector(1, 'a', "howdy")代わりに使用した場合はどうなりますか?

int operator()(int t)
になる必要があります
template<typename T> T& operator()(T& const t)

しかし、どのようにresult_typeを記述しますか?template<typename T> typedef T& result_type確かに有効な構文ではありません。関数に関連付けられていないため、有効な構文であっても意味がありません。

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

c++ - boost ::fusionの記事、例、ガイド、チュートリアルはどこにありますか?

受け入れられた答えは本質的に「いいえ、ガイドなし」であり、質問されてからほぼ1年が経過しているため、この質問を恥知らずに複製します。boost.orgの最低限のドキュメント以外に、boost ::fusionに役立つ記事、ガイド、チュートリアルなどを知っている人はいますか?(これは、図書館を学んだ後の参考資料としては素晴らしいと思います。)たとえば、Amazonの本へのリンクを完全に開いています。たった今自分で探しましたが、思いついたのは緑茶だけでした。グーグルのトップリンクはそれほど良くはありません。

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

c++ - Boost.Fusion Functional:デフォルトの引数を使用して関数を呼び出す

boost ::fusion :: invoke関数を使用して、デフォルトの引数を持つ関数を指定せずに呼び出すことは可能ですか?

スクリプト言語にバインドするためのラッパーを作成しています。デフォルトの引数を使用すると、ラッパーのユーザーの直感的な感覚が大幅に向上します。規格はこのケースをカバーしていませんが、私は恐れています。

補足:
ファンクターを使用して回避できることはわかっています。

ただし、デフォルトの引数を指定するためだけにユーザーにファンクターを作成させたくないので、これはオプションではありません。