#include <iostream>
#define MACRO(y, x) template <typename...T> void _func_##x(T...t) { \
some.y.func_##x(t...); \
}
class first
{
public:
void func_example(const char* str)
{
std::cout << str;
}
};
class second
{
public:
first othersome;
} some;
MACRO(othersome, example);
int main()
{
_func_example("Hello, World!");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIE1BQ1JPKHksIHgpIHRlbXBsYXRlIDx0eXBlbmFtZS4uLlQ+IHZvaWQgX2Z1bmNfIyN4KFQuLi50KSB7IFwKCXNvbWUueS5mdW5jXyMjeCh0Li4uKTsgXAp9CgpjbGFzcyBmaXJzdAp7CglwdWJsaWM6Cgl2b2lkIGZ1bmNfZXhhbXBsZShjb25zdCBjaGFyKiBzdHIpCgl7CgkJc3RkOjpjb3V0IDw8IHN0cjsKCX0KfTsKCmNsYXNzIHNlY29uZAp7CglwdWJsaWM6CglmaXJzdCBvdGhlcnNvbWU7IAp9IHNvbWU7CgpNQUNSTyhvdGhlcnNvbWUsIGV4YW1wbGUpOwoKaW50IG1haW4oKQp7CglfZnVuY19leGFtcGxlKCJIZWxsbywgV29ybGQhIik7CgkKCXJldHVybiAwOwp9