Есть же стандартный макрос для сего дела: offsetof (http://www.cplusplus.com/reference/clibrary/cstddef/offsetof/).
Делает тоже самое кстати. Но не хочется плодить лишние сущьности )
В принципе да. Производительность критична. Пишу прилаги для мобильных устройсв под управлением iOS. В принципе С++ тоже юзаю но гораздо реже. Всетаки Obj-C + С гораздо удобнее юзать чем Obj-C + C++.
На мой взгляд, в таблице упущена одна из самых важных особенностей Forward Iterators, которая выгодно отличает их от Input/Output Iterators — возможность повторного прохода! На этом стоит поставить акцент.
Кроме того, весьма удивлен положению пункта «Может быть создан без параметров». Для Input/Output Iterators это тоже справедливо, ведь именно так и создается итератор, указывающий на конец абстрактной последовательности данных.
Чтобы не описывать в реализации кучу однотипных операций (типа +=, +, []), в качестве указанного декоратора удобно использовать boost::iterator_adaptor. Он все такие функции определяет через примитивные операции типа increment/decrement/advance etc.
Недооценённые итераторы