問題タブ [boost-variant]

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 に答える
981 参照

c++ - 訪問者からのboost::variant基になるタイプの変更

S式をモデル化する再帰バリアントがあります。

空のリストを常にnil(ではなくlist<sexpr>)で表すようにします。ただし、push_back()ビジターの実装に固執しています。基になるタイプがの場合、そのタイプをに変更して、指定された値をプッシュバックしnilたいと思います。list<sexpr>

何か案は?

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

c++ - 条件付きの代替演算子 (|) を使用した boost::spirit::karma

Valueusingという独自のクラスから文字列を生成しようとしていますがboost::spirit::karma、これで行き詰まりました。私の問題を簡単な例に抽出しようとしました。

次のクラスのインスタンスから、カルマを使用して文字列を生成したいと考えています。

ここで、私がやろうとしていることを見ることができます:

karma::generate()値が bool であり、ルールの最初のジェネレーターも bool を「消費」するため、最初の呼び出しは正常に機能します。しかし、カルマが bool を食べようとして、それゆえ を呼び出すため、2 番目karma::generate()は失敗します。boost::bad_getValue::operator bool()

次に考えたのは、ジェネレーター ルールを変更し、ジェネレーターeps()を条件と共に使用することでしたが、ここで行き詰まりました。

eps ジェネレーターの括弧を sth で埋めることができません。このように(もちろん動作しません):

入ってみましたboost::phoenixが、私の脳はこのようなことに対して準備ができていないようです.

私を助けてください!

これが私の完全な例です(コンパイルしていますが動作していません): main.cpp

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

c++ - boost::variant を使用したオペレーターのリロードに関するコンパイル エラー

私はboost.variantを学ぼうとしています。ただし、本からコピーしたコードはコンパイルに合格しません。

使ってみたのがこちら。

コンパイラは次のエラーを生成します。

エラー: 'i *= 2' の 'operator*=' に一致しません

テンプレート関数は呼び出されるたびにパラメーターのタイプを決定し、int は演算子 *= を定義する必要があるため、これは私を困惑させます。

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

c++ - boost::apply_visitor は [some] クラスのメンバーではありません

いくつかの座標 (1,2) を持つ ShapeType の Point があり、オーバーロードされた演算子 () で apply_visitor を使用して座標 (3,4) を Point に追加したいので、Point は最終的に(4,6)。私の実装はどこで失敗していますか? 私の ShapeVisitor クラスは正しいと思いますが、「apply_visitor」は CLARK::Point のメンバーではありません。

コードは次のとおりです。

ありがとう!

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

c++ - テンプレート値からの型の取得、C++

ブースト::バリアントを使用している次の方法があります。type に基づいて値を取得しようとしますT。失敗した場合boost::get<T>、T が int または unsigned int の場合、特別な方法で処理したいと考えています。Tintかunsigned intかを知る方法はありますか?

この場合、テンプレートの特殊化は使用できないと思いますよね?

EDIT:また、私はまだC++ 11にアクセスできません(すぐに願っています)

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

c++ - boost::spirit を使用したコードのあいまいな型でのコンパイル エラー

このコードを記述しても、コンパイルされます。

しかし、の定義をに変更するSTreeConstructionRuleOperand

次のコンパイル エラーが発生します (STL の代わりに STLPort が使用されます)。

これは、コンパイラが報告する唯一のエラーです。あいまいさはありませんが、コンパイラにはあります。このエラーの理由と修正方法を教えてください。

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

c++ - Boost::variant は std::ostream の operator<< を解決できませんでした

何が起こっているのかよくわかりません。MSVC 2012、Boost 51 を使用しています。このコードは正常に動作するはずですが、コンパイルされません。

私が得ているものは次のとおりです。

タイプ T0 とは何か、なぜ T0 にキャストされるのかわかりません。boost::variant の内部的なものになると思います。しかし、なぜそこにたどり着くのか、まだ手がかりがありません。バリアントのすべてのタイプの演算子「<<」が定義されています。

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

c++ - boost::static_visitor 複数の引数を持つ

次のように、追加のデータを受け取るようにビジターを変更することは可能ですか?

この文字列値は、Append オブジェクトの有効期間中に変更されます。この場合、コンストラクターを介して文字列を渡すことはできません。

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

c++ - Boost::spirit プロセス ルールでブランチが正しくない

以下にリストされているコードを書きました。コンパイラは、「3 つのオーバーロードのいずれも、すべての引数の型を変換できませんでした」というエラーを報告します。

MSVC 11.0 と Boost 1.51.0 を使用しています。for 式の各ブランチはm_oQueryIterationExpression正しく機能しますが、一緒にすると機能しません。手がかりはありますか?

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

c++ - 2つのバリアントをbooststatic_visitorと比較します

私は数日前にブーストライブラリを使い始めたので、私の質問はおそらく些細なことです。2つの同じタイプのバリアントをstatic_visitorと比較したいと思います。以下を試しましたが、コンパイルしたくありません。

助けや提案をありがとう!