|
Boost : |
From: Peder Holt (peder.holt_at_[hidden])
Date: 2006-02-23 13:27:18
In confix_parser_gen:
Adding another level of indirection solves the problem:
template<typename StartT, typename ExprT, typename EndT>
confix_parser<
typename as_parser<StartT>::type, <- VC7.1 ICEs on these
typename as_parser<ExprT>::type,
typename as_parser<EndT>::type,
typename as_parser<ExprT>::type::parser_category_t,
NestedT,
LexemeT
>
operator()(
StartT const &start_, ExprT const &expr_, EndT const &end_) const
Filtering the confix_parser into type-generating template,
result_type, solves this ICE.
template<typename StartT, typename ExprT, typename EndT>
struct result_type {
typedef confix_parser<
typename as_parser<StartT>::type,
typename as_parser<ExprT>::type,
typename as_parser<EndT>::type,
typename as_parser<ExprT>::type::parser_category_t,
NestedT,
LexemeT
> type;
};
template<typename StartT, typename ExprT, typename EndT>
typename result_type<StartT,ExprT,EndT>::type
operator()(
StartT const &start_, ExprT const &expr_, EndT const &end_) const
Now rule_parser_1_1 passes without problems.
Attached is a patch with this fix.
Regards,
Peder
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk