Size: a a a

2020 November 20

o

osm1um in pro.cxx
Alexey Kuznetsov
По дизайну темплейтов нельзя. Это компайл-тайм конструкт, компилятору надо знать все инстанцирования чтоб сгенерить код. Сколько доп методов сгенерить? Во внешней библиотеке ктото унаследовался от твоего класса и оверрайднул метод. Как ты сгенеришь базовый метод для этого типа? У тебя там больше кода нет
О, понял. Спасибо.
источник

АК

Александр Караев... in pro.cxx
osm1um
Перегрузка же работает. Если я что-то не так понимаю, отправьте пожалуйста какие-то рефы на инфу, изучить хочу.
перегрузка - это раннее связывание, а не позднее
источник

o

osm1um in pro.cxx
Помнит кто-то главы из популярной литературы, или статьи какие-то? Хочу глубже такие моменты разобрать.
источник

D

Danya in pro.cxx
osm1um
Помнит кто-то главы из популярной литературы, или статьи какие-то? Хочу глубже такие моменты разобрать.
источник

o

osm1um in pro.cxx
Спасибо
источник

ПК

Побитый Кирпич... in pro.cxx
osm1um
Перегрузка же работает. Если я что-то не так понимаю, отправьте пожалуйста какие-то рефы на инфу, изучить хочу.
Перегрузка это физически существующий код, а шаблон это считай макрос, пока метод не вызовут (передав шаблонные параметры), кода не будет.
источник

AN

Alexander N in pro.cxx
При каких условиях происходит девиртуализация вызовов?
источник

CD

Constantine Drozdov in pro.cxx
osm1um
Разве механизм который позволит реализовать подобное нельзя сделать? Возможно же сгенерить доп. методы в vtable, а потом просто делать выборку?
Ты сначала попробуй сделать, чтобы не надо было подключать определение шаблонных методов
источник

АК

Александр Караев... in pro.cxx
Alexander N
При каких условиях происходит девиртуализация вызовов?
Когда компилятор может доказать, что идёт вызов конкретной функции, и выставлена нужная степень оптимизации. Например, метод/класс final
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
Когда компилятор может доказать, что идёт вызов конкретной функции, и выставлена нужная степень оптимизации. Например, метод/класс final
Ничерта не оптимизируют :(
источник

AN

Alexander N in pro.cxx
Просто это такая очень ёмкая вещь потому что нужно понимать что я вызову по итогу, а дерево классов может быть любого размера
источник

I

Ioann_V in pro.cxx
Stas Koynov
ну как в питоне например через хэш таблицу
а vtable не хеш разве?
источник

CD

Constantine Drozdov in pro.cxx
Ioann_V
а vtable не хеш разве?
Скорее всего просто функции по номерам
источник

I

Ioann_V in pro.cxx
ну, тоже вероятно, да
источник

I

Ioann_V in pro.cxx
и даже эффективно
источник

SK

Stas Koynov in pro.cxx
Ioann_V
а vtable не хеш разве?
это просто массив функций. в питоне это словарь название-функция.
источник

m

magras in pro.cxx
Alexander N
Просто это такая очень ёмкая вещь потому что нужно понимать что я вызову по итогу, а дерево классов может быть любого размера
Не важно какого размера дерево. Девиртуализация применяется к конкретному объекту. По сути задача сводится к тому чтобы доказать, что за указателем может находится только один конкретный тип.
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander N
При каких условиях происходит девиртуализация вызовов?
Создал объект, на след. строке вызвал метод. Думаю компилятор допрёт что к чему
источник

DF

Dollar Føølish in pro.cxx
Можно и не на следующей
источник

DF

Dollar Føølish in pro.cxx
Вптр то не копируется при срезке
источник