Объявление семантического итератора?

Прошу прощения за очень расплывчатый заголовок, я действительно не знал, как назвать этот вопрос.

Скажем, у меня есть это:

std::list<std::string> msgs;

for (std::list<std::string>::iterator it = msgs.begin(); it < msgs.end(); it++) {
    // ...
}

Для меня это трудно читать. std :: list :: iterator почти кажется магическим числом, особенно если объявление of msgs находится далеко, как в файле заголовка. IMO было бы легче читать и было бы намного более семантическим, если бы это было примерно так:

std::list<std::string> msgs;

for (msgs.iterator it = msgs.begin(); it < msgs.end(); it++) {
    // ...
}

Теперь это явно незаконный C ++. Но мой вопрос является, есть ли способ реализовать что-то, что поддерживает написание таких объявлений итераторов?

11
задан orlp 26 May 2011 в 11:44
поделиться