Недавно я написал семейство функций для обрезания начальных и конечных пробелов во входной строке. Поскольку понятие «пробельные символы» зависит от локали, я понял, что мне нужно будет либо передать ссылку const std::ctype<char_t>
или ссылку const std::locale
и вызвать std::use_facet<std::ctype<char_t> >
для объекта const std::locale
.
В моей библиотеке я решил передать ссылку const std::locale
, потому что считал, что объект std::locale
инкапсулирует всю информацию о локали и что std::use_facet
является механизмом доступа к библиотеке. Однако затем я начал задаваться вопросом, может ли быть лучшим выбором (возможно, более распространенным?) Передавать ссылку const std::ctype<char_t>
для прямого использования функциями.
Что чаще встречается в библиотеках, чувствительных к локали: передача ссылки const std::locale
или const-ссылки на необходимые фасеты?