add SPROUT_FORWARD - workaround for ICC

This commit is contained in:
bolero-MURAKAMI 2014-02-22 16:32:51 +09:00
parent 7831105add
commit 274122efb2
202 changed files with 750 additions and 741 deletions

View file

@ -27,7 +27,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::bogo_sort(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp)), sprout::get_internal(sprout::fixed::bogo_sort(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp)),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -40,7 +40,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fit::detail::bogo_sort_impl( return sprout::fit::detail::bogo_sort_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), comp, cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp,
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }
@ -54,7 +54,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::bogo_sort(cont, sprout::forward<UniformRandomNumberGenerator>(g))), sprout::get_internal(sprout::fixed::bogo_sort(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -67,7 +67,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g) { bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::bogo_sort_impl( return sprout::fit::detail::bogo_sort_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -56,7 +56,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::bogo_sort_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::bogo_sort_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::bogo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp), sprout::fixed::bogo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp),
offset offset
); );
} }
@ -70,7 +70,7 @@ namespace sprout {
typename std::decay<UniformRandomNumberGenerator>::type typename std::decay<UniformRandomNumberGenerator>::type
> bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { > bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fit::detail::bogo_sort_result_impl( return sprout::fit::detail::bogo_sort_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), comp, cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp,
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }
@ -87,7 +87,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::bogo_sort_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::bogo_sort_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::bogo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), sprout::fixed::bogo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)),
offset offset
); );
} }
@ -102,7 +102,7 @@ namespace sprout {
> >
bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) { bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::bogo_sort_result_impl( return sprout::fit::detail::bogo_sort_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -27,7 +27,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::bozo_sort(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp)), sprout::get_internal(sprout::fixed::bozo_sort(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp)),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -40,7 +40,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fit::detail::bozo_sort_impl( return sprout::fit::detail::bozo_sort_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), comp, cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp,
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }
@ -54,7 +54,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::bozo_sort(cont, sprout::forward<UniformRandomNumberGenerator>(g))), sprout::get_internal(sprout::fixed::bozo_sort(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -67,7 +67,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g) { bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::bozo_sort_impl( return sprout::fit::detail::bozo_sort_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -56,7 +56,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::bozo_sort_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::bozo_sort_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::bozo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp), sprout::fixed::bozo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp),
offset offset
); );
} }
@ -71,7 +71,7 @@ namespace sprout {
> >
bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fit::detail::bozo_sort_result_impl( return sprout::fit::detail::bozo_sort_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), comp, cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp,
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }
@ -88,7 +88,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::bozo_sort_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::bozo_sort_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::bozo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), sprout::fixed::bozo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)),
offset offset
); );
} }
@ -103,7 +103,7 @@ namespace sprout {
> >
bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) { bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::bozo_sort_result_impl( return sprout::fit::detail::bozo_sort_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -28,7 +28,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::random_swap(cont, sprout::forward<UniformRandomNumberGenerator>(g))), sprout::get_internal(sprout::fixed::random_swap(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -41,7 +41,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
random_swap(Container const& cont, UniformRandomNumberGenerator&& g) { random_swap(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::random_swap_impl( return sprout::fit::detail::random_swap_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -56,7 +56,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::random_swap_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::random_swap_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::random_swap_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), sprout::fixed::random_swap_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)),
offset offset
); );
} }
@ -71,7 +71,7 @@ namespace sprout {
> >
random_swap_result(Container const& cont, UniformRandomNumberGenerator&& g) { random_swap_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::random_swap_result_impl( return sprout::fit::detail::random_swap_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -28,7 +28,7 @@ namespace sprout {
) )
{ {
return sprout::sub_copy( return sprout::sub_copy(
sprout::get_internal(sprout::fixed::shuffle(cont, sprout::forward<UniformRandomNumberGenerator>(g))), sprout::get_internal(sprout::fixed::shuffle(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))),
offset, offset,
offset + sprout::size(cont) offset + sprout::size(cont)
); );
@ -41,7 +41,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fit::results::algorithm<Container>::type
shuffle(Container const& cont, UniformRandomNumberGenerator&& g) { shuffle(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::shuffle_impl( return sprout::fit::detail::shuffle_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -56,7 +56,7 @@ namespace sprout {
) )
{ {
return sprout::fit::detail::shuffle_result_impl_1<Container, UniformRandomNumberGenerator>( return sprout::fit::detail::shuffle_result_impl_1<Container, UniformRandomNumberGenerator>(
sprout::fixed::shuffle_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), sprout::fixed::shuffle_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)),
offset offset
); );
} }
@ -71,7 +71,7 @@ namespace sprout {
> >
shuffle_result(Container const& cont, UniformRandomNumberGenerator&& g) { shuffle_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fit::detail::shuffle_result_impl( return sprout::fit::detail::shuffle_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont) sprout::internal_begin_offset(cont)
); );
} }

View file

@ -24,14 +24,14 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type
bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::first( return sprout::first(
sprout::fixed::bogo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp) sprout::fixed::bogo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp)
); );
} }
template<typename Container, typename UniformRandomNumberGenerator> template<typename Container, typename UniformRandomNumberGenerator>
inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type
bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g) { bogo_sort(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::first( return sprout::first(
sprout::fixed::bogo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)) sprout::fixed::bogo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))
); );
} }
} // namespace fixed } // namespace fixed

View file

@ -68,9 +68,9 @@ namespace sprout {
typedef typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type result_type; typedef typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type result_type;
typedef sprout::pair<result_type, bool> type; typedef sprout::pair<result_type, bool> type;
return sprout::is_sorted(sprout::begin(cont), sprout::end(cont), comp) return sprout::is_sorted(sprout::begin(cont), sprout::end(cont), comp)
? result_type(sprout::deep_copy(cont), sprout::forward<UniformRandomNumberGenerator>(g)) ? result_type(sprout::deep_copy(cont), SPROUT_FORWARD(UniformRandomNumberGenerator, g))
: sprout::fixed::detail::bogo_sort_result_impl<result_type>( : sprout::fixed::detail::bogo_sort_result_impl<result_type>(
type(sprout::fixed::shuffle_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), false), type(sprout::fixed::shuffle_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)), false),
comp, static_cast<typename sprout::container_traits<Container>::difference_type>(1) comp, static_cast<typename sprout::container_traits<Container>::difference_type>(1)
).first ).first
; ;
@ -84,7 +84,7 @@ namespace sprout {
bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fixed::detail::bogo_sort_result( return sprout::fixed::detail::bogo_sort_result(
cont, cont,
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
comp comp
); );
} }
@ -93,7 +93,7 @@ namespace sprout {
bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) { bogo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fixed::detail::bogo_sort_result( return sprout::fixed::detail::bogo_sort_result(
cont, cont,
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Container>::value_type>() NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Container>::value_type>()
); );
} }

View file

@ -24,14 +24,14 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type
bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::first( return sprout::first(
sprout::fixed::bozo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g), comp) sprout::fixed::bozo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g), comp)
); );
} }
template<typename Container, typename UniformRandomNumberGenerator> template<typename Container, typename UniformRandomNumberGenerator>
inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type
bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g) { bozo_sort(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::first( return sprout::first(
sprout::fixed::bozo_sort_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)) sprout::fixed::bozo_sort_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g))
); );
} }
} // namespace fixed } // namespace fixed

View file

@ -68,9 +68,9 @@ namespace sprout {
typedef typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type result_type; typedef typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type result_type;
typedef sprout::pair<result_type, bool> type; typedef sprout::pair<result_type, bool> type;
return sprout::is_sorted(sprout::begin(cont), sprout::end(cont), comp) return sprout::is_sorted(sprout::begin(cont), sprout::end(cont), comp)
? result_type(sprout::deep_copy(cont), sprout::forward<UniformRandomNumberGenerator>(g)) ? result_type(sprout::deep_copy(cont), SPROUT_FORWARD(UniformRandomNumberGenerator, g))
: sprout::fixed::detail::bozo_sort_result_impl<result_type>( : sprout::fixed::detail::bozo_sort_result_impl<result_type>(
type(sprout::fixed::random_swap_result(cont, sprout::forward<UniformRandomNumberGenerator>(g)), false), type(sprout::fixed::random_swap_result(cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g)), false),
comp, static_cast<typename sprout::container_traits<Container>::difference_type>(1) comp, static_cast<typename sprout::container_traits<Container>::difference_type>(1)
).first ).first
; ;
@ -84,7 +84,7 @@ namespace sprout {
bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) { bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g, Compare comp) {
return sprout::fixed::detail::bozo_sort_result( return sprout::fixed::detail::bozo_sort_result(
cont, cont,
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
comp comp
); );
} }
@ -93,7 +93,7 @@ namespace sprout {
bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) { bozo_sort_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fixed::detail::bozo_sort_result( return sprout::fixed::detail::bozo_sort_result(
cont, cont,
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Container>::value_type>() NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Container>::value_type>()
); );
} }

