Константин Владимиров - Семантические процессы в C++
HTML-код
- Опубликовано: 9 фев 2025
- Ближайшая конференция - C++ Russia 2025, 20-21 марта, Москва + online. Подробности и билеты: jrg.su/9Sszhd
- -
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if - это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
#lang #metaprogramming
Легенда
10 месяцев?
4 часа?
7 секунд?
Всегда.
Спасибо за видео, Константин как всегда хорош!
захватывающее видео. потому как автор любит своё дело и разбирается в нём.
Так увлечённо, только он рассказывает.
В очередной раз убеждаешься, что с++ хоть и мощный язык, но сделан через одно место (жопу, есть хотите уточнений) сначала придумывают странные конструкции, затем в следующих версиях стандартов героически борятся с их проблемами и в итоге язык обрастает кучей очень запутанных правил и исключений😢
осилить с++ могут не только лишь все
могу порекомендовать раст, там все хорошо и таких проблем нет
++ иногда хочется спросить, о чем они думали, когда это вводили
Чем сложнее задача - тем больше денег можно заработать. 😊
кажется автор задумал написать свой компилятор 🤔
А можно пояснительную бригаду на 36:17 с какого перепугу на месте "int I = fod(X)" будет вызван N::foo, а не ::foo ? Мы ведь не в пространстве имен N и не должны видеть эту функцию
я могу ошибаться, но по порядку ADL вроде как работает сначала с пространством аргумента, потом с обрамляющим пространством, и только потом с глобальным. Т.е. по приоритету разрешение перегрузки сначала найдёт полностью подходящую функцию в пространстве аргумента, т.е. N::foo. Но это не точно (сорян, я тоже нуб в с++)
::foo не подходит по типу аргумента, поэтому начнётся ADL
X типа N::S в namespace N, поэтому N::foo попадает в overload set
@@АлексейКутасов-п7и как это работает можно догадаться, но на кой чёрт это так работает?
@@milbrus735 чтобы работал hello world
std::operator
попробуйте этот код в кодболте.
Я напротив - наиболее внимательно читаю как раз этот, так называемый "птичий язык". А остальное - можно бегло, по диагонали пробежаться.
1:14
А все остальные получили неуд))
Учился у преподши, которая считала, что у нее на экзамене по матану 5 получить не может никто, 4-ку должен получить только один студент из группы, сколько то там троёк на группу (не помню уже, две или три), а остальные на пересдачу, а там такие же правила....
И на грамматиках ИИ ничего бы не понимал потому что язык - это лишь средство выражения мысли, инструмент, а не сама мысль.
разбудите меня когда с С++ все станет хорошо, а до того не трогайте меня вообще!
а в каком языке все хорошо?
@@WaldemarB-wj1nqДа, кстати
@@WaldemarB-wj1nq, в асемблере - там все прекрасно)
@@WaldemarB-wj1nqпайтон
@@WaldemarB-wj1nq В обычном Си.
одну 3, остальные колы и пары
си плас плас 🤠кавбой
завидую людям которые в этой теме, как рыба в воде..
Не стоит завидовать тем, которых нет. Поверьте, они "в теме" определенной темы, шаг влево и они лезут проверять на конкретном компайлере в силу неуверенности.