#include <cstdarg>
#include <iostream>
#include <limits>
int smallestOf(const int count, const int val1, ... ) { /* I use val1 to determine the template type */
va_list args;
va_start(args, val1);
int smallestVal = std::numeric_limits<int>::max();
for(int i = 0; i < count; i++) {
int nextVal = va_arg(args, int);
std::cout << "nextVal: " << nextVal << std::endl;
if(nextVal < smallestVal) smallestVal = nextVal;
}
va_end(args);
return smallestVal;
}
int main() {
std::cout << "Smallest value: " << smallestOf(3, 10, 20, 30) << std::endl;
}
I2luY2x1ZGUgPGNzdGRhcmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGxpbWl0cz4KCgoKaW50IHNtYWxsZXN0T2YoY29uc3QgaW50IGNvdW50LCBjb25zdCBpbnQgdmFsMSwgLi4uICkgeyAvKiBJIHVzZSB2YWwxIHRvIGRldGVybWluZSB0aGUgdGVtcGxhdGUgdHlwZSAqLwogICAgdmFfbGlzdCBhcmdzOwogICAgdmFfc3RhcnQoYXJncywgdmFsMSk7CiAgICBpbnQgc21hbGxlc3RWYWwgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICBpbnQgbmV4dFZhbCA9IHZhX2FyZyhhcmdzLCBpbnQpOwogICAgICAgIHN0ZDo6Y291dCA8PCAibmV4dFZhbDogIiA8PCBuZXh0VmFsIDw8IHN0ZDo6ZW5kbDsKICAgICAgICBpZihuZXh0VmFsIDwgc21hbGxlc3RWYWwpIHNtYWxsZXN0VmFsID0gbmV4dFZhbDsKICAgIH0KICAgIHZhX2VuZChhcmdzKTsKICAgIHJldHVybiBzbWFsbGVzdFZhbDsKfQoKCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8ICJTbWFsbGVzdCB2YWx1ZTogIiA8PCBzbWFsbGVzdE9mKDMsIDEwLCAyMCwgMzApIDw8IHN0ZDo6ZW5kbDsKfQ==