Антон Полухин - C++ трюки из Такси

Поделиться
HTML-код
  • Опубликовано: 4 фев 2025
  • НаукаНаука

Комментарии • 15

  • @knst
    @knst 5 лет назад +9

    FastPimpl - шикарно!

  • @xvoidee
    @xvoidee 5 лет назад +4

    Как всегда топ информация. Спасибо!

  • @sunheretic13
    @sunheretic13 Год назад

    38:03. std::type_identity или boost::type_identity

  • @ivan.kulenko
    @ivan.kulenko 5 лет назад +16

    Как обычно пачкой выплёвывается миллион видео. Но начинаю всегда с Полухина.

  • @crea7or
    @crea7or 4 года назад +2

    А модули случайно из c++ 20 не помогут убрать проблему с фастпимпл? они же скроют все кишки что не экспорт?

  • @ПавелПоляков-ж2ж
    @ПавелПоляков-ж2ж 4 года назад +1

    На 22:55 Антон упоминает, что из std::exception "можно стектрейс вытащить иногда". Что он имеет в виду? Какую-то конкретную реализацию стандартной либы?

    • @AntonyPolukhin
      @AntonyPolukhin 4 года назад +1

      Можно либо запатчить C++ runtime, если вы полностью контролируете платформу.
      Либо вы, зная имя своего базового класса с стектрейсом, можете делать dynamic_cast для пойманного исключения. Если dynamic_cast успешный - достаёте трейс.

  • @Kotofay337
    @Kotofay337 4 года назад

    return Parse< T >( *this ); нельзя было написать?

    • @Stat1cV01D
      @Stat1cV01D 4 года назад +4

      Так он же привёл пример и на 34:45 он рассказал о минусах. Плюс будут сложности, если в T будет шаблон, а не тип. Поэтому он предлагает работать с T в отдельной структуре и передавать её параметром, с которым удобнее работать на примере 39:34 . Плюс на 38:07 он объясняет, зачем заключать эту вспомогательную структуру в namespace.

  • @matwey.kornilov
    @matwey.kornilov 5 лет назад +3

    Но ведь на разных архитектурах для одного и того же типа могут быть разные значения sizeof(T) и alignof(T).

    • @vladshut8576
      @vladshut8576 5 лет назад +2

      #ifdef MY_ARCH size = 64, align=16

    • @matwey.kornilov
      @matwey.kornilov 5 лет назад

      @@vladshut8576 Ну это не плюс языка, когда придется для каждой платформы (архитектуры, компилятора, его версии) перечислять длинную простыню макросов.

    • @yuri12358
      @yuri12358 4 года назад +4

      @@matwey.kornilov Да, поэтому Антон привёл пару примеров как с этим бороться: завести какой-то списочек различных значений этих констант для различных платформ; или выбрать максимальные среди всех вариантов значения, если можно пренебречь лишними 8Б