Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: /// \file any.hpp Chris@16: /// Contains definition the detail::any type Chris@16: // Chris@16: // Copyright 2012 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012 Chris@16: #define BOOST_PROTO_DETAIL_ANY_HPP_EAN_18_07_2012 Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace proto Chris@16: { Chris@16: namespace detail Chris@16: { Chris@16: namespace anyns Chris@16: { Chris@16: //////////////////////////////////////////////////////////////////////////////////////////// Chris@16: struct any Chris@16: { Chris@16: template any(T const &) {} Chris@16: any operator=(any); Chris@16: any operator[](any); Chris@16: #define M0(Z, N, DATA) any operator()(BOOST_PP_ENUM_PARAMS_Z(Z, N, any BOOST_PP_INTERCEPT)); Chris@16: BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, M0, ~) Chris@16: #undef M0 Chris@16: Chris@16: template Chris@16: operator T &() const volatile; Chris@16: Chris@16: any operator+(); Chris@16: any operator-(); Chris@16: any operator*(); Chris@16: any operator&(); Chris@16: any operator~(); Chris@16: any operator!(); Chris@16: any operator++(); Chris@16: any operator--(); Chris@16: any operator++(int); Chris@16: any operator--(int); Chris@16: Chris@16: friend any operator<<(any, any); Chris@16: friend any operator>>(any, any); Chris@16: friend any operator*(any, any); Chris@16: friend any operator/(any, any); Chris@16: friend any operator%(any, any); Chris@16: friend any operator+(any, any); Chris@16: friend any operator-(any, any); Chris@16: friend any operator<(any, any); Chris@16: friend any operator>(any, any); Chris@16: friend any operator<=(any, any); Chris@16: friend any operator>=(any, any); Chris@16: friend any operator==(any, any); Chris@16: friend any operator!=(any, any); Chris@16: friend any operator||(any, any); Chris@16: friend any operator&&(any, any); Chris@16: friend any operator&(any, any); Chris@16: friend any operator|(any, any); Chris@16: friend any operator^(any, any); Chris@16: friend any operator,(any, any); Chris@16: friend any operator->*(any, any); Chris@16: Chris@16: friend any operator<<=(any, any); Chris@16: friend any operator>>=(any, any); Chris@16: friend any operator*=(any, any); Chris@16: friend any operator/=(any, any); Chris@16: friend any operator%=(any, any); Chris@16: friend any operator+=(any, any); Chris@16: friend any operator-=(any, any); Chris@16: friend any operator&=(any, any); Chris@16: friend any operator|=(any, any); Chris@16: friend any operator^=(any, any); Chris@16: }; Chris@16: } Chris@16: Chris@16: using anyns::any; Chris@16: } Chris@16: }} Chris@16: Chris@16: #endif