fix macros for noexcept

This commit is contained in:
bolero-MURAKAMI 2014-08-14 22:55:49 +09:00
parent 23f24450b0
commit 979af136a1
125 changed files with 324 additions and 287 deletions

View file

@ -91,7 +91,7 @@ namespace sprout {
return fill(value); return fill(value);
} }
SPROUT_CXX14_CONSTEXPR void swap(array& other) SPROUT_CXX14_CONSTEXPR void swap(array& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(std::declval<T&>(), std::declval<T&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(std::declval<T&>(), std::declval<T&>()))
{ {
sprout::swap_ranges(other.begin(), other.end(), begin()); sprout::swap_ranges(other.begin(), other.end(), begin());
} }
@ -226,7 +226,7 @@ namespace sprout {
template<typename T, std::size_t N> template<typename T, std::size_t N>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::array<T, N>& lhs, sprout::array<T, N>& rhs) swap(sprout::array<T, N>& lhs, sprout::array<T, N>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -87,7 +87,7 @@ namespace sprout {
return second_; return second_;
} }
SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other) SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_)) SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(second_, other.second_)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(second_, other.second_))
) )
@ -138,7 +138,7 @@ namespace sprout {
return second_; return second_;
} }
SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other) SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(second_, other.second_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(second_, other.second_))
{ {
sprout::swap(second_, other.second_); sprout::swap(second_, other.second_);
} }
@ -186,7 +186,7 @@ namespace sprout {
return *this; return *this;
} }
SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other) SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(first_, other.first_))
{ {
sprout::swap(first_, other.first_); sprout::swap(first_, other.first_);
} }
@ -317,7 +317,7 @@ namespace sprout {
return second_; return second_;
} }
SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other) SPROUT_CXX14_CONSTEXPR void swap(compressed_pair_impl& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_)) SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(second_, other.second_)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(second_, other.second_))
) )
@ -450,7 +450,7 @@ namespace sprout {
template<typename T1, typename T2> template<typename T1, typename T2>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::compressed_pair<T1, T2>& lhs, sprout::compressed_pair<T1, T2>& rhs) swap(sprout::compressed_pair<T1, T2>& lhs, sprout::compressed_pair<T1, T2>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -106,17 +106,26 @@
// //
// SPROUT_NOEXCEPT // SPROUT_NOEXCEPT
// SPROUT_NOEXCEPT_OR_NOTHROW
// SPROUT_NOEXCEPT_IF
// SPROUT_NOEXCEPT_EXPR // SPROUT_NOEXCEPT_EXPR
// SPROUT_NOEXCEPT_EXPR_OR_DEFAULT // SPROUT_NOEXCEPT_EXPR_OR_DEFAULT
// SPROUT_NOEXCEPT_IF_EXPR
// //
#ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
# define SPROUT_NOEXCEPT noexcept # define SPROUT_NOEXCEPT noexcept
# define SPROUT_NOEXCEPT_EXPR(EXPR) noexcept(EXPR) # define SPROUT_NOEXCEPT_OR_NOTHROW noexcept
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) noexcept(EXPR) # define SPROUT_NOEXCEPT_IF(COND) noexcept((COND))
# define SPROUT_NOEXCEPT_EXPR(EXPR) noexcept((EXPR))
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) noexcept((EXPR))
# define SPROUT_NOEXCEPT_IF_EXPR(EXPR) noexcept(noexcept((EXPR)))
#else // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT #else // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
# define SPROUT_NOEXCEPT # define SPROUT_NOEXCEPT
# define SPROUT_NOEXCEPT_EXPR(EXPR) # define SPROUT_NOEXCEPT_OR_NOTHROW throw()
# define SPROUT_NOEXCEPT_IF(COND)
# define SPROUT_NOEXCEPT_EXPR(EXPR) false
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) C # define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) C
# define SPROUT_NOEXCEPT_IF_EXPR(EXPR)
#endif // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT #endif // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
// //

View file

@ -53,7 +53,7 @@ namespace sprout {
container_holder(container_holder const&) = default; container_holder(container_holder const&) = default;
SPROUT_CXX14_CONSTEXPR void swap(container_holder& other) SPROUT_CXX14_CONSTEXPR void swap(container_holder& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(other.container, container))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(other.container, container))
{ {
sprout::swap(other.container, container); sprout::swap(other.container, container);
} }
@ -127,7 +127,7 @@ namespace sprout {
template<typename Container> template<typename Container>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::container_holder<Container>& lhs, sprout::container_holder<Container>& rhs) swap(sprout::container_holder<Container>& lhs, sprout::container_holder<Container>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -431,7 +431,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(sprout::tolower(std::declval<T>()) == sprout::tolower(std::declval<U>())) SPROUT_CONSTEXPR decltype(sprout::tolower(std::declval<T>()) == sprout::tolower(std::declval<U>()))
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_IF_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));
} }
@ -457,7 +457,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(sprout::tolower(std::declval<T>()) != sprout::tolower(std::declval<U>())) SPROUT_CONSTEXPR decltype(sprout::tolower(std::declval<T>()) != sprout::tolower(std::declval<U>()))
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_IF_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));
} }

View file

@ -44,7 +44,7 @@ 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_IF_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));

View file

@ -38,7 +38,7 @@ 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_IF_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));
@ -46,7 +46,7 @@ namespace sprout {
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_IF_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));
@ -54,7 +54,7 @@ namespace sprout {
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_IF_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));
@ -68,7 +68,7 @@ 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_IF_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));
@ -79,7 +79,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::unit<T>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::unit<T>::type
a(T&&) a(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(typename sprout::darkroom::access::unit<T>::type())) SPROUT_NOEXCEPT_IF_EXPR(typename sprout::darkroom::access::unit<T>::type())
{ {
return typename sprout::darkroom::access::unit<T>::type(); return typename sprout::darkroom::access::unit<T>::type();
} }

View file

@ -26,7 +26,7 @@ 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_IF_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));
@ -34,7 +34,7 @@ namespace sprout {
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_IF_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));
@ -42,7 +42,7 @@ namespace sprout {
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_IF_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,7 +51,7 @@ 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_IF_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));
@ -59,7 +59,7 @@ namespace sprout {
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_IF_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));
@ -67,7 +67,7 @@ namespace sprout {
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_IF_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));
@ -75,7 +75,7 @@ namespace sprout {
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_IF_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));
@ -83,7 +83,7 @@ namespace sprout {
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_IF_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));
@ -94,7 +94,7 @@ 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_IF_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));
@ -105,7 +105,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type
is_from_inside(T&&) is_from_inside(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type()))) SPROUT_NOEXCEPT_IF_EXPR((typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type()))
{ {
return typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type(); return typename sprout::darkroom::access::element<5, sprout::darkroom::intersects::intersection>::type();
} }

View file

