tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
is_member_pointer.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_TYPE_TRAITS_IS_MEMBER_POINTER_HPP
4#define TETL_TYPE_TRAITS_IS_MEMBER_POINTER_HPP
5
6#include <etl/_config/all.hpp>
7
10
11namespace etl {
12
13#if defined(TETL_COMPILER_CLANG)
14
15template <typename T>
16inline constexpr bool is_member_pointer_v = __is_member_pointer(T);
17
18template <typename T>
19struct is_member_pointer : bool_constant<__is_member_pointer(T)> { };
20
21#else
22
23namespace detail {
24template <typename T>
25struct is_member_pointer_helper : false_type { };
26
27template <typename T, typename U>
28struct is_member_pointer_helper<T U::*> : true_type { };
29} // namespace detail
30
36template <typename T>
37struct is_member_pointer : detail::is_member_pointer_helper<remove_cv_t<T> > { };
38
39template <typename T>
41
42#endif
43
44} // namespace etl
45
46#endif // TETL_TYPE_TRAITS_IS_MEMBER_POINTER_HPP
Definition adjacent_find.hpp:8
constexpr bool is_member_pointer_v
Definition is_member_pointer.hpp:40
bool_constant< true > true_type
Definition bool_constant.hpp:13
integral_constant< bool, B > bool_constant
Definition bool_constant.hpp:11
bool_constant< false > false_type
Definition bool_constant.hpp:14
static constexpr bool value
Definition integral_constant.hpp:10
If T is pointer to non-static member object or a pointer to non-static member function,...
Definition is_member_pointer.hpp:37