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

  Рет қаралды 14,960

C++ User Group

C++ User Group

4 жыл бұрын

Ближайшая конференция: С++ Russia 2024, 24 мая (online), 2-3 июня (offline, Москва)
Подробности и билеты: jrg.su/W8skjE
- -
Уже в С++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
@user-nu8ru5uz2h
@user-nu8ru5uz2h 4 жыл бұрын
Редкий случай. когда доклад о простом но очень важном и притом очень доступно. Автору респект.
@user-rp7lc8fb3v
@user-rp7lc8fb3v 4 жыл бұрын
Шикарнейший доклад, побольше бы таких
@IgoryashaPetrov
@IgoryashaPetrov Жыл бұрын
Интереснейший доклад, все супер понятно и по полочкам. Титанический труд 👍🏼
@mikhailanazarov
@mikhailanazarov 2 жыл бұрын
Спасибо за отличный доклад!
@user-sz7kt8nf1m
@user-sz7kt8nf1m 2 жыл бұрын
Шикааарно! Хорошая работа, которая действительно в помощь. Супер
@senioreasy
@senioreasy 4 жыл бұрын
Отличный доклад! Спасибо
@MaceUA
@MaceUA 3 жыл бұрын
Было бы интересно услышать подробное объяснение темы, как влияет ключевое слово `static` на определения функций в безымянных неймспейсах. Я раньше был уверен, что никак, ведь безымянный неймспейс уже предполагает internal linkage -- но на стековерфлоу видел посты, где отдельные личности доказывали, что использование слова static в таких функциях всё равно снижает нагрузку на линкер. Интересно, что говорит на эту тему стандарт и как де факто ведут себя популярные компиляторы при наличии или отсутствии `static` перед такими функциями.
@cppprograms5868
@cppprograms5868 4 жыл бұрын
Очень хороший доклад, рекомендую. Но хотелось бы сказать что бы самих видео про С++ были бы по больше (кроме докладов, например уроков, о мест его применение и т. д. для поднятия популярности плюсов, как для других языков. Спасибо!!!
@kvoistinov
@kvoistinov 4 жыл бұрын
С++ не нуждается в рекламе, его изучают и им пользуются. Все высокопроизводительные библиотеки Python и других языков написаны на С/С++. Уроков по С++ для новичков в сети предостаточно (еще больше англоязычных), а эти конференции и доклады направлены для прояснения тонких вещей языка или освещения лучших решений определенных проблем (до них еще нужно дорасти).
@push2805
@push2805 4 жыл бұрын
весело в конце
@user-rg8xk9sd2t
@user-rg8xk9sd2t Жыл бұрын
Спасибо большое за доклад! Всё чётко и по делу! Один вопрос. Если из constexpr следует inline, зачем тогда в некоторых ситуациях необходимо использовать связку inline constexpr? В докладе объясняется, что они "про разное". Зачем тогда для литеральных типов использовать constexpr вместо const?
@user-pv3fv1vl8x
@user-pv3fv1vl8x Жыл бұрын
Спасибо, крутой доклад, но это конечно очень сложно для понимания. До 45 минуты примерно понимал что да как исходя из рассказа, после 45 нить рассуждения оборвалась у меня в голове)
@xintreavideo
@xintreavideo 2 жыл бұрын
На 10:47 автор перепрыгнул на новую сущность (переменные, объявленые с const) без объяснения вида linkage и storage duration для них. На этом я потерял нить рассуждений.
@wlepnoga
@wlepnoga 3 жыл бұрын
На gcc (GCC) 10.2.1 20200723 фишка с анонимными спейсами не работает, все равно получаем ошибку redefinition of 'Local'
@MikhailMatrosov
@MikhailMatrosov 3 жыл бұрын
Довольно неожиданно. А можно ссылку?
@Andyy538
@Andyy538 4 жыл бұрын
Что за доклад Тимура про инициализацию?
@MikhailMatrosov
@MikhailMatrosov 4 жыл бұрын
kzfaq.info/get/bejne/aNB6qNB_38nUZo0.html
@Andyy538
@Andyy538 4 жыл бұрын
@@MikhailMatrosovСпасибо!
@misana77
@misana77 4 жыл бұрын
45:18 - кажется extern не нужен, потому что при явной инстанциации (на самом деле, при любой) мы создаём уже саму сущность функции, а ещё объявление и так extern. То есть как было в начале и в табличке.
@mapron1
@mapron1 4 жыл бұрын
Не кажется, так и есть) жаль что докладчик в шаблонах не шарит(
@ramililjasov
@ramililjasov 4 жыл бұрын
если extern не нужен, то почему код без extern не собирается? godbolt.org/z/r7rzMx Докладчик говорит о том, что с помощью extern можно избавиться от инстанцирования, и поэтому extern в примере нужен.
@MaceUA
@MaceUA 3 жыл бұрын
@@mapron1 нет, жаль что ты в шаблонах не шаришь( хотя ладно, на самом деле не жаль, пофиг вообще
@lays1650
@lays1650 4 жыл бұрын
Тони - пуля в зубах?
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
В С++ 20 список kzfaq.info/get/bejne/fcWalqWj17-0cac.html уже из 34 пунктов, стандарт закончен :) Ну и ссылка en.cppreference.com/w/cpp/language/constant_expression
FOOLED THE GUARD🤢
00:54
INO
Рет қаралды 63 МЛН
C++ Siberia 2020: Антон Полухин - Незаменимый С++
1:27:06
Антон Полухин - C++ трюки из Такси
59:19
C++ User Group
Рет қаралды 15 М.
Про Kafka (основы)
49:23
Владимир Богдановский
Рет қаралды 368 М.
Капитал. Карл Маркс. Аудиокнига
2:36:28
Аудиокниги издательства АРДИС
Рет қаралды 1,1 МЛН
Антон Полухин - Незаменимый С++
53:03
C++ User Group
Рет қаралды 39 М.
006.  Многопоточность в С++ - Максим Бусел
41:40
Yandex for Developers
Рет қаралды 18 М.
ПОКУПКА ТЕЛЕФОНА С АВИТО?🤭
1:00
Корнеич
Рет қаралды 3,4 МЛН
Hisense Official Flagship Store Hisense is the champion What is going on?
0:11
Special Effects Funny 44
Рет қаралды 2,5 МЛН
cute mini iphone
0:34
승비니 Seungbini
Рет қаралды 6 МЛН