mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Fixed C++03 compatibility
Updated type_traits generator
This commit is contained in:
parent
34abed35b0
commit
3c64940e90
@ -2569,31 +2569,31 @@ typedef integral_constant<bool, true> true_type;
|
||||
};
|
||||
|
||||
// Plain / cv-qualified
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...)> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) volatile> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const volatile> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...)> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) volatile> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const volatile> : etl::true_type {};
|
||||
|
||||
// Variadic
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs..., ...)> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs..., ...)> : etl::true_type {};
|
||||
|
||||
// noexcept variants (if supported by the toolchain)
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) volatile noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const volatile noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs..., ...) noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) volatile noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const volatile noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs..., ...) noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
@ -2668,83 +2668,37 @@ typedef integral_constant<bool, true> true_type;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
struct is_member_pointer : private_type_traits::is_member_pointer_helper<etl::remove_cv_t<T>> {};
|
||||
struct is_member_pointer : private_type_traits::is_member_pointer_helper<typename etl::remove_cv<T>::type> {};
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T>
|
||||
inline constexpr bool is_member_pointer_v = etl::is_member_pointer<T>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
//***************************************************************************
|
||||
/// Is T a member function pointer
|
||||
//***************************************************************************
|
||||
template <typename T> struct is_member_function_pointer : etl::false_type {};
|
||||
namespace private_type_traits
|
||||
{
|
||||
// Primary: not a member function pointer.
|
||||
template <typename T>
|
||||
struct is_member_function_pointer_helper : etl::false_type
|
||||
{
|
||||
};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...)> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile> : etl::true_type {};
|
||||
// If the type is 'TMember TObject::*' then TMember is the member
|
||||
// Uses etl::is_function<TMember> to detect member function pointers.
|
||||
template <typename TMember, typename TObject>
|
||||
struct is_member_function_pointer_helper<TMember TObject::*> : etl::is_function<TMember>
|
||||
{
|
||||
};
|
||||
}
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile &> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile &&>: etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile & noexcept> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile && noexcept>: etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...)> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile> : etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile &&>: etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile & noexcept> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile && noexcept>: etl::true_type {};
|
||||
template <typename T>
|
||||
struct is_member_function_pointer : private_type_traits::is_member_function_pointer_helper<etl::remove_cv_t<T>>
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
@ -2752,6 +2706,7 @@ typedef integral_constant<bool, true> true_type;
|
||||
inline constexpr bool is_member_function_pointer_v = etl::is_member_function_pointer<T>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
//***************************************************************************
|
||||
/// Is T a member object pointer
|
||||
//***************************************************************************
|
||||
@ -2768,6 +2723,7 @@ typedef integral_constant<bool, true> true_type;
|
||||
}
|
||||
|
||||
template<typename T> struct is_member_object_pointer : public private_type_traits::is_member_object_pointer_helper<etl::remove_cv_t<T>>::type {};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T>
|
||||
|
||||
@ -2562,31 +2562,31 @@ typedef integral_constant<bool, true> true_type;
|
||||
};
|
||||
|
||||
// Plain / cv-qualified
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...)> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) volatile> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const volatile> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...)> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) volatile> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const volatile> : etl::true_type {};
|
||||
|
||||
// Variadic
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs..., ...)> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs..., ...)> : etl::true_type {};
|
||||
|
||||
// noexcept variants (if supported by the toolchain)
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) volatile noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs...) const volatile noexcept> : etl::true_type {};
|
||||
template<typename Ret, typename... TArgs>
|
||||
struct is_function<Ret(TArgs..., ...) noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) volatile noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs...) const volatile noexcept> : etl::true_type {};
|
||||
template<typename TReturn, typename... TArgs>
|
||||
struct is_function<TReturn(TArgs..., ...) noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
@ -2661,83 +2661,37 @@ typedef integral_constant<bool, true> true_type;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
struct is_member_pointer : private_type_traits::is_member_pointer_helper<etl::remove_cv_t<T>> {};
|
||||
struct is_member_pointer : private_type_traits::is_member_pointer_helper<typename etl::remove_cv<T>::type> {};
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T>
|
||||
inline constexpr bool is_member_pointer_v = etl::is_member_pointer<T>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
//***************************************************************************
|
||||
/// Is T a member function pointer
|
||||
//***************************************************************************
|
||||
template <typename T> struct is_member_function_pointer : etl::false_type {};
|
||||
namespace private_type_traits
|
||||
{
|
||||
// Primary: not a member function pointer.
|
||||
template <typename T>
|
||||
struct is_member_function_pointer_helper : etl::false_type
|
||||
{
|
||||
};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...)> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile> : etl::true_type {};
|
||||
// If the type is 'TMember TObject::*' then TMember is the member
|
||||
// Uses etl::is_function<TMember> to detect member function pointers.
|
||||
template <typename TMember, typename TObject>
|
||||
struct is_member_function_pointer_helper<TMember TObject::*> : etl::is_function<TMember>
|
||||
{
|
||||
};
|
||||
}
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile &> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile &&>: etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile & noexcept> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) volatile && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A...) const volatile && noexcept>: etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...)> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile> : etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile noexcept> : etl::true_type {};
|
||||
#endif
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile &> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile &&> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile &&>: etl::true_type {};
|
||||
|
||||
#if ETL_HAS_NOEXCEPT_FUNCTION_TYPE
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile & noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile & noexcept> : etl::true_type {};
|
||||
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) volatile && noexcept> : etl::true_type {};
|
||||
template <typename R, typename C, typename... A> struct is_member_function_pointer<R(C::*)(A..., ...) const volatile && noexcept>: etl::true_type {};
|
||||
template <typename T>
|
||||
struct is_member_function_pointer : private_type_traits::is_member_function_pointer_helper<etl::remove_cv_t<T>>
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
@ -2745,6 +2699,7 @@ typedef integral_constant<bool, true> true_type;
|
||||
inline constexpr bool is_member_function_pointer_v = etl::is_member_function_pointer<T>::value;
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP11
|
||||
//***************************************************************************
|
||||
/// Is T a member object pointer
|
||||
//***************************************************************************
|
||||
@ -2761,6 +2716,7 @@ typedef integral_constant<bool, true> true_type;
|
||||
}
|
||||
|
||||
template<typename T> struct is_member_object_pointer : public private_type_traits::is_member_object_pointer_helper<etl::remove_cv_t<T>>::type {};
|
||||
#endif
|
||||
|
||||
#if ETL_USING_CPP17
|
||||
template <typename T>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user