File indexing completed on 2025-01-18 09:50:26
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012
0010 #define BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012
0011
0012 #include <boost/preprocessor/facilities/intercept.hpp>
0013 #include <boost/preprocessor/repetition/repeat.hpp>
0014 #include <boost/preprocessor/repetition/enum_params.hpp>
0015 #include <boost/proto/proto_fwd.hpp>
0016
0017 namespace boost { namespace proto
0018 {
0019 namespace detail
0020 {
0021 namespace anyns
0022 {
0023
0024 struct any
0025 {
0026 template<typename T> any(T const &) {}
0027 any operator[](any);
0028 #define M0(Z, N, DATA) any operator()(BOOST_PP_ENUM_PARAMS_Z(Z, N, any BOOST_PP_INTERCEPT));
0029 BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, M0, ~)
0030 #undef M0
0031
0032 template<typename T>
0033 operator T &() const volatile;
0034
0035 any operator+();
0036 any operator-();
0037 any operator*();
0038 any operator&();
0039 any operator~();
0040 any operator!();
0041 any operator++();
0042 any operator--();
0043 any operator++(int);
0044 any operator--(int);
0045
0046 friend any operator<<(any, any);
0047 friend any operator>>(any, any);
0048 friend any operator*(any, any);
0049 friend any operator/(any, any);
0050 friend any operator%(any, any);
0051 friend any operator+(any, any);
0052 friend any operator-(any, any);
0053 friend any operator<(any, any);
0054 friend any operator>(any, any);
0055 friend any operator<=(any, any);
0056 friend any operator>=(any, any);
0057 friend any operator==(any, any);
0058 friend any operator!=(any, any);
0059 friend any operator||(any, any);
0060 friend any operator&&(any, any);
0061 friend any operator&(any, any);
0062 friend any operator|(any, any);
0063 friend any operator^(any, any);
0064 friend any operator,(any, any);
0065 friend any operator->*(any, any);
0066
0067 friend any operator<<=(any, any);
0068 friend any operator>>=(any, any);
0069 friend any operator*=(any, any);
0070 friend any operator/=(any, any);
0071 friend any operator%=(any, any);
0072 friend any operator+=(any, any);
0073 friend any operator-=(any, any);
0074 friend any operator&=(any, any);
0075 friend any operator|=(any, any);
0076 friend any operator^=(any, any);
0077 };
0078 }
0079
0080 using anyns::any;
0081 }
0082 }}
0083
0084 #endif