给定一个boost :: fusion :: vector类型,我想过滤掉所有非ref成员以获得一个新类型。例如,这会将boost :: fusion :: vector转换为 提高::融合:: vector的。我猜测boost :: fusion :: filter_if元函数可能能够做到这一点, 但是没有在文档中使用它的例子。任何建议将不胜感激。
答案 0 :(得分:0)
这样的事情:
#include <iostream>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/algorithm/transformation/filter_if.hpp>
#include <boost/fusion/include/at_c.hpp>
#include <boost/fusion/include/equal_to.hpp>
#include <boost/fusion/include/make_vector.hpp>
#include <boost/mpl/assert.hpp>
using namespace boost::fusion;
int main(void)
{
int a = 10;
double b = 11.;
vector<int, int&, double, double&> vec(1, a, 13., b);
if(filter_if<boost::mpl::not_<boost::is_reference<boost::mpl::_>>>(vec) == make_vector(1, 13.))
std::cout << "MATCH" << std::endl;
}