orm_iterator
{
public:
  typedef /* see below */ value_type;
  typedef /* see below */ reference;
  typedef /* see below */ pointer;
  typedef iterator_traits&lt;Iterator&gt;::difference_type difference_type;
  typedef /* see below */ iterator_category;

  transform_iterator();
  transform_iterator(Iterator const&amp; x, UnaryFunction f);

  template&lt;class F2, class I2, class R2, class V2&gt;
  transform_iterator(
        transform_iterator&lt;F2, I2, R2, V2&gt; const&amp; t
      , typename enable_if_co