]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/iterator/is_readable_iterator.hpp
update boost to 1.44
[lyx.git] / boost / boost / iterator / is_readable_iterator.hpp
index 036585effbeddb63cbb5a966b0d7b7b7bfff54a8..60d6ff07f52ddc9dad1c93985783f0c484c3dc79 100644 (file)
-// Copyright David Abrahams 2003. Use, modification and distribution is\r
-// subject to the Boost Software License, Version 1.0. (See accompanying\r
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
-#ifndef IS_READABLE_ITERATOR_DWA2003112_HPP\r
-# define IS_READABLE_ITERATOR_DWA2003112_HPP\r
-\r
-#include <boost/mpl/bool.hpp>\r
-#include <boost/detail/iterator.hpp>\r
-\r
-#include <boost/type_traits/detail/bool_trait_def.hpp>\r
-#include <boost/iterator/detail/any_conversion_eater.hpp>\r
-\r
-// should be the last #include\r
-#include <boost/iterator/detail/config_def.hpp>\r
-\r
-#ifndef BOOST_NO_IS_CONVERTIBLE\r
-\r
-namespace boost {\r
\r
-namespace detail\r
-{\r
-  // Guts of is_readable_iterator.  Value is the iterator's value_type\r
-  // and the result is computed in the nested rebind template.\r
-  template <class Value>\r
-  struct is_readable_iterator_impl\r
-  {\r
-      static char tester(Value&, int);\r
-      static char (& tester(any_conversion_eater, ...) )[2];\r
-    \r
-      template <class It>\r
-      struct rebind\r
-      {\r
-          static It& x;\r
-          \r
-          BOOST_STATIC_CONSTANT(\r
-              bool\r
-            , value = (\r
-                sizeof(\r
-                    is_readable_iterator_impl<Value>::tester(*x, 1)\r
-                ) == 1\r
-            )\r
-          );\r
-      };\r
-  };\r
-\r
-#undef BOOST_READABLE_PRESERVER\r
-  \r
-  //\r
-  // void specializations to handle std input and output iterators\r
-  //\r
-  template <>\r
-  struct is_readable_iterator_impl<void>\r
-  {\r
-      template <class It>\r
-      struct rebind : boost::mpl::false_\r
-      {};\r
-  };\r
-\r
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS\r
-  template <>\r
-  struct is_readable_iterator_impl<const void>\r
-  {\r
-      template <class It>\r
-      struct rebind : boost::mpl::false_\r
-      {};\r
-  };\r
-\r
-  template <>\r
-  struct is_readable_iterator_impl<volatile void>\r
-  {\r
-      template <class It>\r
-      struct rebind : boost::mpl::false_\r
-      {};\r
-  };\r
-\r
-  template <>\r
-  struct is_readable_iterator_impl<const volatile void>\r
-  {\r
-      template <class It>\r
-      struct rebind : boost::mpl::false_\r
-      {};\r
-  };\r
-#endif\r
-\r
-  //\r
-  // This level of dispatching is required for Borland.  We might save\r
-  // an instantiation by removing it for others.\r
-  //\r
-  template <class It>\r
-  struct is_readable_iterator_impl2\r
-    : is_readable_iterator_impl<\r
-          BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<It>::value_type const\r
-      >::template rebind<It>\r
-  {};\r
-} // namespace detail\r
-\r
-// Define the trait with full mpl lambda capability and various broken\r
-// compiler workarounds\r
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(\r
-    is_readable_iterator,T,::boost::detail::is_readable_iterator_impl2<T>::value)\r
-    \r
-} // namespace boost\r
-\r
-#endif\r
-\r
-#include <boost/iterator/detail/config_undef.hpp>\r
-\r
-#endif // IS_READABLE_ITERATOR_DWA2003112_HPP\r
+// Copyright David Abrahams 2003. Use, modification and distribution is
+// subject to 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 IS_READABLE_ITERATOR_DWA2003112_HPP
+# define IS_READABLE_ITERATOR_DWA2003112_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/detail/iterator.hpp>
+
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+#include <boost/iterator/detail/any_conversion_eater.hpp>
+
+// should be the last #include
+#include <boost/iterator/detail/config_def.hpp>
+
+#ifndef BOOST_NO_IS_CONVERTIBLE
+
+namespace boost {
+namespace detail
+{
+  // Guts of is_readable_iterator.  Value is the iterator's value_type
+  // and the result is computed in the nested rebind template.
+  template <class Value>
+  struct is_readable_iterator_impl
+  {
+      static char tester(Value&, int);
+      static char (& tester(any_conversion_eater, ...) )[2];
+    
+      template <class It>
+      struct rebind
+      {
+          static It& x;
+          
+          BOOST_STATIC_CONSTANT(
+              bool
+            , value = (
+                sizeof(
+                    is_readable_iterator_impl<Value>::tester(*x, 1)
+                ) == 1
+            )
+          );
+      };
+  };
+
+#undef BOOST_READABLE_PRESERVER
+  
+  //
+  // void specializations to handle std input and output iterators
+  //
+  template <>
+  struct is_readable_iterator_impl<void>
+  {
+      template <class It>
+      struct rebind : boost::mpl::false_
+      {};
+  };
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+  template <>
+  struct is_readable_iterator_impl<const void>
+  {
+      template <class It>
+      struct rebind : boost::mpl::false_
+      {};
+  };
+
+  template <>
+  struct is_readable_iterator_impl<volatile void>
+  {
+      template <class It>
+      struct rebind : boost::mpl::false_
+      {};
+  };
+
+  template <>
+  struct is_readable_iterator_impl<const volatile void>
+  {
+      template <class It>
+      struct rebind : boost::mpl::false_
+      {};
+  };
+#endif
+
+  //
+  // This level of dispatching is required for Borland.  We might save
+  // an instantiation by removing it for others.
+  //
+  template <class It>
+  struct is_readable_iterator_impl2
+    : is_readable_iterator_impl<
+          BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<It>::value_type const
+      >::template rebind<It>
+  {};
+} // namespace detail
+
+// Define the trait with full mpl lambda capability and various broken
+// compiler workarounds
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+    is_readable_iterator,T,::boost::detail::is_readable_iterator_impl2<T>::value)
+    
+} // namespace boost
+
+#endif
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // IS_READABLE_ITERATOR_DWA2003112_HPP