История изменений
Исправление www_linux_org_ru, (текущая версия) :
sizeof(int*) == sizeof(int) и sizeof(double*) == sizeof(int) - кстати, не факт
спасибо, К.О. — именно потому, что не факт, я и поставил ассерты
void do_something() { puts(«A1 case»); if (data && fn) data = fn(data); }
void do_something() { puts(«A2 case»); if (data && fn) data = fn(data); }
зря стараешься
испортить код так, чтобы все сломалось, можно еще проще:
struct A1 { int x; void do_something() { .... } };
struct A2 { float x; void do_something() { .... } };
код void do_something() в обоих случаях один и тот же по той причине, что классы А1 и А2 являются двумя конкретизациями (или специализациями, х.з. как оно там правильно называется) одного и того же экзистенциального класса
напрямую и типобезопасно это на с++ не выразить, приходится дуплицировать код
Исходная версия www_linux_org_ru, :
sizeof(int*) == sizeof(int) и sizeof(double*) == sizeof(int) - кстати, не факт
спасибо, К.О. — именно потому, что не факт, я и поставил ассерты
void do_something() { puts(«A1 case»); if (data && fn) data = fn(data); }
void do_something() { puts(«A2 case»); if (data && fn) data = fn(data); }
зря стараешься
испортить код так, чтобы все сломалось, можно еще проще:
struct A1 { int x; void do_something() { .... } };
struct A2 { float x; void do_something() { .... } };
код void do_something() в обоих случаях один и тот же по той причине, что классы А1 и А2 являются двумя конкретизациями (или специализациями, как там) одного и того же экзистенциального класса
напрямую и типобезопасно это на с++ не выразить, приходится дуплицировать код