問題タブ [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 投票する
1 に答える
1164 参照

boost - Spirit.Qi パーサーをコンパイルしようとする際の問題

以下は、完全に自己完結型の例です。問題は行 84 ~ 89 にあるようです。これらの行がコメント アウトされている場合、例はコンパイルされます。私が解析しようとしているのは、コロンで区切られた 5 つの項目を持つファイルの各行で、最後の 3 つの項目はオプションです。単一の関数は を受け取り、boost::filesystem::fileを使用してそれを吸い込みboost.interprocess、解析します。

これを解析したいものの例:

a:1
a:2:c
a:3::d
a:4:::e
a:4:c:d:e

結果は に格納する必要がありvector<file_line>file_line5 つのメンバーを持つ構造体であり、最後の 3 つはオプションです。コードとエラーは次のとおりです。

コード

MSVC 10 からのエラー メッセージ

質問は 30,000 文字に制限されているため、ここでは最初の数件のみを表示します。この例は、あなたのマシンで同じものをコンパイルして生成しようとするはずです。

...中略...

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

c++ - Boost.Fusion関数のリストを使用する

次のコードで、関数オブジェクトのリストをいくつかの値に適用しようとしています。しかし、このコードは err
boost_1_44\boost\fusion\algorithm\iteration\detail\for_each.hpp(82): エラー C2064 を引き起こします:

関数オブジェクトのリストを値に適用する方法は?

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

c++ - Boost Fusion/MPL: タイプをシーケンスから同等の any_range のシーケンスに変換します

any_rangeBoost を使用して、複数の異種データ範囲を処理したいと考えています。データ範囲のタイプは、Fusion ベクトルとして知られています。次に例を示します。

このような型が与えられた場合、次のような型をさらに派生させるためのテンプレートを書きたいと思います。

は次のようにAnyRange定義されます。

私は試して失敗しました。これはFusionでも可能ですか?MPL?あるいは、間違った道を進んでいるのかもしれませんany_range

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

c++ - Boost.FusionなしでBoost.SpiritV2.xを使用することは可能ですか?

Boost.Spirit V2.x(特にBoost.Spirit.Qi)で使用するには、構造体/クラスをBoost.Fusionでラップする必要が本当にありますか?メンバーに割り当てるために、セマンティックアクションを使用したいと思います。私の記憶がうまく機能する場合、これはV1.xで行われていた方法です...

電卓の例は、それがまだ可能であるべきであることを示唆しています。これまでのところ、私はそれを行うための良い方法を見つけていません。

従業員の例でどのように行うかを確認したいと思います。以下はコンパイルされませんが、それを機能させる方法があるかもしれません:

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

c++ - 関数オーバーロード エラー

コードがこのように動作する理由を理解できませんか?

テストコードはこちら

問題は、最初のケースで空のベクトルの func() が呼び出されるのはなぜですか?

このトピックに関するドキュメント:

ブースト::融合::ベクトル

ブースト::フュージョン::make_vector()

ありがとう。

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

c++ - ブースト::スピリット::気。インライン パーサー式をスタンドアロンの文法に変換する方法と、それらによって生成されたタプルをアンパックする方法は?

私は QI と Phoenix を使用しており、セマンティック アクション内の関数呼び出しの引数として使用される 4 つの bool を返す小さな文法を書きたいと考えています。

それらを必要とするいくつかの関数があり、これまでのところ、このアプローチを使用しています。

それ自体は問題ありませんが、名前空間の部分を「使用」していても、あちこちで使用するのは見苦しく、混乱を招きます。

そのため、この表現をスタンドアロンの文法に抽出したいと考えました。

だから私はこれを試しました(クレジットはテストベッドのildjarnに行きます):

fourBools[phx::bind(&noDice, spirit::_1)]に置き換えない限り、コンパイルされませんfourBools[phx::bind(&worksFine, spirit::_1)]

つまり、私の問題は、引数の数が署名レベルで異なるため、呼び出される関数の署名に一致するように引数をアンパックすることです (4 つのブール値の 1 つのタプルと 4 つのブール値自体)。

タプルを個別の必要がある既存の関数の個々の引数に変換するラッパーを記述する代わりに、フェニックスプレースホルダーを直接使用してアンパックすることは可能ですか? もしそうなら、その構文は何ですか?結局のところ、プレースホルダー( qi::_bool >> qi::_bool >> qi::_bool >> qi::_bool)によって「アンパック」されると、インライン バージョンは正常に動作します。spirit::_1 - spirit::_4,

そのため、このバージョンもタプルを返すかのように見え、タプルを返す文法とは異なり、上記のアプローチでは何らかの形でアンパック可能です。

どうすればこれに対処できますか?

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

c++ - ブーストフュージョンの質問

以下をコンパイルするのに問題があります(私はフュージョンが初めてです)。特に、"_" (is_same 内) がどこから来たのかわかりません。ブースト::ラムダから? Boost::mpl? これをコンパイルするには、どのインクルードが必要ですか?

ありがとう!

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

c++ - boost.fusion ベクトル内の要素への参照

編集 - 無視してください - 質問は単純なタイプミスで解決されました。休憩が必要です。

ブースト融合ベクターの要素への参照にアクセスするにはどうすればよいですか?

boost.tuples tuples::get<i>(variable)(参照を返す)とは異なりfusion::at_c<i>(variable)、定数が返されるため、問題が発生します。

以下は私の問題を示しています

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

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

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

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

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

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

ブースト::MPL:

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

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