diff options
Diffstat (limited to '3rdParty/Boost/src/boost/typeof/pointers_data_members.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/typeof/pointers_data_members.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/typeof/pointers_data_members.hpp b/3rdParty/Boost/src/boost/typeof/pointers_data_members.hpp new file mode 100644 index 0000000..2b47e97 --- /dev/null +++ b/3rdParty/Boost/src/boost/typeof/pointers_data_members.hpp @@ -0,0 +1,38 @@ +// Copyright (C) 2004 Arkadiy Vertleyb +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED +#define BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED + +#include <boost/typeof/encode_decode_params.hpp> +#include <boost/typeof/encode_decode.hpp> + +#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() + +BOOST_TYPEOF_BEGIN_ENCODE_NS + +enum {PTR_DATA_MEM_ID = BOOST_TYPEOF_UNIQUE_ID()}; + +template<class V, class P0, class P1> +struct encode_type_impl<V, P0 P1::*> +{ + typedef BOOST_TYPEOF_ENCODE_PARAMS(2, PTR_DATA_MEM_ID) type; +}; + +template<class Iter> +struct decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter> +{ + typedef Iter iter0; + BOOST_TYPEOF_DECODE_PARAMS(2) + + template<class T> struct workaround{ + typedef p0 T::* type; + }; + typedef typename decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter>::template workaround<p1>::type type; + typedef iter2 iter; +}; + +BOOST_TYPEOF_END_ENCODE_NS + +#endif//BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED |