56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// (C) Copyright Ion Gaztanaga  2006-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_UNCAST_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_INTRUSIVE_DETAIL_UNCAST_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_CONFIG_HPP
							 | 
						||
| 
								 | 
							
								#  include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(BOOST_HAS_PRAGMA_ONCE)
							 | 
						||
| 
								 | 
							
								#  pragma once
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/intrusive/detail/config_begin.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/intrusive/pointer_traits.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/intrusive/detail/mpl.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost {
							 | 
						||
| 
								 | 
							
								namespace intrusive {
							 | 
						||
| 
								 | 
							
								namespace detail {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class ConstNodePtr>
							 | 
						||
| 
								 | 
							
								struct uncast_types
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   typedef typename pointer_traits<ConstNodePtr>::element_type element_type;
							 | 
						||
| 
								 | 
							
								   typedef typename remove_const<element_type>::type           non_const_type;
							 | 
						||
| 
								 | 
							
								   typedef typename pointer_traits<ConstNodePtr>::
							 | 
						||
| 
								 | 
							
								      template rebind_pointer<non_const_type>::type            non_const_pointer;
							 | 
						||
| 
								 | 
							
								   typedef pointer_traits<non_const_pointer>                   non_const_traits;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class ConstNodePtr>
							 | 
						||
| 
								 | 
							
								static typename uncast_types<ConstNodePtr>::non_const_pointer
							 | 
						||
| 
								 | 
							
								   uncast(const ConstNodePtr & ptr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   return uncast_types<ConstNodePtr>::non_const_traits::const_cast_from(ptr);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} //namespace detail {
							 | 
						||
| 
								 | 
							
								} //namespace intrusive
							 | 
						||
| 
								 | 
							
								} //namespace boost
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/intrusive/detail/config_end.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif //BOOST_INTRUSIVE_DETAIL_UTILITIES_HPP
							 |