File indexing completed on 2025-12-16 10:10:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_TYPE_ERASURE_REBIND_ANY_HPP_INCLUDED
0012 #define BOOST_TYPE_ERASURE_REBIND_ANY_HPP_INCLUDED
0013
0014 #include <boost/mpl/if.hpp>
0015 #include <boost/type_traits/remove_cv.hpp>
0016 #include <boost/type_traits/remove_reference.hpp>
0017 #include <boost/type_erasure/is_placeholder.hpp>
0018 #include <boost/type_erasure/concept_of.hpp>
0019
0020 namespace boost {
0021 namespace type_erasure {
0022
0023 #ifndef BOOST_TYPE_ERASURE_DOXYGEN
0024 template<class Concept, class T>
0025 class any;
0026 #endif
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 template<class Any, class T>
0048 struct rebind_any
0049 {
0050 #ifdef BOOST_TYPE_ERASURE_DOXYGEN
0051 typedef detail::unspecified type;
0052 #else
0053 typedef typename ::boost::mpl::if_<
0054 ::boost::type_erasure::is_placeholder<
0055 typename ::boost::remove_cv<
0056 typename ::boost::remove_reference<T>::type
0057 >::type
0058 >,
0059 ::boost::type_erasure::any<
0060 typename ::boost::type_erasure::concept_of<Any>::type,
0061 T
0062 >,
0063 T
0064 >::type type;
0065 #endif
0066 };
0067
0068 #ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES
0069
0070 template<class Any, class T>
0071 using rebind_any_t = typename ::boost::type_erasure::rebind_any<Any, T>::type;
0072
0073 #endif
0074
0075 }
0076 }
0077
0078 #endif