Почему я могу использовать nullptr без включения STL?
С++ nullptr имеет тип std:: nullptr_t.
Почему такая программа, как
int main() {
int* ptr = nullptr;
}
все еще работает, хотя он не содержит библиотеки STL?
Ответ 1
В С++ 11 они хотели добавить ключевое слово, чтобы заменить макрос NULL (который в основном определяется как #define NULL 0), так как он является основной концепцией и из-за некоторых раздражающих ошибок, которые вы получаете, когда вы вынуждены использовать 0 как константу нулевого указателя.
Несколько ключевых слов, где предлагается. Большие кодовые базы, в которых выполняется поиск, чтобы гарантировать, что ключевое слово не используется, и что оно все еще описано, что они хотят (константа нулевого указателя).
nullptr оказалось достаточно редким и достаточно запоминающимся.
Типу nullptr по умолчанию не присвоено имя ключевого слова, потому что это не было обязательным для большинства программ. Вы можете получить его через decltype(nullptr) или включить заголовок std и используя std::nullptr_t.