@ -58,7 +58,7 @@ 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_IF_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));
@ -69,7 +69,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type
color(T&&) color(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type()))) SPROUT_NOEXCEPT_IF_EXPR((typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type()))
{ {
return typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type(); return typename sprout::darkroom::access::element<0, sprout::darkroom::materials::material>::type();
} }
@ -82,7 +82,7 @@ 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_IF_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));
@ -93,7 +93,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type
reflection(T&&) reflection(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type()))) SPROUT_NOEXCEPT_IF_EXPR((typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type()))
{ {
return typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type(); return typename sprout::darkroom::access::element<1, sprout::darkroom::materials::material>::type();
} }
@ -106,7 +106,7 @@ 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_IF_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));
@ -117,7 +117,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type
alpha(T&&) alpha(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type()))) SPROUT_NOEXCEPT_IF_EXPR((typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type()))
{ {
return typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type(); return typename sprout::darkroom::access::element<2, sprout::darkroom::materials::material>::type();
} }
@ -130,7 +130,7 @@ 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_IF_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));
@ -141,7 +141,7 @@ namespace sprout {
> >
inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type inline SPROUT_CONSTEXPR typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type
refraction(T&&) refraction(T&&)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR((typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type()))) SPROUT_NOEXCEPT_IF_EXPR((typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type()))
{ {
return typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type(); return typename sprout::darkroom::access::element<3, sprout::darkroom::materials::material>::type();
} }

View file

@ -25,7 +25,7 @@ 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_IF_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));
@ -33,7 +33,7 @@ namespace sprout {
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_IF_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

@ -38,11 +38,11 @@ namespace sprout {
SPROUT_STATIC_CONSTEXPR std::size_t bit_count = Bits; SPROUT_STATIC_CONSTEXPR std::size_t bit_count = Bits;
}; };
#define SPROUT_LOW_BITS_MASK_SPECIALIZE(Type) \ #define SPROUT_LOW_BITS_MASK_SPECIALIZE(TYPE) \
template<> \ template<> \
struct low_bits_mask_t<sprout::numeric_limits<Type>::digits> { \ struct low_bits_mask_t<sprout::numeric_limits<TYPE>::digits> { \
public: \ public: \
typedef sprout::numeric_limits<Type> limits_type; \ typedef sprout::numeric_limits<TYPE> limits_type; \
typedef typename sprout::detail::uint_t<limits_type::digits>::least least; \ typedef typename sprout::detail::uint_t<limits_type::digits>::least least; \
typedef typename sprout::detail::uint_t<limits_type::digits>::fast fast; \ typedef typename sprout::detail::uint_t<limits_type::digits>::fast fast; \
public: \ public: \

View file

@ -13,8 +13,8 @@
// //
// SPROUT_VERSION_NUMBER // SPROUT_VERSION_NUMBER
// //
#define SPROUT_VERSION_NUMBER(major, minor, patch) \ #define SPROUT_VERSION_NUMBER(MAJOR, MINOR, PATCH) \
((((major) % 100) * 10000000) + (((minor) % 100) * 100000) + ((patch) % 100000)) ((((MAJOR) % 100) * 10000000) + (((MINOR) % 100) * 100000) + ((PATCH) % 100000))
// //
// SPROUT_VERSION_NUMBER_ZERO // SPROUT_VERSION_NUMBER_ZERO
// //
@ -42,14 +42,14 @@
// SPROUT_GCC_OR_LATER // SPROUT_GCC_OR_LATER
// //
#if SPROUT_AVAILABLE_GCC #if SPROUT_AVAILABLE_GCC
# define SPROUT_GCC_EARLIER(major, minor, patch) \ # define SPROUT_GCC_EARLIER(MAJOR, MINOR, PATCH) \
(SPROUT_VERSION_GCC < SPROUT_VERSION_NUMBER(major, minor, patch)) (SPROUT_VERSION_GCC < SPROUT_VERSION_NUMBER(MAJOR, MINOR, PATCH))
# define SPROUT_GCC_OR_LATER(major, minor, patch) \ # define SPROUT_GCC_OR_LATER(MAJOR, MINOR, PATCH) \
(SPROUT_VERSION_GCC >= SPROUT_VERSION_NUMBER(major, minor, patch)) (SPROUT_VERSION_GCC >= SPROUT_VERSION_NUMBER(MAJOR, MINOR, PATCH))
#else #else
# define SPROUT_GCC_EARLIER(major, minor, patch) \ # define SPROUT_GCC_EARLIER(MAJOR, MINOR, PATCH) \
(0) (0)
# define SPROUT_GCC_OR_LATER(major, minor, patch) \ # define SPROUT_GCC_OR_LATER(MAJOR, MINOR, PATCH) \
(0) (0)
#endif #endif
// //
@ -92,14 +92,14 @@
// SPROUT_CLANG_OR_LATER // SPROUT_CLANG_OR_LATER
// //
#if SPROUT_AVAILABLE_CLANG #if SPROUT_AVAILABLE_CLANG
# define SPROUT_CLANG_EARLIER(major, minor, patch) \ # define SPROUT_CLANG_EARLIER(MAJOR, MINOR, PATCH) \
(SPROUT_VERSION_CLANG < SPROUT_VERSION_NUMBER(major, minor, patch)) (SPROUT_VERSION_CLANG < SPROUT_VERSION_NUMBER(MAJOR, MINOR, PATCH))
# define SPROUT_CLANG_OR_LATER(major, minor, patch) \ # define SPROUT_CLANG_OR_LATER(MAJOR, MINOR, PATCH) \
(SPROUT_VERSION_CLANG >= SPROUT_VERSION_NUMBER(major, minor, patch)) (SPROUT_VERSION_CLANG >= SPROUT_VERSION_NUMBER(MAJOR, MINOR, PATCH))
#else #else
# define SPROUT_CLANG_EARLIER(major, minor, patch) \ # define SPROUT_CLANG_EARLIER(MAJOR, MINOR, PATCH) \
(0) (0)
# define SPROUT_CLANG_OR_LATER(major, minor, patch) \ # define SPROUT_CLANG_OR_LATER(MAJOR, MINOR, PATCH) \
(0) (0)
#endif #endif
// //

View file

@ -96,7 +96,7 @@ namespace sprout {
return forward_item_iterator(item->next); return forward_item_iterator(item->next);
} }
SPROUT_CXX14_CONSTEXPR void swap(forward_item_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(forward_item_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(item, other.item))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(item, other.item))
{ {
sprout::swap(item, other.item); sprout::swap(item, other.item);
} }
@ -143,7 +143,7 @@ namespace sprout {
template<typename List> template<typename List>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::detail::forward_item_iterator<List>& lhs, sprout::detail::forward_item_iterator<List>& rhs) swap(sprout::detail::forward_item_iterator<List>& lhs, sprout::detail::forward_item_iterator<List>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }
@ -240,7 +240,10 @@ namespace sprout {
{} {}
SPROUT_CXX14_CONSTEXPR void swap(item& other) SPROUT_CXX14_CONSTEXPR void swap(item& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(val, other.val)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(next, other.next))) SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(val, other.val))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(next, other.next))
)
{ {
sprout::swap(val, other.val); sprout::swap(val, other.val);
sprout::swap(next, other.next); sprout::swap(next, other.next);

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(&std::declval<T>()) SPROUT_CONSTEXPR decltype(&std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(&std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(&std::declval<T>())
{ {
return &SPROUT_FORWARD(T, x); return &SPROUT_FORWARD(T, x);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() = std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() = std::declval<U>())
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_IF_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);
} }

View file

@ -34,7 +34,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() & std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() & std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() &= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() &= std::declval<U>())
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_IF_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);
} }

View file

@ -33,7 +33,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(~std::declval<T>()) SPROUT_CONSTEXPR decltype(~std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(~std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(~std::declval<T>())
{ {
return ~SPROUT_FORWARD(T, x); return ~SPROUT_FORWARD(T, x);
} }

View file

@ -34,7 +34,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() | std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() | std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() |= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() |= std::declval<U>())
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_IF_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);
} }

View file

@ -34,7 +34,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() ^ std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() ^ std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() ^= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() ^= std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename F, typename... As> template<typename F, typename... As>
SPROUT_CONSTEXPR decltype(std::declval<F>()(std::declval<As>()...)) SPROUT_CONSTEXPR decltype(std::declval<F>()(std::declval<As>()...))
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_IF_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)...);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>(), std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>(), std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U, typename V> template<typename T, typename U, typename V>
SPROUT_CONSTEXPR decltype(std::declval<T>() ? std::declval<U>() : std::declval<V>()) SPROUT_CONSTEXPR decltype(std::declval<T>() ? std::declval<U>() : std::declval<V>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(*std::declval<T>()) SPROUT_CONSTEXPR decltype(*std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(*std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(*std::declval<T>())
{ {
return *SPROUT_FORWARD(T, x); return *SPROUT_FORWARD(T, x);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() / std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() / std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() /= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() /= std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() == std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() == std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() > std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() > std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() >= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() >= std::declval<U>())
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_IF_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);
} }

View file

@ -48,31 +48,31 @@ 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_IF_EXPR(sprout::to_hash(SPROUT_FORWARD(T, v)))
{ {
return sprout::to_hash(SPROUT_FORWARD(T, v)); return sprout::to_hash(SPROUT_FORWARD(T, v));
} }
}; };
#define SPROUT_HASH_SPECIALIZE(type) \ #define SPROUT_HASH_SPECIALIZE(TYPE) \
template<> \ template<> \
struct hash<type> { \ struct hash<TYPE> { \
public: \ public: \
typedef type argument_type; \ typedef TYPE argument_type; \
typedef std::size_t result_type; \ typedef std::size_t result_type; \
public: \ public: \
SPROUT_CONSTEXPR std::size_t operator()(type v) const { \ SPROUT_CONSTEXPR std::size_t operator()(TYPE v) const { \
return sprout::to_hash(v); \ return sprout::to_hash(v); \
} \ } \
} }
#define SPROUT_HASH_SPECIALIZE_REF(type) \ #define SPROUT_HASH_SPECIALIZE_REF(TYPE) \
template<> \ template<> \
struct hash<type> { \ struct hash<TYPE> { \
public: \ public: \
typedef type argument_type; \ typedef TYPE argument_type; \
typedef std::size_t result_type; \ typedef std::size_t result_type; \
public: \ public: \
SPROUT_CONSTEXPR std::size_t operator()(type const& v) const { \ SPROUT_CONSTEXPR std::size_t operator()(TYPE const& v) const { \
return sprout::to_hash(v); \ return sprout::to_hash(v); \
} \ } \
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() < std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() < std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() <= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() <= std::declval<U>())
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_IF_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);
} }

View file

@ -34,7 +34,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() && std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() && std::declval<U>())
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_IF_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);
} }

View file

@ -33,7 +33,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(!std::declval<T>()) SPROUT_CONSTEXPR decltype(!std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(!std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(!std::declval<T>())
{ {
return !SPROUT_FORWARD(T, x); return !SPROUT_FORWARD(T, x);
} }

View file

@ -34,7 +34,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() || std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() || std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>()->*std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>()->*std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>().*std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>().*std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() - std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() - std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() -= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() -= std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() % std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() % std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() %= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() %= std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() * std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() * std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() *= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() *= std::declval<U>())
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_IF_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);
} }

View file

@ -35,7 +35,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(-std::declval<T>()) SPROUT_CONSTEXPR decltype(-std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(-std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(-std::declval<T>())
{ {
return -SPROUT_FORWARD(T, x); return -SPROUT_FORWARD(T, x);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() != std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() != std::declval<U>())
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_IF_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);
} }

View file

@ -36,7 +36,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() + std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() + std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() += std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() += std::declval<U>())
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_IF_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);
} }

View file

