boost ::fusion :: vectorタイプが与えられた場合、新しいタイプを取得するために、すべての非refメンバーをフィルターで除外したいと思います。たとえば、これはboost ::fusion::vectorをboost::fusion::vectorに変換します。boost ::fusion :: filter_ifメタ関数がこれを実行できる可能性があると推測していますが、ドキュメントでの使用例はありません。任意の提案をいただければ幸いです。
質問する
380 次
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 に答える