Кажется, что nullptr
объявлено в глобальном пространстве имен по умолчанию. Разве это не имело бы смысла для того, чтобы оно находилось в пространстве имен std
?
Почему не 'nullptr' в пространстве имен 'std'?
Ответ 1
nullptr
- это ключевое слово С++ 11 (не отличается от if
, public
, true
, void
и т.д.), поэтому пространства имен не применяются.
Ответ 2
nullptr
является литералом-указателем так же, как, например, true
является булевым литералом. Этот литерал имеет тип std::nullptr_t
, который, как вы видите, указан в пространстве имен std::
Литерал указателя описан в разделе 2.14.7 Литералы указателя стандарта С++.