File indexing completed on 2025-01-18 09:29:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_CLBL_TRTS_ADD_MEMBER_VOLATILE_HPP
0010 #define BOOST_CLBL_TRTS_ADD_MEMBER_VOLATILE_HPP
0011
0012 #include <boost/callable_traits/detail/core.hpp>
0013
0014 namespace boost { namespace callable_traits {
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 template<typename T>
0025 using add_member_volatile_t =
0026
0027 #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0028
0029 detail::sfinae_try<
0030 typename detail::traits<T>::add_member_volatile,
0031
0032 detail::fail_when_same<typename detail::traits<T>::add_member_volatile,
0033 detail::abominable_functions_not_supported_on_this_compiler,
0034 this_compiler_doesnt_support_abominable_function_types>,
0035
0036 detail::fail_if_invalid<
0037 typename detail::traits<T>::add_member_volatile,
0038 member_qualifiers_are_illegal_for_this_type>>;
0039 #else
0040
0041 detail::try_but_fail_if_invalid<
0042 typename detail::traits<T>::add_member_volatile,
0043 member_qualifiers_are_illegal_for_this_type>;
0044
0045 #endif
0046
0047 namespace detail {
0048
0049 template<typename T, typename = std::false_type>
0050 struct add_member_volatile_impl {};
0051
0052 template<typename T>
0053 struct add_member_volatile_impl <T, typename std::is_same<
0054 add_member_volatile_t<T>, detail::dummy>::type>
0055 {
0056 using type = add_member_volatile_t<T>;
0057 };
0058 }
0059
0060
0061 template<typename T>
0062 struct add_member_volatile : detail::add_member_volatile_impl<T> {};
0063
0064
0065 }}
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100 #endif