60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*=============================================================================
 | |
|     Copyright (c) 2001-2011 Joel de Guzman
 | |
|     Copyright (c) 2007 Tobias Schwinger
 | |
| 
 | |
|     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)
 | |
| ==============================================================================*/
 | |
| #if !defined(FUSION_SEQUENCE_BASE_04182005_0737)
 | |
| #define FUSION_SEQUENCE_BASE_04182005_0737
 | |
| 
 | |
| #include <boost/config.hpp>
 | |
| #include <boost/fusion/support/config.hpp>
 | |
| #include <boost/mpl/begin_end_fwd.hpp>
 | |
| 
 | |
| namespace boost { namespace fusion
 | |
| {
 | |
|     namespace detail
 | |
|     {
 | |
|         struct from_sequence_convertible_type
 | |
|         {};
 | |
|     }
 | |
| 
 | |
|     template <typename Sequence>
 | |
|     struct sequence_base
 | |
|     {
 | |
|         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 | |
|         Sequence const&
 | |
|         derived() const BOOST_NOEXCEPT
 | |
|         {
 | |
|             return static_cast<Sequence const&>(*this);
 | |
|         }
 | |
| 
 | |
|         BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 | |
|         Sequence&
 | |
|         derived() BOOST_NOEXCEPT
 | |
|         {
 | |
|             return static_cast<Sequence&>(*this);
 | |
|         }
 | |
| 
 | |
|         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 | |
|         operator detail::from_sequence_convertible_type() const BOOST_NOEXCEPT
 | |
|         {
 | |
|             return detail::from_sequence_convertible_type();
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     struct fusion_sequence_tag;
 | |
| }}
 | |
| 
 | |
| namespace boost { namespace mpl
 | |
| {
 | |
|     // Deliberately break mpl::begin, so it doesn't lie that a Fusion sequence
 | |
|     // is not an MPL sequence by returning mpl::void_.
 | |
|     // In other words: Fusion Sequences are always MPL Sequences, but they can
 | |
|     // be incompletely defined.
 | |
|     template<> struct begin_impl< boost::fusion::fusion_sequence_tag >;
 | |
| }}
 | |
| 
 | |
| #endif
 | 
