sprout/variant.hpp 追加

sprout/type.hpp 追加
This commit is contained in:
bolero-MURAKAMI 2011-11-06 10:56:57 +09:00
parent 488df1e685
commit b6bf03c4ed
30 changed files with 905 additions and 102 deletions

View file

@ -4,8 +4,9 @@
#include <cstddef>
#include <sprout/config.hpp>
#include <sprout/index_tuple.hpp>
#include <sprout/tuple/traits.hpp>
#include <sprout/tuple/tuple.hpp>
#include <sprout/tuple/functions.hpp>
#include <sprout/type/operation/push_front.hpp>
namespace sprout {
namespace tuples {
@ -14,24 +15,9 @@ namespace sprout {
// push_front
//
template<typename Tuple, typename T>
struct push_front {
private:
template<typename IndexTuple>
struct apply_impl;
template<std::ptrdiff_t... Indexes>
struct apply_impl<sprout::index_tuple<Indexes...>>
: public sprout::tuples::rebind_types<
Tuple
>::template apply<
T,
typename sprout::tuples::tuple_element<Indexes, Tuple>::type...
>
{};
public:
typedef typename apply_impl<
typename sprout::index_range<0, sprout::tuples::tuple_size<Tuple>::value>::type
>::type type;
};
struct push_front
: public sprout::types::push_front<Tuple, T>
{};
} // namespace result_of
namespace detail {