Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.116.159] |
|
Сообщ.
#1
,
|
|
|
Навеяно тут одним обсуждением Какие фичи std:: являются неотъемлемой частью языка и компилятора, т.е. не могут быть реализованы на самом языке или в виде отдельной библиотеки? Навскидку пока получился такой список:
1) std::bad_cast, bad_alloc, bad_array_new_length являются встроенными типами, поскольку их могут кинуть стандартные конструкции языка, не зависящие ни от чего. 2) std::initializer_list это часть ядра языка, и свой initializer_list написать не получится 3) Некоторые функции из type_traits, в частности is_pod и is_standard_layout. По крайней мере я не представляю, как могут быть они реализованы средствами самого языка. 4) std::atomic, возможно, тоже стоит включить в этот список. По крайней мере если нужна эффективная реализация. 5) std::source_location из грядущего стандарта. Что я ещё забыл? |
Сообщ.
#2
,
|
|
|
А библиотека C рассматривается?
|
Сообщ.
#3
,
|
|
|
В принципе почему нет? Пусть тоже будет. Из сишных интристиков я только va_args знаю.
|
Сообщ.
#4
,
|
|
|
Вот он, родимый, как минимум. Ещё setjmp. Также limits.h, float.h, stdint.h. Всё это implementation defined, и формально может быть написано тобой и вручную. Но ты должен знать, как. Если же мы говорим о переносимом коде, то вариант только один: использовать эти заголовки.
И не рассматривать C, наверное, неправильно, C-библиотека включается в стандартную библиотеку Плюсов Стандартом. Просто не описывает её явно, а отсылает к соответствующему Стандарту. Добавлено За Плюсы могу добавить std::typeinfo, aligment-ы и operator delete(void*, std::size_t). |
Сообщ.
#5
,
|
|||||||||||||||||||||||||||
|
Если подойти к вопросу формально, то по идее в этот список входит всё обязательные для freestanding. Это:
|