View file

@ -43,7 +43,7 @@ namespace sprout {
return n > 1 return n > 1
? sprout::fixed::detail::make_random_swap_indexes_1( ? sprout::fixed::detail::make_random_swap_indexes_1(
SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)( SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)(
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
) )
: sprout::array<std::ptrdiff_t, 2>{{}} : sprout::array<std::ptrdiff_t, 2>{{}}
@ -72,7 +72,7 @@ namespace sprout {
cont, cont,
sprout::fixed::detail::make_random_swap_indexes( sprout::fixed::detail::make_random_swap_indexes(
size, size,
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
); );
} }
@ -84,7 +84,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::algorithm<Container>::type
random_swap(Container const& cont, UniformRandomNumberGenerator&& g) { random_swap(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fixed::detail::random_swap_impl( return sprout::fixed::detail::random_swap_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::size(cont) sprout::size(cont)
); );
} }

View file

@ -52,12 +52,12 @@ namespace sprout {
return n > 1 return n > 1
? sprout::fixed::detail::make_random_swap_result_indexes_1<UniformRandomNumberGenerator>( ? sprout::fixed::detail::make_random_swap_result_indexes_1<UniformRandomNumberGenerator>(
SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)( SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)(
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
) )
: result_type( : result_type(
sprout::array<std::ptrdiff_t, 2>{{}}, sprout::array<std::ptrdiff_t, 2>{{}},
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
; ;
} }
@ -88,7 +88,7 @@ namespace sprout {
cont, cont,
sprout::fixed::detail::make_random_swap_result_indexes( sprout::fixed::detail::make_random_swap_result_indexes(
size, size,
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
); );
} }
@ -100,7 +100,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type inline SPROUT_CONSTEXPR typename sprout::fixed::results::shuffle<Container, UniformRandomNumberGenerator>::type
random_swap_result(Container const& cont, UniformRandomNumberGenerator&& g) { random_swap_result(Container const& cont, UniformRandomNumberGenerator&& g) {
return sprout::fixed::detail::random_swap_result_impl( return sprout::fixed::detail::random_swap_result_impl(
cont, sprout::forward<UniformRandomNumberGenerator>(g), cont, SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::size(cont) sprout::size(cont)
); );
} }

View file

@ -47,7 +47,7 @@ namespace sprout {
? sprout::fixed::detail::make_shuffle_indexes_1( ? sprout::fixed::detail::make_shuffle_indexes_1(
n, n,
SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)( SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)(
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
), ),
sprout::fixed::iota(sprout::pit<sprout::array<std::ptrdiff_t, N> >(), 0), sprout::fixed::iota(sprout::pit<sprout::array<std::ptrdiff_t, N> >(), 0),
0 0
@ -89,7 +89,7 @@ namespace sprout {
indexes, indexes,
sprout::fixed::detail::make_shuffle_indexes<sprout::container_traits<Container>::static_size>( sprout::fixed::detail::make_shuffle_indexes<sprout::container_traits<Container>::static_size>(
size, size,
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
), ),
offset, offset,
size size
@ -105,7 +105,7 @@ namespace sprout {
return sprout::fixed::detail::shuffle_impl( return sprout::fixed::detail::shuffle_impl(
cont, cont,
sprout::container_indexes<Container>::make(), sprout::container_indexes<Container>::make(),
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont), sprout::internal_begin_offset(cont),
sprout::size(cont) sprout::size(cont)
); );

View file

@ -55,14 +55,14 @@ namespace sprout {
? sprout::fixed::detail::make_shuffle_result_indexes_1<UniformRandomNumberGenerator>( ? sprout::fixed::detail::make_shuffle_result_indexes_1<UniformRandomNumberGenerator>(
n, n,
SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)( SPROUT_WORKAROUND_DETAIL_UNIFORM_INT_DISTRIBUTION<std::ptrdiff_t>(0, n - 1)(
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
), ),
sprout::fixed::iota(sprout::pit<sprout::array<std::ptrdiff_t, N> >(), 0), sprout::fixed::iota(sprout::pit<sprout::array<std::ptrdiff_t, N> >(), 0),
0 0
) )
: result_type( : result_type(
sprout::array<std::ptrdiff_t, N>{{}}, sprout::array<std::ptrdiff_t, N>{{}},
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
) )
; ;
} }
@ -104,7 +104,7 @@ namespace sprout {
indexes, indexes,
sprout::fixed::detail::make_shuffle_result_indexes<sprout::container_traits<Container>::static_size>( sprout::fixed::detail::make_shuffle_result_indexes<sprout::container_traits<Container>::static_size>(
size, size,
sprout::forward<UniformRandomNumberGenerator>(g) SPROUT_FORWARD(UniformRandomNumberGenerator, g)
), ),
offset, offset,
size size
@ -120,7 +120,7 @@ namespace sprout {
return sprout::fixed::detail::shuffle_result_impl( return sprout::fixed::detail::shuffle_result_impl(
cont, cont,
sprout::container_indexes<Container>::make(), sprout::container_indexes<Container>::make(),
sprout::forward<UniformRandomNumberGenerator>(g), SPROUT_FORWARD(UniformRandomNumberGenerator, g),
sprout::internal_begin_offset(cont), sprout::internal_begin_offset(cont),
sprout::size(cont) sprout::size(cont)
); );

View file

@ -23,7 +23,7 @@ namespace sprout {
template<typename T, typename... Types> template<typename T, typename... Types>
inline SPROUT_CONSTEXPR sprout::array<typename std::remove_cv<T>::type, sizeof...(Types)> inline SPROUT_CONSTEXPR sprout::array<typename std::remove_cv<T>::type, sizeof...(Types)>
make_array(Types&&... args) { make_array(Types&&... args) {
return sprout::array<typename std::remove_cv<T>::type, sizeof...(Types)>{{T(sprout::forward<Types>(args))...}}; return sprout::array<typename std::remove_cv<T>::type, sizeof...(Types)>{{T(SPROUT_FORWARD(Types, args))...}};
} }
// !!! OLD: // !!! OLD:
// template<typename... Types> // template<typename... Types>
@ -33,7 +33,7 @@ namespace sprout {
// typename sprout::common_decay<Types...>::type, // typename sprout::common_decay<Types...>::type,
// sizeof...(Types) // sizeof...(Types)
// > type; // > type;
// return type{{typename sprout::common_decay<Types...>::type(sprout::forward<Types>(args))...}}; // return type{{typename sprout::common_decay<Types...>::type(SPROUT_FORWARD(Types, args))...}};
// } // }
// //
@ -46,7 +46,7 @@ namespace sprout {
typename sprout::common_decay<Types...>::type, typename sprout::common_decay<Types...>::type,
sizeof...(Types) sizeof...(Types)
> type; > type;
return type{{typename sprout::common_decay<Types...>::type(sprout::forward<Types>(args))...}}; return type{{typename sprout::common_decay<Types...>::type(SPROUT_FORWARD(Types, args))...}};
} }
// //
@ -57,7 +57,7 @@ namespace sprout {
SPROUT_DEPRECATED SPROUT_DEPRECATED
inline SPROUT_CONSTEXPR sprout::array<T, sizeof...(Types)> inline SPROUT_CONSTEXPR sprout::array<T, sizeof...(Types)>
convert_array(Converter&& conv, Types&&... args) { convert_array(Converter&& conv, Types&&... args) {
return sprout::make_array<T>(sprout::forward<Converter>(conv)(sprout::forward<Types>(args))...); return sprout::make_array<T>(SPROUT_FORWARD(Converter, conv)(SPROUT_FORWARD(Types, args))...);
} }
} // namespace sprout } // namespace sprout

View file

@ -878,7 +878,7 @@ namespace sprout {
public: public:
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR copied_type deep_copy(Cont&& cont) { static SPROUT_CONSTEXPR copied_type deep_copy(Cont&& cont) {
return sprout::forward<Cont>(cont); return SPROUT_FORWARD(Cont, cont);
} }
template<typename... Args> template<typename... Args>
static SPROUT_CONSTEXPR copied_type make(Args&&... args) { static SPROUT_CONSTEXPR copied_type make(Args&&... args) {

View file

@ -128,13 +128,13 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::auto_pan_holder<T, IntType> const& rhs) operator|(Range&& lhs, sprout::compost::effects::auto_pan_holder<T, IntType> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::auto_pan_outdirected_value<T, IntType, true>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::auto_pan_outdirected_value<T, IntType, true>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())
) )
| sprout::compost::formats::stereo( | sprout::compost::formats::stereo(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::auto_pan_outdirected_value<T, IntType, false>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::auto_pan_outdirected_value<T, IntType, false>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())
@ -142,13 +142,13 @@ namespace sprout {
) )
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::auto_pan_outdirected_value<T, IntType, true>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::auto_pan_outdirected_value<T, IntType, true>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())
) )
| sprout::compost::formats::stereo( | sprout::compost::formats::stereo(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::auto_pan_outdirected_value<T, IntType, false>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::auto_pan_outdirected_value<T, IntType, false>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())

View file

@ -63,11 +63,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::change_volume_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::change_volume_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::bind2nd(sprout::multiplies<>(), rhs.value())) | sprout::adaptors::transformed(sprout::bind2nd(sprout::multiplies<>(), rhs.value()))
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::bind2nd(sprout::multiplies<>(), rhs.value())) | sprout::adaptors::transformed(sprout::bind2nd(sprout::multiplies<>(), rhs.value()))
; ;
} }

