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:
parent
23f24450b0
commit
979af136a1
125 changed files with 324 additions and 287 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)...);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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); \
|
||||
} \
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)--;
|
||||
}
|
||||
|
|
|
@ -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)++;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue