1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

add default_construct

This commit is contained in:
bolero-MURAKAMI 2014-09-22 10:40:52 +09:00
parent 3b0ab6f5fd
commit 2979248623
6 changed files with 80 additions and 111 deletions

View file

@ -16,7 +16,6 @@
#include <sprout/functional/ref.hpp>
#include <sprout/tuple/tuple/tuple.hpp>
#include <sprout/tuple/tuple/get.hpp>
//#include <sprout/tuple/indexes.hpp>
#include <sprout/type/operation/tuple_cat.hpp>
namespace sprout {
@ -81,76 +80,8 @@ namespace sprout {
typedef sprout::tuples::detail::tuple_cat_indexes<Tuples...> indexes;
return sprout::tuples::detail::tuple_cat_impl<type>(indexes::for_pack::make(), indexes::for_element::make(), SPROUT_FORWARD(Tuples, tuples)...);
}
// namespace results {
// //
// // tuple_cat
// //
// template<typename... Tuples>
// struct tuple_cat
// : public sprout::types::tuple_cat<typename std::decay<Tuples>::type...>
// {};
// } // namespace results
//
// namespace detail {
// template<typename... Tuples>
// struct tuple_cat_1st_indexes;
// template<>
// struct tuple_cat_1st_indexes<> {
// public:
// typedef sprout::index_tuple<> type;
// };
// template<typename Head, typename... Tail>
// struct tuple_cat_1st_indexes<Head, Tail...>
// : public sprout::tuple_indexes<typename std::remove_reference<Head>::type>
// {};
//
// template<typename Result, typename IndexTuple, typename... Tuples>
// struct tuple_cat_impl;
// template<typename Result>
// struct tuple_cat_impl<Result, sprout::index_tuple<> > {
// public:
// template<typename... Args>
// static SPROUT_CONSTEXPR Result
// call(Args&&... args) {
// return Result(SPROUT_FORWARD(Args, args)...);
// }
// };
// template<typename Result, sprout::index_t... Indexes, typename Head, typename... Tail>
// struct tuple_cat_impl<Result, sprout::index_tuple<Indexes...>, Head, Tail...> {
// public:
// template<typename T, typename... Args>
// static SPROUT_CONSTEXPR Result
// call(T&& t, Args&&... args) {
// return sprout::tuples::detail::tuple_cat_impl<
// Result,
// typename sprout::tuples::detail::tuple_cat_1st_indexes<Tail...>::type,
// Tail...
// >::call(
// SPROUT_FORWARD(Args, args)...,
// sprout::tuples::get<Indexes>(SPROUT_FORWARD(T, t))...
// );
// }
// };
// } // namespace detail
// //
// // tuple_cat
// //
// template<typename... Tuples>
// inline SPROUT_CONSTEXPR typename sprout::tuples::results::tuple_cat<Tuples...>::type
// tuple_cat(Tuples&&... tuples) {
// return sprout::tuples::detail::tuple_cat_impl<
// typename sprout::tuples::results::tuple_cat<Tuples...>::type,
// typename sprout::tuples::detail::tuple_cat_1st_indexes<Tuples...>::type,
// Tuples...
// >::call(SPROUT_FORWARD(Tuples, tuples)...);
// }
} // namespace tuples
// namespace results {
// using sprout::tuples::results::tuple_cat;
// } // namespace results
using sprout::tuples::make_tuple;
using sprout::tuples::forward_as_tuple;
using sprout::tuples::tie;

View file

@ -27,6 +27,7 @@
#include <sprout/tpp/algorithm/all_of.hpp>
#include <sprout/tuple/tuple/tuple_fwd.hpp>
#include <sprout/tuple/flexibly_construct.hpp>
#include <sprout/tuple/default_construct.hpp>
namespace sprout {
namespace tuples {
@ -35,8 +36,6 @@ namespace sprout {
class tuple_access;
struct from_tuple_construct_t {};
struct few_construct_t {};
struct excess_construct_t {};
template<sprout::index_t I, typename IdentityType>
struct element_holder {
@ -54,6 +53,9 @@ namespace sprout {
explicit SPROUT_CONSTEXPR element_holder(T&& value)
: value_(SPROUT_FORWARD(T, value))
{}
explicit SPROUT_CONSTEXPR element_holder(sprout::tuples::default_construct_t)
: value_()
{}
protected:
static SPROUT_CONSTEXPR value_type&
get(element_holder& t) {