問題タブ [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.
c++ - 訪問者からのboost::variant基になるタイプの変更
S式をモデル化する再帰バリアントがあります。
空のリストを常にnil
(ではなくlist<sexpr>
)で表すようにします。ただし、push_back()ビジターの実装に固執しています。基になるタイプがの場合、そのタイプをに変更して、指定された値をプッシュバックしnil
たいと思います。list<sexpr>
何か案は?
c++ - 条件付きの代替演算子 (|) を使用した boost::spirit::karma
Value
usingという独自のクラスから文字列を生成しようとしていますがboost::spirit::karma
、これで行き詰まりました。私の問題を簡単な例に抽出しようとしました。
次のクラスのインスタンスから、カルマを使用して文字列を生成したいと考えています。
ここで、私がやろうとしていることを見ることができます:
karma::generate()
値が bool であり、ルールの最初のジェネレーターも bool を「消費」するため、最初の呼び出しは正常に機能します。しかし、カルマが bool を食べようとして、それゆえ を呼び出すため、2 番目karma::generate()
は失敗します。boost::bad_get
Value::operator bool()
次に考えたのは、ジェネレーター ルールを変更し、ジェネレーターeps()
を条件と共に使用することでしたが、ここで行き詰まりました。
eps ジェネレーターの括弧を sth で埋めることができません。このように(もちろん動作しません):
入ってみましたboost::phoenix
が、私の脳はこのようなことに対して準備ができていないようです.
私を助けてください!
これが私の完全な例です(コンパイルしていますが動作していません): main.cpp
c++ - boost::variant を使用したオペレーターのリロードに関するコンパイル エラー
私はboost.variantを学ぼうとしています。ただし、本からコピーしたコードはコンパイルに合格しません。
使ってみたのがこちら。
コンパイラは次のエラーを生成します。
エラー: 'i *= 2' の 'operator*=' に一致しません
テンプレート関数は呼び出されるたびにパラメーターのタイプを決定し、int は演算子 *= を定義する必要があるため、これは私を困惑させます。
c++ - boost::apply_visitor は [some] クラスのメンバーではありません
いくつかの座標 (1,2) を持つ ShapeType の Point があり、オーバーロードされた演算子 () で apply_visitor を使用して座標 (3,4) を Point に追加したいので、Point は最終的に(4,6)。私の実装はどこで失敗していますか? 私の ShapeVisitor クラスは正しいと思いますが、「apply_visitor」は CLARK::Point のメンバーではありません。
コードは次のとおりです。
ありがとう!
c++ - テンプレート値からの型の取得、C++
ブースト::バリアントを使用している次の方法があります。type に基づいて値を取得しようとしますT
。失敗した場合boost::get<T>
、T が int または unsigned int の場合、特別な方法で処理したいと考えています。T
intかunsigned intかを知る方法はありますか?
この場合、テンプレートの特殊化は使用できないと思いますよね?
EDIT:また、私はまだC++ 11にアクセスできません(すぐに願っています)
c++ - boost::spirit を使用したコードのあいまいな型でのコンパイル エラー
このコードを記述しても、コンパイルされます。
しかし、の定義をに変更するSTreeConstructionRuleOperand
と
次のコンパイル エラーが発生します (STL の代わりに STLPort が使用されます)。
これは、コンパイラが報告する唯一のエラーです。あいまいさはありませんが、コンパイラにはあります。このエラーの理由と修正方法を教えてください。
c++ - Boost::variant は std::ostream の operator<< を解決できませんでした
何が起こっているのかよくわかりません。MSVC 2012、Boost 51 を使用しています。このコードは正常に動作するはずですが、コンパイルされません。
私が得ているものは次のとおりです。
タイプ T0 とは何か、なぜ T0 にキャストされるのかわかりません。boost::variant の内部的なものになると思います。しかし、なぜそこにたどり着くのか、まだ手がかりがありません。バリアントのすべてのタイプの演算子「<<」が定義されています。
c++ - boost::static_visitor 複数の引数を持つ
次のように、追加のデータを受け取るようにビジターを変更することは可能ですか?
この文字列値は、Append オブジェクトの有効期間中に変更されます。この場合、コンストラクターを介して文字列を渡すことはできません。
c++ - Boost::spirit プロセス ルールでブランチが正しくない
以下にリストされているコードを書きました。コンパイラは、「3 つのオーバーロードのいずれも、すべての引数の型を変換できませんでした」というエラーを報告します。
MSVC 11.0 と Boost 1.51.0 を使用しています。for 式の各ブランチはm_oQueryIterationExpression
正しく機能しますが、一緒にすると機能しません。手がかりはありますか?
c++ - 2つのバリアントをbooststatic_visitorと比較します
私は数日前にブーストライブラリを使い始めたので、私の質問はおそらく些細なことです。2つの同じタイプのバリアントをstatic_visitorと比較したいと思います。以下を試しましたが、コンパイルしたくありません。
助けや提案をありがとう!