Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Учитывая правила выбора лучшего кандидата, можно сказать, что наличие перегрузки позволяет использовать некоторые техники, которые без этого недоступны. Например, выбор лучшего алгоритма в зависимости от типа итератора, как это делается в STLport. Альтернативой этому теоретически могла бы быть частичная специализация, но выбор наиболее подходящей специализации тоже определяется через правила выбора из перегруженных функций.
ДА, пожалуй.
ПК>Не совсем. Предопределенные операторы для встроенных типов функциями не являются. В частности, нельзя взять их адрес, они не окружены точками следования и т.п.
Ну это скорее исключение, а не правило. Для
понимания лучше рассматривать оператор как функцию. Хотя ты конечно прав.
ПК>Оператора присваивания здесь нет. Здесь есть инициализация. Это суть разные вещи.
Для классов да, но разве для POD типов это не присваивание? Я долго читал раздел 8.5 стандарта (ИМХО на редкость непонятный) и понял именно так.
ПК>Нет, оптимизация здесь ни при чем. Здесь в любом случае должен быть использован конструктор копирования (8.5/14). В частности, для string конструктор по умолчанию в данном случае не требуется, что было бы нужно, если бы стандарт предписывал использовать operator=.
Ааа да. вот здесь ты абсолютно прав. Это я поторопился