annotate DEPENDENCIES/generic/include/boost/variant/detail/enable_recursive_fwd.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 //-----------------------------------------------------------------------------
Chris@16 2 // boost variant/detail/enable_recursive_fwd.hpp header file
Chris@16 3 // See http://www.boost.org for updates, documentation, and revision history.
Chris@16 4 //-----------------------------------------------------------------------------
Chris@16 5 //
Chris@16 6 // Copyright (c) 2003
Chris@16 7 // Eric Friedman
Chris@16 8 //
Chris@16 9 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 10 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 11 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 12
Chris@16 13 #ifndef BOOST_VARIANT_DETAIL_ENABLE_RECURSIVE_FWD_HPP
Chris@16 14 #define BOOST_VARIANT_DETAIL_ENABLE_RECURSIVE_FWD_HPP
Chris@16 15
Chris@16 16 #include "boost/mpl/aux_/config/ctps.hpp"
Chris@16 17
Chris@16 18 #include "boost/mpl/bool_fwd.hpp"
Chris@16 19
Chris@16 20 # include "boost/mpl/bool.hpp"
Chris@16 21
Chris@16 22 namespace boost {
Chris@16 23 namespace detail { namespace variant {
Chris@16 24
Chris@16 25 ///////////////////////////////////////////////////////////////////////////////
Chris@16 26 // (detail) tag recursive_flag
Chris@16 27 //
Chris@16 28 // Signifies that the variant should perform recursive substituion.
Chris@16 29 //
Chris@16 30
Chris@16 31
Chris@16 32 template <typename T>
Chris@16 33 struct recursive_flag
Chris@16 34 {
Chris@16 35 typedef T type;
Chris@16 36 };
Chris@16 37
Chris@16 38
Chris@16 39 ///////////////////////////////////////////////////////////////////////////////
Chris@16 40 // (detail) metafunction is_recursive_flag
Chris@16 41 //
Chris@16 42 // Signifies that the variant should perform recursive substituion.
Chris@16 43 //
Chris@16 44
Chris@16 45
Chris@16 46 template <typename T>
Chris@16 47 struct is_recursive_flag
Chris@16 48 : mpl::false_
Chris@16 49 {
Chris@16 50 };
Chris@16 51
Chris@16 52 template <typename T>
Chris@16 53 struct is_recursive_flag< recursive_flag<T> >
Chris@16 54 : mpl::true_
Chris@16 55 {
Chris@16 56 };
Chris@16 57
Chris@16 58
Chris@16 59 ///////////////////////////////////////////////////////////////////////////////
Chris@16 60 // (detail) metafunction enable_recursive
Chris@16 61 //
Chris@16 62 // Attempts recursive_variant_ tag substitution, wrapping with
Chris@16 63 // boost::recursive_wrapper if substituion occurs w/ non-indirect result
Chris@16 64 // (i.e., not a reference or pointer) *and* NoWrapper is false_.
Chris@16 65 //
Chris@16 66 template <
Chris@16 67 typename T
Chris@16 68 , typename RecursiveVariant
Chris@16 69 , typename NoWrapper = mpl::false_
Chris@16 70 >
Chris@16 71 struct enable_recursive;
Chris@16 72
Chris@16 73 ///////////////////////////////////////////////////////////////////////////////
Chris@16 74 // (detail) metafunction class quoted_enable_recursive
Chris@16 75 //
Chris@16 76 // Same behavior as enable_recursive metafunction (see above).
Chris@16 77 //
Chris@16 78 template <
Chris@16 79 typename RecursiveVariant
Chris@16 80 , typename NoWrapper = mpl::false_
Chris@16 81 >
Chris@16 82 struct quoted_enable_recursive;
Chris@16 83
Chris@16 84 }} // namespace detail::variant
Chris@16 85 } // namespace boost
Chris@16 86
Chris@16 87 #endif // BOOST_VARIANT_DETAIL_ENABLE_RECURSIVE_FWD_HPP