diff --git a/src/util/BindMethod.hxx b/src/util/BindMethod.hxx index a257deba3..08d02f98a 100644 --- a/src/util/BindMethod.hxx +++ b/src/util/BindMethod.hxx @@ -30,8 +30,6 @@ #ifndef BIND_METHOD_HXX #define BIND_METHOD_HXX -#include "Compiler.h" - #include <type_traits> #include <utility> @@ -45,21 +43,11 @@ template<typename S=void()> class BoundMethod; -#if GCC_OLDER_THAN(7,0) -static constexpr bool NoExcept = false; -#endif - template<typename R, -#if !GCC_OLDER_THAN(7,0) bool NoExcept, -#endif typename... Args> class BoundMethod<R(Args...) noexcept(NoExcept)> { - typedef R (*function_pointer)(void *instance, Args... args) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; + typedef R (*function_pointer)(void *instance, Args... args) noexcept(NoExcept); void *instance_; function_pointer function; @@ -106,20 +94,10 @@ template<typename T, typename S> struct MethodWithSignature; template<typename T, -#if !GCC_OLDER_THAN(7,0) bool NoExcept, -#endif typename R, typename... Args> -struct MethodWithSignature<T, R(Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - > { - typedef R (T::*method_pointer)(Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; +struct MethodWithSignature<T, R(Args...) noexcept(NoExcept)> { + typedef R (T::*method_pointer)(Args...) noexcept(NoExcept); }; /** @@ -130,11 +108,7 @@ struct MethodWithSignature<T, R(Args...) template<typename M> struct MethodSignatureHelper; -template<typename R, -#if !GCC_OLDER_THAN(7,0) - bool NoExcept, -#endif - typename T, typename... Args> +template<typename R, bool NoExcept, typename T, typename... Args> struct MethodSignatureHelper<R (T::*)(Args...) noexcept(NoExcept)> { /** * The class which contains the given method (signature). @@ -145,11 +119,7 @@ struct MethodSignatureHelper<R (T::*)(Args...) noexcept(NoExcept)> { * A function type which describes the "plain" function * signature. */ - typedef R plain_signature(Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; + typedef R plain_signature(Args...) noexcept(NoExcept); }; /** @@ -159,17 +129,10 @@ struct MethodSignatureHelper<R (T::*)(Args...) noexcept(NoExcept)> { template<typename S> struct MethodWrapperWithSignature; -template<typename R, -#if !GCC_OLDER_THAN(7,0) - bool NoExcept, -#endif - typename... Args> +template<typename R, bool NoExcept, typename... Args> struct MethodWrapperWithSignature<R(Args...) noexcept(NoExcept)> { - typedef R (*function_pointer)(void *instance, Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; + typedef R (*function_pointer)(void *instance, + Args...) noexcept(NoExcept); }; /** @@ -201,10 +164,7 @@ struct BindMethodWrapperGenerator2 { template<typename T, typename M, M method, typename S> struct BindMethodWrapperGenerator; -template<typename T, -#if !GCC_OLDER_THAN(7,0) - bool NoExcept, -#endif +template<typename T, bool NoExcept, typename M, M method, typename R, typename... Args> struct BindMethodWrapperGenerator<T, M, method, R(Args...) noexcept(NoExcept)> : BindMethodWrapperGenerator2<T, NoExcept, M, method, R, Args...> { @@ -226,31 +186,19 @@ MakeBindMethodWrapper() noexcept template<typename S> struct FunctionTraits; -template<typename R, -#if !GCC_OLDER_THAN(7,0) - bool NoExcept, -#endif - typename... Args> +template<typename R, bool NoExcept, typename... Args> struct FunctionTraits<R(Args...) noexcept(NoExcept)> { /** * A function type which describes the "plain" function * signature. */ - typedef R function_type(Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; + typedef R function_type(Args...) noexcept(NoExcept); /** * A function pointer type which describes the "plain" * function signature. */ - typedef R (*pointer)(Args...) -#if !GCC_OLDER_THAN(7,0) - noexcept(NoExcept) -#endif - ; + typedef R (*pointer)(Args...) noexcept(NoExcept); }; /** @@ -280,11 +228,7 @@ struct BindFunctionWrapperGenerator2 { template<typename S, typename P, P function> struct BindFunctionWrapperGenerator; -template<typename P, P function, -#if !GCC_OLDER_THAN(7,0) - bool NoExcept, -#endif - typename R, typename... Args> +template<typename P, P function, bool NoExcept, typename R, typename... Args> struct BindFunctionWrapperGenerator<R(Args...) noexcept(NoExcept), P, function> : BindFunctionWrapperGenerator2<NoExcept, P, function, R, Args...> { };