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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -30,7 +30,7 @@ namespace sprout {
template<typename Arg>
SPROUT_CONSTEXPR decltype(op(value, std::declval<Arg>()))
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));
}

View file

@ -30,7 +30,7 @@ namespace sprout {
template<typename Arg>
SPROUT_CONSTEXPR decltype(op(std::declval<Arg>(), value))
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);
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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