#define call_func(x) x.do_smth();template <typename T>void call_func_templ(T t) { t.do_smth(); }struct A { void do_smth() {} // <== renamed: func => do_smth};struct B { void do_smth() {}};int main(){ A a; B b; call_func(a); call_func(b); call_func_templ(a); call_func_templ(b);}