以下のコードは、Ubuntu標準パッケージで提供されるクラス初期化子リストです。このイテレータでは、const_iteratorは同じタイプのtypedefです。異なるタイプのイテレータに同じtypedefが必要な理由を知りたかっただけです。イテレータにとって理想的には、typedef_E*イテレータが必要です。
// In the class initializer list:
namespace std
{
/// initializer_list
template<class _E>
class initializer_list
{
public:
typedef _E value_type;
typedef const _E& reference;
typedef const _E& const_reference;
typedef size_t size_type;
typedef const _E* iterator;
typedef const _E* const_iterator;
PS:私は適切なタイトルを考えることができないので、このタイトルを付けました