diff options
author | robot-contrib <[email protected]> | 2022-08-09 16:13:56 +0300 |
---|---|---|
committer | robot-contrib <[email protected]> | 2022-08-09 16:13:56 +0300 |
commit | ee817f8bb9ff8820555d4e250dd0532df76ae49e (patch) | |
tree | db61eab4e98e8b6ecc728eaf975484b335d1cb20 | |
parent | d93e95537dd716562fb5670e18c870c409d7999e (diff) |
Update contrib/restricted/boost/tti to 1.79.0
6 files changed, 107 insertions, 91 deletions
diff --git a/contrib/restricted/boost/tti/include/boost/tti/detail/dcomp_mem_fun.hpp b/contrib/restricted/boost/tti/include/boost/tti/detail/dcomp_mem_fun.hpp index 95b37d1b0e7..b2388e0b70b 100644 --- a/contrib/restricted/boost/tti/include/boost/tti/detail/dcomp_mem_fun.hpp +++ b/contrib/restricted/boost/tti/include/boost/tti/detail/dcomp_mem_fun.hpp @@ -7,17 +7,15 @@ #if !defined(BOOST_TTI_DETAIL_COMP_MEM_FUN_HPP) #define BOOST_TTI_DETAIL_COMP_MEM_FUN_HPP -#include <boost/config.hpp> #include <boost/mpl/bool.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/tti/detail/dftclass.hpp> +#include <boost/tti/detail/dmacro_sunfix.hpp> #include <boost/tti/detail/dnullptr.hpp> #include <boost/tti/gen/namespace_gen.hpp> #include <boost/type_traits/remove_const.hpp> #include <boost/type_traits/detail/yes_no_type.hpp> -#if defined(__SUNPRO_CC) - #define BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \ template<class BOOST_TTI_DETAIL_TP_T> \ struct BOOST_PP_CAT(trait,_detail_hcmf) \ @@ -32,7 +30,7 @@ }; \ \ template<BOOST_TTI_DETAIL_TP_T> \ - struct helper {}; \ + struct helper BOOST_TTI_DETAIL_MACRO_SUNFIX ; \ \ template<class BOOST_TTI_DETAIL_TP_U> \ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \ @@ -44,35 +42,4 @@ }; \ /**/ -#else - -#define BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \ - template<class BOOST_TTI_DETAIL_TP_T> \ - struct BOOST_PP_CAT(trait,_detail_hcmf) \ - { \ - template<class BOOST_TTI_DETAIL_TP_F> \ - struct cl_type : \ - boost::remove_const \ - < \ - typename BOOST_TTI_NAMESPACE::detail::class_type<BOOST_TTI_DETAIL_TP_F>::type \ - > \ - { \ - }; \ - \ - template<BOOST_TTI_DETAIL_TP_T> \ - struct helper; \ - \ - template<class BOOST_TTI_DETAIL_TP_U> \ - static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_U::name> *); \ - \ - template<class BOOST_TTI_DETAIL_TP_U> \ - static ::boost::type_traits::no_type chkt(...); \ - \ - typedef boost::mpl::bool_<sizeof(chkt<typename cl_type<BOOST_TTI_DETAIL_TP_T>::type>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \ - }; \ -/**/ - -#endif - - #endif // BOOST_TTI_DETAIL_COMP_MEM_FUN_HPP diff --git a/contrib/restricted/boost/tti/include/boost/tti/detail/denclosing_type.hpp b/contrib/restricted/boost/tti/include/boost/tti/detail/denclosing_type.hpp new file mode 100644 index 00000000000..5a5f7fdb0e1 --- /dev/null +++ b/contrib/restricted/boost/tti/include/boost/tti/detail/denclosing_type.hpp @@ -0,0 +1,36 @@ + +// (C) Copyright Edward Diener 2019 +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). + +#if !defined(BOOST_TTI_DETAIL_ENCLOSING_TYPE_HPP) +#define BOOST_TTI_DETAIL_ENCLOSING_TYPE_HPP + +#include <boost/mpl/or.hpp> +#include <boost/type_traits/is_class.hpp> +#include <boost/type_traits/is_union.hpp> + +namespace boost + { + namespace tti + { + namespace detail + { + template + < + class BOOST_TTI_DETAIL_TP_T + > + struct enclosing_type : + boost::mpl::or_ + < + boost::is_class<BOOST_TTI_DETAIL_TP_T>, + boost::is_union<BOOST_TTI_DETAIL_TP_T> + > + { + }; + } + } + } + +#endif // BOOST_TTI_DETAIL_ENCLOSING_TYPE_HPP diff --git a/contrib/restricted/boost/tti/include/boost/tti/detail/dmacro_sunfix.hpp b/contrib/restricted/boost/tti/include/boost/tti/detail/dmacro_sunfix.hpp new file mode 100644 index 00000000000..7737cd6dbae --- /dev/null +++ b/contrib/restricted/boost/tti/include/boost/tti/detail/dmacro_sunfix.hpp @@ -0,0 +1,20 @@ + +// (C) Copyright Edward Diener 2019 +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). + +#if !defined(BOOST_TTI_DETAIL_MACRO_SUNFIX_HPP) +#define BOOST_TTI_DETAIL_MACRO_SUNFIX_HPP + +#if defined(__SUNPRO_CC) + +#define BOOST_TTI_DETAIL_MACRO_SUNFIX {} + +#else + +#define BOOST_TTI_DETAIL_MACRO_SUNFIX + +#endif + +#endif // BOOST_TTI_DETAIL_MACRO_SUNFIX_HPP diff --git a/contrib/restricted/boost/tti/include/boost/tti/detail/dmem_fun.hpp b/contrib/restricted/boost/tti/include/boost/tti/detail/dmem_fun.hpp index 421780297d9..9202c84bb78 100644 --- a/contrib/restricted/boost/tti/include/boost/tti/detail/dmem_fun.hpp +++ b/contrib/restricted/boost/tti/include/boost/tti/detail/dmem_fun.hpp @@ -7,7 +7,6 @@ #if !defined(BOOST_TTI_DETAIL_MEM_FUN_HPP) #define BOOST_TTI_DETAIL_MEM_FUN_HPP -#include <boost/config.hpp> #include <boost/function_types/is_member_function_pointer.hpp> #include <boost/function_types/property_tags.hpp> #include <boost/mpl/and.hpp> @@ -18,42 +17,22 @@ #include <boost/mpl/vector.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/type_traits/detail/yes_no_type.hpp> -#include <boost/type_traits/is_class.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/type_traits/remove_const.hpp> #include <boost/tti/detail/dcomp_mem_fun.hpp> #include <boost/tti/detail/ddeftype.hpp> +#include <boost/tti/detail/dmacro_sunfix.hpp> #include <boost/tti/detail/dnullptr.hpp> +#include <boost/tti/detail/denclosing_type.hpp> #include <boost/tti/detail/dptmf.hpp> #include <boost/tti/gen/namespace_gen.hpp> -#if defined(__SUNPRO_CC) - -#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \ - template<class BOOST_TTI_DETAIL_TP_PMEMF,class BOOST_TTI_DETAIL_TP_C> \ - struct BOOST_PP_CAT(trait,_detail_types) \ - { \ - template<BOOST_TTI_DETAIL_TP_PMEMF> \ - struct helper {}; \ - \ - template<class BOOST_TTI_DETAIL_TP_EC> \ - static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_EC::name> *); \ - \ - template<class BOOST_TTI_DETAIL_TP_EC> \ - static ::boost::type_traits::no_type chkt(...); \ - \ - typedef boost::mpl::bool_<sizeof(chkt<BOOST_TTI_DETAIL_TP_C>(BOOST_TTI_DETAIL_NULLPTR))==sizeof(::boost::type_traits::yes_type)> type; \ - }; \ -/**/ - -#else - #define BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \ template<class BOOST_TTI_DETAIL_TP_PMEMF,class BOOST_TTI_DETAIL_TP_C> \ - struct BOOST_PP_CAT(trait,_detail_types) \ + struct BOOST_PP_CAT(trait,_detail_hmf_types) \ { \ template<BOOST_TTI_DETAIL_TP_PMEMF> \ - struct helper; \ + struct helper BOOST_TTI_DETAIL_MACRO_SUNFIX ; \ \ template<class BOOST_TTI_DETAIL_TP_EC> \ static ::boost::type_traits::yes_type chkt(helper<&BOOST_TTI_DETAIL_TP_EC::name> *); \ @@ -65,13 +44,11 @@ }; \ /**/ -#endif - #define BOOST_TTI_DETAIL_TRAIT_CTMF_INVOKE(trait,name) \ BOOST_TTI_DETAIL_TRAIT_HAS_TYPES_MEMBER_FUNCTION(trait,name) \ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \ - struct BOOST_PP_CAT(trait,_detail_ctmf_invoke) : \ - BOOST_PP_CAT(trait,_detail_types) \ + struct BOOST_PP_CAT(trait,_detail_hmf_ctmf_invoke) : \ + BOOST_PP_CAT(trait,_detail_hmf_types) \ < \ typename BOOST_TTI_NAMESPACE::detail::ptmf_seq<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>::type, \ BOOST_TTI_DETAIL_TP_T \ @@ -83,19 +60,19 @@ #define BOOST_TTI_DETAIL_TRAIT_HAS_CALL_TYPES_MEMBER_FUNCTION(trait,name) \ BOOST_TTI_DETAIL_TRAIT_CTMF_INVOKE(trait,name) \ template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \ - struct BOOST_PP_CAT(trait,_detail_call_types) : \ - boost::mpl::eval_if \ - < \ - boost::is_class<BOOST_TTI_DETAIL_TP_T>, \ - BOOST_PP_CAT(trait,_detail_ctmf_invoke) \ - < \ - BOOST_TTI_DETAIL_TP_T, \ - BOOST_TTI_DETAIL_TP_R, \ - BOOST_TTI_DETAIL_TP_FS, \ - BOOST_TTI_DETAIL_TP_TAG \ - >, \ - boost::mpl::false_ \ - > \ + struct BOOST_PP_CAT(trait,_detail_hmf_call_types) : \ + boost::mpl::eval_if \ + < \ + BOOST_TTI_NAMESPACE::detail::enclosing_type<BOOST_TTI_DETAIL_TP_T>, \ + BOOST_PP_CAT(trait,_detail_hmf_ctmf_invoke) \ + < \ + BOOST_TTI_DETAIL_TP_T, \ + BOOST_TTI_DETAIL_TP_R, \ + BOOST_TTI_DETAIL_TP_FS, \ + BOOST_TTI_DETAIL_TP_TAG \ + >, \ + boost::mpl::false_ \ + > \ { \ }; \ /**/ @@ -103,7 +80,7 @@ #define BOOST_TTI_DETAIL_TRAIT_CHECK_HAS_COMP_MEMBER_FUNCTION(trait,name) \ BOOST_TTI_DETAIL_TRAIT_HAS_COMP_MEMBER_FUNCTION(trait,name) \ template<class BOOST_TTI_DETAIL_TP_T> \ - struct BOOST_PP_CAT(trait,_detail_check_comp) : \ + struct BOOST_PP_CAT(trait,_detail_hmf_check_comp) : \ BOOST_PP_CAT(trait,_detail_hcmf)<BOOST_TTI_DETAIL_TP_T> \ { \ BOOST_MPL_ASSERT((boost::function_types::is_member_function_pointer<BOOST_TTI_DETAIL_TP_T>)); \ @@ -123,8 +100,8 @@ boost::is_same<BOOST_TTI_DETAIL_TP_FS,boost::mpl::vector<> >, \ boost::is_same<BOOST_TTI_DETAIL_TP_TAG,boost::function_types::null_tag> \ >, \ - BOOST_PP_CAT(trait,_detail_check_comp)<BOOST_TTI_DETAIL_TP_T>, \ - BOOST_PP_CAT(trait,_detail_call_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG> \ + BOOST_PP_CAT(trait,_detail_hmf_check_comp)<BOOST_TTI_DETAIL_TP_T>, \ + BOOST_PP_CAT(trait,_detail_hmf_call_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG> \ > \ { \ }; \ diff --git a/contrib/restricted/boost/tti/include/boost/tti/detail/dptmf.hpp b/contrib/restricted/boost/tti/include/boost/tti/detail/dptmf.hpp index ad6cdf5bd72..f49df629905 100644 --- a/contrib/restricted/boost/tti/include/boost/tti/detail/dptmf.hpp +++ b/contrib/restricted/boost/tti/include/boost/tti/detail/dptmf.hpp @@ -7,7 +7,6 @@ #if !defined(BOOST_TTI_DETAIL_PTMF_HPP) #define BOOST_TTI_DETAIL_PTMF_HPP -#include <boost/config.hpp> #include <boost/mpl/push_front.hpp> #include <boost/function_types/member_function_pointer.hpp> diff --git a/contrib/restricted/boost/tti/include/boost/tti/has_member_function.hpp b/contrib/restricted/boost/tti/include/boost/tti/has_member_function.hpp index 3aa247638e7..dc5725b7046 100644 --- a/contrib/restricted/boost/tti/include/boost/tti/has_member_function.hpp +++ b/contrib/restricted/boost/tti/include/boost/tti/has_member_function.hpp @@ -25,15 +25,20 @@ /** \file */ -/// Expands to a metafunction which tests whether a member function with a particular name and signature exists. +/// A macro which expands to a metafunction which tests whether a member function with a particular name and signature exists. /** - trait = the name of the metafunction within the tti namespace. + BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION is a macro which expands to a metafunction. + The metafunction tests whether a member function with a particular name + and signature exists. The macro takes the form of BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION(trait,name) where + trait = the name of the metafunction <br/> name = the name of the inner member. - generates a metafunction called "trait" where 'trait' is the macro parameter.<br /> + BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION generates a metafunction called "trait" where 'trait' is the macro parameter. + @code + template<class BOOST_TTI_TP_T,class BOOST_TTI_R,class BOOST_TTI_FS,class BOOST_TTI_TAG> struct trait { @@ -43,9 +48,10 @@ The metafunction types and return: - BOOST_TTI_TP_T = the enclosing type in which to look for our 'name' + BOOST_TTI_TP_T = the enclosing type in which to look for our 'name'. + The enclosing type can be a class, struct, or union. OR - a pointer to member function as a single type. + a pointer to member function as a single type. BOOST_TTI_TP_R = (optional) the return type of the member function if the first parameter is the enclosing type. @@ -61,6 +67,8 @@ with the appropriate member function type, otherwise 'value' is false. + @endcode + */ #define BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \ @@ -73,15 +81,21 @@ }; \ /**/ -/// Expands to a metafunction which tests whether a member function with a particular name and signature exists. +/// A macro which expands to a metafunction which tests whether a member function with a particular name and signature exists. /** + BOOST_TTI_HAS_MEMBER_FUNCTION is a macro which expands to a metafunction. + The metafunction tests whether a member function with a particular name + and signature exists. The macro takes the form of BOOST_TTI_HAS_MEMBER_FUNCTION(name) where + name = the name of the inner member. - generates a metafunction called "has_member_function_name" where 'name' is the macro parameter. + BOOST_TTI_HAS_MEMBER_FUNCTION generates a metafunction called "has_member_function_name" where 'name' is the macro parameter. + @code + template<class BOOST_TTI_TP_T,class BOOST_TTI_TP_R,class BOOST_TTI_TP_FS,class BOOST_TTI_TP_TAG> - struct has_member_function_name + struct has_member_function_'name' { static const value = unspecified; typedef mpl::bool_<true-or-false> type; @@ -89,9 +103,10 @@ The metafunction types and return: - BOOST_TTI_TP_T = the enclosing type in which to look for our 'name' + BOOST_TTI_TP_T = the enclosing type in which to look for our 'name'. + The enclosing type can be a class, struct, or union. OR - a pointer to member function as a single type. + a pointer to member function as a single type. BOOST_TTI_TP_R = (optional) the return type of the member function if the first parameter is the enclosing type. @@ -107,6 +122,8 @@ with the appropriate member function type, otherwise 'value' is false. + @endcode + */ #define BOOST_TTI_HAS_MEMBER_FUNCTION(name) \ BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION \ |