Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:10:14

0001 // Boost.TypeErasure library
0002 //
0003 // Copyright 2011 Steven Watanabe
0004 //
0005 // Distributed under the Boost Software License Version 1.0. (See
0006 // accompanying file LICENSE_1_0.txt or copy at
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 // $Id$
0010 
0011 #ifndef BOOST_TYPE_ERASURE_PLACEHOLDER_OF_HPP_INCLUDED
0012 #define BOOST_TYPE_ERASURE_PLACEHOLDER_OF_HPP_INCLUDED
0013 
0014 namespace boost {
0015 namespace type_erasure {
0016 
0017 #ifndef BOOST_TYPE_ERASURE_DOXYGEN
0018 
0019 template<class Concept, class T>
0020 class any;
0021 
0022 template<class Concept, class T>
0023 class param;
0024 
0025 #endif
0026 
0027 /**
0028  * A metafunction returning the (const/reference qualified) placeholder
0029  * corresponding  to an @ref any.  It will also work for all bases
0030  * of @ref any, so it can be applied to the @c Base
0031  * parameter of @ref concept_interface.
0032  */
0033 template<class T>
0034 struct placeholder_of
0035 {
0036 #ifdef BOOST_TYPE_ERASURE_DOXYGEN
0037     typedef detail::unspecified type;
0038 #else
0039     typedef typename ::boost::type_erasure::placeholder_of<
0040         typename T::_boost_type_erasure_derived_type
0041     >::type type;
0042 #endif
0043 };
0044 
0045 /** INTERNAL ONLY */
0046 template<class Concept, class T>
0047 struct placeholder_of< ::boost::type_erasure::any<Concept, T> >
0048 {
0049     typedef T type;
0050 };
0051 
0052 /** INTERNAL ONLY */
0053 template<class Concept, class T>
0054 struct placeholder_of< ::boost::type_erasure::param<Concept, T> >
0055 {
0056     typedef T type;
0057 };
0058 
0059 #ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES
0060 
0061 template<class T>
0062 using placeholder_of_t = typename ::boost::type_erasure::placeholder_of<T>::type;
0063 
0064 #endif
0065 
0066 }
0067 }
0068 
0069 #endif