#include <iostream>
// for when the template parameter pack is empty...
int doCountZeros() {
return 0;
}
template <typename Arg, typename... Args>
int doCountZeros(Arg firstArg, Args... otherArgs) {
return int(firstArg == 0) + doCountZeros(otherArgs...);
}
template <typename... Args>
int countZeros(Args... args) {
return doCountZeros(args...);
}
int main() {
int varA = 1, varB = 0, varC = 3, varD = 0;
std::cout << countZeros(varA, varB, varC, varD);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gZm9yIHdoZW4gdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBwYWNrIGlzIGVtcHR5Li4uCmludCBkb0NvdW50WmVyb3MoKSB7CiAgICByZXR1cm4gMDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KaW50IGRvQ291bnRaZXJvcyhBcmcgZmlyc3RBcmcsIEFyZ3MuLi4gb3RoZXJBcmdzKSB7CiAgICByZXR1cm4gaW50KGZpcnN0QXJnID09IDApICsgZG9Db3VudFplcm9zKG90aGVyQXJncy4uLik7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgppbnQgY291bnRaZXJvcyhBcmdzLi4uIGFyZ3MpIHsKICAgIHJldHVybiBkb0NvdW50WmVyb3MoYXJncy4uLik7Cn0KCmludCBtYWluKCkgewoJaW50IHZhckEgPSAxLCB2YXJCID0gMCwgdmFyQyA9IDMsIHZhckQgPSAwOwoJc3RkOjpjb3V0IDw8IGNvdW50WmVyb3ModmFyQSwgdmFyQiwgdmFyQywgdmFyRCk7IAoJcmV0dXJuIDA7Cn0=