170 похожих чатов

Ребята, есть у кого-то рефы на статьи, записки о проблемах

реализации virtual template methods?

15 ответов

14 просмотров

Да какие заметки, из определения virtual и template это явно следует. template, грубо говоря, позволяет инстанцировать дополнительные методы из разных единиц трансляции, а virtual требует знания интерфейса в момент компиляции любого отдельно взятого TU. Если взять самую популярную реализацию виртуальных функций (vtable), то на её примере - табличка должна быть сформирована однозначным образом.

Alexander Karaev
Да какие заметки, из определения virtual и templat...

А какие ещё бывают реализации для virtual?

Alex Sandrov
А какие ещё бывают реализации для virtual?

ну как в питоне например через хэш таблицу

Stas Koynov
ну как в питоне например через хэш таблицу

так эта та же виртуальная таблица, просто на рантайме построенная

Vitalii- Автор вопроса
Alexander Karaev
Да какие заметки, из определения virtual и templat...

Разве механизм который позволит реализовать подобное нельзя сделать? Возможно же сгенерить доп. методы в vtable, а потом просто делать выборку?

Vitalii
Разве механизм который позволит реализовать подобн...

Как сгенерить доп. методы в vtable, если компиляция двух разных TU независима?

Vitalii
Разве механизм который позволит реализовать подобн...

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

Vitalii- Автор вопроса
Alexander Karaev
Как сгенерить доп. методы в vtable, если компиляци...

Перегрузка же работает. Если я что-то не так понимаю, отправьте пожалуйста какие-то рефы на инфу, изучить хочу.

Vitalii
Перегрузка же работает. Если я что-то не так поним...

перегрузка - это раннее связывание, а не позднее

Vitalii
Перегрузка же работает. Если я что-то не так поним...

Перегрузка это физически существующий код, а шаблон это считай макрос, пока метод не вызовут (передав шаблонные параметры), кода не будет.

Vitalii
Разве механизм который позволит реализовать подобн...

Ты сначала попробуй сделать, чтобы не надо было подключать определение шаблонных методов

Ioann_ 🍒
а vtable не хеш разве?

Скорее всего просто функции по номерам

Ioann_ 🍒
а vtable не хеш разве?

это просто массив функций. в питоне это словарь название-функция.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта