summaryrefslogtreecommitdiff
path: root/boost/intrusive/detail/pointer_element.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/intrusive/detail/pointer_element.hpp')
-rw-r--r--boost/intrusive/detail/pointer_element.hpp168
1 files changed, 0 insertions, 168 deletions
diff --git a/boost/intrusive/detail/pointer_element.hpp b/boost/intrusive/detail/pointer_element.hpp
deleted file mode 100644
index dd26e3cf0b..0000000000
--- a/boost/intrusive/detail/pointer_element.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2014-2014. 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/intrusive for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_INTRUSIVE_DETAIL_POINTER_ELEMENT_HPP
-#define BOOST_INTRUSIVE_DETAIL_POINTER_ELEMENT_HPP
-
-#ifndef BOOST_CONFIG_HPP
-# include <boost/config.hpp>
-#endif
-
-#if defined(BOOST_HAS_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#ifndef BOOST_INTRUSIVE_DETAIL_WORKAROUND_HPP
-#include <boost/intrusive/detail/workaround.hpp>
-#endif //BOOST_INTRUSIVE_DETAIL_WORKAROUND_HPP
-
-namespace boost {
-namespace intrusive {
-namespace detail{
-
-//////////////////////
-//struct first_param
-//////////////////////
-
-template <typename T> struct first_param
-{ typedef void type; };
-
-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
-
- template <template <typename, typename...> class TemplateClass, typename T, typename... Args>
- struct first_param< TemplateClass<T, Args...> >
- {
- typedef T type;
- };
-
-#else //C++03 compilers
-
- template < template //0arg
- <class
- > class TemplateClass, class T
- >
- struct first_param
- < TemplateClass<T> >
- { typedef T type; };
-
- template < template //1arg
- <class,class
- > class TemplateClass, class T
- , class P0>
- struct first_param
- < TemplateClass<T, P0> >
- { typedef T type; };
-
- template < template //2arg
- <class,class,class
- > class TemplateClass, class T
- , class P0, class P1>
- struct first_param
- < TemplateClass<T, P0, P1> >
- { typedef T type; };
-
- template < template //3arg
- <class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2>
- struct first_param
- < TemplateClass<T, P0, P1, P2> >
- { typedef T type; };
-
- template < template //4arg
- <class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3> >
- { typedef T type; };
-
- template < template //5arg
- <class,class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3, class P4>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3, P4> >
- { typedef T type; };
-
- template < template //6arg
- <class,class,class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3, class P4, class P5>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3, P4, P5> >
- { typedef T type; };
-
- template < template //7arg
- <class,class,class,class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3, class P4, class P5, class P6>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3, P4, P5, P6> >
- { typedef T type; };
-
- template < template //8arg
- <class,class,class,class,class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3, class P4, class P5, class P6, class P7>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3, P4, P5, P6, P7> >
- { typedef T type; };
-
- template < template //9arg
- <class,class,class,class,class,class,class,class,class,class
- > class TemplateClass, class T
- , class P0, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8>
- struct first_param
- < TemplateClass<T, P0, P1, P2, P3, P4, P5, P6, P7, P8> >
- { typedef T type; };
-
-#endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
-
-template <typename T>
-struct has_internal_pointer_element
-{
- template <typename X>
- static char test(int, typename X::element_type*);
-
- template <typename X>
- static int test(...);
-
- static const bool value = (1 == sizeof(test<T>(0, 0)));
-};
-
-template<class Ptr, bool = has_internal_pointer_element<Ptr>::value>
-struct pointer_element_impl
-{
- typedef typename Ptr::element_type type;
-};
-
-template<class Ptr>
-struct pointer_element_impl<Ptr, false>
-{
- typedef typename boost::intrusive::detail::first_param<Ptr>::type type;
-};
-
-} //namespace detail{
-
-template <typename Ptr>
-struct pointer_element
-{
- typedef typename ::boost::intrusive::detail::pointer_element_impl<Ptr>::type type;
-};
-
-template <typename T>
-struct pointer_element<T*>
-{ typedef T type; };
-
-} //namespace container {
-} //namespace boost {
-
-#endif // defined(BOOST_INTRUSIVE_DETAIL_POINTER_ELEMENT_HPP)