Re[3]: std::find_if<reference, predicate> можно?
От: watchmaker  
Дата: 23.03.15 16:17
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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


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

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

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


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

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