На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Встроенные в язык std фичи
    Навеяно тут одним обсуждением :) Какие фичи 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 из грядущего стандарта.
    Что я ещё забыл?
      А библиотека C рассматривается?
        В принципе почему нет? :) Пусть тоже будет. Из сишных интристиков я только va_args знаю.
          Вот он, родимый, как минимум. Ещё setjmp. Также limits.h, float.h, stdint.h. Всё это implementation defined, и формально может быть написано тобой и вручную. Но ты должен знать, как. Если же мы говорим о переносимом коде, то вариант только один: использовать эти заголовки.
          И не рассматривать C, наверное, неправильно, C-библиотека включается в стандартную библиотеку Плюсов Стандартом. Просто не описывает её явно, а отсылает к соответствующему Стандарту.

          Добавлено
          За Плюсы могу добавить std::typeinfo, aligment-ы и operator delete(void*, std::size_t).
          Сообщение отредактировано: Qraizer -
            Если подойти к вопросу формально, то по идее в этот список входит всё обязательные для freestanding. Это:
            SubclauseHeader(s)
            <ciso646>(iso646.h)
            Types<cstddef>(stddef.h)
            Implementation properties<cfloat>(float.h) <limits> <climits>(limits.h)
            Integer types<cstdint>(stdint.h)
            Start and termination<cstdlib>
            Dynamic memory management<new>
            Type identification<typeinfo>
            Exception handling<exception>
            Initializer lists<initializer_list>
            Other runtime support<cstdalign> <cstdarg>(stdarg.h) <cstdbool>(stdbool.h)
            Type traits<type_traits>
            Atomics<atomic>
            Синим отмечены аналоги из C для freestanding. Для C++ от <cstdlib> требуется как минимум abort(), atexit(), at_quick_exit(), exit() и quick_exit().
            Сообщение отредактировано: Qraizer -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0217 ]   [ 16 queries used ]   [ Generated: 16.04.24, 21:22 GMT ]