View file

@ -136,8 +136,8 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::chorus_holder<T, IntType> const& rhs) operator|(Range&& lhs, sprout::compost::effects::chorus_holder<T, IntType> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::valued(sprout::size(sprout::forward<Range>(lhs))) | sprout::adaptors::valued(sprout::size(SPROUT_FORWARD(Range, lhs)))
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::chorus_outdirected_value<T, IntType>( sprout::compost::chorus_outdirected_value<T, IntType>(
@ -146,8 +146,8 @@ namespace sprout {
) )
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::valued(sprout::size(sprout::forward<Range>(lhs))) | sprout::adaptors::valued(sprout::size(SPROUT_FORWARD(Range, lhs)))
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::chorus_outdirected_value<T, IntType>( sprout::compost::chorus_outdirected_value<T, IntType>(

View file

@ -65,11 +65,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::clip_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::clip_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::clamped(rhs.lower(), rhs.upper()) | sprout::adaptors::clamped(rhs.lower(), rhs.upper())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::clamped(rhs.lower(), rhs.upper()) | sprout::adaptors::clamped(rhs.lower(), rhs.upper())
; ;
} }
@ -77,11 +77,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::clipped_forwarder const&) operator|(Range&& lhs, sprout::compost::effects::clipped_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::clamped(-1., 1.) | sprout::adaptors::clamped(-1., 1.)
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::clamped(-1., 1.) | sprout::adaptors::clamped(-1., 1.)
; ;
} }

View file

@ -118,11 +118,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::compress_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::compress_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::compress_value<T>(rhs.threshold(), rhs.ratio())) | sprout::adaptors::transformed(sprout::compost::compress_value<T>(rhs.threshold(), rhs.ratio()))
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::compress_value<T>(rhs.threshold(), rhs.ratio())) | sprout::adaptors::transformed(sprout::compost::compress_value<T>(rhs.threshold(), rhs.ratio()))
; ;
} }

View file

@ -66,13 +66,13 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::distort_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::distort_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::changed_volume(rhs.gain()) | sprout::compost::effects::changed_volume(rhs.gain())
| sprout::compost::effects::clipped() | sprout::compost::effects::clipped()
| sprout::compost::effects::changed_volume(rhs.level()) | sprout::compost::effects::changed_volume(rhs.level())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::changed_volume(rhs.gain()) | sprout::compost::effects::changed_volume(rhs.gain())
| sprout::compost::effects::clipped() | sprout::compost::effects::clipped()
| sprout::compost::effects::changed_volume(rhs.level()) | sprout::compost::effects::changed_volume(rhs.level())

View file

@ -67,12 +67,12 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::fuzz_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::fuzz_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::rectified | sprout::compost::effects::rectified
| sprout::compost::effects::distorted(rhs.gain(), rhs.level()) | sprout::compost::effects::distorted(rhs.gain(), rhs.level())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::rectified | sprout::compost::effects::rectified
| sprout::compost::effects::distorted(rhs.gain(), rhs.level()) | sprout::compost::effects::distorted(rhs.gain(), rhs.level())
; ;

View file

@ -108,11 +108,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::noise_gate_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::noise_gate_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::noise_gate_value<T>(rhs.threshold())) | sprout::adaptors::transformed(sprout::compost::noise_gate_value<T>(rhs.threshold()))
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::noise_gate_value<T>(rhs.threshold())) | sprout::adaptors::transformed(sprout::compost::noise_gate_value<T>(rhs.threshold()))
; ;
} }

View file

@ -94,13 +94,13 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::overdrive_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::overdrive_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::changed_volume(rhs.gain()) | sprout::compost::effects::changed_volume(rhs.gain())
| sprout::adaptors::transformed(sprout::compost::overdrive_clip_value<>()) | sprout::adaptors::transformed(sprout::compost::overdrive_clip_value<>())
| sprout::compost::effects::changed_volume(rhs.level()) | sprout::compost::effects::changed_volume(rhs.level())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::compost::effects::changed_volume(rhs.gain()) | sprout::compost::effects::changed_volume(rhs.gain())
| sprout::adaptors::transformed(sprout::compost::overdrive_clip_value<>()) | sprout::adaptors::transformed(sprout::compost::overdrive_clip_value<>())
| sprout::compost::effects::changed_volume(rhs.level()) | sprout::compost::effects::changed_volume(rhs.level())

View file

@ -58,11 +58,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::rectified_forwarder const&) operator|(Range&& lhs, sprout::compost::effects::rectified_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::rectify_value<>()) | sprout::adaptors::transformed(sprout::compost::rectify_value<>())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::rectify_value<>()) | sprout::adaptors::transformed(sprout::compost::rectify_value<>())
; ;
} }

View file

@ -131,7 +131,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::reverb_holder<T, IntType> const& rhs) operator|(Range&& lhs, sprout::compost::effects::reverb_holder<T, IntType> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::reverb_outdirected_value<T, IntType>( sprout::compost::reverb_outdirected_value<T, IntType>(
@ -140,7 +140,7 @@ namespace sprout {
) )
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::reverb_outdirected_value<T, IntType>( sprout::compost::reverb_outdirected_value<T, IntType>(

View file

@ -71,11 +71,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::superpose_holder<T> const& rhs) operator|(Range&& lhs, sprout::compost::effects::superpose_holder<T> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(rhs.range(), sprout::plus<>()) | sprout::adaptors::transformed(rhs.range(), sprout::plus<>())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(rhs.range(), sprout::plus<>()) | sprout::adaptors::transformed(rhs.range(), sprout::plus<>())
; ;
} }

View file

@ -103,14 +103,14 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::tremolo_holder<T, IntType> const& rhs) operator|(Range&& lhs, sprout::compost::effects::tremolo_holder<T, IntType> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::tremolo_outdirected_value<T, IntType>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::tremolo_outdirected_value<T, IntType>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())
) )
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::tremolo_outdirected_value<T, IntType>(rhs.depth(), rhs.rate(), rhs.samples_per_sec()) sprout::compost::tremolo_outdirected_value<T, IntType>(rhs.depth(), rhs.rate(), rhs.samples_per_sec())

View file

@ -135,8 +135,8 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::effects::vibrato_holder<T, IntType> const& rhs) operator|(Range&& lhs, sprout::compost::effects::vibrato_holder<T, IntType> const& rhs)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::valued(sprout::size(sprout::forward<Range>(lhs))) | sprout::adaptors::valued(sprout::size(SPROUT_FORWARD(Range, lhs)))
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::vibrato_outdirected_value<T, IntType>( sprout::compost::vibrato_outdirected_value<T, IntType>(
@ -145,8 +145,8 @@ namespace sprout {
) )
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::valued(sprout::size(sprout::forward<Range>(lhs))) | sprout::adaptors::valued(sprout::size(SPROUT_FORWARD(Range, lhs)))
| sprout::adaptors::indexed | sprout::adaptors::outdirected | sprout::adaptors::indexed | sprout::adaptors::outdirected
| sprout::adaptors::transformed( | sprout::adaptors::transformed(
sprout::compost::vibrato_outdirected_value<T, IntType>( sprout::compost::vibrato_outdirected_value<T, IntType>(

View file

@ -46,11 +46,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::formats::as_complex_forwarder const&) operator|(Range&& lhs, sprout::compost::formats::as_complex_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_complex_value()) | sprout::adaptors::transformed(sprout::compost::to_complex_value())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_complex_value()) | sprout::adaptors::transformed(sprout::compost::to_complex_value())
; ;
} }

View file

@ -47,11 +47,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::formats::as_imag_forwarder const&) operator|(Range&& lhs, sprout::compost::formats::as_imag_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_imag_value()) | sprout::adaptors::transformed(sprout::compost::to_imag_value())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_imag_value()) | sprout::adaptors::transformed(sprout::compost::to_imag_value())
; ;
} }

View file

@ -81,11 +81,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::formats::as_pcm_wave_forwarder<IntType> const&) operator|(Range&& lhs, sprout::compost::formats::as_pcm_wave_forwarder<IntType> const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::normalized_to_pcm_wave<IntType>()) | sprout::adaptors::transformed(sprout::compost::normalized_to_pcm_wave<IntType>())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::normalized_to_pcm_wave<IntType>()) | sprout::adaptors::transformed(sprout::compost::normalized_to_pcm_wave<IntType>())
; ;
} }

