diff DEPENDENCIES/generic/include/boost/align/detail/remove_traits.hpp @ 102:f46d142149f5

Whoops, finish that update
author Chris Cannam
date Mon, 07 Sep 2015 11:13:41 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/align/detail/remove_traits.hpp	Mon Sep 07 11:13:41 2015 +0100
@@ -0,0 +1,90 @@
+/*
+ (c) 2014 Glen Joseph Fernandes
+ glenjofe at gmail dot com
+
+ Distributed under the Boost Software
+ License, Version 1.0.
+ http://boost.org/LICENSE_1_0.txt
+*/
+#ifndef BOOST_ALIGN_DETAIL_REMOVE_TRAITS_HPP
+#define BOOST_ALIGN_DETAIL_REMOVE_TRAITS_HPP
+
+#include <boost/config.hpp>
+
+#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
+#include <type_traits>
+#else
+#include <cstddef>
+#endif
+
+namespace boost {
+    namespace alignment {
+        namespace detail {
+#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
+            using std::remove_reference;
+            using std::remove_all_extents;
+            using std::remove_cv;
+#else
+            template<class T>
+            struct remove_reference {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_reference<T&> {
+                typedef T type;
+            };
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+            template<class T>
+            struct remove_reference<T&&> {
+                typedef T type;
+            };
+#endif
+
+            template<class T>
+            struct remove_all_extents {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_all_extents<T[]> {
+                typedef typename remove_all_extents<T>::type type;
+            };
+
+            template<class T, std::size_t N>
+            struct remove_all_extents<T[N]> {
+                typedef typename remove_all_extents<T>::type type;
+            };
+
+            template<class T>
+            struct remove_const {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_const<const T> {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_volatile {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_volatile<volatile T> {
+                typedef T type;
+            };
+
+            template<class T>
+            struct remove_cv {
+                typedef typename remove_volatile<typename
+                    remove_const<T>::type>::type type;
+            };
+#endif
+        }
+    }
+}
+
+#endif