Информация об изменениях

Сообщение Re[3]: std::find_if<reference, predicate> можно? от 23.03.2015 16:17

Изменено 23.03.2015 16:24 watchmaker

Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, watchmaker, Вы писали:


BFE>>>Является ли следующий код валидным?

W>>Не является, если под валидностью подразумевается, что код скомпилируется и что после вызова find_if возвращённое значение совпадёт со значением it.

BFE>И почему значение может не совпадать?


Нет, давай лучше ты сначала расскажешь, почему считаешь, что оно должно совпадать :)

Я вот не вижу в стандарте ни единого основания для такой уверенности. Это, разумеется, если смотреть как описан алгоритм find_if в стандарте, а не в художественном изложении на всяких сайтах в интернете вроде cplusplus.com
Re[3]: std::find_if<reference, predicate> можно?
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, watchmaker, Вы писали:


BFE>>>Является ли следующий код валидным?

W>>Не является, если под валидностью подразумевается, что код скомпилируется и что после вызова find_if возвращённое значение совпадёт со значением it.

BFE>И почему значение может не совпадать?


Нет, давай лучше ты сначала расскажешь, почему считаешь, что оно должно совпадать :)

Я вот не вижу в стандарте ни единого основания для такой уверенности. Это, разумеется, если смотреть как описан алгоритм find_if в стандарте, а не в художественном изложении на всяких сайтах в интернете вроде cplusplus.com. На последнем, например, написано, что поведение функции эквивалентно некой представленной реализации, хотя на самом деле такого требования нет и на практике реализация как раз отличается. Причём часть отличий как раз затрагивает процесс копирования итераторов. Хотя для равенства it и возвращаемого занчения важна детерминистичность этого процесса.