40 #ifndef PCL_FOR_EACH_TYPE_H_ 41 #define PCL_FOR_EACH_TYPE_H_ 44 #pragma GCC system_header 48 #include <boost/mpl/is_sequence.hpp> 49 #include <boost/mpl/begin_end.hpp> 50 #include <boost/mpl/next_prior.hpp> 51 #include <boost/mpl/deref.hpp> 52 #include <boost/mpl/assert.hpp> 53 #include <boost/mpl/remove_if.hpp> 54 #include <boost/mpl/contains.hpp> 55 #include <boost/mpl/not.hpp> 56 #include <boost/mpl/aux_/unwrap.hpp> 57 #include <boost/type_traits/is_same.hpp> 63 template <
bool done = true>
66 template<
typename Iterator,
typename LastIterator,
typename F>
74 template<
typename Iterator,
typename LastIterator,
typename F>
77 typedef typename boost::mpl::deref<Iterator>::type arg;
79 #if (defined _WIN32 && defined _MSC_VER) 80 boost::mpl::aux::unwrap (f, 0).operator()<arg> ();
82 boost::mpl::aux::unwrap (f, 0).template operator()<arg> ();
85 typedef typename boost::mpl::next<Iterator>::type iter;
87 ::template execute<iter, LastIterator, F> (f);
92 template<
typename Sequence,
typename F>
inline void 95 BOOST_MPL_ASSERT (( boost::mpl::is_sequence<Sequence> ));
96 typedef typename boost::mpl::begin<Sequence>::type first;
97 typedef typename boost::mpl::end<Sequence>::type last;
102 template <
typename Sequence1,
typename Sequence2>
105 typedef typename boost::mpl::remove_if<Sequence1, boost::mpl::not_<boost::mpl::contains<Sequence2, boost::mpl::_1> > >
::type type;
109 #endif //#ifndef PCL_FOR_EACH_TYPE_H_
boost::mpl::remove_if< Sequence1, boost::mpl::not_< boost::mpl::contains< Sequence2, boost::mpl::_1 > > >::type type