問題タブ [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<int,std::string,bool>予期しない動作に遭遇したとき、私は とその訪問者と一緒に作業していました: 文字列とブール値は同等でした. なぜこのように機能するのかわかりませんが、興味深いと思いました。私の唯一の考えは、bool 値を持つバリアントが char として解釈されたということですか? 誰かが私にそれを説明できますか?比較訪問者:
編集いくつかのテストケースを含む拡張されたメイン関数は次のとおりです。
出力:
c++ - Boost Spirit と抽象構文木設計
Boost Spirit の Qi を使用して VRML 1.0 を解析しています。Separator というグループノードがあり、Separator の直下にはさまざまな種類のノードを保持できます。AST は Boost.Variant に基づいており、これまでのところ長く見えます。バリアントの 20 種類の制限に近づいています。バリアントが持つ型の数を拡張できることはわかっていますが、これを設計するためのより良い方法があるはずです。アイデア歓迎。
c++ - Boost Variant : 設定されたタイプを返すビジターをどのように行うことができますか?
boost:variant を値として使用する汎用マップを作成しようとしています。適切な型を返す get(std::string key) 関数を記述しようとして困っています。
これが私がこれまでに思いついたものです:
イテレータをどのように処理すればよいですか? 独自のネストされたイテレータを作成する価値がありますか、それともネストされた std::map を返すだけですか。
編集
達成したいと思っていたクラス設計 (つまり、一般的なハッシュマップ) を追加しました。私が抱えていた問題は、特定のキーが特定のタイプとして格納されているかどうかをユーザーが照会する方法が必要だったことです。
c++ - boost::variantオブジェクト構築カウントVS破壊カウント
私はしばらくの間boost::Variantを使用してきましたが、今はそれが内部的にどのように機能するかを理解しようとしています。簡単なテストを書いたのですが、結果がわかりません。これが(簡略化)です
そのようなプログラムの出力は
なぜデストラクタはコンストラクタほど何度も呼び出されないのですか?デストラクタがヒープを介して呼び出されるため、これはセグメンテーション違反ではない可能性があることを認識していますが、この動作は危険であるように思われます。私は何かが足りないのですか?これは、boost :: Variantの「バックアップ」メカニズムに関連していますか?
c++ - カスタム クラスを使用したブースト バリアント
boost-variant私はカスタムクラスを試していました。クラスのコンテンツにアクセスする安全な方法は を使用することだと理解しましたboost::static_visitor。以下のコードがコンパイルされない理由を知っていますか? boost::static_visitor使用するために署名/宣言に要件はありますか?
この質問を見つけましたなぜブースト::バリアントでこのカスタムタイプにアクセスできないのですか? しかし、私はそれを取得しませんでした。
よろしく
AFG
c++ - boost::spirit::karma: 代替で no_delimit を使用する
代替演算子 ('|') を含むルールの区切りをオフにしようとしていますが、互換性のない区切り文字に関するコンパイル エラーが発生します。例として、boost の calc2_ast_dump.cpp の例を取り上げ、構造体 dump_ast の ast_node ルールを次のように変更しました。
しかし、これはコンパイルエラーになります:
また、boost/spirit/home/karma/nonterminal/rule.hpp の関連コメント:
私自身のプロジェクトでは、問題なく "no_delimit[a << b]" を実行できます (karma::space 区切り記号を使用)。
代替案について私が見逃しているものはありますか?no_delimit が「<<」では機能するのに、「|」では機能しないのはなぜですか?
ブースト 1.48 を使用していますが、バグ修正が必要でしたか?
c++ - boost::apply_visitor の戻り値をメンバー変数に格納することはできますか?
boost::apply_visitor戻り値をクラスのメンバー変数に格納することはできますか?
関数を動作させる必要がありますTest::Doが、方法がわかりません。
c++ - boost::variantビジターが間違ったオーバーロードを選択する
なぜ次のように印刷されるの"A boolean!"ですか?std :: stringを明示的に作成すると正しい動作が得られるため、奇妙な変換が行われていることに気付きました。visitor::operator()(bool)しかし、次の場合に過負荷解決が選択されるのはなぜですか?
Visual Studio 2012を実行しています(CTPまたは同じ結果が得られない)
c++ - Boost :: Variant; ビジタークラスの定義
Javaでは、型を指定せずに汎用クラスの変数を定義できます。
次に、ファイルからオブジェクトを読み込んで、希望するクラスタイプに型キャストできます。
とboost::variant私はバリアント定義を始めました。
を指定する必要があることはわかっていますが、この例から、変数またはのいずれかに割り当てることができるように定義する方法がvisitor class明確ではありません。treeTree<std::string>Tree<int>
次に、変数を使用してTreeのメンバー関数を呼び出しますtree。
c++ - ブースト::バリアント; std::unique_ptr とコピー
この質問により、コピー不可能な型は Boost Variant では使用できないと判断されました
Treeクラス
TreeVisitorクラス
TreeVariant
申し込み方法Visitorsは以下の通り
また、必要なパラメーターにboost::bindを使用する
タイプのコンパイラ エラー
Tree正しくコンパイルされ、テストされています。Treeクラスのコピーを取得しようとすることに関連して表示されるこれらのコンパイル エラーを解決するにはどうすればよいstd::unique_ptrですか?
SSCCE
使用例: