LINUX.ORG.RU

История изменений

Исправление 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 являются двумя конкретизациями (или специализациями, как там) одного и того же экзистенциального класса

напрямую и типобезопасно это на с++ не выразить, приходится дуплицировать код