使用 phoenix 访问 boost::tuple 的简单方法
Easy way to access the boost::tuple with 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和自定义结构,但它们也不能工作。是否可以通过一些直观、简单的解决方案访问这些元素?
刚刚发现您可以使用 boost::phoenix::at_c 访问元组元素
std::for_each(vec.begin(), vec.end(), std::cout<<boost::phoenix::at_c<0>(arg1)<<std::endl);
您也可以使用 phoenix 访问 std::pair,但需要包含 header
#include <boost/fusion/adapted.hpp>
仍然缺少访问自定义结构的示例,如果我能弄清楚我会post它
编辑:您需要包括
#include <boost/phoenix/fusion.hpp>
否则at_c可能找不到
我想使用 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和自定义结构,但它们也不能工作。是否可以通过一些直观、简单的解决方案访问这些元素?
刚刚发现您可以使用 boost::phoenix::at_c 访问元组元素
std::for_each(vec.begin(), vec.end(), std::cout<<boost::phoenix::at_c<0>(arg1)<<std::endl);
您也可以使用 phoenix 访问 std::pair,但需要包含 header
#include <boost/fusion/adapted.hpp>
仍然缺少访问自定义结构的示例,如果我能弄清楚我会post它
编辑:您需要包括
#include <boost/phoenix/fusion.hpp>
否则at_c可能找不到