View file

@ -47,11 +47,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, sprout::compost::formats::as_real_forwarder const&) operator|(Range&& lhs, sprout::compost::formats::as_real_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_real_value()) | sprout::adaptors::transformed(sprout::compost::to_real_value())
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::transformed(sprout::compost::to_real_value()) | sprout::adaptors::transformed(sprout::compost::to_real_value())
; ;
} }

View file

@ -34,11 +34,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, left_channel_forwarder const&) operator|(Range&& lhs, left_channel_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::steps(2) | sprout::adaptors::steps(2)
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::steps(2) | sprout::adaptors::steps(2)
; ;
} }

View file

@ -34,11 +34,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
operator|(Range&& lhs, right_channel_forwarder const&) operator|(Range&& lhs, right_channel_forwarder const&)
-> decltype( -> decltype(
sprout::forward<Range>(lhs) SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::steps(2, 1) | sprout::adaptors::steps(2, 1)
) )
{ {
return sprout::forward<Range>(lhs) return SPROUT_FORWARD(Range, lhs)
| sprout::adaptors::steps(2, 1) | sprout::adaptors::steps(2, 1)
; ;
} }

View file

@ -37,7 +37,7 @@ namespace sprout {
>::type >::type
default_make_container(Args&&... args) { default_make_container(Args&&... args) {
typedef typename sprout::container_construct_traits<Container>::copied_type copied_type; typedef typename sprout::container_construct_traits<Container>::copied_type copied_type;
return copied_type{{sprout::forward<Args>(args)...}}; return copied_type{{SPROUT_FORWARD(Args, args)...}};
} }
template<typename Container, typename... Args> template<typename Container, typename... Args>
inline SPROUT_CONSTEXPR typename std::enable_if< inline SPROUT_CONSTEXPR typename std::enable_if<
@ -46,7 +46,7 @@ namespace sprout {
>::type >::type
default_make_container(Args&&... args) { default_make_container(Args&&... args) {
typedef typename sprout::container_construct_traits<Container>::copied_type copied_type; typedef typename sprout::container_construct_traits<Container>::copied_type copied_type;
return copied_type{sprout::forward<Args>(args)...}; return copied_type{SPROUT_FORWARD(Args, args)...};
} }
template<typename Container, typename Cont, typename... Args> template<typename Container, typename Cont, typename... Args>
@ -55,7 +55,7 @@ namespace sprout {
typename sprout::container_construct_traits<Container>::copied_type typename sprout::container_construct_traits<Container>::copied_type
>::type >::type
default_remake_container(Cont&&, typename sprout::container_traits<Container>::difference_type, Args&&... args) { default_remake_container(Cont&&, typename sprout::container_traits<Container>::difference_type, Args&&... args) {
return sprout::container_construct_traits<Container>::make(sprout::forward<Args>(args)...); return sprout::container_construct_traits<Container>::make(SPROUT_FORWARD(Args, args)...);
} }
template<typename Container, typename Cont, typename... Args> template<typename Container, typename Cont, typename... Args>
inline SPROUT_CONSTEXPR typename std::enable_if< inline SPROUT_CONSTEXPR typename std::enable_if<
@ -65,7 +65,7 @@ namespace sprout {
typename sprout::container_construct_traits<Container>::copied_type typename sprout::container_construct_traits<Container>::copied_type
>::type >::type
default_remake_container(Cont&&, typename sprout::container_traits<Container>::difference_type, Args&&... args) { default_remake_container(Cont&&, typename sprout::container_traits<Container>::difference_type, Args&&... args) {
return sprout::container_construct_traits<Container>::make(sprout::forward<Args>(args)...); return sprout::container_construct_traits<Container>::make(SPROUT_FORWARD(Args, args)...);
} }
template<typename Container, typename Cont, typename InputIterator> template<typename Container, typename Cont, typename InputIterator>
inline SPROUT_CONSTEXPR typename std::enable_if< inline SPROUT_CONSTEXPR typename std::enable_if<
@ -96,19 +96,19 @@ namespace sprout {
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
deep_copy(Cont&& cont) { deep_copy(Cont&& cont) {
return sprout::forward<Cont>(cont); return SPROUT_FORWARD(Cont, cont);
} }
template<typename... Args> template<typename... Args>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
make(Args&&... args) { make(Args&&... args) {
return sprout::detail::default_make_container<Container>(sprout::forward<Args>(args)...); return sprout::detail::default_make_container<Container>(SPROUT_FORWARD(Args, args)...);
} }
template<typename Cont, typename... Args> template<typename Cont, typename... Args>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) { remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) {
return sprout::detail::default_remake_container<Container>( return sprout::detail::default_remake_container<Container>(
sprout::forward<Cont>(cont), size, SPROUT_FORWARD(Cont, cont), size,
sprout::forward<Args>(args)... SPROUT_FORWARD(Args, args)...
); );
} }
}; };

View file

@ -24,7 +24,7 @@ namespace sprout {
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR typename sprout::container_traits<Container>::difference_type static SPROUT_CONSTEXPR typename sprout::container_traits<Container>::difference_type
fit_size(Cont&& cont, typename sprout::container_traits<Container>::difference_type size) { fit_size(Cont&& cont, typename sprout::container_traits<Container>::difference_type size) {
return NS_SSCRISK_CEL_OR_SPROUT::min(size, sprout::size(sprout::forward<Cont>(cont))); return NS_SSCRISK_CEL_OR_SPROUT::min(size, sprout::size(SPROUT_FORWARD(Cont, cont)));
} }
}; };
template<typename Container> template<typename Container>

View file

@ -143,17 +143,17 @@ namespace sprout {
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
deep_copy(Cont&& cont) { deep_copy(Cont&& cont) {
return sprout::deep_copy(sprout::get_internal(sprout::forward<Cont>(cont))); return sprout::deep_copy(sprout::get_internal(SPROUT_FORWARD(Cont, cont)));
} }
template<typename... Args> template<typename... Args>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
make(Args&&... args) { make(Args&&... args) {
return sprout::make<copied_type>(sprout::forward<Args>(args)...); return sprout::make<copied_type>(SPROUT_FORWARD(Args, args)...);
} }
template<typename Cont, typename... Args> template<typename Cont, typename... Args>
static SPROUT_CONSTEXPR copied_type static SPROUT_CONSTEXPR copied_type
remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) { remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) {
return sprout::remake<copied_type>(sprout::get_internal(sprout::forward<Cont>(cont)), size, sprout::forward<Args>(args)...); return sprout::remake<copied_type>(sprout::get_internal(SPROUT_FORWARD(Cont, cont)), size, SPROUT_FORWARD(Args, args)...);
} }
}; };
@ -181,7 +181,7 @@ namespace sprout {
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR typename internal<Cont>::type static SPROUT_CONSTEXPR typename internal<Cont>::type
get_internal(Cont&& cont) { get_internal(Cont&& cont) {
return call(sprout::forward<Cont>(cont)); return call(SPROUT_FORWARD(Cont, cont));
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -23,7 +23,7 @@ namespace sprout {
>::copied_type >::copied_type
deep_copy(Container&& cont) { deep_copy(Container&& cont) {
typedef typename std::remove_reference<Container>::type container_type; typedef typename std::remove_reference<Container>::type container_type;
return sprout::container_construct_traits<container_type>::deep_copy(sprout::forward<Container>(cont)); return sprout::container_construct_traits<container_type>::deep_copy(SPROUT_FORWARD(Container, cont));
} }
} // namespace sprout } // namespace sprout

View file

@ -22,7 +22,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::container_traits<typename std::remove_reference<Container>::type>::difference_type inline SPROUT_CONSTEXPR typename sprout::container_traits<typename std::remove_reference<Container>::type>::difference_type
fit_size(Container&& cont, typename sprout::container_traits<typename std::remove_reference<Container>::type>::difference_type size) { fit_size(Container&& cont, typename sprout::container_traits<typename std::remove_reference<Container>::type>::difference_type size) {
typedef typename std::remove_reference<Container>::type container_type; typedef typename std::remove_reference<Container>::type container_type;
return sprout::container_fitness_traits<container_type>::fit_size(sprout::forward<Container>(cont), size); return sprout::container_fitness_traits<container_type>::fit_size(SPROUT_FORWARD(Container, cont), size);
} }
} // namespace sprout } // namespace sprout

View file

@ -24,7 +24,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type
get_deep_internal_impl(Container&& cont) { get_deep_internal_impl(Container&& cont) {
return sprout::forward<Container>(cont); return SPROUT_FORWARD(Container, cont);
} }
template< template<
typename Container, typename Container,
@ -33,7 +33,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type
get_deep_internal_impl(Container&& cont) { get_deep_internal_impl(Container&& cont) {
return sprout::detail::get_deep_internal_impl( return sprout::detail::get_deep_internal_impl(
sprout::get_internal(sprout::forward<Container>(cont)) sprout::get_internal(SPROUT_FORWARD(Container, cont))
); );
} }
} // namespace detail } // namespace detail
@ -43,7 +43,7 @@ namespace sprout {
template<typename Container> template<typename Container>
inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type inline SPROUT_CONSTEXPR typename sprout::containers::deep_internal<Container>::type
get_deep_internal(Container&& cont) { get_deep_internal(Container&& cont) {
return sprout::detail::get_deep_internal_impl(sprout::forward<Container>(cont)); return sprout::detail::get_deep_internal_impl(SPROUT_FORWARD(Container, cont));
} }
} // namespace sprout } // namespace sprout

View file

@ -22,7 +22,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::containers::internal<Container>::type inline SPROUT_CONSTEXPR typename sprout::containers::internal<Container>::type
get_internal(Container&& cont) { get_internal(Container&& cont) {
typedef typename std::remove_reference<Container>::type container_type; typedef typename std::remove_reference<Container>::type container_type;
return sprout::sub_container_traits<container_type>::get_internal(sprout::forward<Container>(cont)); return sprout::sub_container_traits<container_type>::get_internal(SPROUT_FORWARD(Container, cont));
} }
} // namespace sprout } // namespace sprout

