composite_member_pointer_type.hpp
Go to the documentation of this file.
1 #ifndef BOOST_TYPE_TRAITS_DETAIL_COMPOSITE_MEMBER_POINTER_TYPE_HPP_INCLUDED
2 #define BOOST_TYPE_TRAITS_DETAIL_COMPOSITE_MEMBER_POINTER_TYPE_HPP_INCLUDED
3 
4 //
5 // Copyright 2015 Peter Dimov
6 //
7 // Distributed under the Boost Software License, Version 1.0.
8 // See accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt
10 //
11 
16 #include <boost/config.hpp>
17 #include <cstddef>
18 
19 namespace boost
20 {
21 
22 namespace type_traits_detail
23 {
24 
25 template<class T, class U> struct composite_member_pointer_type;
26 
27 // nullptr_t
28 
29 #if !defined( BOOST_NO_CXX11_NULLPTR )
30 
31 #if !defined( BOOST_NO_CXX11_DECLTYPE ) && ( ( defined( __clang__ ) && !defined( _LIBCPP_VERSION ) ) || defined( __INTEL_COMPILER ) )
32 
33 template<class C, class T> struct composite_member_pointer_type<T C::*, decltype(nullptr)>
34 {
35  typedef T C::* type;
36 };
37 
38 template<class C, class T> struct composite_member_pointer_type<decltype(nullptr), T C::*>
39 {
40  typedef T C::* type;
41 };
42 
43 template<> struct composite_member_pointer_type<decltype(nullptr), decltype(nullptr)>
44 {
45  typedef decltype(nullptr) type;
46 };
47 
48 #else
49 
50 template<class C, class T> struct composite_member_pointer_type<T C::*, std::nullptr_t>
51 {
52  typedef T C::* type;
53 };
54 
55 template<class C, class T> struct composite_member_pointer_type<std::nullptr_t, T C::*>
56 {
57  typedef T C::* type;
58 };
59 
60 template<> struct composite_member_pointer_type<std::nullptr_t, std::nullptr_t>
61 {
62  typedef std::nullptr_t type;
63 };
64 
65 #endif
66 
67 #endif // !defined( BOOST_NO_CXX11_NULLPTR )
68 
69 template<class C1, class C2> struct common_member_class;
70 
71 template<class C> struct common_member_class<C, C>
72 {
73  typedef C type;
74 };
75 
76 template<class C1, class C2> struct common_member_class
77 {
78  typedef typename boost::conditional<
79 
81  C2,
83 
85 };
86 
87 //This indirection avoids compilation errors on some older
88 //compilers like MSVC 7.1
89 template<class CT, class CB>
91 {
92  typedef CT CB::* type;
93 };
94 
95 template<class C1, class T1, class C2, class T2> struct composite_member_pointer_type<T1 C1::*, T2 C2::*>
96 {
97 private:
98 
101 
103 
104 public:
105 
107 };
108 
109 } // namespace type_traits_detail
110 
111 } // namespace boost
112 
113 #endif // #ifndef BOOST_TYPE_TRAITS_DETAIL_COMPOSITE_MEMBER_POINTER_TYPE_HPP_INCLUDED
boost::type_traits_detail::common_member_class_pointer_to_member::type
CT CB::* type
Definition: composite_member_pointer_type.hpp:92
config.hpp
conditional.hpp
boost::type_traits_detail::composite_member_pointer_type< std::nullptr_t, std::nullptr_t >::type
std::nullptr_t type
Definition: composite_member_pointer_type.hpp:62
boost::type
Definition: type.hpp:14
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
Definition: core/addressof.hpp:19
boost::type_traits_detail::common_member_class::type
boost::conditional< boost::is_base_of< C1, C2 >::value, C2, typename boost::conditional< boost::is_base_of< C2, C1 >::value, C1, void >::type >::type type
Definition: composite_member_pointer_type.hpp:84
type
GLenum type
Definition: glad/glad/glad.h:135
composite_pointer_type.hpp
boost::type_traits_detail::composite_pointer_type
Definition: composite_pointer_type.hpp:26
boost::type_traits_detail::composite_member_pointer_type< T1 C1::*, T2 C2::* >::CPT
composite_pointer_type< T1 *, T2 * >::type CPT
Definition: composite_member_pointer_type.hpp:99
boost::conditional
Definition: conditional.hpp:14
boost::type_traits_detail::composite_member_pointer_type< T1 C1::*, T2 C2::* >::type
common_member_class_pointer_to_member< CT, CB >::type type
Definition: composite_member_pointer_type.hpp:106
t265_stereo.T
T
Definition: t265_stereo.py:157
is_base_of.hpp
boost::is_base_of
Definition: is_base_of.hpp:30
boost::type_traits_detail::composite_member_pointer_type< T1 C1::*, T2 C2::* >::CB
common_member_class< C1, C2 >::type CB
Definition: composite_member_pointer_type.hpp:102
boost::type_traits_detail::common_member_class< C, C >::type
C type
Definition: composite_member_pointer_type.hpp:73
boost::remove_pointer::type
T type
Definition: remove_pointer.hpp:67
std
Definition: android_helpers.h:13
boost::type_traits_detail::composite_member_pointer_type< std::nullptr_t, T C::* >::type
T C::* type
Definition: composite_member_pointer_type.hpp:57
boost::type_traits_detail::composite_member_pointer_type
Definition: composite_member_pointer_type.hpp:25
boost::type_traits_detail::common_member_class
Definition: composite_member_pointer_type.hpp:69
boost::type_traits_detail::composite_member_pointer_type< T1 C1::*, T2 C2::* >::CT
boost::remove_pointer< CPT >::type CT
Definition: composite_member_pointer_type.hpp:100
boost::type_traits_detail::common_member_class_pointer_to_member
Definition: composite_member_pointer_type.hpp:90
remove_pointer.hpp
boost::type_traits_detail::composite_member_pointer_type< T C::*, std::nullptr_t >::type
T C::* type
Definition: composite_member_pointer_type.hpp:52


librealsense2
Author(s): LibRealSense ROS Team
autogenerated on Thu Dec 22 2022 03:13:15