Index: iterator_facade.hpp
===================================================================
--- iterator_facade.hpp	(revision 39907)
+++ iterator_facade.hpp	(working copy)
@@ -381,7 +381,7 @@
         >
     {};
         
-    template <class Iterator, class Value, class Reference>
+    template <class Iterator, class Value, class Reference,class Difference>
     struct operator_brackets_result
     {
         typedef typename mpl::if_<
@@ -649,8 +649,9 @@
           >::make(*this->derived());
       }
         
-      typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
-      operator[](difference_type n) const
+      template<typename Difference>
+      typename boost::detail::operator_brackets_result<Derived,Value,reference,Difference>::type
+      operator[](Difference n) const
       {
           typedef boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy;
           

