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

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ก.พ. 2020
  • Подробнее о конференции C++ Russia: jrg.su/W8skjE
    - -
    . . . При написании больших фреймворков приходится сталкиваться с типовыми задачами, решения для которых давно известны. Однако эти решения недостаточно эффективны, и можно сделать намного лучше.
    О подобных эффективных трюках мы и поговорим!
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 15

  • @knst
    @knst 4 ปีที่แล้ว +8

    FastPimpl - шикарно!

  • @xvoidee
    @xvoidee 4 ปีที่แล้ว +4

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

  • @ivan.kulenko
    @ivan.kulenko 4 ปีที่แล้ว +16

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

  • @sunheretic13
    @sunheretic13 ปีที่แล้ว

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

  • @crea7or
    @crea7or 3 ปีที่แล้ว +2

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

    • @ingotsaper8117
      @ingotsaper8117 3 ปีที่แล้ว

      +

    • @charlieking7600
      @charlieking7600 ปีที่แล้ว

      Тем временем модули всё ещё сырые.

  • @user-xu8tc1tu7c
    @user-xu8tc1tu7c 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 4 ปีที่แล้ว +3

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

    • @vladshut8576
      @vladshut8576 4 ปีที่แล้ว +2

      #ifdef MY_ARCH size = 64, align=16

    • @matwey.kornilov
      @matwey.kornilov 4 ปีที่แล้ว

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

    • @yuri12358
      @yuri12358 4 ปีที่แล้ว +4

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