Re[5]: шаблонный виртуальный метод
От: Went  
Дата: 30.06.15 14:57
Оценка:
Здравствуйте, B0FEE664, Вы писали:
BFE>Вроде бы ничего экстраординарного. Я что-то упускаю? (ну, кроме dll и so, конечно)
По-моему, такая реализация лишает всю затею смысла:
1. Представьте, что где-то есть шаблон-наследник класса А. Теперь программист начинает ручками дописывать все возможные инстанции для всех виртуальных шаблонов методов?
2. Представьте, что программист знает, что шаблон функции virt_fun для класса B с параметром std::string никогда не потребуется на практике, он используется только для А. Он все равно должен будет сообщить об этом компилятору чем-то вроде:
//virtual
void B::virt_fun<std::string>(std::string) = 0;

чтобы, если программа где-то изменится, и этот вызов все-таки произойдет, получить pure virtual function call? Неплохое поле для неожиданных ошибок.
3. Ваша идея неплохо решается на обычном С++ с ручной регистрацией обработчиков — под двум type_id — this и T. Чуть более многословно, но это можно все элегантно порулить макросами.
4. То, что вы предлагаете, по сути, не шаблон виртуальной функции, а автоматизация перегрузки виртуальных функций (которая, и без автоматизации в С++ работает плохо) с перекладыванием части работы на линковщик (что тоже явно С++ придется не по вкусу).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.