перегрузка по сравнению с параметрами по умолчанию в стандарте C ++

Я читал другой вопрос, и это заставило меня задуматься. Часто стандарт определяет функции, в описании которых есть параметры по умолчанию. Допускает ли стандарт вместо этого записывать их как перегрузки?

Например, в стандарте сказано, что 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 (); } тест, который необходим в первом. Микрооптимизация, но все же вы видите смысл примера.

11
задан skaffman 17 February 2011 в 23:04
поделиться