0

给定 boost::fusion::vector 类型,我想过滤掉所有非 ref 成员以获得新类型。例如,这会将 boost::fusion::vector 转换为 boost::fusion::vector。我猜 boost::fusion::filter_if 元函数可能能够做到这一点,但在文档中没有使用它的例子。任何建议,将不胜感激。

4

1 回答 1

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;
}
于 2012-11-18T20:16:33.567 回答