diff --git a/sprout/math/curve/bezier.hpp b/sprout/math/curve/bezier.hpp index 87dafe1d..a4857b00 100644 --- a/sprout/math/curve/bezier.hpp +++ b/sprout/math/curve/bezier.hpp @@ -129,12 +129,12 @@ namespace sprout { template inline SPROUT_CONSTEXPR typename sprout::math::curve_point_result >::type bezier(T const& t, P0 const& p0, P1 const& p1, P2 const& p2, PTail const&... p) { - return sprout::math::bezier(sprout::tuples::forward_as_tuple(p0, p1, p2, p...), t); + return sprout::math::bezier(t, sprout::tuples::forward_as_tuple(p0, p1, p2, p...)); } template inline SPROUT_CONSTEXPR typename sprout::math::curve_point_result >::type bezier(T const& t, P0 const& p0, P1 const& p1, P2 const& p2, PTail const&... p) { - return sprout::math::bezier(sprout::tuples::forward_as_tuple(p0, p1, p2, p...), t); + return sprout::math::bezier(t, sprout::tuples::forward_as_tuple(p0, p1, p2, p...)); } } // namespace math diff --git a/sprout/math/curve/catmull_rom_sprine.hpp b/sprout/math/curve/catmull_rom_sprine.hpp index 1b9faf29..5d8b8bcb 100644 --- a/sprout/math/curve/catmull_rom_sprine.hpp +++ b/sprout/math/curve/catmull_rom_sprine.hpp @@ -100,17 +100,17 @@ namespace sprout { template inline SPROUT_CONSTEXPR typename sprout::math::curve_point_result >::type catmull_rom_sprine(T const& t, P0 const& p0, P1 const& p1, P2 const& p2, P3 const& p3) { - return sprout::math::catmull_rom_sprine(sprout::tuples::forward_as_tuple(p0, p1, p2, p3), t); + return sprout::math::catmull_rom_sprine(t, sprout::tuples::forward_as_tuple(p0, p1, p2, p3)); } template inline SPROUT_CONSTEXPR typename sprout::math::curve_point_result >::type catmull_rom_sprine_start(T const& t, P0 const& p0, P1 const& p1, P2 const& p2) { - return sprout::math::catmull_rom_sprine_start(sprout::tuples::forward_as_tuple(p0, p1, p2), t); + return sprout::math::catmull_rom_sprine_start(t, sprout::tuples::forward_as_tuple(p0, p1, p2)); } template inline SPROUT_CONSTEXPR typename sprout::math::curve_point_result >::type catmull_rom_sprine_end(T const& t, P0 const& p0, P1 const& p1, P2 const& p2) { - return sprout::math::catmull_rom_sprine_end(sprout::tuples::forward_as_tuple(p0, p1, p2), t); + return sprout::math::catmull_rom_sprine_end(t, sprout::tuples::forward_as_tuple(p0, p1, p2)); } } // namespace math diff --git a/sprout/tuple/traits.hpp b/sprout/tuple/traits.hpp index b8b68623..36bbe050 100644 --- a/sprout/tuple/traits.hpp +++ b/sprout/tuple/traits.hpp @@ -50,7 +50,7 @@ namespace sprout { SPROUT_CONSTEXPR typename sprout::tuples::tuple_construct_traits::copied_type default_make_tuple(Args&&... args) { typedef typename sprout::tuples::tuple_construct_traits::copied_type copied_type; - return copied_type(SPROUT_FORWARD(Args, args)...); + return copied_type{SPROUT_FORWARD(Args, args)...}; } } // namespace detail diff --git a/sprout/type/rebind_types.hpp b/sprout/type/rebind_types.hpp index 6d931b81..0502a765 100644 --- a/sprout/type/rebind_types.hpp +++ b/sprout/type/rebind_types.hpp @@ -102,4 +102,32 @@ namespace sprout { using sprout::types::rebind_types; } // namespace sprout +#include +#include + +namespace sprout { + namespace types { + namespace detail { + template class ArrayLikeClass, typename T, std::size_t N> + struct rebind_types_default > { + private: + template + struct apply_impl {}; + template + struct apply_impl + : public sprout::identity > + {}; + public: + template + struct apply + : public apply_impl< + sprout::tpp::all_of_c::value...>::value, + Head, Tail... + > + {}; + }; + } // namespace detail + } // namespace types +} // namespace sprout + #endif // #ifndef SPROUT_TYPE_REBIND_TYPES_HPP diff --git a/sprout/type/type_tuple_decl.hpp b/sprout/type/type_tuple_decl.hpp index 0a137fd5..0fcc8fd7 100644 --- a/sprout/type/type_tuple_decl.hpp +++ b/sprout/type/type_tuple_decl.hpp @@ -16,7 +16,6 @@ #include #include #include -#include #include namespace sprout { @@ -140,7 +139,6 @@ namespace sprout { } // namespace types using sprout::types::type_tuple; - using sprout::types::rebind_types; } // namespace sprout namespace std { @@ -209,4 +207,6 @@ namespace sprout { } // namespace types } // namespace sprout +#include + #endif // #ifndef SPROUT_TYPE_TYPE_TUPLE_DECL_HPP