@ -30,7 +30,7 @@ namespace sprout {
template<typename Arg> template<typename Arg>
SPROUT_CONSTEXPR decltype(op(value, std::declval<Arg>())) SPROUT_CONSTEXPR decltype(op(value, std::declval<Arg>()))
operator()(Arg&& x) operator()(Arg&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(op(value, std::declval<Arg>()))) const SPROUT_NOEXCEPT_IF_EXPR(op(value, std::declval<Arg>()))
{ {
return op(value, SPROUT_FORWARD(Arg, x)); return op(value, SPROUT_FORWARD(Arg, x));
} }

View file

@ -30,7 +30,7 @@ namespace sprout {
template<typename Arg> template<typename Arg>
SPROUT_CONSTEXPR decltype(op(std::declval<Arg>(), value)) SPROUT_CONSTEXPR decltype(op(std::declval<Arg>(), value))
operator()(Arg&& x) operator()(Arg&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(op(std::declval<Arg>(), value))) const SPROUT_NOEXCEPT_IF_EXPR(op(std::declval<Arg>(), value))
{ {
return op(SPROUT_FORWARD(Arg, x), value); return op(SPROUT_FORWARD(Arg, x), value);
} }

View file

@ -35,7 +35,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(+std::declval<T>()) SPROUT_CONSTEXPR decltype(+std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(+std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(+std::declval<T>())
{ {
return +SPROUT_FORWARD(T, x); return +SPROUT_FORWARD(T, x);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(~std::declval<T>()--) SPROUT_CONSTEXPR decltype(~std::declval<T>()--)
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(~std::declval<T>()--)) const SPROUT_NOEXCEPT_IF_EXPR(~std::declval<T>()--)
{ {
return SPROUT_FORWARD(T, x)--; return SPROUT_FORWARD(T, x)--;
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(std::declval<T>()++) SPROUT_CONSTEXPR decltype(std::declval<T>()++)
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<T>()++)) const SPROUT_NOEXCEPT_IF_EXPR(std::declval<T>()++)
{ {
return SPROUT_FORWARD(T, x)++; return SPROUT_FORWARD(T, x)++;
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(--std::declval<T>()) SPROUT_CONSTEXPR decltype(--std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(--std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(--std::declval<T>())
{ {
return --SPROUT_FORWARD(T, x); return --SPROUT_FORWARD(T, x);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T> template<typename T>
SPROUT_CONSTEXPR decltype(++std::declval<T>()) SPROUT_CONSTEXPR decltype(++std::declval<T>())
operator()(T&& x) operator()(T&& x)
const SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(++std::declval<T>())) const SPROUT_NOEXCEPT_IF_EXPR(++std::declval<T>())
{ {
return ++SPROUT_FORWARD(T, x); return ++SPROUT_FORWARD(T, x);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() << std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() << std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() <<= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() <<= std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() >> std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() >> std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>() >>= std::declval<U>()) SPROUT_CONSTEXPR decltype(std::declval<T>() >>= std::declval<U>())
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_IF_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);
} }

View file

@ -26,7 +26,7 @@ namespace sprout {
template<typename T, typename U> template<typename T, typename U>
SPROUT_CONSTEXPR decltype(std::declval<T>()[std::declval<U>()]) SPROUT_CONSTEXPR decltype(std::declval<T>()[std::declval<U>()])
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_IF_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)];
} }

View file

@ -25,7 +25,7 @@ namespace sprout_generator_detail {
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen&>())) inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen&>()))
get_generated_value(Gen& gen) get_generated_value(Gen& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_generated_value(gen); return sprout::generators::generator_access_traits<Gen>::get_generated_value(gen);
} }
@ -35,14 +35,14 @@ namespace sprout_generator_detail {
decltype(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_generated_value(std::declval<Gen&&>())) decltype(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_generated_value(std::declval<Gen&&>()))
>::type >::type
get_generated_value(Gen&& gen) get_generated_value(Gen&& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_generated_value(std::declval<Gen&&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_generated_value(std::declval<Gen&&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_generated_value(gen); return sprout::generators::generator_access_traits<Gen>::get_generated_value(gen);
} }
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen const>::get_generated_value(std::declval<Gen const&>())) inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen const>::get_generated_value(std::declval<Gen const&>()))
get_generated_value(Gen const& gen) get_generated_value(Gen const& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen const>::get_generated_value(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen const>::get_generated_value(std::declval<Gen const&>()))
{ {
return sprout::generators::generator_access_traits<Gen const>::get_generated_value(gen); return sprout::generators::generator_access_traits<Gen const>::get_generated_value(gen);
} }
@ -50,7 +50,7 @@ namespace sprout_generator_detail {
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(get_generated_value(std::declval<Gen&>())) inline SPROUT_CONSTEXPR decltype(get_generated_value(std::declval<Gen&>()))
call_get_generated_value(Gen& gen) call_get_generated_value(Gen& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_generated_value(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_generated_value(std::declval<Gen&>()))
{ {
return get_generated_value(gen); return get_generated_value(gen);
} }
@ -60,14 +60,14 @@ namespace sprout_generator_detail {
decltype(get_generated_value(std::declval<Gen&&>())) decltype(get_generated_value(std::declval<Gen&&>()))
>::type >::type
call_get_generated_value(Gen&& gen) call_get_generated_value(Gen&& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_generated_value(std::declval<Gen&&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_generated_value(std::declval<Gen&&>()))
{ {
return get_generated_value(gen); return get_generated_value(gen);
} }
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(get_generated_value(std::declval<Gen const&>())) inline SPROUT_CONSTEXPR decltype(get_generated_value(std::declval<Gen const&>()))
call_get_generated_value(Gen const& gen) call_get_generated_value(Gen const& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_generated_value(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_generated_value(std::declval<Gen const&>()))
{ {
return get_generated_value(gen); return get_generated_value(gen);
} }
@ -88,7 +88,7 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR decltype(sprout_generator_detail::call_get_generated_value(std::declval<T>())) inline SPROUT_CONSTEXPR decltype(sprout_generator_detail::call_get_generated_value(std::declval<T>()))
generated_value(T&& t) generated_value(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout_generator_detail::call_get_generated_value(std::declval<T>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout_generator_detail::call_get_generated_value(std::declval<T>()))
{ {
return sprout_generator_detail::call_get_generated_value(SPROUT_FORWARD(T, t)); return sprout_generator_detail::call_get_generated_value(SPROUT_FORWARD(T, t));
} }

View file

@ -50,19 +50,19 @@ namespace sprout {
public: public:
static SPROUT_CONSTEXPR decltype(std::declval<Gen&>().generated_value()) static SPROUT_CONSTEXPR decltype(std::declval<Gen&>().generated_value())
get_generated_value(Gen& t) get_generated_value(Gen& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen&>().generated_value())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen&>().generated_value())
{ {
return t.generated_value(); return t.generated_value();
} }
static SPROUT_CONSTEXPR decltype(std::declval<Gen&&>().generated_value()) static SPROUT_CONSTEXPR decltype(std::declval<Gen&&>().generated_value())
get_generated_value(Gen&& t) get_generated_value(Gen&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen&&>().generated_value())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen&&>().generated_value())
{ {
return t.generated_value(); return t.generated_value();
} }
static SPROUT_CONSTEXPR decltype(std::declval<Gen const&>().generated_value()) static SPROUT_CONSTEXPR decltype(std::declval<Gen const&>().generated_value())
get_generated_value(Gen const& t) get_generated_value(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen const&>().generated_value())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen const&>().generated_value())
{ {
return t.generated_value(); return t.generated_value();
} }
@ -75,19 +75,19 @@ namespace sprout {
public: public:
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen&>()))
get_generated_value(Gen& t) get_generated_value(Gen& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<0>(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<0>(std::declval<Gen&>()))
{ {
return sprout::tuples::get<0>(t); return sprout::tuples::get<0>(t);
} }
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen&&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen&&>()))
get_generated_value(Gen&& t) get_generated_value(Gen&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<0>(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<0>(std::declval<Gen&>()))
{ {
return sprout::tuples::get<0>(t); return sprout::tuples::get<0>(t);
} }
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen const&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<0>(std::declval<Gen const&>()))
get_generated_value(Gen const& t) get_generated_value(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<0>(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<0>(std::declval<Gen const&>()))
{ {
return sprout::tuples::get<0>(t); return sprout::tuples::get<0>(t);
} }
@ -125,19 +125,19 @@ namespace sprout {
public: public:
static SPROUT_CONSTEXPR decltype(std::declval<Gen&>().next_generator()) static SPROUT_CONSTEXPR decltype(std::declval<Gen&>().next_generator())
get_next_generator(Gen& t) get_next_generator(Gen& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen&>().next_generator())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen&>().next_generator())
{ {
return t.next_generator(); return t.next_generator();
} }
static SPROUT_CONSTEXPR decltype(std::declval<Gen&&>().next_generator()) static SPROUT_CONSTEXPR decltype(std::declval<Gen&&>().next_generator())
get_next_generator(Gen&& t) get_next_generator(Gen&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen&&>().next_generator())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen&&>().next_generator())
{ {
return t.next_generator(); return t.next_generator();
} }
static SPROUT_CONSTEXPR decltype(std::declval<Gen const&>().next_generator()) static SPROUT_CONSTEXPR decltype(std::declval<Gen const&>().next_generator())
get_next_generator(Gen const& t) get_next_generator(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::declval<Gen const&>().next_generator())) SPROUT_NOEXCEPT_IF_EXPR(std::declval<Gen const&>().next_generator())
{ {
return t.next_generator(); return t.next_generator();
} }
@ -150,19 +150,19 @@ namespace sprout {
public: public:
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen&>()))
get_next_generator(Gen& t) get_next_generator(Gen& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<1>(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<1>(std::declval<Gen&>()))
{ {
return sprout::tuples::get<1>(t); return sprout::tuples::get<1>(t);
} }
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen&&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen&&>()))
get_next_generator(Gen&& t) get_next_generator(Gen&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<1>(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<1>(std::declval<Gen&>()))
{ {
return sprout::tuples::get<1>(t); return sprout::tuples::get<1>(t);
} }
static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen const&>())) static SPROUT_CONSTEXPR decltype(sprout::tuples::get<1>(std::declval<Gen const&>()))
get_next_generator(Gen const& t) get_next_generator(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<1>(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::tuples::get<1>(std::declval<Gen const&>()))
{ {
return sprout::tuples::get<1>(t); return sprout::tuples::get<1>(t);
} }
@ -182,13 +182,13 @@ namespace sprout {
public: public:
static SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen const&>())) static SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen const&>()))
get_generated_value(Gen const& t) get_generated_value(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen>::get_generated_value(std::declval<Gen const&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_generated_value(t); return sprout::generators::generator_access_traits<Gen>::get_generated_value(t);
} }
static SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen const&>())) static SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen const&>()))
get_next_generator(Gen const& t) get_next_generator(Gen const& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen const&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_next_generator(t); return sprout::generators::generator_access_traits<Gen>::get_next_generator(t);
} }

