Стандарт C++11/14: вывод типов и move семантика

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.พ. 2025
  • Общие сведения о новых стандартах.
    Вывод типов: auto и decltype.
    Зачем нужны move-конструкторы?
    Rvalue-references.
    Как писать обобщённый код: std::move и std::forward, универсальная ссылка.
    Лекция №6 в курсе "C++ 2" (весна 2016).
    Преподаватель курса: Александр Владимирович Смаль
    Страница лекции на сайте CS центра: goo.gl/V5yswg

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

  • @normannspectator
    @normannspectator 6 ปีที่แล้ว

    Люди добрые, пожалуйста, дайте ссылку на видео где этот докладчик рассказывает про упомянутый здесь (1:11:30) доступ к временному объекту через константную ссылку в старом стандарте.

  • @waffleboot
    @waffleboot 7 ปีที่แล้ว

    Почему в perfect forwarding на 1:50:00 указан исходник std::forward(::type& t), когда передается rvalue?
    У std::forward же два определения: для type& и type&&.
    По коду вроде дергается Foo&& std::forward(std::remove_reference::type&&)

    • @AlexanderSmal
      @AlexanderSmal 7 ปีที่แล้ว

      У std::forward только одно определение, оно есть 1:43:30. Это определение по-разному раскрывается для случая lvalue и rvalue. В этом определении std::forward *всегда* принимает значение по обычной ссылке, т.е. аргумент функции std::forward в обоих случаях один и тот же, отличается тело функции и тип возвращаемого значения.

  • @stfreve
    @stfreve 8 ปีที่แล้ว +2

    Так и не понял, почему в функции void foo(int a), decltype(a) == int& ?
    Проверил на такой функции:
    void foo(int a){
    decltype(a) b = a;
    b = 2;
    std::cout

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

      +Владимир Лалаян всё верно, я забыл дополнительные скобки - нужно было написать decltype((a)). Это просто две формы decltype: если вызвать её от имени переменной, то получим тип с которым она была определена, а если с выражением - то тип соответствующего выражения. В данном случае нам нужен именно тип a как выражения, т.к. по этому типу будут выводиться параметры при вызове шаблонной функции.

    • @stfreve
      @stfreve 8 ปีที่แล้ว

      Alexander Smal А, ну тогда ясно. Спасибо. И за качественную лекцию тоже :)

  • @jsgaming9839
    @jsgaming9839 5 ปีที่แล้ว

    На экране куча-мала и сиди догадывайся про какую именно строку кода говорит в данный момент докладчик.

  • @eugene-shmakov
    @eugene-shmakov 7 ปีที่แล้ว +3

    "Фичи", "баги", "бэк-компэтибилити", "гайд-лайны"... Русских слов автору почему-то не хватает. Фраза о том, что "C++ отстал от Java" звучит довольно невежественно.