Я читал еще один вопрос, и это заставило меня задуматься. Часто стандарт указывает функции, которые имеют параметры по умолчанию в своих описаниях. Позволяет ли стандарт записывать их как перегрузки?
Например, в стандарте указано, что std::basic_string::copy
имеет следующее объявление:
size_type copy(Ch* p, size_type n, size_type pos = 0) const;
Может ли соответствующая реализация стандартной библиотеки реализовать это вместо этого как две функции, подобные этой?
size_type copy(Ch* p, size_type n, size_type pos) const;
size_type copy(Ch* p, size_type n) const;
В этом примере вторая версия может пропустить тест if(pos > size()) { throw out_of_range(); }
, который необходим в первом. Микро-оптимизация, но все же вы видите точку примера.