#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;
}