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