В одном из моих правил есть qi :: locals <> с контейнером stl в качестве параметра.Когда я компилирую свою программу без BOOST_SPIRIT_QI_DEBUG, все работает отлично.Но когда я включаю BOOST_SPIRIT_QI_DEBUG, программа не может быть скомпилирована из-за отсутствия оператора <<. </p>
Упрощенный фрагмент:
typedef std::list< int > TlstValues;
template <typename Iterator, typename Skipper>
struct G_test : qi::grammar<Iterator, Skipper>
{
...
G_test() : G_test::base_type(rule_test)
{
...
BOOST_SPIRIT_DEBUG_NODE(rule_test);
}
qi::rule<Iterator, qi::locals<TlstValues>, Skipper> rule_test;
}
Ошибка:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'TlstExpressionItems' (or there is no acceptable conversion)
Iпопытался определить оператор потоковой передачи для TlstValues, но без эффекта.Ошибка была все та же.Мое определение оператора:
std::ostream& operator << (std::ostream& os, TlstValues & z)
{
return os;
}
Может кто-нибудь посоветовать мне, как определить требуемый оператор для работы BOOST_SPIRIT_DEBUG?
Спасибо и с уважением Рик