#include <iostream>
using namespace std;
template<class... T>
void Foo(T&&...){} //測試用

#define FOO_1(x, ...) std::make_pair(x, #x)  //這邊預期是做出兩個std::pair<int, const char*>
#define FOO_2(x, ...) FOO_1(x), FOO_1(__VA_ARGS__) //預期產生 FOO_1(a), FOO_1(b)
#define FOO_(N, ...) FOO_##N (__VA_ARGS__) //預期接成FOO_2(a,b)
#define FOO(...) FOO_(2 /*為了簡化寫死*/, __VA_ARGS__)
int main() {
	int a = 1;
    int b = 2;
	Foo(FOO(a, b));
	return 0;
}