20 Library introduction [library]

20.5 Library-wide requirements [requirements]

20.5.4 Constraints on programs [constraints]

20.5.4.3 Reserved names [reserved.names]

Стандартная библиотека C ++ резервирует следующие типы имен:

  • макросы

  • глобальные имена

  • имена с внешней связью

Если программа объявляет или определяет имя в контексте, в котором оно зарезервировано, кроме случаев, явно разрешенных этим пунктом, ее поведение не определено.

20.5.4.3.1 Zombie names [zombie.names]

В пространстве имен stdследующие имена зарезервированы для предыдущей стандартизации:

20.5.4.3.2 Macro names [macro.names]

Единица трансляции, которая включает заголовок стандартной библиотеки, не должна#define или не #undef объявляется в каком-либо заголовке стандартной библиотеки.

Единица перевода не должна #define или не должна быть #undef лексически идентична ключевым словам, идентификаторам, перечисленным в Таблице 4, или attribute-tokens описанным в [dcl.attr].

20.5.4.3.3 External linkage [extern.names]

Каждое имя, объявленное как объект с внешней связью в заголовке, зарезервировано для реализации, чтобы обозначить этот объект библиотеки с внешней связью 177 как в пространстве имен, так std и в глобальном пространстве имен.

Каждая глобальная сигнатура функции, объявленная с внешней связью в заголовке, зарезервирована для реализации, чтобы обозначить эту сигнатуру функции с внешней связью.178

Каждое имя из стандартной библиотеки C, объявленное с внешней связью , зарезервировано для реализации для использования в качестве имени со связью как в пространстве имен, так и в глобальном пространстве имен.extern "C" std

Каждая сигнатура функции из стандартной библиотеки C, объявленной с внешней связью, зарезервирована для реализации для использования в качестве сигнатуры функции с обоими extern "C" и extern "C++" связью179 или как имя области пространства имен в глобальном пространстве имен.

Список таких зарезервированных имен включает errno, объявлен или определен в .<cerrno>

Список таких зарезервированных сигнатур функций с внешней связью включает setjmp(jmp_­buf), объявленные или определенные в , и , объявленные или определенные в .<csetjmp>va_­end(va_­list)<cstdarg>

Сигнатуры функций, объявленные в , и всегда зарезервированы, несмотря на ограничения, наложенные в подпункте 4.5.1 Поправки 1 к Стандарту C для этих заголовков.<cuchar><cwchar><cwctype>

20.5.4.3.4 Types [extern.types]

Для каждого типа T из стандартной библиотеки C180 типы ​::​T и std​::​T зарезервированы для реализации и, если они определены, ​::​T должны быть идентичны std​::​T.

Эти типы clock_­t, div_­t, FILE, fpos_­t, lconv, ldiv_­t, mbstate_­t, ptrdiff_­t, sig_­atomic_­t, size_­t, time_­t, tm, va_­list, wctrans_­t, wctype_­t, и wint_­t.

20.5.4.3.5 User-defined literal suffixes [usrlit.suffix]

Literal suffix identifiers которые не начинаются с подчеркивания, зарезервированы для будущей стандартизации.