Михаил Матросов - Спецификаторы, квалификаторы и шаблоны

  Рет қаралды 15,744

C++ Russia — Конференция по разработке на Cpp

C++ Russia — Конференция по разработке на Cpp

Күн бұрын

Ближайшая конференция - C++ Russia 2025, 20-21 марта, Москва + online. Подробности и билеты: jrg.su/9Sszhd
- -
Уже в С++98 у нас были const, volatile, static, extern, inline и, конечно, шаблоны. В С++11 добавились thread_local, constexpr, а также extern для шаблонов. В С++14 добавились шаблоны переменных. В С++17 - inline переменные. В С++20 обещают подвезти consteval и constinit. А вы когда-нибудь задумывались, что такое template static inline thread_local constexpr const volatile переменная?
В этом докладе Михаил попытается разложить по полочкам всё это многообразие ключевых слов. Вспомним про linkage, storage duration и инстанциации шаблонов (и что изменится с приходом модулей в С++20). Разберёмся, какая связь между template и inline, между static и constexpr. Поймём, зачем нам extern, когда у нас есть inline. И осознаем, как нам потребовалось почти 20 лет, чтобы научиться нормально объявлять константы.
Доклад рассчитан на базовое знание языка.

Пікірлер: 24
@АлександрКуликов-ж8к
@АлександрКуликов-ж8к 4 жыл бұрын
Редкий случай. когда доклад о простом но очень важном и притом очень доступно. Автору респект.
@ИгорьСавенков-и3х
@ИгорьСавенков-и3х 5 жыл бұрын
Шикарнейший доклад, побольше бы таких
@IgoryashaPetrov
@IgoryashaPetrov 2 жыл бұрын
Интереснейший доклад, все супер понятно и по полочкам. Титанический труд 👍🏼
@mikhailanazarov
@mikhailanazarov 3 жыл бұрын
Спасибо за отличный доклад!
@компаниядоставкиЕдадомой.ру
@компаниядоставкиЕдадомой.ру 3 жыл бұрын
Шикааарно! Хорошая работа, которая действительно в помощь. Супер
@MaceUA
@MaceUA 4 жыл бұрын
Было бы интересно услышать подробное объяснение темы, как влияет ключевое слово `static` на определения функций в безымянных неймспейсах. Я раньше был уверен, что никак, ведь безымянный неймспейс уже предполагает internal linkage -- но на стековерфлоу видел посты, где отдельные личности доказывали, что использование слова static в таких функциях всё равно снижает нагрузку на линкер. Интересно, что говорит на эту тему стандарт и как де факто ведут себя популярные компиляторы при наличии или отсутствии `static` перед такими функциями.
@senioreasy
@senioreasy 4 жыл бұрын
Отличный доклад! Спасибо
@АлексейКомаров-э3з
@АлексейКомаров-э3з Жыл бұрын
Спасибо большое за доклад! Всё чётко и по делу! Один вопрос. Если из constexpr следует inline, зачем тогда в некоторых ситуациях необходимо использовать связку inline constexpr? В докладе объясняется, что они "про разное". Зачем тогда для литеральных типов использовать constexpr вместо const?
@АндрейМедведев-ы3ф
@АндрейМедведев-ы3ф Жыл бұрын
Спасибо, крутой доклад, но это конечно очень сложно для понимания. До 45 минуты примерно понимал что да как исходя из рассказа, после 45 нить рассуждения оборвалась у меня в голове)
@cppprograms5868
@cppprograms5868 4 жыл бұрын
Очень хороший доклад, рекомендую. Но хотелось бы сказать что бы самих видео про С++ были бы по больше (кроме докладов, например уроков, о мест его применение и т. д. для поднятия популярности плюсов, как для других языков. Спасибо!!!
@kvoistinov
@kvoistinov 4 жыл бұрын
С++ не нуждается в рекламе, его изучают и им пользуются. Все высокопроизводительные библиотеки Python и других языков написаны на С/С++. Уроков по С++ для новичков в сети предостаточно (еще больше англоязычных), а эти конференции и доклады направлены для прояснения тонких вещей языка или освещения лучших решений определенных проблем (до них еще нужно дорасти).
@xintreavideo
@xintreavideo 3 жыл бұрын
На 10:47 автор перепрыгнул на новую сущность (переменные, объявленые с const) без объяснения вида linkage и storage duration для них. На этом я потерял нить рассуждений.
@Andyy538
@Andyy538 4 жыл бұрын
Что за доклад Тимура про инициализацию?
@MikhailMatrosov
@MikhailMatrosov 4 жыл бұрын
kzbin.info/www/bejne/aJutpqCEr8ijbLs
@Andyy538
@Andyy538 4 жыл бұрын
@@MikhailMatrosovСпасибо!
@wlepnoga
@wlepnoga 4 жыл бұрын
На gcc (GCC) 10.2.1 20200723 фишка с анонимными спейсами не работает, все равно получаем ошибку redefinition of 'Local'
@MikhailMatrosov
@MikhailMatrosov 4 жыл бұрын
Довольно неожиданно. А можно ссылку?
@push2805
@push2805 4 жыл бұрын
весело в конце
@misana77
@misana77 4 жыл бұрын
45:18 - кажется extern не нужен, потому что при явной инстанциации (на самом деле, при любой) мы создаём уже саму сущность функции, а ещё объявление и так extern. То есть как было в начале и в табличке.
@mapron1
@mapron1 4 жыл бұрын
Не кажется, так и есть) жаль что докладчик в шаблонах не шарит(
@ramililjasov
@ramililjasov 4 жыл бұрын
если extern не нужен, то почему код без extern не собирается? godbolt.org/z/r7rzMx Докладчик говорит о том, что с помощью extern можно избавиться от инстанцирования, и поэтому extern в примере нужен.
@MaceUA
@MaceUA 4 жыл бұрын
@@mapron1 нет, жаль что ты в шаблонах не шаришь( хотя ладно, на самом деле не жаль, пофиг вообще
@lays1650
@lays1650 4 жыл бұрын
Тони - пуля в зубах?
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
В С++ 20 список kzbin.info/www/bejne/fZDNlHWop76Dd9U уже из 34 пунктов, стандарт закончен :) Ну и ссылка en.cppreference.com/w/cpp/language/constant_expression
C++ Siberia 2020: Антон Полухин - Незаменимый С++
1:27:06
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 19 М.
Михаил Матросов - Как объявить константу в С++?
1:13:10
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 9 М.
Антон Полухин - Незаменимый С++
53:03
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 40 М.
Павел Новиков - Под капотом стандартной библиотеки C++
1:00:04
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 4 М.
Дмитрий Кожевников - Модули в С++20 - правда или вымысел?
58:52
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 6 М.
Сборник Эксклюзивов 2024 - Уральские Пельмени
1:33:24
Уральские Пельмени
Рет қаралды 392 М.
Михаил Матросов, Повседневный С++: boost и STL
1:05:23
Антон Полухин - C++ трюки из Такси
59:19
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 16 М.
Антон Яковлев - Практика применения C++ в играх и игровых движках
1:00:27
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 3,9 М.