Простой способ получить доступ к надстройке:: кортеж с Фениксом
Я хотел бы получить доступ к элементу 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 может не найден