2009-07-24から1日間の記事一覧

mpl::foldでlengthメタ関数

C++

#include <boost/static_assert.hpp> #include <boost/mpl/list_c.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/plus.hpp> using namespace boost::mpl; template <class Seq> struct length { static const int value = fold<Seq, int_<0>, plus<_1, int_<1> > >::type::value; }; int main() { typedef list_…</_1,></seq,></class></boost/mpl/plus.hpp></boost/mpl/fold.hpp></boost/mpl/list_c.hpp></boost/static_assert.hpp>

mpl::foldでproductメタ関数

C++

#include <boost/static_assert.hpp> #include <boost/mpl/list_c.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/multiplies.hpp> using namespace boost::mpl; template <class Seq> struct product { static const int value = fold<Seq, int_<1>, multiplies<_1, _2> >::type::value; }; int main() { typede…</_1,></seq,></class></boost/mpl/multiplies.hpp></boost/mpl/fold.hpp></boost/mpl/list_c.hpp></boost/static_assert.hpp>

mpl::foldでsumメタ関数

C++

#include <boost/static_assert.hpp> #include <boost/mpl/list_c.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/plus.hpp> using namespace boost::mpl; template <class Seq> struct sum { static const int value = fold<Seq, int_<0>, plus<_1, _2> >::type::value; }; int main() { typedef list_c</_1,></seq,></class></boost/mpl/plus.hpp></boost/mpl/fold.hpp></boost/mpl/list_c.hpp></boost/static_assert.hpp>