forked from boostorg/iterator
		
	is_incrementable.hpp: checks whether ++x is well-formed pointee.hpp: value_type of iterators or smart pointers indirect_reference.hpp: reference type of iterators or smart pointers indirect_iterator.hpp indirect_iterator_member_types.cpp Use pointee/indirect_reference to select value/reference type. iterator_concepts.hpp: Fixed interoperable test. Hardly tests enough, but it's a start minimum_category.hpp: Better error messages for vc6 indirect_iterator_test.cpp: Workarounds for compilers without SFINAE static_assert_same.hpp: Informative error reports; added a macro. zip_iterator_test.hpp: Added missing #include Jamfile: made zip_iterator test pass with vc6/stlport [SVN r21514]
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright David Abrahams 2003. Permission to copy, use,
 | 
						|
// modify, sell and distribute this software is granted provided this
 | 
						|
// copyright notice appears in all copies. This software is provided
 | 
						|
// "as is" without express or implied warranty, and with no claim as
 | 
						|
// to its suitability for any purpose.
 | 
						|
#ifndef STATIC_ASSERT_SAME_DWA2003530_HPP
 | 
						|
# define STATIC_ASSERT_SAME_DWA2003530_HPP
 | 
						|
 | 
						|
# include <boost/type.hpp>
 | 
						|
# include <boost/static_assert.hpp>
 | 
						|
 | 
						|
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
						|
template <class T, class U>
 | 
						|
struct static_assert_same_base;
 | 
						|
 | 
						|
template <class T>
 | 
						|
struct static_assert_same_base<T,T>
 | 
						|
{
 | 
						|
    enum { value = 1 };
 | 
						|
};
 | 
						|
 | 
						|
template <class T, class U>
 | 
						|
struct static_assert_same : static_assert_same_base<T,U> {};
 | 
						|
 | 
						|
#else
 | 
						|
# include <boost/mpl/if.hpp>
 | 
						|
# include <boost/mpl/bool.hpp>
 | 
						|
# include <boost/type_traits/is_same.hpp>
 | 
						|
 | 
						|
template <class T, class U>
 | 
						|
struct static_assert_same
 | 
						|
    : boost::mpl::if_<boost::is_same<T,U>,boost::mpl::true_,void>::type
 | 
						|
{};
 | 
						|
#endif
 | 
						|
 | 
						|
#define STATIC_ASSERT_SAME( T1,T2 )                   \
 | 
						|
   enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
 | 
						|
          = static_assert_same<T1,T2>::value }
 | 
						|
 | 
						|
#endif // STATIC_ASSERT_SAME_DWA2003530_HPP
 |