diff options
Diffstat (limited to 'contrib/src/boost/move/detail/meta_utils_core.hpp')
-rw-r--r-- | contrib/src/boost/move/detail/meta_utils_core.hpp | 252 |
1 files changed, 120 insertions, 132 deletions
diff --git a/contrib/src/boost/move/detail/meta_utils_core.hpp b/contrib/src/boost/move/detail/meta_utils_core.hpp index 30f8730..4d715a0 100644 --- a/contrib/src/boost/move/detail/meta_utils_core.hpp +++ b/contrib/src/boost/move/detail/meta_utils_core.hpp @@ -1,132 +1,120 @@ -//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2015-2015.
-// Distributed under 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)
-//
-// See http://www.boost.org/libs/move for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//! \file
-
-#ifndef BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP
-#define BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP
-
-#ifndef BOOST_CONFIG_HPP
-# include <boost/config.hpp>
-#endif
-#
-#if defined(BOOST_HAS_PRAGMA_ONCE)
-# pragma once
-#endif
-
-//Small meta-typetraits to support move
-
-namespace boost {
-namespace move_detail {
-
-//////////////////////////////////////
-// if_c
-//////////////////////////////////////
-template<bool C, typename T1, typename T2>
-struct if_c
-{
- typedef T1 type;
-};
-
-template<typename T1, typename T2>
-struct if_c<false,T1,T2>
-{
- typedef T2 type;
-};
-
-//////////////////////////////////////
-// if_
-//////////////////////////////////////
-template<typename T1, typename T2, typename T3>
-struct if_ : if_c<0 != T1::value, T2, T3>
-{};
-
-//////////////////////////////////////
-// enable_if_c
-//////////////////////////////////////
-template <bool B, class T = void>
-struct enable_if_c
-{
- typedef T type;
-};
-
-template <class T>
-struct enable_if_c<false, T> {};
-
-//////////////////////////////////////
-// enable_if
-//////////////////////////////////////
-template <class Cond, class T = void>
-struct enable_if : enable_if_c<Cond::value, T> {};
-
-//////////////////////////////////////
-// disable_if_c
-//////////////////////////////////////
-template <bool B, class T = void>
-struct disable_if_c
- : enable_if_c<!B, T>
-{};
-
-//////////////////////////////////////
-// disable_if
-//////////////////////////////////////
-template <class Cond, class T = void>
-struct disable_if : enable_if_c<!Cond::value, T> {};
-
-//////////////////////////////////////
-// integral_constant
-//////////////////////////////////////
-template<class T, T v>
-struct integral_constant
-{
- static const T value = v;
- typedef T value_type;
- typedef integral_constant<T, v> type;
-
- operator T() const { return value; }
- T operator()() const { return value; }
-};
-
-typedef integral_constant<bool, true > true_type;
-typedef integral_constant<bool, false > false_type;
-
-
-//////////////////////////////////////
-// is_same
-//////////////////////////////////////
-template<class T, class U>
-struct is_same
-{
- static const bool value = false;
-};
-
-template<class T>
-struct is_same<T, T>
-{
- static const bool value = true;
-};
-
-//////////////////////////////////////
-// enable_if_same
-//////////////////////////////////////
-template <class T, class U, class R = void>
-struct enable_if_same : enable_if<is_same<T, U>, R> {};
-
-//////////////////////////////////////
-// disable_if_same
-//////////////////////////////////////
-template <class T, class U, class R = void>
-struct disable_if_same : disable_if<is_same<T, U>, R> {};
-
-} //namespace move_detail {
-} //namespace boost {
-
-#endif //#ifndef BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP
+////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2015-2015. +// Distributed under 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) +// +// See http://www.boost.org/libs/move for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +//! \file + +#ifndef BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP +#define BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP + +#ifndef BOOST_CONFIG_HPP +# include <boost/config.hpp> +#endif +# +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +//Small meta-typetraits to support move + +namespace boost { +namespace move_detail { + +////////////////////////////////////// +// if_c +////////////////////////////////////// +template<bool C, typename T1, typename T2> +struct if_c +{ + typedef T1 type; +}; + +template<typename T1, typename T2> +struct if_c<false,T1,T2> +{ + typedef T2 type; +}; + +////////////////////////////////////// +// if_ +////////////////////////////////////// +template<typename T1, typename T2, typename T3> +struct if_ : if_c<0 != T1::value, T2, T3> +{}; + +////////////////////////////////////// +// enable_if_c +////////////////////////////////////// +template <bool B, class T = void> +struct enable_if_c +{ + typedef T type; +}; + +template <class T> +struct enable_if_c<false, T> {}; + +////////////////////////////////////// +// enable_if +////////////////////////////////////// +template <class Cond, class T = void> +struct enable_if : enable_if_c<Cond::value, T> {}; + +////////////////////////////////////// +// disable_if_c +////////////////////////////////////// +template <bool B, class T = void> +struct disable_if_c + : enable_if_c<!B, T> +{}; + +////////////////////////////////////// +// disable_if +////////////////////////////////////// +template <class Cond, class T = void> +struct disable_if : enable_if_c<!Cond::value, T> {}; + +////////////////////////////////////// +// integral_constant +////////////////////////////////////// +template<class T, T v> +struct integral_constant +{ + static const T value = v; + typedef T value_type; + typedef integral_constant<T, v> type; + + operator T() const { return value; } + T operator()() const { return value; } +}; + +typedef integral_constant<bool, true > true_type; +typedef integral_constant<bool, false > false_type; + + +////////////////////////////////////// +// is_same +////////////////////////////////////// +template<class T, class U> +struct is_same +{ + static const bool value = false; +}; + +template<class T> +struct is_same<T, T> +{ + static const bool value = true; +}; + +} //namespace move_detail { +} //namespace boost { + +#endif //#ifndef BOOST_MOVE_DETAIL_META_UTILS_CORE_HPP |