View file

@ -29,7 +29,7 @@ namespace sprout {
>::copied_type >::copied_type
internal_deep_copy(Container&& cont) { internal_deep_copy(Container&& cont) {
return sprout::deep_copy( return sprout::deep_copy(
sprout::get_deep_internal(sprout::forward<Container>(cont)) sprout::get_deep_internal(SPROUT_FORWARD(Container, cont))
); );
} }
} // namespace sprout } // namespace sprout

View file

@ -19,7 +19,7 @@ namespace sprout {
template<typename Container, typename... Args> template<typename Container, typename... Args>
inline SPROUT_CONSTEXPR typename sprout::container_construct_traits<Container>::copied_type inline SPROUT_CONSTEXPR typename sprout::container_construct_traits<Container>::copied_type
make(Args&&... args) { make(Args&&... args) {
return sprout::container_construct_traits<Container>::make(sprout::forward<Args>(args)...); return sprout::container_construct_traits<Container>::make(SPROUT_FORWARD(Args, args)...);
} }
} // namespace sprout } // namespace sprout

View file

@ -22,9 +22,9 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename sprout::container_construct_traits<Container>::copied_type inline SPROUT_CONSTEXPR typename sprout::container_construct_traits<Container>::copied_type
remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) { remake(Cont&& cont, typename sprout::container_traits<Container>::difference_type size, Args&&... args) {
return sprout::container_construct_traits<Container>::remake( return sprout::container_construct_traits<Container>::remake(
sprout::forward<Cont>(cont), SPROUT_FORWARD(Cont, cont),
size, size,
sprout::forward<Args>(args)... SPROUT_FORWARD(Args, args)...
); );
} }
} // namespace sprout } // namespace sprout

View file

@ -27,7 +27,7 @@ namespace sprout {
template<typename Cont> template<typename Cont>
static SPROUT_CONSTEXPR typename internal<Cont>::type static SPROUT_CONSTEXPR typename internal<Cont>::type
get_internal(Cont&& cont) { get_internal(Cont&& cont) {
return sprout::forward<Cont>(cont); return SPROUT_FORWARD(Cont, cont);
} }
}; };
template<typename Container> template<typename Container>

View file

@ -433,7 +433,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tolower(std::declval<T>()) == sprout::tolower(std::declval<U>()))) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tolower(std::declval<T>()) == sprout::tolower(std::declval<U>())))
{ {
return sprout::tolower(sprout::forward<T>(x)) == sprout::tolower(sprout::forward<U>(y)); return sprout::tolower(SPROUT_FORWARD(T, x)) == sprout::tolower(SPROUT_FORWARD(U, y));
} }
}; };
@ -459,7 +459,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tolower(std::declval<T>()) != sprout::tolower(std::declval<U>()))) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tolower(std::declval<T>()) != sprout::tolower(std::declval<U>())))
{ {
return sprout::tolower(sprout::forward<T>(x)) != sprout::tolower(sprout::forward<U>(y)); return sprout::tolower(SPROUT_FORWARD(T, x)) != sprout::tolower(SPROUT_FORWARD(U, y));
} }
}; };
} // namespace ctypes } // namespace ctypes

View file

@ -44,10 +44,10 @@ namespace sprout {
template<std::size_t I, typename T> template<std::size_t I, typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
get(T&& t) get(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<I>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<I>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::tuples::get<I>(sprout::forward<T>(t))) -> decltype(sprout::tuples::get<I>(SPROUT_FORWARD(T, t)))
{ {
return sprout::tuples::get<I>(sprout::forward<T>(t)); return sprout::tuples::get<I>(SPROUT_FORWARD(T, t));
} }
} // namespace access } // namespace access
} // namespace darkroom } // namespace darkroom

View file

@ -38,26 +38,26 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
r(T&& t) r(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<0>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<0>(sprout::forward<T>(t)); return sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
g(T&& t) g(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<1>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<1>(sprout::forward<T>(t)); return sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
b(T&& t) b(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<2>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<2>(sprout::forward<T>(t)); return sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t));
} }
// //
// a // a
@ -68,10 +68,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
a(T&& t) a(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<3>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<3>(sprout::forward<T>(t)); return sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,

View file

@ -26,26 +26,26 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
x(T&& t) x(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<0>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<0>(sprout::forward<T>(t)); return sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
y(T&& t) y(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<1>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<1>(sprout::forward<T>(t)); return sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
z(T&& t) z(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<2>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<2>(sprout::forward<T>(t)); return sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t));
} }
// //

View file

