СЛ
А как это будет работать downcast + виртуальные методы? Допустим:
struct Base {
int x = 0;
virtual int foo() { x += 1; }
};
struct Derived : Base {
int foo() { x += 2; }
};
void do_work(Base &x) {
x.foo();
}
void test() {
Derived x;
do_work(x);
}
Size: a a a
СЛ
struct Base {
int x = 0;
virtual int foo() { x += 1; }
};
struct Derived : Base {
int foo() { x += 2; }
};
void do_work(Base &x) {
x.foo();
}
void test() {
Derived x;
do_work(x);
}
МБ
DS
M
DS
PS
DS
PS
DS
myProgram :: (Monad m, MyDsl m) => m ()
PS
myProgram :: (Monad m, MyDsl m) => m ()
DS
PS
p
G
SM
МБ
p
G
p
PS