#include <iostream>
using namespace std;
struct A
{
int a;
};
struct B
{
int b;
};
struct C : public A,B
{
int c;
};
template<class T>
void addToObj(T& t)
{
t.a += 10;
}
void addToObj(C& a)
{
addToObj<C>(a);
a.a += 20;
}
int main()
{
C c;
c.a = 10;
c.b = 11;
c.c = 12;
addToObj(c);
std::cout << c.a << ":" << c.b << ":" << c.c << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKewoJaW50IGE7Cn07CgpzdHJ1Y3QgQgp7CglpbnQgYjsKfTsKCnN0cnVjdCBDIDogcHVibGljIEEsQgp7CglpbnQgYzsKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgYWRkVG9PYmooVCYgdCkKewogICB0LmEgKz0gMTA7Cn0KCnZvaWQgYWRkVG9PYmooQyYgYSkKewogICAJCiAgIGFkZFRvT2JqPEM+KGEpOwkKCQogICBhLmEgKz0gMjA7Cn0KCmludCBtYWluKCkgCnsKCUMgYzsKCQoJYy5hID0gMTA7CgljLmIgPSAxMTsKCWMuYyA9IDEyOwoJCglhZGRUb09iaihjKTsKCQoJc3RkOjpjb3V0IDw8IGMuYSA8PCAiOiIgPDwgYy5iIDw8ICI6IiA8PCBjLmMgPDwgc3RkOjplbmRsOwoJCglyZXR1cm4gMDsKfQ==