#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;
}