C++0x: итераторы со счетчиком
От: wagant  
Дата: 03.07.11 15:02
Оценка:
Есть задача сделать итератор со счетчиком. В gcc 4.4.0 такая конструкция очень хорошо проходила:
// (1)
for (auto aIt = v.begin(), aCnt = 0; aIt != v.end(); ++aIt, ++aCnt)
    cout << (*aIt) << ", " << aCnt << endl;


Но в gcc 4.5.2 возникает ошибка
main.cpp:30:39: error: inconsistent deduction for 'auto': '__gnu_cxx::__normal_iterator<int*, std::vector<int> >' and then 'int'

Максимально короткое, что сработало, это вот этот код:
// (2)
int aCnt = 0;
for (auto aIt = v.begin(); aIt != v.end(); ++aIt, ++aCnt)
    cout << (*aIt) << ", " << aCnt << endl;


Но как-то обидно, что вариант (1) не работает. Вопрос в том, можно ли как-то все-таки сократить код (2) и написать все-таки в одну строчку?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.