C ++ 0x проблема компиляции ICC - PullRequest
1 голос
/ 11 апреля 2011
for each (auto obs in observers)
     *obs = true;

У меня проблема с компиляцией с помощью icc.

error : cannot deduce "auto" type (initializer required)

, пожалуйста, помогите решить вышеуказанную проблему. спасибо.

Ответы [ 2 ]

10 голосов
/ 11 апреля 2011

Этот синтаксис недопустим в C ++.Попробуйте вместо этого:

for (auto obs_iter=observers.begin(); obs_iter != observers.end(); ++obs_iter)
    **obs_iter = true;

(Предполагается, что observers хранит указатели на объекты)

Если ваш компилятор поддерживает циклы, основанные на диапазоне, вы можете сделать следующее:

for (auto &obs: observers)
    *obs = true;
5 голосов
/ 11 апреля 2011

С помощью цикла for на основе диапазона C ++ 0x (или, скорее, C ++ 11) вы можете сделать следующее:

for (auto& i : observers) {
   i = true;
}
...