/*////////////////////////////////////////////////////////////////////////////// Copyright (c) 2013 Jamboree 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_FUSION_SUPPORT_REF_HPP_INCLUDED #define BOOST_FUSION_SUPPORT_REF_HPP_INCLUDED #include #include #include namespace boost { namespace fusion { struct reference_wrapper_tag; }} namespace boost { namespace fusion { namespace traits { template struct tag_of > { typedef reference_wrapper_tag type; }; }}} namespace boost { namespace fusion { namespace extension { template struct category_of_impl; template struct begin_impl; template struct end_impl; template struct at_impl; template struct value_at_impl; template struct size_impl; template struct at_key_impl; template struct value_at_key_impl; template struct has_key_impl; template struct is_sequence_impl; template struct is_view_impl; template struct is_segmented_impl; template<> struct category_of_impl { template struct apply : category_of_impl::type>:: template apply {}; }; template<> struct begin_impl { template struct apply : begin_impl::type>:: template apply {}; }; template<> struct end_impl { template struct apply : end_impl::type>:: template apply {}; }; template<> struct at_impl { template struct apply : at_impl::type>:: template apply {}; }; template<> struct value_at_impl { template struct apply : value_at_impl::type>:: template apply {}; }; template<> struct size_impl { template struct apply : size_impl::type>:: template apply {}; }; template<> struct value_at_key_impl { template struct apply : value_at_key_impl::type>:: template apply {}; }; template<> struct at_key_impl { template struct apply : at_key_impl::type>:: template apply {}; }; template<> struct has_key_impl { template struct apply : has_key_impl::type>:: template apply {}; }; template<> struct is_sequence_impl { template struct apply : is_sequence_impl::type>:: template apply {}; }; template<> struct is_view_impl : is_sequence_impl {}; template<> struct is_segmented_impl { template struct apply : is_segmented_impl::type>:: template apply {}; }; }}} #endif