Простой способ получить доступ к надстройке:: кортеж с Фениксом

Я хотел бы получить доступ к элементу boost::tuple с помощью Phoenix(C++98)

#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 ответ

Решение

Просто узнайте, что вы можете использовать boost:: phoenix:: at_c для доступа к элементу кортежа

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

Вы можете получить доступ к std:: pair с помощью Phoenix, но нужно включить заголовок

#include <boost/fusion/adapted.hpp>

Все еще не хватает примера структуры доступа к самоопределению, если я смогу это понять, я бы опубликовал ее

Изменить: вам нужно включить

#include <boost/phoenix/fusion.hpp>

иначе at_c может не найден

Другие вопросы по тегам