86 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | /////////////////////////////////////////////////////////////////////////////// | ||
|  | /// \file any.hpp | ||
|  | /// Contains definition the detail::any type | ||
|  | // | ||
|  | //  Copyright 2012 Eric Niebler. 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) | ||
|  | 
 | ||
|  | #ifndef BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012 | ||
|  | #define BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012 | ||
|  | 
 | ||
|  | #include <boost/preprocessor/facilities/intercept.hpp> | ||
|  | #include <boost/preprocessor/repetition/repeat.hpp> | ||
|  | #include <boost/preprocessor/repetition/enum_params.hpp> | ||
|  | #include <boost/proto/proto_fwd.hpp> | ||
|  | 
 | ||
|  | namespace boost { namespace proto | ||
|  | { | ||
|  |     namespace detail | ||
|  |     { | ||
|  |         namespace anyns | ||
|  |         { | ||
|  |             //////////////////////////////////////////////////////////////////////////////////////////// | ||
|  |             struct any | ||
|  |             { | ||
|  |                 template<typename T> any(T const &) {} | ||
|  |                 any operator=(any); | ||
|  |                 any operator[](any); | ||
|  |                 #define M0(Z, N, DATA) any operator()(BOOST_PP_ENUM_PARAMS_Z(Z, N, any BOOST_PP_INTERCEPT)); | ||
|  |                 BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, M0, ~) | ||
|  |                 #undef M0 | ||
|  | 
 | ||
|  |                 template<typename T> | ||
|  |                 operator T &() const volatile; | ||
|  | 
 | ||
|  |                 any operator+(); | ||
|  |                 any operator-(); | ||
|  |                 any operator*(); | ||
|  |                 any operator&(); | ||
|  |                 any operator~(); | ||
|  |                 any operator!(); | ||
|  |                 any operator++(); | ||
|  |                 any operator--(); | ||
|  |                 any operator++(int); | ||
|  |                 any operator--(int); | ||
|  | 
 | ||
|  |                 friend any operator<<(any, any); | ||
|  |                 friend any operator>>(any, any); | ||
|  |                 friend any operator*(any, any); | ||
|  |                 friend any operator/(any, any); | ||
|  |                 friend any operator%(any, any); | ||
|  |                 friend any operator+(any, any); | ||
|  |                 friend any operator-(any, any); | ||
|  |                 friend any operator<(any, any); | ||
|  |                 friend any operator>(any, any); | ||
|  |                 friend any operator<=(any, any); | ||
|  |                 friend any operator>=(any, any); | ||
|  |                 friend any operator==(any, any); | ||
|  |                 friend any operator!=(any, any); | ||
|  |                 friend any operator||(any, any); | ||
|  |                 friend any operator&&(any, any); | ||
|  |                 friend any operator&(any, any); | ||
|  |                 friend any operator|(any, any); | ||
|  |                 friend any operator^(any, any); | ||
|  |                 friend any operator,(any, any); | ||
|  |                 friend any operator->*(any, any); | ||
|  | 
 | ||
|  |                 friend any operator<<=(any, any); | ||
|  |                 friend any operator>>=(any, any); | ||
|  |                 friend any operator*=(any, any); | ||
|  |                 friend any operator/=(any, any); | ||
|  |                 friend any operator%=(any, any); | ||
|  |                 friend any operator+=(any, any); | ||
|  |                 friend any operator-=(any, any); | ||
|  |                 friend any operator&=(any, any); | ||
|  |                 friend any operator|=(any, any); | ||
|  |                 friend any operator^=(any, any); | ||
|  |             }; | ||
|  |         } | ||
|  | 
 | ||
|  |         using anyns::any; | ||
|  |     } | ||
|  | }} | ||
|  | 
 | ||
|  | #endif |