PageRenderTime 14ms CodeModel.GetById 1ms app.highlight 8ms RepoModel.GetById 2ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/fusion/support/is_view.hpp

http://hadesmem.googlecode.com/
C++ Header | 63 lines | 46 code | 10 blank | 7 comment | 0 complexity | 77a9795d433e381b71b210435107be65 MD5 | raw file
 1/*=============================================================================
 2    Copyright (c) 2001-2006 Joel de Guzman
 3
 4    Distributed under the Boost Software License, Version 1.0. (See accompanying 
 5    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 6==============================================================================*/
 7#if !defined(FUSION_IS_VIEW_03202006_0015)
 8#define FUSION_IS_VIEW_03202006_0015
 9
10#include <boost/fusion/support/detail/is_view.hpp>
11#include <boost/fusion/support/tag_of.hpp>
12
13namespace boost { namespace fusion
14{
15    // Special tags:
16    struct sequence_facade_tag;
17    struct boost_tuple_tag; // boost::tuples::tuple tag
18    struct boost_array_tag; // boost::array tag
19    struct mpl_sequence_tag; // mpl sequence tag
20    struct std_pair_tag; // std::pair tag
21
22    namespace extension
23    {
24        template<typename Tag>
25        struct is_view_impl
26        {
27            template <typename T>
28            struct apply
29                : detail::fusion_is_view<T>
30            {};
31        };
32
33        template <>
34        struct is_view_impl<sequence_facade_tag>
35        {
36            template <typename Sequence>
37            struct apply : Sequence::is_view {};
38        };
39
40        template <>
41        struct is_view_impl<boost_tuple_tag>;
42
43        template <>
44        struct is_view_impl<boost_array_tag>;
45
46        template <>
47        struct is_view_impl<mpl_sequence_tag>;
48
49        template <>
50        struct is_view_impl<std_pair_tag>;
51    }
52
53    namespace traits
54    {
55        template <typename T>
56        struct is_view :
57            extension::is_view_impl<typename fusion::detail::tag_of<T>::type>::
58                template apply<T>::type
59        {};
60    }
61}}
62
63#endif