Приоритет оператора в примере реализации `copy` - PullRequest
3 голосов
/ 27 июля 2011

Я прочитал несколько строк кода здесь , где мне кажется, что должны быть скобки.

template<class InputIterator, class OutputIterator>
  OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )
{
  while (first!=last) 
     *result++ = *first++; // <--- this line
  return result;
}

В соответствии с таблицей приоритетов операторов здесь , я думаю, что приращение постфикса будет иметь приоритет, затем разыменование, а затем присваивание. Но мне кажется, что суть в том, что сначала происходит разыменование, затем присваивание, а затем приращение постфикса.

Я читаю неправильно? Или таблица неверна, или фрагмент кода? Или в этом есть что-то еще?

1 Ответ

6 голосов
/ 27 июля 2011

Постфиксный инкремент выполняется первым, но возвращаемое значение от постфиксного инкремента - оригинальное значение указателя.Вот почему это работает.

...