Подтвердить что ты не робот

Почему у chrono есть собственное пространство имен?

Все, что я видел до сих пор в стандартной библиотеке С++, находится в пространстве имен std. Если я использую вещи из std::chrono, я обычно превышаю свой 80 символов на лимитный лимит - это не проблема, просто неудобно.

Итак, вот мой простой вопрос: почему заголовок chrono имеет собственное пространство имен?

4b9b3361

Ответ 1

Я был автором автора в chrono. Суб-пространство имен не было моим первым выбором, просто из-за многословия. Я нахожу, что пишу using namespace std::chrono почти каждый раз, когда использую объект.

Однако это было очень спорное предложение. И многие люди, в том числе некоторые из моих соавторов, твердо чувствовали, что подпространство является подходящим. Я не стал категорически возражать против пространства под-имен, потому что нам нужно было пойти на компромисс или стать столь же мертвым, как и конгресс США.: ⁠-⁠) Результат такой блокировки будет, вероятно, C11 timespec.

boost экспериментировал с подпространствами имен гораздо более агрессивно, чем у std, и один из главных авторов этой статьи также является автором библиотеки с датой окончания, с которой развился хронограф. Таким образом, очевидно, что это сильно повлияло на использование пространства под-имен.

Ожидая, вполне возможно, что пространство под-имен станет абсолютно необходимым. Представьте, если мы добавим календарные услуги, которые включают сокращение за декабрь: dec. Это будет напрямую противоречить:

ios_base& dec(ios_base& str);

в <ios>. Так что в целом, я, вероятно, ошибался, не настаивая на подпространстве имен с самого начала.: ⁠-⁠) В будущем нам будет интересно посмотреть, где комитет делает и не создает пространства под-имен.

Ответ 2

Существуют и другие пространства имен, например std::placeholders. В конечном счете, в С++ 03 Комитет не занимался пространством имен, но теперь становится болезненно очевидным, что пространство имен std становится массово перегруженным. Как таковой, я ожидаю, что многие предложения библиотеки для С++ 14 будут использовать подзаголовок для более крупных организаций компонентов.