summaryrefslogtreecommitdiffstats
path: root/contrib/src/boost/type_traits/integral_constant.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/src/boost/type_traits/integral_constant.hpp')
-rw-r--r--contrib/src/boost/type_traits/integral_constant.hpp212
1 files changed, 106 insertions, 106 deletions
diff --git a/contrib/src/boost/type_traits/integral_constant.hpp b/contrib/src/boost/type_traits/integral_constant.hpp
index 2cabefb..ae2448d 100644
--- a/contrib/src/boost/type_traits/integral_constant.hpp
+++ b/contrib/src/boost/type_traits/integral_constant.hpp
@@ -1,106 +1,106 @@
-// (C) Copyright John Maddock 2015.
-// 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)
-
-#ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-#define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#if (BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
- || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
- || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) )
-
-
-namespace boost{
- namespace mpl
- {
- template <bool B> struct bool_;
- template <class I, I val> struct integral_c;
- struct integral_c_tag;
- }
-}
-
-#else
-
-namespace mpl_{
-
- template <bool B> struct bool_;
- template <class I, I val> struct integral_c;
- struct integral_c_tag;
-}
-
-namespace boost
-{
- namespace mpl
- {
- using ::mpl_::bool_;
- using ::mpl_::integral_c;
- using ::mpl_::integral_c_tag;
- }
-}
-
-#endif
-
-namespace boost{
-
- template <class T, T val>
- struct integral_constant
- {
- typedef mpl::integral_c_tag tag;
- typedef T value_type;
- typedef integral_constant<T, val> type;
- static const T value = val;
- //
- // This helper function is just to disable type-punning
- // warnings from GCC:
- //
- template <class U>
- static U& dereference(U* p) { return *p; }
-
- operator const mpl::integral_c<T, val>& ()const
- {
- static const char data[sizeof(long)] = { 0 };
- return dereference(reinterpret_cast<const mpl::integral_c<T, val>*>(&data));
- }
- BOOST_CONSTEXPR operator T()const { return val; }
- };
-
- template <class T, T val>
- T const integral_constant<T, val>::value;
-
- template <bool val>
- struct integral_constant<bool, val>
- {
- typedef mpl::integral_c_tag tag;
- typedef bool value_type;
- typedef integral_constant<bool, val> type;
- static const bool value = val;
- //
- // This helper function is just to disable type-punning
- // warnings from GCC:
- //
- template <class T>
- static T& dereference(T* p) { return *p; }
-
- operator const mpl::bool_<val>& ()const
- {
- static const char data = 0;
- return dereference(reinterpret_cast<const mpl::bool_<val>*>(&data));
- }
- BOOST_CONSTEXPR operator bool()const { return val; }
- };
-
- template <bool val>
- bool const integral_constant<bool, val>::value;
-
- typedef integral_constant<bool, true> true_type;
- typedef integral_constant<bool, false> false_type;
-
-}
-
-#endif
+// (C) Copyright John Maddock 2015.
+// 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)
+
+#ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
+#define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if (BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
+ || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) )
+
+
+namespace boost{
+ namespace mpl
+ {
+ template <bool B> struct bool_;
+ template <class I, I val> struct integral_c;
+ struct integral_c_tag;
+ }
+}
+
+#else
+
+namespace mpl_{
+
+ template <bool B> struct bool_;
+ template <class I, I val> struct integral_c;
+ struct integral_c_tag;
+}
+
+namespace boost
+{
+ namespace mpl
+ {
+ using ::mpl_::bool_;
+ using ::mpl_::integral_c;
+ using ::mpl_::integral_c_tag;
+ }
+}
+
+#endif
+
+namespace boost{
+
+ template <class T, T val>
+ struct integral_constant
+ {
+ typedef mpl::integral_c_tag tag;
+ typedef T value_type;
+ typedef integral_constant<T, val> type;
+ static const T value = val;
+ //
+ // This helper function is just to disable type-punning
+ // warnings from GCC:
+ //
+ template <class U>
+ static U& dereference(U* p) { return *p; }
+
+ operator const mpl::integral_c<T, val>& ()const
+ {
+ static const char data[sizeof(long)] = { 0 };
+ return dereference(reinterpret_cast<const mpl::integral_c<T, val>*>(&data));
+ }
+ BOOST_CONSTEXPR operator T()const { return val; }
+ };
+
+ template <class T, T val>
+ T const integral_constant<T, val>::value;
+
+ template <bool val>
+ struct integral_constant<bool, val>
+ {
+ typedef mpl::integral_c_tag tag;
+ typedef bool value_type;
+ typedef integral_constant<bool, val> type;
+ static const bool value = val;
+ //
+ // This helper function is just to disable type-punning
+ // warnings from GCC:
+ //
+ template <class T>
+ static T& dereference(T* p) { return *p; }
+
+ operator const mpl::bool_<val>& ()const
+ {
+ static const char data = 0;
+ return dereference(reinterpret_cast<const mpl::bool_<val>*>(&data));
+ }
+ BOOST_CONSTEXPR operator bool()const { return val; }
+ };
+
+ template <bool val>
+ bool const integral_constant<bool, val>::value;
+
+ typedef integral_constant<bool, true> true_type;
+ typedef integral_constant<bool, false> false_type;
+
+}
+
+#endif