@ -51,42 +51,42 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
does_intersect(T&& t) does_intersect(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<0>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<0>(sprout::forward<T>(t)); return sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
distance(T&& t) distance(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<1>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<1>(sprout::forward<T>(t)); return sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
point_of_intersection(T&& t) point_of_intersection(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<2>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<2>(sprout::forward<T>(t)); return sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
normal(T&& t) normal(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<3>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<3>(sprout::forward<T>(t)); return sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
material(T&& t) material(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<4>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<4>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<4>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<4>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<4>(sprout::forward<T>(t)); return sprout::darkroom::access::get<4>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,
@ -94,10 +94,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
is_from_inside(T&& t) is_from_inside(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<5>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<5>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<5>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<5>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<5>(sprout::forward<T>(t)); return sprout::darkroom::access::get<5>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,

View file

@ -21,9 +21,9 @@ namespace sprout {
template<typename... Lights> template<typename... Lights>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
make_light_list(Lights&&... lights) make_light_list(Lights&&... lights)
-> decltype(sprout::make_tuple(sprout::forward<Lights>(lights)...)) -> decltype(sprout::make_tuple(SPROUT_FORWARD(Lights, lights)...))
{ {
return sprout::make_tuple(sprout::forward<Lights>(lights)...); return sprout::make_tuple(SPROUT_FORWARD(Lights, lights)...);
} }
} // namespace lights } // namespace lights
} // namespace darkroom } // namespace darkroom

View file

@ -58,10 +58,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
color(T&& t) color(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<0>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<0>(sprout::forward<T>(t)); return sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,
@ -82,10 +82,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
reflection(T&& t) reflection(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<1>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<1>(sprout::forward<T>(t)); return sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,
@ -106,10 +106,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
alpha(T&& t) alpha(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<2>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<2>(sprout::forward<T>(t)); return sprout::darkroom::access::get<2>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,
@ -130,10 +130,10 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
refraction(T&& t) refraction(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<3>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<3>(sprout::forward<T>(t)); return sprout::darkroom::access::get<3>(SPROUT_FORWARD(T, t));
} }
template< template<
typename T, typename T,

View file

@ -21,9 +21,9 @@ namespace sprout {
template<typename... Objects> template<typename... Objects>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
make_object_list(Objects&&... objs) make_object_list(Objects&&... objs)
-> decltype(sprout::make_tuple(sprout::forward<Objects>(objs)...)) -> decltype(sprout::make_tuple(SPROUT_FORWARD(Objects, objs)...))
{ {
return sprout::make_tuple(sprout::forward<Objects>(objs)...); return sprout::make_tuple(SPROUT_FORWARD(Objects, objs)...);
} }
} // namespace objects } // namespace objects
} // namespace darkroom } // namespace darkroom

View file

@ -25,18 +25,18 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
position(T&& t) position(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<0>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<0>(sprout::forward<T>(t)); return sprout::darkroom::access::get<0>(SPROUT_FORWARD(T, t));
} }
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR auto inline SPROUT_CONSTEXPR auto
direction(T&& t) direction(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(sprout::forward<T>(t)))) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::darkroom::access::get<1>(sprout::forward<T>(t))) -> decltype(sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t)))
{ {
return sprout::darkroom::access::get<1>(sprout::forward<T>(t)); return sprout::darkroom::access::get<1>(SPROUT_FORWARD(T, t));
} }
// //

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(&std::declval<T>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(&std::declval<T>()))
{ {
return &sprout::forward<T>(x); return &SPROUT_FORWARD(T, x);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() = std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() = std::declval<U>()))
{ {
return sprout::forward<T>(x) = sprout::forward<U>(y); return SPROUT_FORWARD(T, x) = SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -107,7 +107,7 @@ namespace sprout {
) const volatile ) const volatile
-> decltype(arg(std::declval<Args>()...)) -> decltype(arg(std::declval<Args>()...))
{ {
return arg(sprout::forward<Args>(sprout::tuples::get<Indexes>(tuple))...); return arg(SPROUT_FORWARD(Args, sprout::tuples::get<Indexes>(tuple))...);
} }
public: public:
template<typename CVArg, typename... Args> template<typename CVArg, typename... Args>
@ -136,9 +136,8 @@ namespace sprout {
template<typename Tuple> template<typename Tuple>
typename result<mu (Arg, Tuple)>::type typename result<mu (Arg, Tuple)>::type
SPROUT_CONSTEXPR operator()(Arg /*const volatile&*/, Tuple& tuple) const volatile { SPROUT_CONSTEXPR operator()(Arg /*const volatile&*/, Tuple& tuple) const volatile {
return sprout::forward<typename result<mu (Arg, Tuple)>::type>( typedef typename result<mu (Arg, Tuple)>::type type;
sprout::tuples::get<(sprout::is_placeholder<Arg>::value - 1)>(tuple) return SPROUT_FORWARD(type, sprout::tuples::get<(sprout::is_placeholder<Arg>::value - 1)>(tuple));
);
} }
}; };
template<typename Arg> template<typename Arg>
@ -154,7 +153,7 @@ namespace sprout {
public: public:
template<typename CVArg, typename Tuple> template<typename CVArg, typename Tuple>
SPROUT_CONSTEXPR CVArg&& operator()(CVArg&& arg, Tuple&) const volatile { SPROUT_CONSTEXPR CVArg&& operator()(CVArg&& arg, Tuple&) const volatile {
return sprout::forward<CVArg>(arg); return SPROUT_FORWARD(CVArg, arg);
} }
}; };
@ -395,12 +394,12 @@ namespace sprout {
-> decltype( -> decltype(
sprout::detail::get_bound_helper::get_bound< sprout::detail::get_bound_helper::get_bound<
sprout::detail::bound_position<I, typename std::remove_reference<Bounds>::type, ArgSize>::value sprout::detail::bound_position<I, typename std::remove_reference<Bounds>::type, ArgSize>::value
>(sprout::forward<Bounds>(bound_args)) >(SPROUT_FORWARD(Bounds, bound_args))
) )
{ {
return sprout::detail::get_bound_helper::get_bound< return sprout::detail::get_bound_helper::get_bound<
sprout::detail::bound_position<I, typename std::remove_reference<Bounds>::type, ArgSize>::value sprout::detail::bound_position<I, typename std::remove_reference<Bounds>::type, ArgSize>::value
>(sprout::forward<Bounds>(bound_args)); >(SPROUT_FORWARD(Bounds, bound_args));
} }
} // namespace detail } // namespace detail
@ -490,7 +489,7 @@ namespace sprout {
template<typename... Args> template<typename... Args>
explicit SPROUT_CONSTEXPR binder_impl(Functor const& f, Args&&... args) explicit SPROUT_CONSTEXPR binder_impl(Functor const& f, Args&&... args)
: f_(f) : f_(f)
, bound_args_(sprout::forward<Args>(args)...) , bound_args_(SPROUT_FORWARD(Args, args)...)
{} {}
binder_impl(binder_impl const&) = default; binder_impl(binder_impl const&) = default;
}; };
@ -510,7 +509,7 @@ namespace sprout {
public: public:
template<typename... Args> template<typename... Args>
explicit SPROUT_CONSTEXPR binder(Functor const& f, Args&&... args) explicit SPROUT_CONSTEXPR binder(Functor const& f, Args&&... args)
: impl_type(f, sprout::forward<Args>(args)...) : impl_type(f, SPROUT_FORWARD(Args, args)...)
{} {}
binder(binder const&) = default; binder(binder const&) = default;
template< template<
@ -521,7 +520,7 @@ namespace sprout {
> >
Result operator()(Args&&... args) { Result operator()(Args&&... args) {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -533,7 +532,7 @@ namespace sprout {
> >
SPROUT_CONSTEXPR Result operator()(Args&&... args) const { SPROUT_CONSTEXPR Result operator()(Args&&... args) const {
return impl_type::template call_c<Result>( return impl_type::template call_c<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -545,7 +544,7 @@ namespace sprout {
> >
Result operator()(Args&&... args) volatile { Result operator()(Args&&... args) volatile {
return impl_type::template call_v<Result>( return impl_type::template call_v<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -557,7 +556,7 @@ namespace sprout {
> >
SPROUT_CONSTEXPR Result operator()(Args&&... args) const volatile { SPROUT_CONSTEXPR Result operator()(Args&&... args) const volatile {
return impl_type::template call_cv<Result>( return impl_type::template call_cv<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -577,7 +576,7 @@ namespace sprout {
public: public:
template<typename... Args> template<typename... Args>
explicit SPROUT_CONSTEXPR cbinder(Functor const& f, Args&&... args) explicit SPROUT_CONSTEXPR cbinder(Functor const& f, Args&&... args)
: impl_type(f, sprout::forward<Args>(args)...) : impl_type(f, SPROUT_FORWARD(Args, args)...)
{} {}
cbinder(cbinder const&) = default; cbinder(cbinder const&) = default;
template< template<
@ -588,7 +587,7 @@ namespace sprout {
> >
SPROUT_CONSTEXPR Result operator()(Args&&... args) const { SPROUT_CONSTEXPR Result operator()(Args&&... args) const {
return impl_type::template call_c<Result>( return impl_type::template call_c<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -600,7 +599,7 @@ namespace sprout {
> >
SPROUT_CONSTEXPR Result operator()(Args&&... args) const volatile { SPROUT_CONSTEXPR Result operator()(Args&&... args) const volatile {
return impl_type::template call_cv<Result>( return impl_type::template call_cv<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -704,7 +703,7 @@ namespace sprout {
template<typename... Args> template<typename... Args>
explicit SPROUT_CONSTEXPR res_binder_impl(Functor const& f, Args&&... args) explicit SPROUT_CONSTEXPR res_binder_impl(Functor const& f, Args&&... args)
: f_(f) : f_(f)
, bound_args_(sprout::forward<Args>(args)...) , bound_args_(SPROUT_FORWARD(Args, args)...)
{} {}
res_binder_impl(res_binder_impl const&) = default; res_binder_impl(res_binder_impl const&) = default;
}; };
@ -726,34 +725,34 @@ namespace sprout {
public: public:
template<typename... Args> template<typename... Args>
explicit res_binder(Functor const& f, Args&&... args) explicit res_binder(Functor const& f, Args&&... args)
: impl_type(f, sprout::forward<Args>(args)...) : impl_type(f, SPROUT_FORWARD(Args, args)...)
{} {}
res_binder(res_binder const&) = default; res_binder(res_binder const&) = default;
template<typename... Args> template<typename... Args>
result_type operator()(Args&&... args) { result_type operator()(Args&&... args) {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
template<typename... Args> template<typename... Args>
SPROUT_CONSTEXPR result_type operator()(Args&&... args) const { SPROUT_CONSTEXPR result_type operator()(Args&&... args) const {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
template<typename... Args> template<typename... Args>
result_type operator()(Args&&... args) volatile { result_type operator()(Args&&... args) volatile {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
template<typename... Args> template<typename... Args>
SPROUT_CONSTEXPR result_type operator()(Args&&... args) const volatile { SPROUT_CONSTEXPR result_type operator()(Args&&... args) const volatile {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -775,20 +774,20 @@ namespace sprout {
public: public:
template<typename... Args> template<typename... Args>
explicit SPROUT_CONSTEXPR res_cbinder(Functor const& f, Args&&... args) explicit SPROUT_CONSTEXPR res_cbinder(Functor const& f, Args&&... args)
: impl_type(f, sprout::forward<Args>(args)...) : impl_type(f, SPROUT_FORWARD(Args, args)...)
{} {}
res_cbinder(res_cbinder const&) = default; res_cbinder(res_cbinder const&) = default;
template<typename... Args> template<typename... Args>
SPROUT_CONSTEXPR result_type operator()(Args&&... args) const { SPROUT_CONSTEXPR result_type operator()(Args&&... args) const {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
template<typename... Args> template<typename... Args>
SPROUT_CONSTEXPR result_type operator()(Args&&... args) const volatile { SPROUT_CONSTEXPR result_type operator()(Args&&... args) const volatile {
return impl_type::template call<Result>( return impl_type::template call<Result>(
sprout::tuples::forward_as_tuple(sprout::forward<Args>(args)...), sprout::tuples::forward_as_tuple(SPROUT_FORWARD(Args, args)...),
sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make() sprout::detail::bound_indexes<bounds_type, sizeof...(Args)>::make()
); );
} }
@ -999,7 +998,7 @@ namespace sprout {
typedef sprout::detail::bind_helper<false, F, BoundArgs...> helper_type; typedef sprout::detail::bind_helper<false, F, BoundArgs...> helper_type;
typedef typename helper_type::maybe_type maybe_type; typedef typename helper_type::maybe_type maybe_type;
typedef typename helper_type::type result_type; typedef typename helper_type::type result_type;
return result_type(maybe_type::do_wrap(sprout::forward<F>(f)), sprout::forward<BoundArgs>(args)...); return result_type(maybe_type::do_wrap(SPROUT_FORWARD(F, f)), SPROUT_FORWARD(BoundArgs, args)...);
} }
template<typename R, typename F, typename... BoundArgs> template<typename R, typename F, typename... BoundArgs>
inline SPROUT_CONSTEXPR typename sprout::res_bind_result<R, F, BoundArgs...>::type inline SPROUT_CONSTEXPR typename sprout::res_bind_result<R, F, BoundArgs...>::type
@ -1007,7 +1006,7 @@ namespace sprout {
typedef sprout::detail::res_bind_helper<false, R, F, BoundArgs...> helper_type; typedef sprout::detail::res_bind_helper<false, R, F, BoundArgs...> helper_type;
typedef typename helper_type::maybe_type maybe_type; typedef typename helper_type::maybe_type maybe_type;
typedef typename helper_type::type result_type; typedef typename helper_type::type result_type;
return result_type(maybe_type::do_wrap(sprout::forward<F>(f)), sprout::forward<BoundArgs>(args)...); return result_type(maybe_type::do_wrap(SPROUT_FORWARD(F, f)), SPROUT_FORWARD(BoundArgs, args)...);
} }
// //
@ -1019,7 +1018,7 @@ namespace sprout {
typedef sprout::detail::bind_helper<true, F, BoundArgs...> helper_type; typedef sprout::detail::bind_helper<true, F, BoundArgs...> helper_type;
typedef typename helper_type::maybe_type maybe_type; typedef typename helper_type::maybe_type maybe_type;
typedef typename helper_type::type result_type; typedef typename helper_type::type result_type;
return result_type(maybe_type::do_wrap(sprout::forward<F>(f)), sprout::forward<BoundArgs>(args)...); return result_type(maybe_type::do_wrap(SPROUT_FORWARD(F, f)), SPROUT_FORWARD(BoundArgs, args)...);
} }
template<typename R, typename F, typename... BoundArgs> template<typename R, typename F, typename... BoundArgs>
inline SPROUT_CONSTEXPR typename sprout::res_cbind_result<R, F, BoundArgs...>::type inline SPROUT_CONSTEXPR typename sprout::res_cbind_result<R, F, BoundArgs...>::type
@ -1027,7 +1026,7 @@ namespace sprout {
typedef sprout::detail::res_bind_helper<true, R, F, BoundArgs...> helper_type; typedef sprout::detail::res_bind_helper<true, R, F, BoundArgs...> helper_type;
typedef typename helper_type::maybe_type maybe_type; typedef typename helper_type::maybe_type maybe_type;
typedef typename helper_type::type result_type; typedef typename helper_type::type result_type;
return result_type(maybe_type::do_wrap(sprout::forward<F>(f)), sprout::forward<BoundArgs>(args)...); return result_type(maybe_type::do_wrap(SPROUT_FORWARD(F, f)), SPROUT_FORWARD(BoundArgs, args)...);
} }
} // namespace sprout } // namespace sprout

View file

@ -36,7 +36,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() & std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() & std::declval<U>()))
{ {
return sprout::forward<T>(x) & sprout::forward<U>(y); return SPROUT_FORWARD(T, x) & SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() &= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() &= std::declval<U>()))
{ {
return sprout::forward<T>(x) &= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) &= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -35,7 +35,7 @@ namespace sprout {
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(~std::declval<T>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(~std::declval<T>()))
{ {
return ~sprout::forward<T>(x); return ~SPROUT_FORWARD(T, x);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -36,7 +36,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() | std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() | std::declval<U>()))
{ {
return sprout::forward<T>(x) | sprout::forward<U>(y); return SPROUT_FORWARD(T, x) | SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() |= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() |= std::declval<U>()))
{ {
return sprout::forward<T>(x) |= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) |= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -36,7 +36,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ^ std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ^ std::declval<U>()))
{ {
return sprout::forward<T>(x) ^ sprout::forward<U>(y); return SPROUT_FORWARD(T, x) ^ SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ^= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ^= std::declval<U>()))
{ {
return sprout::forward<T>(x) ^= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) ^= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(F&& f, As&&... as) operator()(F&& f, As&&... as)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<F>()(std::declval<As>()...))) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<F>()(std::declval<As>()...)))
{ {
return sprout::forward<F>(f)(sprout::forward<As>(as)...); return SPROUT_FORWARD(F, f)(SPROUT_FORWARD(As, as)...);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((std::declval<T>(), std::declval<U>()))) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((std::declval<T>(), std::declval<U>())))
{ {
return sprout::forward<T>(x), sprout::forward<U>(y); return SPROUT_FORWARD(T, x), SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y, V&& z) operator()(T&& x, U&& y, V&& z)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ? std::declval<U>() : std::declval<V>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() ? std::declval<U>() : std::declval<V>()))
{ {
return sprout::forward<T>(x) ? sprout::forward<U>(y) : sprout::forward<V>(z); return SPROUT_FORWARD(T, x) ? SPROUT_FORWARD(U, y) : SPROUT_FORWARD(V, z);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(*std::declval<T>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(*std::declval<T>()))
{ {
return *sprout::forward<T>(x); return *SPROUT_FORWARD(T, x);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() / std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() / std::declval<U>()))
{ {
return sprout::forward<T>(x) / sprout::forward<U>(y); return SPROUT_FORWARD(T, x) / SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() /= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() /= std::declval<U>()))
{ {
return sprout::forward<T>(x) /= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) /= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() == std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() == std::declval<U>()))
{ {
return sprout::forward<T>(x) == sprout::forward<U>(y); return SPROUT_FORWARD(T, x) == SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -48,7 +48,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(!std::declval<Compare const&>()(std::declval<T>(), std::declval<U>()) && !std::declval<Compare const&>()(std::declval<U>(), std::declval<T>())) SPROUT_CONSTEXPR decltype(!std::declval<Compare const&>()(std::declval<T>(), std::declval<U>()) && !std::declval<Compare const&>()(std::declval<U>(), std::declval<T>()))
operator()(T&& x, U&& y) const { operator()(T&& x, U&& y) const {
return !fn(sprout::forward<T>(x), sprout::forward<U>(y)) && !fn(sprout::forward<U>(y), sprout::forward<T>(x)); return !fn(SPROUT_FORWARD(T, x), SPROUT_FORWARD(U, y)) && !fn(SPROUT_FORWARD(U, y), SPROUT_FORWARD(T, x));
} }
}; };
} // namespace detail } // namespace detail

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() > std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() > std::declval<U>()))
{ {
return sprout::forward<T>(x) > sprout::forward<U>(y); return SPROUT_FORWARD(T, x) > SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() >= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() >= std::declval<U>()))
{ {
return sprout::forward<T>(x) >= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) >= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -48,9 +48,9 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR std::size_t SPROUT_CONSTEXPR std::size_t
operator()(T&& v) operator()(T&& v)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::to_hash(sprout::forward<T>(v)))) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::to_hash(SPROUT_FORWARD(T, v))))
{ {
return sprout::to_hash(sprout::forward<T>(v)); return sprout::to_hash(SPROUT_FORWARD(T, v));
} }
}; };

View file

@ -34,7 +34,7 @@ namespace sprout {
to_hash(T&& v) { to_hash(T&& v) {
using sprout::hash_value; using sprout::hash_value;
using sprout_adl::hash_value; using sprout_adl::hash_value;
return hash_value(sprout::forward<T>(v)); return hash_value(SPROUT_FORWARD(T, v));
} }
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() < std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() < std::declval<U>()))
{ {
return sprout::forward<T>(x) < sprout::forward<U>(y); return SPROUT_FORWARD(T, x) < SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() <= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() <= std::declval<U>()))
{ {
return sprout::forward<T>(x) <= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) <= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -36,7 +36,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() && std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() && std::declval<U>()))
{ {
return sprout::forward<T>(x) && sprout::forward<U>(y); return SPROUT_FORWARD(T, x) && SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -35,7 +35,7 @@ namespace sprout {
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(!std::declval<T>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(!std::declval<T>()))
{ {
return !sprout::forward<T>(x); return !SPROUT_FORWARD(T, x);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -36,7 +36,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() || std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() || std::declval<U>()))
{ {
return sprout::forward<T>(x) || sprout::forward<U>(y); return SPROUT_FORWARD(T, x) || SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -59,25 +59,25 @@ namespace sprout {
private: private:
template<typename T> template<typename T>
Res call(T& object, Class const volatile*, Args... args) const { Res call(T& object, Class const volatile*, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
Res call(T& ptr, void const volatile*, Args... args) const { Res call(T& ptr, void const volatile*, Args... args) const {
return ((*ptr).*pmf_)(sprout::forward<Args>(args)...); return ((*ptr).*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
public: public:
explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...)) explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...))
: pmf_(pmf) : pmf_(pmf)
{} {}
Res operator()(Class& object, Args... args) const { Res operator()(Class& object, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
Res operator()(Class* object, Args... args) const { Res operator()(Class* object, Args... args) const {
return (object->*pmf_)(sprout::forward<Args>(args)...); return (object->*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
Res operator()(T& object, Args... args) const { Res operator()(T& object, Args... args) const {
return call(object, &object, sprout::forward<Args>(args)...); return call(object, &object, SPROUT_FORWARD(Args, args)...);
} }
}; };
template<typename Res, typename Class, typename... Args> template<typename Res, typename Class, typename... Args>
@ -93,25 +93,25 @@ namespace sprout {
private: private:
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res call(T const& object, Class const volatile*, Args... args) const { SPROUT_CONSTEXPR Res call(T const& object, Class const volatile*, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res call(T const& ptr, void const volatile*, Args... args) const { SPROUT_CONSTEXPR Res call(T const& ptr, void const volatile*, Args... args) const {
return ((*ptr).*pmf_)(sprout::forward<Args>(args)...); return ((*ptr).*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
public: public:
explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) const) explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) const)
: pmf_(pmf) : pmf_(pmf)
{} {}
SPROUT_CONSTEXPR Res operator()(Class const& object, Args... args) const { SPROUT_CONSTEXPR Res operator()(Class const& object, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
SPROUT_CONSTEXPR Res operator()(Class const* object, Args... args) const { SPROUT_CONSTEXPR Res operator()(Class const* object, Args... args) const {
return (object->*pmf_)(sprout::forward<Args>(args)...); return (object->*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res operator()(T const& object, Args... args) const { SPROUT_CONSTEXPR Res operator()(T const& object, Args... args) const {
return call(object, &object, sprout::forward<Args>(args)...); return call(object, &object, SPROUT_FORWARD(Args, args)...);
} }
}; };
template<typename Res, typename Class, typename... Args> template<typename Res, typename Class, typename... Args>
@ -127,25 +127,25 @@ namespace sprout {
private: private:
template<typename T> template<typename T>
Res call(T& object, Class const volatile*, Args... args) const { Res call(T& object, Class const volatile*, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
Res call(T& ptr, void const volatile*, Args... args) const { Res call(T& ptr, void const volatile*, Args... args) const {
return ((*ptr).*pmf_)(sprout::forward<Args>(args)...); return ((*ptr).*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
public: public:
explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) volatile) explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) volatile)
: pmf_(pmf) : pmf_(pmf)
{} {}
Res operator()(Class volatile& object, Args... args) const { Res operator()(Class volatile& object, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
Res operator()(Class volatile* object, Args... args) const { Res operator()(Class volatile* object, Args... args) const {
return (object->*pmf_)(sprout::forward<Args>(args)...); return (object->*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
Res operator()(T& object, Args... args) const { Res operator()(T& object, Args... args) const {
return call(object, &object, sprout::forward<Args>(args)...); return call(object, &object, SPROUT_FORWARD(Args, args)...);
} }
}; };
template<typename Res, typename Class, typename... Args> template<typename Res, typename Class, typename... Args>
@ -161,25 +161,25 @@ namespace sprout {
private: private:
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res call(T const& object, Class const volatile*, Args... args) const { SPROUT_CONSTEXPR Res call(T const& object, Class const volatile*, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res call(T const& ptr, void const volatile*, Args... args) const { SPROUT_CONSTEXPR Res call(T const& ptr, void const volatile*, Args... args) const {
return ((*ptr).*pmf_)(sprout::forward<Args>(args)...); return ((*ptr).*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
public: public:
explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) const volatile) explicit SPROUT_CONSTEXPR mem_fn_adaptor(Res (Class::*pmf)(Args...) const volatile)
: pmf_(pmf) : pmf_(pmf)
{} {}
SPROUT_CONSTEXPR Res operator()(Class const volatile& object, Args... args) const { SPROUT_CONSTEXPR Res operator()(Class const volatile& object, Args... args) const {
return (object.*pmf_)(sprout::forward<Args>(args)...); return (object.*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
SPROUT_CONSTEXPR Res operator()(Class const volatile* object, Args... args) const { SPROUT_CONSTEXPR Res operator()(Class const volatile* object, Args... args) const {
return (object->*pmf_)(sprout::forward<Args>(args)...); return (object->*pmf_)(SPROUT_FORWARD(Args, args)...);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR Res operator()(T const& object, Args... args) const { SPROUT_CONSTEXPR Res operator()(T const& object, Args... args) const {
return call(object, &object, sprout::forward<Args>(args)...); return call(object, &object, SPROUT_FORWARD(Args, args)...);
} }
}; };

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>()->*std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>()->*std::declval<U>()))
{ {
return sprout::forward<T>(x)->*sprout::forward<U>(y); return SPROUT_FORWARD(T, x)->*SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>().*std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>().*std::declval<U>()))
{ {
return sprout::forward<T>(x).*sprout::forward<U>(y); return SPROUT_FORWARD(T, x).*SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() - std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() - std::declval<U>()))
{ {
return sprout::forward<T>(x) - sprout::forward<U>(y); return SPROUT_FORWARD(T, x) - SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() -= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() -= std::declval<U>()))
{ {
return sprout::forward<T>(x) -= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) -= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() % std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() % std::declval<U>()))
{ {
return sprout::forward<T>(x) % sprout::forward<U>(y); return SPROUT_FORWARD(T, x) % SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() %= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() %= std::declval<U>()))
{ {
return sprout::forward<T>(x) %= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) %= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() * std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() * std::declval<U>()))
{ {
return sprout::forward<T>(x) * sprout::forward<U>(y); return SPROUT_FORWARD(T, x) * SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() *= std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() *= std::declval<U>()))
{ {
return sprout::forward<T>(x) *= sprout::forward<U>(y); return SPROUT_FORWARD(T, x) *= SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -37,7 +37,7 @@ namespace sprout {
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(-std::declval<T>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(-std::declval<T>()))
{ {
return -sprout::forward<T>(x); return -SPROUT_FORWARD(T, x);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -46,7 +46,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(!std::declval<Predicate const&>()(std::declval<T>())) SPROUT_CONSTEXPR decltype(!std::declval<Predicate const&>()(std::declval<T>()))
operator()(T&& x) const { operator()(T&& x) const {
return !fn(sprout::forward<T>(x)); return !fn(SPROUT_FORWARD(T, x));
} }
}; };
} // namespace detail } // namespace detail

View file

@ -47,7 +47,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(!std::declval<Predicate const&>()(std::declval<T>(), std::declval<U>())) SPROUT_CONSTEXPR decltype(!std::declval<Predicate const&>()(std::declval<T>(), std::declval<U>()))
operator()(T&& x, U&& y) const { operator()(T&& x, U&& y) const {
return !fn(sprout::forward<T>(x), sprout::forward<U>(y)); return !fn(SPROUT_FORWARD(T, x), SPROUT_FORWARD(U, y));
} }
}; };
} // namespace detail } // namespace detail

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() != std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() != std::declval<U>()))
{ {
return sprout::forward<T>(x) != sprout::forward<U>(y); return SPROUT_FORWARD(T, x) != SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -38,7 +38,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() + std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() + std::declval<U>()))
{ {
return sprout::forward<T>(x) + sprout::forward<U>(y); return SPROUT_FORWARD(T, x) + SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

View file

@ -28,7 +28,7 @@ namespace sprout {
operator()(T&& x, U&& y) operator()(T&& x, U&& y)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() += std::declval<U>())) const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>() += std::declval<U>()))
{ {
return sprout::forward<T>(x) += sprout::forward<U>(y); return SPROUT_FORWARD(T, x) += SPROUT_FORWARD(U, y);
} }
}; };
} // namespace sprout } // namespace sprout

Some files were not shown because too many files have changed in this diff Show more