From 8286ac511144e4f17d34eac9affb97e50646344a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 23 Jul 2014 15:25:44 +0200 Subject: Imported Upstream version 4.0.0 --- .../boost/type_traits/detail/cv_traits_impl.hpp | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp (limited to 'libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp') diff --git a/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp b/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp new file mode 100644 index 0000000..d0ea7e3 --- /dev/null +++ b/libcutl/cutl/details/boost/type_traits/detail/cv_traits_impl.hpp @@ -0,0 +1,97 @@ + +// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard +// Hinnant & John Maddock 2000. +// 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). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + + +#ifndef BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED +#define BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED + +#include +#include + +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +// implementation helper: + + +#if !(BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2)) +namespace cutl_details_boost { +namespace detail { +#else +#include +namespace cutl_details_boost { +namespace type_traits { +namespace gcc8503 { +#endif + +template struct cv_traits_imp {}; + +template +struct cv_traits_imp +{ + BOOST_STATIC_CONSTANT(bool, is_const = false); + BOOST_STATIC_CONSTANT(bool, is_volatile = false); + typedef T unqualified_type; +}; + +template +struct cv_traits_imp +{ + BOOST_STATIC_CONSTANT(bool, is_const = true); + BOOST_STATIC_CONSTANT(bool, is_volatile = false); + typedef T unqualified_type; +}; + +template +struct cv_traits_imp +{ + BOOST_STATIC_CONSTANT(bool, is_const = false); + BOOST_STATIC_CONSTANT(bool, is_volatile = true); + typedef T unqualified_type; +}; + +template +struct cv_traits_imp +{ + BOOST_STATIC_CONSTANT(bool, is_const = true); + BOOST_STATIC_CONSTANT(bool, is_volatile = true); + typedef T unqualified_type; +}; + +#if BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2) +// We have to exclude function pointers +// (see http://gcc.gnu.org/bugzilla/show_bug.cgi?8503) +yes_type mini_funcptr_tester(...); +no_type mini_funcptr_tester(const volatile void*); + +} // namespace gcc8503 +} // namespace type_traits + +namespace detail { + +// Use the implementation above for non function pointers +template +struct cv_traits_imp : public ::cutl_details_boost::type_traits::gcc8503::cv_traits_imp { }; + +// Functions are never cv-qualified +template struct cv_traits_imp +{ + BOOST_STATIC_CONSTANT(bool, is_const = false); + BOOST_STATIC_CONSTANT(bool, is_volatile = false); + typedef T unqualified_type; +}; + +#endif + +} // namespace detail +} // namespace cutl_details_boost + +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +#endif // BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED -- cgit v1.2.3