#include <iostream>
template<typename... Args>
void print_pointers_to_whatever (Args... args) {
std::cout << "print_pointers_to_whatever() received "
<< sizeof...(args) << " arguments. Values are:";
char c[2] = {0,0};
for (auto p : {args...}) {
std::cout << c << ' ' << *p;
c[0] = ',';
}
std::cout << '\n';
}
int main() {
int i1 = 1, i2 = 2, i3 = 3, i4 = 4;
double f1 = 1.5, f2 = 2.5, f3 = 3.5;
const char *hello = "Hello", *world = "world!";
print_pointers_to_whatever (&i4,&i3,&i2,&i1);
print_pointers_to_whatever (&f1,&f2,&f3);
print_pointers_to_whatever (&hello, &world);
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAKCnRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CnZvaWQgcHJpbnRfcG9pbnRlcnNfdG9fd2hhdGV2ZXIgKEFyZ3MuLi4gYXJncykgewogICAgc3RkOjpjb3V0IDw8ICJwcmludF9wb2ludGVyc190b193aGF0ZXZlcigpIHJlY2VpdmVkICIKICAgICAgICAgICAgICA8PCBzaXplb2YuLi4oYXJncykgPDwgIiBhcmd1bWVudHMuIFZhbHVlcyBhcmU6IjsKICAgIGNoYXIgY1syXSA9IHswLDB9OwogICAgZm9yIChhdXRvIHAgOiB7YXJncy4uLn0pIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgYyA8PCAnICcgPDwgKnA7CiAgICAgICAgY1swXSA9ICcsJzsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCAnXG4nOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBpMSA9IDEsIGkyID0gMiwgaTMgPSAzLCBpNCA9IDQ7CiAgICBkb3VibGUgZjEgPSAxLjUsIGYyID0gMi41LCBmMyA9IDMuNTsKICAgIGNvbnN0IGNoYXIgKmhlbGxvID0gIkhlbGxvIiwgKndvcmxkID0gIndvcmxkISI7CgogICAgcHJpbnRfcG9pbnRlcnNfdG9fd2hhdGV2ZXIgKCZpNCwmaTMsJmkyLCZpMSk7CiAgICBwcmludF9wb2ludGVyc190b193aGF0ZXZlciAoJmYxLCZmMiwmZjMpOwogICAgcHJpbnRfcG9pbnRlcnNfdG9fd2hhdGV2ZXIgKCZoZWxsbywgJndvcmxkKTsKfQ==