В соответствии с cppreference функции std::set и std::map emplace возвращают a std::pair<iterator,bool>, с значением bool, чтобы сказать if вставка действительно имела место.
Однако emplace_hint возвращает iterator либо вставленному элементу, либо существующему элементу в наборе или карте, если вставка не выполнялась. Здесь нет значения bool.
Есть ли причина для этой разницы в интерфейсе этих подобных функций?
Обновление
Функция insert возвращает значение bool только при отсутствии подсказки. Это согласуется с поведением emplace и emplace_hint. Возникает вопрос: есть ли причина не возвращать bool, когда дается подсказка?
Я могу только подумать, что, возможно, есть причина в производительности, потому что пользователь обычно дает подсказку после операции lower_bound/upper_bound, поэтому она уверен, что вставка произойдет.