使用phoenix访问boost :: tuple的简便方法

时间:2015-04-15 00:27:03

标签: c++ boost boost-phoenix

我想用phoenix(c ++ 98)

访问boost :: tuple元素
#include <boost/tuple/tuple.hpp>
#include <boost/phoenix.hpp>

#include <algorithm>
#include <vector>

int main()
{
    using namespace boost::phoenix::placeholders;

    std::vector<boost::tuple<int> > vec;
    vec.push_back(boost::make_tuple(3));
    vec.push_back(boost::make_tuple(4));

    std::for_each(vec.begin(), vec.end(), std::cout<<boost::get<0>(arg1)<<std::endl);
}

但它无法工作,我尝试过使用std :: pair和self define struct,但它们也无法工作。是否可以通过一些直观,简单的解决方案来访问这些元素?

1 个答案:

答案 0 :(得分:1)

发现你可以使用boost :: phoenix :: at_c来访问元组元素

std::for_each(vec.begin(), vec.end(), std::cout<<boost::phoenix::at_c<0>(arg1)<<std::endl);

您也可以使用phoenix访问std :: pair,但需要包含标题

#include <boost/fusion/adapted.hpp>

仍然没有访问自定义结构的例子,如果我能弄清楚我会发布它

编辑:您需要包含

#include <boost/phoenix/fusion.hpp>

其他at_c可能找不到

相关问题