#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcy4uLiBUPgp2b2lkIEZvbyhUJiYuLi4pe30gLy/muKzoqabnlKgKCiNkZWZpbmUgRk9PXzEoeCwgLi4uKSBzdGQ6Om1ha2VfcGFpcih4LCAjeCkgIC8v6YCZ6YKK6aCQ5pyf5piv5YGa5Ye65YWp5YCLc3RkOjpwYWlyPGludCwgY29uc3QgY2hhcio+CiNkZWZpbmUgRk9PXzIoeCwgLi4uKSBGT09fMSh4KSwgRk9PXzEoX19WQV9BUkdTX18pIC8v6aCQ5pyf55Si55SfIEZPT18xKGEpLCBGT09fMShiKQojZGVmaW5lIEZPT18oTiwgLi4uKSBGT09fIyNOIChfX1ZBX0FSR1NfXykgLy/poJDmnJ/mjqXmiJBGT09fMihhLGIpCiNkZWZpbmUgRk9PKC4uLikgRk9PXygyIC8q54K65LqG57Ch5YyW5a+r5q27Ki8sIF9fVkFfQVJHU19fKQppbnQgbWFpbigpIHsKCWludCBhID0gMTsKICAgIGludCBiID0gMjsKCUZvbyhGT08oYSwgYikpOwoJcmV0dXJuIDA7Cn0=