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

fix tuple_element order

This commit is contained in:
bolero-MURAKAMI 2013-11-29 22:21:07 +09:00
parent 403e83eaf0
commit c9610b5ae5
9 changed files with 70 additions and 63 deletions

View file

@ -267,8 +267,8 @@ namespace sprout {
struct is_flexibly_convert_constructible_impl<sprout::index_tuple<Indexes...>, Utypes...>
: public sprout::tpp::all_of<
sprout::is_convert_constructible<
typename sprout::tppack_at<Indexes, Types...>::type,
typename sprout::tppack_at<Indexes, Utypes...>::type
typename sprout::pack_element<Indexes, Types...>::type,
typename sprout::pack_element<Indexes, Utypes...>::type
>...
>
{};
@ -466,20 +466,6 @@ namespace sprout {
{
lhs.swap(rhs);
}
namespace detail {
template<std::size_t I, typename T>
struct tuple_element_impl;
template<typename Head, typename... Tail>
struct tuple_element_impl<0, sprout::tuples::tuple<Head, Tail...> > {
public:
typedef Head type;
};
template<std::size_t I, typename Head, typename... Tail>
struct tuple_element_impl<I, sprout::tuples::tuple<Head, Tail...> >
: public sprout::tuples::detail::tuple_element_impl<I - 1, sprout::tuples::tuple<Tail...> >
{};
} // namespace detail
} // namespace tuples
using sprout::tuples::tuple;
@ -504,7 +490,7 @@ namespace std {
//
template<std::size_t I, typename... Types>
struct tuple_element<I, sprout::tuples::tuple<Types...> >
: public sprout::tuples::detail::tuple_element_impl<I, sprout::tuples::tuple<Types...> >
: public sprout::pack_element<I, Types...>
{};
#if defined(__clang__)
# pragma clang diagnostic pop

View file

@ -10,6 +10,7 @@
#include <tuple>
#include <sprout/config.hpp>
#include <sprout/type_traits/detail/type_traits_wrapper.hpp>
namespace sprout {
namespace tuples {
@ -18,7 +19,7 @@ namespace sprout {
//
template<typename T>
struct tuple_size
: public std::tuple_size<T>
: public sprout::detail::type_traits_wrapper<std::tuple_size<T> >
{};
template<typename T>
struct tuple_size<T const>