Баг компилятора при параметре шаблона = void* - страница 20

 
pavlick_:

Кнопка лампа через ж с виртуальностью:

заезженные примеры.

Не это пример полиморфизма ни то пример шаблона. Это просто пример использование переменной bool и больше ничего (не считая толстого слоя шелухи).

Шаблоны никак не могут заменить полиморфизм.

 
Dmitry Fedoseev:

Шаблоны никак не могут заменить полиморфизм.

А где я утверждал обратное? Фишка в том, что полиморфизмом пытаются заменить шаблоны.

 
pavlick_:

А где я утверждал обратное? Фишка в том, что полиморфизмом пытаются заменить шаблоны.

Это скорее вы пытаетесь нормальный ООП подход заменить костылём )  Шаблоны по сути нужны лишь для хранимых данных.  Ну и ещё в некоторых интерфейсах типа IComparable<T>

Выгоды в производительности от них нет практически. В вашем втором примере компилятор всё заинлайнит, ибо там всё однозначно.

 
Alexey Navoykov:

Это скорее вы пытаетесь нормальный ООП подход заменить костылём )  Шаблоны по сути нужны лишь для хранимых данных.  Ну и ещё в некоторых интерфейсах типа IComparable<T>

Выгоды в производительности от них нет практически. В вашем втором примере компилятор всё заинлайнит, ибо там всё однозначно.

Это не мой пример, а классический пример инверсии зависимостей. И не надо придираться к его простоте, он просто демонстрирует идею, если бы я написал простыню кода, вы бы сказали: "ну да, это совсем другое дело"?

Шаблоны стали костылём, да ... . Ну ладно, я на этом закончу.

 
Кстати если вернуться к void*,  я только сейчас понял, что ведь в С++ c ним даже dynamic_cast не работает (не компилируется), что логично, ведь у нас просто обезличенный указатель на область памяти. Поэтому его только явно можно кастить. Соответственно нужно точно знать, какой тип там лежит.  Поэтому сам по себе void* в C++ бесполезен.  А в MQL всё иначе. Но в целях совместимости нужно избегать использования dynamic_cast и delete с указателями типа void*