]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/range/size.hpp
Initialize BibTeXInfo modifier to zero, always.
[lyx.git] / boost / boost / range / size.hpp
index 311a69210bb215f5a0835df515dbe10e1034042b..6ae74d1176ad386d03f451933294551f02cd3441 100644 (file)
 # pragma once
 #endif
 
+#include <boost/range/config.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
-#include <boost/range/difference_type.hpp>
+#include <boost/range/size_type.hpp>
 #include <boost/assert.hpp>
 
-namespace boost 
+namespace boost
 {
+    namespace range_detail
+    {
+        template<class SinglePassRange>
+        inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type
+        range_calculate_size(const SinglePassRange& rng)
+        {
+            BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 &&
+                          "reachability invariant broken!" );
+            return boost::end(rng) - boost::begin(rng);
+        }
+    }
 
-    template< class T >
-    inline BOOST_DEDUCED_TYPENAME range_difference<T>::type size( const T& r )
+    template<class SinglePassRange>
+    inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type
+    size(const SinglePassRange& rng)
     {
-        BOOST_ASSERT( (boost::end( r ) - boost::begin( r )) >= 0 &&
-                      "reachability invariant broken!" );
-        return boost::end( r ) - boost::begin( r );
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+    !BOOST_WORKAROUND(__GNUC__, < 3) \
+    /**/
+        using namespace range_detail;
+#endif
+        return range_calculate_size(rng);
     }
 
 } // namespace 'boost'