Интересно, есть ли причина, по которой серия std::sto
(например, std::stoi
, std::stol
) не является шаблоном функции, например:
template<typename T>
T sto(std::string const & str, std::size_t *pos = 0, int base = 10);
а затем:
template<>
int sto<int>(std::string const & str, std::size_t *pos, int base)
{
// do the stuff.
}
template<>
long sto<long>(std::string const & str, std::size_t *pos, int base)
{
// do the stuff.
}
/* etc. */
В моем смысле, это будет лучший дизайн, потому что на данный момент, когда мне нужно преобразовать строку в любое числовое значение, которое требуется пользователю, я должен вручную управлять каждым случаем.
Есть ли причина не иметь такую функцию шаблона? Есть ли предполагаемый выбор, или это просто так?