代码:
typedef std::string::const_iterator iterator;
namespace parsers
{
namespace spirit = ::boost::spirit;
namespace ascii = ::boost::spirit::ascii;
namespace phoenix = ::boost::phoenix;
spirit::qi::rule< iterator, void(std::string), ascii::space_type > action_parser =
'"'
> spirit::qi::lit("action")
> spirit::qi::labels::_r1
> '"';
}
错误:
> 1>CL : warning : This header is deprecated. Please use:
> boost/spirit/include/classic.hpp
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/multi_pass_fwd.hpp(59):
> error C2976: 'boost::spirit::multi_pass' : too few template arguments
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/multi_pass_fwd.hpp(86):
> error C3203: 'multi_pass' : unspecialized class template can't be used
> as a template argument for template parameter 'Iterator', expected a
> real type
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/multi_pass_fwd.hpp(86):
> error C2955: 'boost::spirit::multi_pass' : use of class template
> requires template argument list
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/multi_pass_fwd.hpp(86):
> error C2977: 'boost::spirit::traits::is_multi_pass' : too many
> template arguments
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/multi_pass.hpp(183):
> error C2976: 'boost::spirit::multi_pass' : too few template arguments
> 1>D:\CPP\boost\boost_1_53_0\boost_1_53_0\boost/spirit/home/support/iterators/istream_iterator.hpp(37):
> error C2955: 'boost::spirit::multi_pass' : use of class template
> requires template argument list
答案 0 :(得分:2)
问:我删除了boost / spirit.hpp。原因是什么?附:感谢FoReVer
A。:这是因为
CL:警告:不推荐使用此标头。请用:
&GT;升压/精神/包含/ classic.hpp
换句话说:它告诉你究竟为什么。这就像正常生活一样转化为正常生活。
现在了解开发人员弃用旧标题的原因:
维基百科 Deprecation
弃用是指应用于计算机软件功能,特征或实践的状态,表明应该避免,通常是因为被取代
而且你有它:“通常是因为被取代”。在这种情况下,SpiritV2在2009年左右取代了SpiritV1(?)。这就是文档中所说的:
Spirit V1.8.x代码库已与Spirit V2集成。它现在被称为Spirit.Classic。由于目录结构已更改(Spirit Classic标头现在已移至$ BOOST_ROOT / boost / spirit / home / classic目录),因此我们创建了转发标头,允许现有应用程序无需任何更改即可进行编译。
但是,不推荐使用这些转发标头,这将导致为每个以Boost V1.38开头的标头生成相应的警告。预计将来会删除转发标头。
现在使用Spirit Classic的推荐方法是在$ BOOST_ROOT / boost / spirit / include目录中包含头文件。此目录中的所有Spirit Classic标题都以其名称前缀为“classic_”。
总而言之,它只是意味着:精神经典是旧的。不要使用它。
如果您继承了Spirit V1解析器并需要有关迁移到Spirit V2的指导:
注意:我们说话时,SpiritX3已经在开发中。见here
答案 1 :(得分:0)
我删除了boost / spirit.hpp包含。 为什么会这样?
礼貌FoReVer