View file

@ -25,7 +25,7 @@ namespace sprout_generator_detail {
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen&>())) inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen&>()))
get_next_generator(Gen& gen) get_next_generator(Gen& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen>::get_next_generator(std::declval<Gen&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_next_generator(gen); return sprout::generators::generator_access_traits<Gen>::get_next_generator(gen);
} }
@ -35,14 +35,14 @@ namespace sprout_generator_detail {
decltype(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_next_generator(std::declval<Gen&&>())) decltype(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_next_generator(std::declval<Gen&&>()))
>::type >::type
get_next_generator(Gen&& gen) get_next_generator(Gen&& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_next_generator(std::declval<Gen&&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<typename std::remove_reference<Gen>::type>::get_next_generator(std::declval<Gen&&>()))
{ {
return sprout::generators::generator_access_traits<Gen>::get_next_generator(gen); return sprout::generators::generator_access_traits<Gen>::get_next_generator(gen);
} }
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen const>::get_next_generator(std::declval<Gen const&>())) inline SPROUT_CONSTEXPR decltype(sprout::generators::generator_access_traits<Gen const>::get_next_generator(std::declval<Gen const&>()))
get_next_generator(Gen const& gen) get_next_generator(Gen const& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::generators::generator_access_traits<Gen const>::get_next_generator(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout::generators::generator_access_traits<Gen const>::get_next_generator(std::declval<Gen const&>()))
{ {
return sprout::generators::generator_access_traits<Gen const>::get_next_generator(gen); return sprout::generators::generator_access_traits<Gen const>::get_next_generator(gen);
} }
@ -50,7 +50,7 @@ namespace sprout_generator_detail {
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(get_next_generator(std::declval<Gen&>())) inline SPROUT_CONSTEXPR decltype(get_next_generator(std::declval<Gen&>()))
call_get_next_generator(Gen& gen) call_get_next_generator(Gen& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_next_generator(std::declval<Gen&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_next_generator(std::declval<Gen&>()))
{ {
return get_next_generator(gen); return get_next_generator(gen);
} }
@ -60,14 +60,14 @@ namespace sprout_generator_detail {
decltype(get_next_generator(std::declval<Gen&&>())) decltype(get_next_generator(std::declval<Gen&&>()))
>::type >::type
call_get_next_generator(Gen&& gen) call_get_next_generator(Gen&& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_next_generator(std::declval<Gen&&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_next_generator(std::declval<Gen&&>()))
{ {
return get_next_generator(gen); return get_next_generator(gen);
} }
template<typename Gen> template<typename Gen>
inline SPROUT_CONSTEXPR decltype(get_next_generator(std::declval<Gen const&>())) inline SPROUT_CONSTEXPR decltype(get_next_generator(std::declval<Gen const&>()))
call_get_next_generator(Gen const& gen) call_get_next_generator(Gen const& gen)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(get_next_generator(std::declval<Gen const&>()))) SPROUT_NOEXCEPT_IF_EXPR(get_next_generator(std::declval<Gen const&>()))
{ {
return get_next_generator(gen); return get_next_generator(gen);
} }
@ -88,7 +88,7 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CONSTEXPR decltype(sprout_generator_detail::call_get_next_generator(std::declval<T>())) inline SPROUT_CONSTEXPR decltype(sprout_generator_detail::call_get_next_generator(std::declval<T>()))
next_generator(T&& t) next_generator(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout_generator_detail::call_get_next_generator(std::declval<T>()))) SPROUT_NOEXCEPT_IF_EXPR(sprout_generator_detail::call_get_next_generator(std::declval<T>()))
{ {
return sprout_generator_detail::call_get_next_generator(SPROUT_FORWARD(T, t)); return sprout_generator_detail::call_get_next_generator(SPROUT_FORWARD(T, t));
} }

View file

@ -124,7 +124,7 @@ namespace sprout {
return adjacent_filter_iterator(pred, checked_next(find_next(current, last, pred), last), last, private_construct_t()); return adjacent_filter_iterator(pred, checked_next(find_next(current, last, pred), last), last, private_construct_t());
} }
SPROUT_CXX14_CONSTEXPR void swap(adjacent_filter_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(adjacent_filter_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(last, other.last)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(last, other.last))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(pred, other.pred)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(pred, other.pred))
@ -168,7 +168,7 @@ namespace sprout {
template<typename Predicate, typename Iterator> template<typename Predicate, typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::adjacent_filter_iterator<Predicate, Iterator>& lhs, sprout::adjacent_filter_iterator<Predicate, Iterator>& rhs) swap(sprout::adjacent_filter_iterator<Predicate, Iterator>& lhs, sprout::adjacent_filter_iterator<Predicate, Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -160,7 +160,7 @@ namespace sprout {
; ;
} }
SPROUT_CXX14_CONSTEXPR void swap(alternate_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(alternate_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(in_left, other.in_left)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(in_left, other.in_left))
@ -280,7 +280,7 @@ namespace sprout {
sprout::alternate_iterator<LIterator, RIterator>& lhs, sprout::alternate_iterator<LIterator, RIterator>& lhs,
sprout::alternate_iterator<LIterator, RIterator>& rhs sprout::alternate_iterator<LIterator, RIterator>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -77,7 +77,7 @@ namespace sprout {
} }
SPROUT_CXX14_CONSTEXPR void swap(back_insert_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(back_insert_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(base_type::swap(other))) SPROUT_NOEXCEPT_IF_EXPR(base_type::swap(other))
{ {
base_type::swap(other); base_type::swap(other);
} }
@ -89,7 +89,7 @@ namespace sprout {
template<typename Container> template<typename Container>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::back_insert_iterator<Container>& lhs, sprout::back_insert_iterator<Container>& rhs) swap(sprout::back_insert_iterator<Container>& lhs, sprout::back_insert_iterator<Container>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -101,7 +101,7 @@ namespace sprout {
return bytes_iterator(it_, i_ - 1, prev_tag()); return bytes_iterator(it_, i_ - 1, prev_tag());
} }
SPROUT_CXX14_CONSTEXPR void swap(bytes_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(bytes_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(it_, other.it_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(it_, other.it_))
{ {
sprout::swap(it_, other.it_); sprout::swap(it_, other.it_);
sprout::swap(i_, other.i_); sprout::swap(i_, other.i_);
@ -197,7 +197,7 @@ namespace sprout {
template<typename Iterator, typename Traits> template<typename Iterator, typename Traits>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::bytes_iterator<Iterator, Traits>& lhs, sprout::bytes_iterator<Iterator, Traits>& rhs) swap(sprout::bytes_iterator<Iterator, Traits>& lhs, sprout::bytes_iterator<Iterator, Traits>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -123,7 +123,7 @@ namespace sprout {
return clamp_iterator(sprout::prev(current), low, up, comp); return clamp_iterator(sprout::prev(current), low, up, comp);
} }
SPROUT_CXX14_CONSTEXPR void swap(clamp_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(clamp_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(comp, other.comp)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(comp, other.comp))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(low, other.low)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(low, other.low))
@ -216,7 +216,7 @@ namespace sprout {
template<typename Iterator, typename Compare> template<typename Iterator, typename Compare>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::clamp_iterator<Iterator, Compare>& lhs, sprout::clamp_iterator<Iterator, Compare>& rhs) swap(sprout::clamp_iterator<Iterator, Compare>& lhs, sprout::clamp_iterator<Iterator, Compare>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -120,7 +120,7 @@ namespace sprout {
return counting_iterator(current_ - 1); return counting_iterator(current_ - 1);
} }
SPROUT_CXX14_CONSTEXPR void swap(counting_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(counting_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(current_, other.current_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(current_, other.current_))
{ {
sprout::swap(current_, other.current_); sprout::swap(current_, other.current_);
} }
@ -186,7 +186,7 @@ namespace sprout {
template<typename Incrementable> template<typename Incrementable>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::counting_iterator<Incrementable>& lhs, sprout::counting_iterator<Incrementable>& rhs) swap(sprout::counting_iterator<Incrementable>& lhs, sprout::counting_iterator<Incrementable>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -75,7 +75,10 @@ namespace sprout {
return dft_iterator(first_, last_, index_, index_ - 1, size_); return dft_iterator(first_, last_, index_, index_ - 1, size_);
} }
SPROUT_CXX14_CONSTEXPR void swap(dft_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(dft_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(last_, other.last_))) SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(last_, other.last_))
)
{ {
sprout::swap(first_, other.first_); sprout::swap(first_, other.first_);
sprout::swap(last_, other.last_); sprout::swap(last_, other.last_);
@ -182,7 +185,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::dft_iterator<Iterator>& lhs, sprout::dft_iterator<Iterator>& rhs) swap(sprout::dft_iterator<Iterator>& lhs, sprout::dft_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -140,7 +140,7 @@ namespace sprout {
return filter_iterator(pred, find_prev(sprout::prev(current), pred), last, private_construct_t()); return filter_iterator(pred, find_prev(sprout::prev(current), pred), last, private_construct_t());
} }
SPROUT_CXX14_CONSTEXPR void swap(filter_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(filter_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(last, other.last)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(last, other.last))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(pred, other.pred)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(pred, other.pred))
@ -184,7 +184,7 @@ namespace sprout {
template<typename Predicate, typename Iterator> template<typename Predicate, typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::filter_iterator<Predicate, Iterator>& lhs, sprout::filter_iterator<Predicate, Iterator>& rhs) swap(sprout::filter_iterator<Predicate, Iterator>& lhs, sprout::filter_iterator<Predicate, Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -77,7 +77,7 @@ namespace sprout {
} }
SPROUT_CXX14_CONSTEXPR void swap(front_insert_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(front_insert_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(base_type::swap(other))) SPROUT_NOEXCEPT_IF_EXPR(base_type::swap(other))
{ {
base_type::swap(other); base_type::swap(other);
} }
@ -89,7 +89,7 @@ namespace sprout {
template<typename Container> template<typename Container>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::front_insert_iterator<Container>& lhs, sprout::front_insert_iterator<Container>& rhs) swap(sprout::front_insert_iterator<Container>& lhs, sprout::front_insert_iterator<Container>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -76,7 +76,7 @@ namespace sprout {
return generated_value(); return generated_value();
} }
SPROUT_CXX14_CONSTEXPR void swap(generator_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(generator_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(gen_, other.gen_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(gen_, other.gen_))
{ {
sprout::swap(gen_, other.gen_); sprout::swap(gen_, other.gen_);
sprout::swap(index_, other.index_); sprout::swap(index_, other.index_);
@ -141,7 +141,7 @@ namespace sprout {
template<typename Generator> template<typename Generator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::generator_iterator<Generator>& lhs, sprout::generator_iterator<Generator>& rhs) swap(sprout::generator_iterator<Generator>& lhs, sprout::generator_iterator<Generator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -75,7 +75,10 @@ namespace sprout {
return idft_iterator(first_, last_, index_, index_ - 1, size_); return idft_iterator(first_, last_, index_, index_ - 1, size_);
} }
SPROUT_CXX14_CONSTEXPR void swap(idft_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(idft_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(last_, other.last_))) SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(first_, other.first_))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(last_, other.last_))
)
{ {
sprout::swap(first_, other.first_); sprout::swap(first_, other.first_);
sprout::swap(last_, other.last_); sprout::swap(last_, other.last_);
@ -182,7 +185,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::idft_iterator<Iterator>& lhs, sprout::idft_iterator<Iterator>& rhs) swap(sprout::idft_iterator<Iterator>& lhs, sprout::idft_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -123,7 +123,7 @@ namespace sprout {
return index_iterator(holder_, index_ - 1); return index_iterator(holder_, index_ - 1);
} }
SPROUT_CXX14_CONSTEXPR void swap(index_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(index_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(holder_, other.holder_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(holder_, other.holder_))
{ {
sprout::swap(holder_, other.holder_); sprout::swap(holder_, other.holder_);
sprout::swap(index_, other.index_); sprout::swap(index_, other.index_);
@ -246,7 +246,7 @@ namespace sprout {
template<typename Container, bool C> template<typename Container, bool C>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::index_iterator<Container, C>& lhs, sprout::index_iterator<Container, C>& rhs) swap(sprout::index_iterator<Container, C>& lhs, sprout::index_iterator<Container, C>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -124,7 +124,7 @@ namespace sprout {
return indexed_iterator(sprout::prev(current), idx - 1); return indexed_iterator(sprout::prev(current), idx - 1);
} }
SPROUT_CXX14_CONSTEXPR void swap(indexed_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(indexed_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(swap(idx, other.idx)) && SPROUT_NOEXCEPT_EXPR(swap(idx, other.idx))
) )
@ -194,7 +194,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::indexed_iterator<Iterator>& lhs, sprout::indexed_iterator<Iterator>& rhs) swap(sprout::indexed_iterator<Iterator>& lhs, sprout::indexed_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -84,7 +84,7 @@ namespace sprout {
} }
SPROUT_CXX14_CONSTEXPR void swap(insert_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(insert_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(base_type::swap(other)) SPROUT_NOEXCEPT_EXPR(base_type::swap(other))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(other.iter, iter)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(other.iter, iter))
) )
@ -100,7 +100,7 @@ namespace sprout {
template<typename Container> template<typename Container>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::insert_iterator<Container>& lhs, sprout::insert_iterator<Container>& rhs) swap(sprout::insert_iterator<Container>& lhs, sprout::insert_iterator<Container>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -177,7 +177,7 @@ namespace sprout {
; ;
} }
SPROUT_CXX14_CONSTEXPR void swap(insert_range_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(insert_range_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(pos1, other.pos1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(pos1, other.pos1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2))
@ -304,7 +304,7 @@ namespace sprout {
sprout::insert_range_iterator<DstIterator, SrcIterator>& lhs, sprout::insert_range_iterator<DstIterator, SrcIterator>& lhs,
sprout::insert_range_iterator<DstIterator, SrcIterator>& rhs sprout::insert_range_iterator<DstIterator, SrcIterator>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -175,7 +175,7 @@ namespace sprout {
; ;
} }
SPROUT_CXX14_CONSTEXPR void swap(joint_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(joint_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(last1, other.last1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(last1, other.last1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(first2, other.first2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(first2, other.first2))
@ -314,7 +314,7 @@ namespace sprout {
sprout::joint_iterator<LIterator, RIterator>& lhs, sprout::joint_iterator<LIterator, RIterator>& lhs,
sprout::joint_iterator<LIterator, RIterator>& rhs sprout::joint_iterator<LIterator, RIterator>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -167,7 +167,7 @@ namespace sprout {
; ;
} }
SPROUT_CXX14_CONSTEXPR void swap(merge_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(merge_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current1, other.current1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2))
@ -231,7 +231,7 @@ namespace sprout {
sprout::merge_iterator<LIterator, RIterator, Compare>& lhs, sprout::merge_iterator<LIterator, RIterator, Compare>& lhs,
sprout::merge_iterator<LIterator, RIterator, Compare>& rhs sprout::merge_iterator<LIterator, RIterator, Compare>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -113,7 +113,7 @@ namespace sprout {
return move_iterator(sprout::prev(current)); return move_iterator(sprout::prev(current));
} }
SPROUT_CXX14_CONSTEXPR void swap(move_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(move_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
) )
{ {
@ -181,7 +181,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::move_iterator<Iterator>& lhs, sprout::move_iterator<Iterator>& rhs) swap(sprout::move_iterator<Iterator>& lhs, sprout::move_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -86,8 +86,9 @@ namespace sprout {
return next_iterator(current); return next_iterator(current);
} }
SPROUT_CXX14_CONSTEXPR void swap(next_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(next_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(holder_, other.holder_)) && SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(holder_, other.holder_))
&& SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
) )
{ {
swap(holder_, other.holder_); swap(holder_, other.holder_);
@ -121,7 +122,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::next_iterator<Iterator>& lhs, sprout::next_iterator<Iterator>& rhs) swap(sprout::next_iterator<Iterator>& lhs, sprout::next_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -211,7 +211,7 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::ptr_index_iterator<T>& lhs, sprout::ptr_index_iterator<T>& rhs) swap(sprout::ptr_index_iterator<T>& lhs, sprout::ptr_index_iterator<T>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -201,7 +201,7 @@ namespace sprout {
); );
} }
SPROUT_CXX14_CONSTEXPR void swap(remake_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(remake_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(swap(current2, other.current2)) && SPROUT_NOEXCEPT_EXPR(swap(current2, other.current2))
&& SPROUT_NOEXCEPT_EXPR(swap(fst, other.fst)) && SPROUT_NOEXCEPT_EXPR(swap(fst, other.fst))
@ -327,7 +327,7 @@ namespace sprout {
template<typename DstIterator, typename SrcIterator> template<typename DstIterator, typename SrcIterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::remake_iterator<DstIterator, SrcIterator>& lhs, sprout::remake_iterator<DstIterator, SrcIterator>& rhs) swap(sprout::remake_iterator<DstIterator, SrcIterator>& lhs, sprout::remake_iterator<DstIterator, SrcIterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -112,7 +112,7 @@ namespace sprout {
return reverse_iterator(sprout::next(current)); return reverse_iterator(sprout::next(current));
} }
SPROUT_CXX14_CONSTEXPR void swap(reverse_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(reverse_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
) )
{ {
@ -180,7 +180,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::reverse_iterator<Iterator>& lhs, sprout::reverse_iterator<Iterator>& rhs) swap(sprout::reverse_iterator<Iterator>& lhs, sprout::reverse_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -203,7 +203,7 @@ namespace sprout {
template<typename Value> template<typename Value>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::sawtooth_iterator<Value>& lhs, sprout::sawtooth_iterator<Value>& rhs) swap(sprout::sawtooth_iterator<Value>& lhs, sprout::sawtooth_iterator<Value>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -131,7 +131,7 @@ namespace sprout {
); );
} }
SPROUT_CXX14_CONSTEXPR void swap(set_difference_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(set_difference_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2))
@ -191,7 +191,7 @@ namespace sprout {
sprout::set_difference_iterator<LIterator, RIterator, Compare>& lhs, sprout::set_difference_iterator<LIterator, RIterator, Compare>& lhs,
sprout::set_difference_iterator<LIterator, RIterator, Compare>& rhs sprout::set_difference_iterator<LIterator, RIterator, Compare>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -131,7 +131,7 @@ namespace sprout {
); );
} }
SPROUT_CXX14_CONSTEXPR void swap(set_intersection_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(set_intersection_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2))
@ -191,7 +191,7 @@ namespace sprout {
sprout::set_intersection_iterator<LIterator, RIterator, Compare>& lhs, sprout::set_intersection_iterator<LIterator, RIterator, Compare>& lhs,
sprout::set_intersection_iterator<LIterator, RIterator, Compare>& rhs sprout::set_intersection_iterator<LIterator, RIterator, Compare>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -198,7 +198,7 @@ namespace sprout {
); );
} }
SPROUT_CXX14_CONSTEXPR void swap(set_symmetric_difference_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(set_symmetric_difference_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2))
@ -259,7 +259,7 @@ namespace sprout {
sprout::set_symmetric_difference_iterator<LIterator, RIterator, Compare>& lhs, sprout::set_symmetric_difference_iterator<LIterator, RIterator, Compare>& lhs,
sprout::set_symmetric_difference_iterator<LIterator, RIterator, Compare>& rhs sprout::set_symmetric_difference_iterator<LIterator, RIterator, Compare>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -148,7 +148,7 @@ namespace sprout {
); );
} }
SPROUT_CXX14_CONSTEXPR void swap(set_union_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(set_union_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst1, other.lst1))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(lst2, other.lst2))
@ -209,7 +209,7 @@ namespace sprout {
sprout::set_union_iterator<LIterator, RIterator, Compare>& lhs, sprout::set_union_iterator<LIterator, RIterator, Compare>& lhs,
sprout::set_union_iterator<LIterator, RIterator, Compare>& rhs sprout::set_union_iterator<LIterator, RIterator, Compare>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -209,7 +209,7 @@ namespace sprout {
template<typename Value> template<typename Value>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::sinusoid_iterator<Value>& lhs, sprout::sinusoid_iterator<Value>& rhs) swap(sprout::sinusoid_iterator<Value>& lhs, sprout::sinusoid_iterator<Value>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -123,7 +123,7 @@ namespace sprout {
return size_enum_iterator(sprout::prev(current)); return size_enum_iterator(sprout::prev(current));
} }
SPROUT_CXX14_CONSTEXPR void swap(size_enum_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(size_enum_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(current, other.current))
{ {
sprout::swap(current, other.current); sprout::swap(current, other.current);
} }
@ -268,7 +268,7 @@ namespace sprout {
; ;
} }
SPROUT_CXX14_CONSTEXPR void swap(size_enum_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(size_enum_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(current, other.current))
{ {
sprout::swap(current, other.current); sprout::swap(current, other.current);
sprout::swap(sep_size, other.sep_size); sprout::swap(sep_size, other.sep_size);
@ -408,7 +408,7 @@ namespace sprout {
template<typename Iterator, bool Separated> template<typename Iterator, bool Separated>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::size_enum_iterator<Iterator, Separated>& lhs, sprout::size_enum_iterator<Iterator, Separated>& rhs) swap(sprout::size_enum_iterator<Iterator, Separated>& lhs, sprout::size_enum_iterator<Iterator, Separated>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -213,7 +213,7 @@ namespace sprout {
template<typename Value> template<typename Value>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::square_iterator<Value>& lhs, sprout::square_iterator<Value>& rhs) swap(sprout::square_iterator<Value>& lhs, sprout::square_iterator<Value>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -158,7 +158,7 @@ namespace sprout {
return step_iterator(*this, -1); return step_iterator(*this, -1);
} }
SPROUT_CXX14_CONSTEXPR void swap(step_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(step_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(swap(last, other.last)) && SPROUT_NOEXCEPT_EXPR(swap(last, other.last))
&& SPROUT_NOEXCEPT_EXPR(swap(wid, other.wid)) && SPROUT_NOEXCEPT_EXPR(swap(wid, other.wid))
@ -235,7 +235,7 @@ namespace sprout {
template<typename Iterator> template<typename Iterator>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::step_iterator<Iterator>& lhs, sprout::step_iterator<Iterator>& rhs) swap(sprout::step_iterator<Iterator>& lhs, sprout::step_iterator<Iterator>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -158,7 +158,7 @@ namespace sprout {
return transform_iterator(sprout::prev(current), sprout::prev(current2), func); return transform_iterator(sprout::prev(current), sprout::prev(current2), func);
} }
SPROUT_CXX14_CONSTEXPR void swap(transform_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(transform_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(current2, other.current2))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(func, other.func)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(func, other.func))
@ -285,7 +285,7 @@ namespace sprout {
return transform_iterator(sprout::prev(current), func); return transform_iterator(sprout::prev(current), func);
} }
SPROUT_CXX14_CONSTEXPR void swap(transform_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(transform_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(sprout::swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(sprout::swap(func, other.func)) && SPROUT_NOEXCEPT_EXPR(sprout::swap(func, other.func))
) )
@ -404,7 +404,7 @@ namespace sprout {
sprout::transform_iterator<UnaryOrBinaryFunction, LIterator, RIterator>& lhs, sprout::transform_iterator<UnaryOrBinaryFunction, LIterator, RIterator>& lhs,
sprout::transform_iterator<UnaryOrBinaryFunction, LIterator, RIterator>& rhs sprout::transform_iterator<UnaryOrBinaryFunction, LIterator, RIterator>& rhs
) )
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -227,7 +227,7 @@ namespace sprout {
template<typename Value> template<typename Value>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::triangle_iterator<Value>& lhs, sprout::triangle_iterator<Value>& rhs) swap(sprout::triangle_iterator<Value>& lhs, sprout::triangle_iterator<Value>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -86,7 +86,7 @@ namespace sprout {
return value_iterator(holder_, index_ + 1); return value_iterator(holder_, index_ + 1);
} }
SPROUT_CXX14_CONSTEXPR void swap(value_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(value_iterator& other)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::swap(holder_, other.holder_))) SPROUT_NOEXCEPT_IF_EXPR(sprout::swap(holder_, other.holder_))
{ {
sprout::swap(holder_, other.holder_); sprout::swap(holder_, other.holder_);
sprout::swap(index_, other.index_); sprout::swap(index_, other.index_);
@ -185,7 +185,7 @@ namespace sprout {
template<typename T> template<typename T>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::value_iterator<T>& lhs, sprout::value_iterator<T>& rhs) swap(sprout::value_iterator<T>& lhs, sprout::value_iterator<T>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

View file

@ -132,7 +132,7 @@ namespace sprout {
return valued_iterator(sprout::prev(current), holder); return valued_iterator(sprout::prev(current), holder);
} }
SPROUT_CXX14_CONSTEXPR void swap(valued_iterator& other) SPROUT_CXX14_CONSTEXPR void swap(valued_iterator& other)
SPROUT_NOEXCEPT_EXPR( SPROUT_NOEXCEPT_IF(
SPROUT_NOEXCEPT_EXPR(swap(current, other.current)) SPROUT_NOEXCEPT_EXPR(swap(current, other.current))
&& SPROUT_NOEXCEPT_EXPR(swap(holder, other.holder)) && SPROUT_NOEXCEPT_EXPR(swap(holder, other.holder))
) )
@ -202,7 +202,7 @@ namespace sprout {
template<typename Iterator, typename T> template<typename Iterator, typename T>
inline SPROUT_CXX14_CONSTEXPR void inline SPROUT_CXX14_CONSTEXPR void
swap(sprout::valued_iterator<Iterator, T>& lhs, sprout::valued_iterator<Iterator, T>& rhs) swap(sprout::valued_iterator<Iterator, T>& lhs, sprout::valued_iterator<Iterator, T>& rhs)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(lhs.swap(rhs))) SPROUT_NOEXCEPT_IF_EXPR(lhs.swap(rhs))
{ {
lhs.swap(rhs); lhs.swap(rhs);
} }

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