fusion/test/compile_time/transform.cpp
2008-10-27 22:13:20 +00:00

56 lines
1.4 KiB
C++

/*=============================================================================
Copyright (c) 2008 Dan Marsden
Use modification and distribution are subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
==============================================================================*/
#include <boost/fusion/include/transform.hpp>
#include <boost/fusion/include/for_each.hpp>
#include <boost/fusion/include/vector.hpp>
namespace fusion = boost::fusion;
namespace
{
template<int n, int batch>
struct distinct
{
static const int value = n;
};
struct f
{
typedef int result_type;
template<typename T>
result_type operator()(T const& t) const
{
return T::value;
}
};
struct touch
{
template<typename T>
void operator()(T const&) const
{}
};
template<int batch>
void test()
{
fusion::vector<
distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
// We're testing transform really
// for_each call is to force iteration through the lazy
// transform, otherwise very little will happen.
fusion::for_each(fusion::transform(v, f()), touch());
}
}
#include "./driver.hpp"