-     #include <iostream> 
- 	#include <tuple> 
- 	using namespace std; 
-   
-     // bar : does something with an arbitrary tuple 
-     // (no variadic template arguments) 
- 	template <class Tuple> 
- 	void bar(Tuple t) 
- 	{ 
-         // .... do something with the tuple ... 
- 		std::cout << std::tuple_size<Tuple>::value; 
- 	} 
-   
-     // foo : takes a function pointer and an arbitrary number of other 
-     // arguments 
- 	template <class Func, typename... Ts> 
- 	void foo(Func f, Ts... args_in) 
- 	{ 
-         // construct a tuple containing the variadic arguments 
- 		std::tuple<Ts...> t = std::make_tuple(args_in...); 
-   
-         // pass this tuple to the function f 
- 		f(t); 
- 	} 
-   
- 	int main() 
- 	{ 
-         // this is not highly refined; you must provide the types of the 
-         // arguments (any suggestions?) 
- 		foo(bar<std::tuple<int, const char *, double>>, 123, "foobar", 43.262); 
- 		return 0; 
- 	} 
				ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDx0dXBsZT4KCXVzaW5nIG5hbWVzcGFjZSBzdGQ7CgkKICAgIC8vIGJhciA6IGRvZXMgc29tZXRoaW5nIHdpdGggYW4gYXJiaXRyYXJ5IHR1cGxlCiAgICAvLyAobm8gdmFyaWFkaWMgdGVtcGxhdGUgYXJndW1lbnRzKQoJdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgoJdm9pZCBiYXIoVHVwbGUgdCkKCXsKICAgICAgICAvLyAuLi4uIGRvIHNvbWV0aGluZyB3aXRoIHRoZSB0dXBsZSAuLi4KCQlzdGQ6OmNvdXQgPDwgc3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWU7Cgl9CgkKICAgIC8vIGZvbyA6IHRha2VzIGEgZnVuY3Rpb24gcG9pbnRlciBhbmQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBvdGhlcgogICAgLy8gYXJndW1lbnRzCgl0ZW1wbGF0ZSA8Y2xhc3MgRnVuYywgdHlwZW5hbWUuLi4gVHM+Cgl2b2lkIGZvbyhGdW5jIGYsIFRzLi4uIGFyZ3NfaW4pCgl7CiAgICAgICAgLy8gY29uc3RydWN0IGEgdHVwbGUgY29udGFpbmluZyB0aGUgdmFyaWFkaWMgYXJndW1lbnRzCgkJc3RkOjp0dXBsZTxUcy4uLj4gdCA9IHN0ZDo6bWFrZV90dXBsZShhcmdzX2luLi4uKTsKCiAgICAgICAgLy8gcGFzcyB0aGlzIHR1cGxlIHRvIHRoZSBmdW5jdGlvbiBmCgkJZih0KTsKCX0KCQoJaW50IG1haW4oKQoJewogICAgICAgIC8vIHRoaXMgaXMgbm90IGhpZ2hseSByZWZpbmVkOyB5b3UgbXVzdCBwcm92aWRlIHRoZSB0eXBlcyBvZiB0aGUKICAgICAgICAvLyBhcmd1bWVudHMgKGFueSBzdWdnZXN0aW9ucz8pCgkJZm9vKGJhcjxzdGQ6OnR1cGxlPGludCwgY29uc3QgY2hhciAqLCBkb3VibGU+PiwgMTIzLCAiZm9vYmFyIiwgNDMuMjYyKTsKCQlyZXR1cm4gMDsKCX0=