mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-02 14:04:20 +00:00
add enable_make_indexes
This commit is contained in:
parent
bc2e3e245b
commit
410c369a6a
100 changed files with 237 additions and 156 deletions
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_ALGORITHM_FIXED_FILL_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_ALGORITHM_FIXED_FILL_N_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/pit/pit.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/pit/pit.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/pit/pit.hpp>
|
||||
#include <sprout/iterator/type_traits/category.hpp>
|
||||
#include <sprout/range/adaptor/size_enumed.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <utility>
|
||||
#include <stdexcept>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/type_traits/common_decay.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/pack.hpp>
|
||||
#include <sprout/breed/breed_fwd.hpp>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/breed/breed_fwd.hpp>
|
||||
#include <sprout/breed/args.hpp>
|
||||
#include <sprout/breed/detail/std_result_of.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/breed/breed_fwd.hpp>
|
||||
#include <sprout/breed/args.hpp>
|
||||
#include <sprout/breed/transform/impl.hpp>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define SPROUT_CONTAINER_INDEXES_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
#include <sprout/container/container_traits.hpp>
|
||||
|
||||
namespace sprout {
|
||||
|
@ -13,7 +13,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container>
|
||||
struct container_indexes
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
sprout::make_index_tuple<sprout::container_traits<Container>::static_size>
|
||||
>
|
||||
{};
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <limits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/darkroom/access/access.hpp>
|
||||
#include <sprout/darkroom/colors/rgb.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <tuple>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/lvalue_forward.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
|
|
|
@ -2,15 +2,9 @@
|
|||
#define SPROUT_INDEX_TUPLE_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_seq.hpp>
|
||||
#include <sprout/index_tuple/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/class.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/index_tuple/utility.hpp>
|
||||
#include <sprout/index_tuple/tuple.hpp>
|
||||
#include <sprout/index_tuple/make_integer_seq.hpp>
|
||||
#include <sprout/index_tuple/make_index_tuple.hpp>
|
||||
#include <sprout/index_tuple/integer_range.hpp>
|
||||
#include <sprout/index_tuple/index_range.hpp>
|
||||
#include <sprout/index_tuple/integer_n.hpp>
|
||||
#include <sprout/index_tuple/index_n.hpp>
|
||||
#include <sprout/index_tuple/make_indexes.hpp>
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_HPP
|
||||
|
|
8
sprout/index_tuple/class.hpp
Normal file
8
sprout/index_tuple/class.hpp
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef SPROUT_INDEX_TUPLE_CLASS_HPP
|
||||
#define SPROUT_INDEX_TUPLE_CLASS_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_seq.hpp>
|
||||
#include <sprout/index_tuple/index_tuple.hpp>
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_CLASS_HPP
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef SPROUT_INDEX_TUPLE_DETAIL_MAKE_INDEXES_HELPER_HPP
|
||||
#define SPROUT_INDEX_TUPLE_DETAIL_MAKE_INDEXES_HELPER_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace detail {
|
||||
template<typename IndexTupleType>
|
||||
struct make_indexes_helper
|
||||
: public IndexTupleType::type
|
||||
{
|
||||
public:
|
||||
typedef typename IndexTupleType::type type;
|
||||
public:
|
||||
static SPROUT_CONSTEXPR type make() {
|
||||
return type();
|
||||
}
|
||||
};
|
||||
} // namespace detail
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_DETAIL_MAKE_INDEXES_HELPER_HPP
|
23
sprout/index_tuple/enable_make_indexes.hpp
Normal file
23
sprout/index_tuple/enable_make_indexes.hpp
Normal file
|
@ -0,0 +1,23 @@
|
|||
#ifndef SPROUT_INDEX_TUPLE_ENABLE_MAKE_INDEXES_HPP
|
||||
#define SPROUT_INDEX_TUPLE_ENABLE_MAKE_INDEXES_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
// enable_make_indexes
|
||||
//
|
||||
template<typename IndexTupleType>
|
||||
struct enable_make_indexes
|
||||
: public IndexTupleType::type
|
||||
{
|
||||
public:
|
||||
typedef typename IndexTupleType::type type;
|
||||
public:
|
||||
static SPROUT_CONSTEXPR type make() {
|
||||
return type();
|
||||
}
|
||||
};
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_ENABLE_MAKE_INDEXES_HPP
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_n.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -12,9 +12,9 @@ namespace sprout {
|
|||
//
|
||||
template<sprout::index_t I, std::size_t N>
|
||||
struct index_n
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::integer_n<sprout::index_t, I, N>::type
|
||||
::template transfer<sprout::index_tuple<> >::type
|
||||
::template transfer<sprout::index_tuple<> >
|
||||
>
|
||||
{};
|
||||
//
|
||||
|
@ -22,9 +22,9 @@ namespace sprout {
|
|||
//
|
||||
template<sprout::uindex_t I, std::size_t N>
|
||||
struct uindex_n
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::integer_n<sprout::uindex_t, I, N>::type
|
||||
::template transfer<sprout::uindex_tuple<> >::type
|
||||
::template transfer<sprout::uindex_tuple<> >
|
||||
>
|
||||
{};
|
||||
} // namespace sprout
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/integer_range.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -15,9 +15,9 @@ namespace sprout {
|
|||
typename std::make_signed<sprout::index_t>::type Step = sprout::detail::integer_range_default_step<sprout::index_t, First, Last>::value
|
||||
>
|
||||
struct index_range
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::integer_range<sprout::index_t, First, Last, Step>::type
|
||||
::template transfer<sprout::index_tuple<> >::type
|
||||
::template transfer<sprout::index_tuple<> >
|
||||
>
|
||||
{};
|
||||
//
|
||||
|
@ -28,9 +28,9 @@ namespace sprout {
|
|||
typename std::make_signed<sprout::uindex_t>::type Step = sprout::detail::integer_range_default_step<sprout::uindex_t, First, Last>::value
|
||||
>
|
||||
struct uindex_range
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::integer_range<sprout::uindex_t, First, Last, Step>::type
|
||||
::template transfer<sprout::uindex_tuple<> >::type
|
||||
::template transfer<sprout::uindex_tuple<> >
|
||||
>
|
||||
{};
|
||||
} // namespace sprout
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_seq.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -64,7 +64,7 @@ namespace sprout {
|
|||
} // namespace detail
|
||||
template<typename T, T I, std::size_t N>
|
||||
struct integer_n
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
sprout::detail::integer_n_impl<T, I, N>
|
||||
>
|
||||
{};
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_seq.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace detail {
|
||||
|
@ -86,7 +86,7 @@ namespace sprout {
|
|||
typename std::make_signed<T>::type Step = sprout::detail::integer_range_default_step<T, First, Last>::value
|
||||
>
|
||||
struct integer_range
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
sprout::detail::integer_range<T, First, Last, Step>
|
||||
>
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/make_integer_seq.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -13,7 +13,7 @@ namespace sprout {
|
|||
//
|
||||
template<sprout::index_t N>
|
||||
struct make_index_tuple
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::make_integer_seq<sprout::index_t, N>::type
|
||||
::template transfer<sprout::index_tuple<> >::type
|
||||
>
|
||||
|
@ -23,7 +23,7 @@ namespace sprout {
|
|||
//
|
||||
template<sprout::uindex_t N>
|
||||
struct make_uindex_tuple
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
typename sprout::make_integer_seq<sprout::uindex_t, N>::type
|
||||
::template transfer<sprout::uindex_tuple<> >::type
|
||||
>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_range.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -11,7 +11,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename T, T N>
|
||||
struct make_integer_seq
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
sprout::integer_range<T, 0, N>
|
||||
>
|
||||
{};
|
||||
|
|
12
sprout/index_tuple/metafunction.hpp
Normal file
12
sprout/index_tuple/metafunction.hpp
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef SPROUT_INDEX_TUPLE_METAFUNCTION_HPP
|
||||
#define SPROUT_INDEX_TUPLE_METAFUNCTION_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/make_integer_seq.hpp>
|
||||
#include <sprout/index_tuple/make_index_tuple.hpp>
|
||||
#include <sprout/index_tuple/integer_range.hpp>
|
||||
#include <sprout/index_tuple/index_range.hpp>
|
||||
#include <sprout/index_tuple/integer_n.hpp>
|
||||
#include <sprout/index_tuple/index_n.hpp>
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_METAFUNCTION_HPP
|
|
@ -7,6 +7,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/integer_seq.hpp>
|
||||
#include <sprout/index_tuple/index_tuple.hpp>
|
||||
#include <sprout/utility/pack.hpp>
|
||||
|
||||
namespace std {
|
||||
#if defined(__clang__)
|
||||
|
@ -27,7 +28,7 @@ namespace std {
|
|||
struct tuple_element<I, sprout::integer_seq<T, Is...> > {
|
||||
static_assert(I < sizeof...(Is), "tuple_element<>: index out of range");
|
||||
public:
|
||||
typedef T type;
|
||||
typedef typename sprout::tppack_c_at<I, T, Is...>::type type;
|
||||
};
|
||||
|
||||
//
|
||||
|
@ -64,4 +65,39 @@ namespace std {
|
|||
#endif
|
||||
} // namespace std
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
// tuple_get
|
||||
//
|
||||
template<std::size_t I, typename T, T... Is>
|
||||
inline SPROUT_CONSTEXPR typename std::tuple_element<I, sprout::integer_seq<T, Is...> >::type
|
||||
tuple_get(sprout::integer_seq<T, Is...>) SPROUT_NOEXCEPT {
|
||||
static_assert(I < sizeof...(Is), "tuple_get: index out of range");
|
||||
typedef typename std::tuple_element<I, sprout::integer_seq<T, Is...> >::type type;
|
||||
return type();
|
||||
}
|
||||
|
||||
//
|
||||
// tuple_get
|
||||
//
|
||||
template<std::size_t I, sprout::index_t... Indexes>
|
||||
inline SPROUT_CONSTEXPR typename std::tuple_element<I, sprout::index_tuple<Indexes...> >::type
|
||||
tuple_get(sprout::index_tuple<Indexes...>) SPROUT_NOEXCEPT {
|
||||
static_assert(I < sizeof...(Indexes), "tuple_get: index out of range");
|
||||
typedef typename std::tuple_element<I, sprout::index_tuple<Indexes...> >::type type;
|
||||
return type();
|
||||
}
|
||||
|
||||
//
|
||||
// tuple_get
|
||||
//
|
||||
template<std::size_t I, sprout::uindex_t... Indexes>
|
||||
inline SPROUT_CONSTEXPR typename std::tuple_element<I, sprout::uindex_tuple<Indexes...> >::type
|
||||
tuple_get(sprout::uindex_tuple<Indexes...>) SPROUT_NOEXCEPT {
|
||||
static_assert(I < sizeof...(Indexes), "tuple_get: index out of range");
|
||||
typedef typename std::tuple_element<I, sprout::uindex_tuple<Indexes...> >::type type;
|
||||
return type();
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_TUPLE_HPP
|
||||
|
|
8
sprout/index_tuple/utility.hpp
Normal file
8
sprout/index_tuple/utility.hpp
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef SPROUT_INDEX_TUPLE_UTILITY_HPP
|
||||
#define SPROUT_INDEX_TUPLE_UTILITY_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple/make_indexes.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
|
||||
#endif // #ifndef SPROUT_INDEX_TUPLE_UTILITY_HPP
|
|
@ -6,7 +6,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/string.hpp>
|
||||
#include <sprout/pit/pit.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_NUMERIC_DFT_FIXED_SAWTOOTH_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_NUMERIC_DFT_FIXED_SINUSOID_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_NUMERIC_DFT_FIXED_SQUARE_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_NUMERIC_DFT_FIXED_TRINAGLE_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_NUMERIC_FIXED_IOTA_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_OPERATION_FIXED_APPEND_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_OPERATION_FIXED_ERASE_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_OPERATION_FIXED_REALIGN_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_OPERATION_FIXED_SET_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/container/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/lvalue_forward.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/string/char_traits.hpp>
|
||||
#include <sprout/string/string.hpp>
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <limits>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/string/string.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
#include <sprout/math/floor.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/string/string.hpp>
|
||||
#include <sprout/integer/integer_digits.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <cstddef>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/string/char_traits.hpp>
|
||||
#include <sprout/string/string.hpp>
|
||||
#include <sprout/utility/value_holder/value_holder.hpp>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include <stdexcept>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/array/array.hpp>
|
||||
#include <sprout/array/make_array.hpp>
|
||||
#include <sprout/iterator/reverse_iterator.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <stdexcept>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/traits.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define SPROUT_TUPLE_INDEXES_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/detail/make_indexes_helper.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/index_tuple/enable_make_indexes.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
|
||||
|
@ -14,7 +14,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Tuple>
|
||||
struct tuple_indexes
|
||||
: public sprout::detail::make_indexes_helper<
|
||||
: public sprout::enable_make_indexes<
|
||||
sprout::make_index_tuple<sprout::tuples::tuple_size<Tuple>::value>
|
||||
>
|
||||
{};
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_APPEND_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_APPEND_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_POP_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/type/operation/pop_back.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_POP_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/type/operation/pop_front.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_PUSH_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_OPERATION_PUSH_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/functions.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TUPLE_TRAITS_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/functional/hash.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/tuple/tuple/tuple.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <type_traits>
|
||||
#include <tuple>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/move.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/type_tuple.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace types {
|
||||
|
@ -49,4 +50,17 @@ namespace std {
|
|||
#endif
|
||||
} // namespace std
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
// tuple_get
|
||||
//
|
||||
template<std::size_t I, typename T, T... Values>
|
||||
inline SPROUT_CONSTEXPR typename std::tuple_element<I, sprout::types::integral_array<T, Values...> >::type
|
||||
tuple_get(sprout::types::integral_array<T, Values...>) SPROUT_NOEXCEPT {
|
||||
static_assert(I < sizeof...(Values), "tuple_get: index out of range");
|
||||
typedef typename std::tuple_element<I, sprout::types::integral_array<T, Values...> >::type type;
|
||||
return type();
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_TYPE_INTEGRAL_ARRAY_HPP
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_APPEND_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_APPEND_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_POP_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_POP_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_PUSH_BACK_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SPROUT_TYPE_OPERATION_PUSH_FRONT_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
#include <sprout/type/rebind_types.hpp>
|
||||
#include <sprout/tuple/indexes.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/string.hpp>
|
||||
#include <sprout/type/string/string.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/size.hpp>
|
||||
#include <sprout/container/begin.hpp>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/string.hpp>
|
||||
#include <sprout/type/string/string.hpp>
|
||||
#include <sprout/type/tuple.hpp>
|
||||
|
|
|
@ -12,25 +12,33 @@ namespace sprout {
|
|||
// tppack_at
|
||||
//
|
||||
namespace detail {
|
||||
template<std::size_t N, typename Head, typename... Tail>
|
||||
template<std::size_t I, typename Head, typename... Tail>
|
||||
struct tppack_at_impl_1
|
||||
: public sprout::detail::tppack_at_impl_1<N - 1, Tail...>
|
||||
: public sprout::detail::tppack_at_impl_1<I - 1, Tail...>
|
||||
{};
|
||||
template<typename Head, typename... Tail>
|
||||
struct tppack_at_impl_1<0, Head, Tail...> {
|
||||
public:
|
||||
typedef Head type;
|
||||
};
|
||||
template<std::size_t N, typename... Args>
|
||||
template<std::size_t I, typename... Args>
|
||||
struct tppack_at_impl
|
||||
: public sprout::detail::tppack_at_impl_1<N, Args...>
|
||||
: public sprout::detail::tppack_at_impl_1<I, Args...>
|
||||
{
|
||||
static_assert(N < sizeof...(Args), "N < sizeof...(Args)");
|
||||
static_assert(I < sizeof...(Args), "I < sizeof...(Args)");
|
||||
};
|
||||
} // namespace detail
|
||||
template<std::size_t N, typename... Args>
|
||||
template<std::size_t I, typename... Args>
|
||||
struct tppack_at
|
||||
: public sprout::detail::tppack_at_impl<N, Args...>
|
||||
: public sprout::detail::tppack_at_impl<I, Args...>
|
||||
{};
|
||||
|
||||
//
|
||||
// tppack_c_at
|
||||
//
|
||||
template<std::size_t I, typename T, T... Args>
|
||||
struct tppack_c_at
|
||||
: public sprout::tppack_at<I, std::integral_constant<T, Args>...>::type
|
||||
{};
|
||||
|
||||
//
|
||||
|
@ -38,28 +46,28 @@ namespace sprout {
|
|||
//
|
||||
namespace detail {
|
||||
template<
|
||||
std::size_t N, typename R, typename Head, typename... Tail,
|
||||
typename sprout::enabler_if<N == 0>::type = sprout::enabler
|
||||
std::size_t I, typename R, typename Head, typename... Tail,
|
||||
typename sprout::enabler_if<I == 0>::type = sprout::enabler
|
||||
>
|
||||
inline SPROUT_CONSTEXPR R
|
||||
fppack_at_impl(Head&& head, Tail&&... tail) {
|
||||
return sprout::forward<Head>(head);
|
||||
}
|
||||
template<
|
||||
std::size_t N, typename R, typename Head, typename... Tail,
|
||||
typename sprout::enabler_if<N != 0>::type = sprout::enabler
|
||||
std::size_t I, typename R, typename Head, typename... Tail,
|
||||
typename sprout::enabler_if<I != 0>::type = sprout::enabler
|
||||
>
|
||||
inline SPROUT_CONSTEXPR R
|
||||
fppack_at_impl(Head&& head, Tail&&... tail) {
|
||||
return sprout::detail::fppack_at_impl<N - 1, R>(sprout::forward<Tail>(tail)...);
|
||||
return sprout::detail::fppack_at_impl<I - 1, R>(sprout::forward<Tail>(tail)...);
|
||||
}
|
||||
} // namespace detail
|
||||
template<std::size_t N, typename... Args>
|
||||
inline SPROUT_CONSTEXPR typename sprout::tppack_at<N, Args&&...>::type
|
||||
template<std::size_t I, typename... Args>
|
||||
inline SPROUT_CONSTEXPR typename sprout::tppack_at<I, Args&&...>::type
|
||||
fppack_at(Args&&... args) {
|
||||
return sprout::detail::fppack_at_impl<
|
||||
N,
|
||||
typename sprout::tppack_at<N, Args&&...>::type
|
||||
I,
|
||||
typename sprout::tppack_at<I, Args&&...>::type
|
||||
>(sprout::forward<Args>(args)...);
|
||||
}
|
||||
} // namespace sprout
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/utility/pair/pair_decl.hpp>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/utility/pair/pair_fwd.hpp>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <stdexcept>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/index_tuple.hpp>
|
||||
#include <sprout/index_tuple/metafunction.hpp>
|
||||
#include <sprout/utility/forward.hpp>
|
||||
#include <sprout/utility/move.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue