Я читал другой вопрос, и это заставило меня задуматься. Часто стандарт определяет функции, в описании которых есть параметры по умолчанию. Допускает ли стандарт вместо этого записывать их как перегрузки?
Например, в стандарте сказано, что 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 (); }
тест, который необходим в первом. Микрооптимизация, но все же вы видите смысл примера.