Creating custom random access iterator in C++ 2011
Sure but:

Sure:

   my_iterator ();
   bool operator != (my_iterator);
   pointer            operator -&gt; ();
   my_iterator&amp;       operator ++ ();
   my_iterator&amp;       operator -- ();
   my_iterator&amp;       operator += (difference_type);
   my_iterator        operator +  (difference_type);
   my_iterator        operator -  (difference_type);
   reference          operator [] (difference_type);
   bool               operator &lt; (my_iterator);
   bool               operator &gt; (my_iterator);
   bool               operator &lt;= (my_iterator);
   bool               operator &gt;= (my_iterator);


But most of the above can be defined in terms of each other and are basically forwarding functions to one definition.

The default versions of these look like they should work. So why are you defining them:

   my_iterator (const my_iterator &amp;);
   my_iterator (my_iterator &amp;&amp;);
   my_iterator &amp;operator = (const my_iterator &amp;);
   my_iterator &amp;operator = (my_iterator &amp;&amp;);


Do you really need a destructor?

   ~my_iterator ();


Three different version of operator* that only differ by return type!
That does not look valid.

   reference    operator * ();
   value_type   operator * ();
   my_iterator&amp; operator * ();


Lots of operator++(int) that only differ by return type.
So again does not look valid

   void               operator ++ (int);
   reference          operator ++ (int);
   value_type         operator ++ (int);
   const my_iterator&amp; operator ++ (int);
   reference          operator ++ (int);


Lots of operator--(int) that only differ by return type.
So again does not look valid

   const my_iterator operator -- (int);
   reference         operator -- (int);


Look here for a definition of what you need to support.