使用凤凰访问增强::元组的简单方法

Easy way to access the boost::tuple with phoenix

本文关键字:元组 简单 方法 增强 凤凰 访问      更新时间:2023-10-16

我想用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::p air 和自定义结构,但它们也不起作用。是否有可能通过一些直观、简单的解决方案访问这些元素?

只要发现你可以使用 boost::p hoenix::at_c 来访问元组元素

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

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

#include <boost/fusion/adapted.hpp>

仍然缺少访问自定义结构的示例,如果我能弄清楚,我会发布它

编辑 :您需要包括

#include <boost/phoenix/fusion.hpp>

否则at_c可能找不到