テキストをこれらの構造体のベクトルに解析する Boost Spirit 文法を書いています。
struct Pair
{
double a;
double b;
};
BOOST_FUSION_ADAPT_STRUCT(
Pair,
(double, a)
(double, a)
)
この文法には次のような規則があります。
qi::rule<Iterator, Pair()> pairSequence;
ただし、 の実際の文法pairSequence
は次のとおりです。
double_ % separator
Pair
この文法でwitha
を double にb
等しく、なんらかの定数に等しくするようにしたいと考えています。私はこのようなことをしたい:
pairSequence = double_[_val = Pair(_1, DEFAULT_B)] % separator;
もちろん、上記はコンパイルされません。にコンストラクターを追加しようとしましたPair
が、まだコンパイル エラーが発生します ( 'Pair::Pair(const boost::phoenix::actor >&, double)' の呼び出しに一致する関数がありません)。