Всем добра.
В C++ есть поддержка параметров по умолчанию. Внимание вопрос: почему в STL распространён подход написания функций без использования оного? Пример(как дословно в STL я пистаь не буду). Вместо
template<typename RAIterator, typename Predicate = std::less<typename std::iterator_traits<RAIterator>::value_type>>
void sort(RAIterator begin, RAIterator end, Predicate pred = Predicate())
Мы имеем две функции:
template<typename RAIterator, typename Predicate>
void sort(RAIterator begin, RAIterator end, Predicate pred)
template<typename RAIterator>
void sort(RAIterator begin, RAIterator end)
Не хотят возиться с этими параметрами по умолчанию и выдирать value_type из итератора(в данном случае). Разъясните, пожалуйста.