タグ付けされた質問 「boost-spirit」

1
より多くの精神の狂気-パーサータイプ(ルールとint_parser <>)およびメタプログラミング技術
質問は下部に太字で示されています。問題は、最後に向かって蒸留コードフラグメントによっても要約されています。 私は自分の型システム(型システムが型から文字列へと行き来する)を単一のコンポーネント(Lakosによって定義されている)に統合しようとしています。私が使用していますboost::array、boost::variantと、boost::mplこれを達成するために、。タイプのパーサーとジェネレーターのルールをバリアントに統合したいと思います。未定義のタイプ、int4(以下を参照)タイプ、およびint8タイプがあります。バリアントはとして読み取りますvariant&lt;undefined, int4,int8&gt;。 int4特性: struct rbl_int4_parser_rule_definition { typedef boost::spirit::qi::rule&lt;std::string::iterator, rbl_int4()&gt; rule_type; boost::spirit::qi::int_parser&lt;rbl_int4&gt; parser_int32_t; rule_type rule; rbl_int4_parser_rule_definition() { rule.name("rbl int4 rule"); rule = parser_int32_t; } }; template&lt;&gt; struct rbl_type_parser_rule&lt;rbl_int4&gt; { typedef rbl_int4_parser_rule_definition string_parser; }; 上記のバリアントは未定義として開始され、次にルールを初期化します。問題が発生し、50ページのエラーが発生しましたが、最終的に追跡できました。バリアントはoperator=割り当て中に使用し、別のバリアントに割り当てるboost::spirit::qi::int_parser&lt;&gt;ことはできません(operator =)。 対照的に、未定義のタイプには問題はありません。 struct rbl_undefined_parser_rule_definition { typedef boost::spirit::qi::rule&lt;std::string::iterator, void()&gt; rule_type; rule_type rule; rbl_undefined_parser_rule_definition() { rule.name("undefined parse rule"); …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.