summaryrefslogtreecommitdiff
path: root/boost/fusion/adapted/array/tag_of.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/adapted/array/tag_of.hpp')
-rw-r--r--boost/fusion/adapted/array/tag_of.hpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/boost/fusion/adapted/array/tag_of.hpp b/boost/fusion/adapted/array/tag_of.hpp
new file mode 100644
index 0000000000..7c732a7021
--- /dev/null
+++ b/boost/fusion/adapted/array/tag_of.hpp
@@ -0,0 +1,72 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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_ADAPTED_ARRAY_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <cstddef>
+
+namespace boost
+{
+ namespace fusion
+ {
+ struct po_array_tag;
+ struct po_array_iterator_tag;
+ struct random_access_traversal_tag;
+ struct fusion_sequence_tag;
+
+ namespace traits
+ {
+#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+ template<typename T, std::size_t N>
+ struct tag_of<T[N], void>
+ {
+ typedef po_array_tag type;
+ };
+
+ template<typename T, std::size_t N>
+ struct tag_of<T const[N], void>
+ {
+ typedef po_array_tag type;
+ };
+#else
+ template<typename T, std::size_t N>
+ struct tag_of<T[N], void>
+ {
+ typedef po_array_tag type;
+ };
+
+ template<typename T, std::size_t N>
+ struct tag_of<T const[N], void>
+ {
+ typedef po_array_tag type;
+ };
+#endif
+ }
+ }
+
+ namespace mpl
+ {
+ template<typename>
+ struct sequence_tag;
+
+ template<typename T, std::size_t N>
+ struct sequence_tag<T[N]>
+ {
+ typedef fusion::po_array_tag type;
+ };
+
+ template<typename T, std::size_t N>
+ struct sequence_tag<T const[N] >
+ {
+ typedef fusion::po_array_tag type;
+ };
+ }
+}
+
+#endif