問題タブ [boost-phoenix]
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 Phoenix のコンパイル エラー
Boost Phoenixを使ってみました。私の目的は、ここで説明されているように、イテレータの範囲ではなくコンテナを取る stl アルゴリズムを持つこと です。ただし、かなり単純なコードで大量のエラーが発生しています。
Boostの複数の部分を使用する2つのプラットフォーム(Win7、Ubuntu)で試しました。
エラーメッセージはかなり長いので、ファイルに入れました:
テンプレートが正しくコンパイルされていないことを除けば、実際には多くのエラーを発生させることはできませんが、かなり単純なものが欠けていると思います。
c++ - オブジェクトメンバー、インダイレクション、およびキャストを含むソートアルゴリズムのラムダ関数を実装する方法は?
私はいくつかのコードに取り組んでおり、1 回限りのソート機能を実行するセクションがあります。それを実装するには、 operator< 関数をオーバーロードするのが最も簡単だと判断しました。私がやりたいのは、ある種のboost::bind、boost::phoenix、lambda、またはその他のタイプの実装を使用して、ソートの実装を実際の呼び出しに近づけることです。残念ながら、私は新しい C++11 機能にアクセスできません。以下はサンプルコードです。
メンバー ポインター、メンバー関数にアクセスし、結果をすべて boost::bind 関数内でキャストする方法を理解しようとすると、迷子になります。
ご協力ありがとうございました。
c++ - これに相当するboost::phoenixは何ですか?
私は次のものを持っています:
std::for_each
andを使用して for ループを実装するにはどうすればよいboost::phoenix
ですか? 私はいくつかのアプローチを試しましたが、本当に醜いものになりました(ネストされたbind()
ステートメントがたくさんありました)。基本的には、Boost phoenix がこの for ループをどのように作成できるかを確認したいだけなので、1 ~ 2 行の特殊なロジックを持つコンテナーを反復処理するボイラープレート コードはあまり作成していません。
時々、C++11 より前のラムダを実行することは、あまりにも読みにくく、メンテナンスが困難であると思われるため、問題を解決する価値がありません。
c++ - ブースト フェニックスのマップ new_?
次のファクトリ関数があります。
このコードはコンパイルされません。C++03 を使用していることに注意してください。ここで行おうとしているのは、特定の型のオブジェクトを割り当てることができる小さな関数オブジェクトへの文字列のマッピングを作成することです。各オブジェクトは、同じ型 ( ) の 1 つの構築パラメータを取りますCPathModel const&
。
phx::new_
にはいくつかのオーバーロードがあるため、それを直接参照するのはおそらく最善の方法ではありませんが、boost::phoenix を使用してこのコードをクリーンアップし、マッピングをエレガントに機能させる方法を見つけてくれることを願っています。
()
この時点では、パラメーターを取り、new T(p1)
内部で実行するオーバーロードされた演算子を使用して小さなテンプレート クラスを定義する方が簡単に思えます。しかし、これはボイラープレートであり、ブーストにはどこかに良い解決策が必要なほど単純に思えます...
c++ - ブーストフェニックス遅延機能の何が問題になっていますか?
次のコードがあります (MSVC9 でブースト 1.55 を使用):
pair_first_impl::result::type
に関して、次のようなコンパイラ エラーが発生します。
何らかの理由で、型を直接TPair
ではなく、関数型 (?) をテンプレート引数に渡しているようです。std::pair
ここで私が間違っていることを理解するのを手伝ってくれる人はいますか?
c++ - 強化精霊セマンティックアクション未発動
次のようにブーストスピリットで文字列を解析しようとしています:
ここで、N は integer_count です。例えば、
コードは次のとおりです。
出力は次のとおりです。
つまり、
呼び出されたことはありません。では、整数ランタイムをローカル変数に読み込み、その値をさらに解析するために使用する方法はありますか?
c++ - ローカル変数を使用して精神をブーストする
以前に解析した値に基づいてルールを定義したいと思います。つまり、入力文字列の構造はD <double number>
orI <integer number>
です。最初に読み取った文字が か かどうかをローカルのブール変数に保持しD
ますI
。完全なコードは次のとおりです。
出力は次のとおりですdouble Pass!
。ステートメントを認識せif
ず、解析された数値を出力しません!
注: 上記の例を解析する簡単な方法が他にもあることはわかっています。解析する必要がある実際の文字列は非常に複雑に見えますが、この例は私が達成したいことを示しています。一般的な目標は、ローカル変数を使用し、それらの変数に基づいて他のルールを定義することです。
私は 4.6.1 と Boost 1.55 のバージョンを使用しました。
c++ - セマンティックアクションで変数値を変更するブーストスピリット
次のように、セマンティックアクションでローカル変数の値を変更したい:
GCC 4.6.1 とブースト 1.55 を使用すると、厄介なコンパイル エラーが発生します。