#include <vector>
#include <typeinfo>
#include <random>
#include <chrono>
#include <iostream>
int give_me_anumber() {
static std::default_random_engine rnd_engine(
std::chrono::system_clock::now().time_since_epoch().count());
std::uniform_int_distribution<> rnd_value(0, 1);
return rnd_value(rnd_engine);
}
template<typename A, typename B>
void foo(const std::vector<A>& va,
const std::vector<B>& vb) {
std::cout << "-----The end of recursion-----\n"
"Type VectorA: " << typeid(A).name() << "\n"
"Type VectorB: " << typeid(B).name() << "\n"
"----------------------------------------\n";
}
template<typename... Args>
void foo(std::string str, Args... args) {
int number = give_me_anumber();
if (number == 0) {
std::vector<int> vector;
foo(args..., vector);
} else if (number == 1) {
std::vector<double> vector;
foo(args..., vector);
}
}
int main(int argc, char *argv[]) {
foo("file1", "file2");
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHR5cGVpbmZvPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgZ2l2ZV9tZV9hbnVtYmVyKCkgewogIHN0YXRpYyBzdGQ6OmRlZmF1bHRfcmFuZG9tX2VuZ2luZSBybmRfZW5naW5lKAogICAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CiAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248PiBybmRfdmFsdWUoMCwgMSk7CiAgcmV0dXJuIHJuZF92YWx1ZShybmRfZW5naW5lKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kdm9pZCBmb28oY29uc3Qgc3RkOjp2ZWN0b3I8QT4mIHZhLAogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxCPiYgdmIpIHsKICBzdGQ6OmNvdXQgPDwgIi0tLS0tVGhlIGVuZCBvZiByZWN1cnNpb24tLS0tLVxuIgogICAgICAiVHlwZSBWZWN0b3JBOiAiIDw8IHR5cGVpZChBKS5uYW1lKCkgPDwgIlxuIgogICAgICAiVHlwZSBWZWN0b3JCOiAiIDw8IHR5cGVpZChCKS5uYW1lKCkgPDwgIlxuIgogICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4Kdm9pZCBmb28oc3RkOjpzdHJpbmcgc3RyLCBBcmdzLi4uIGFyZ3MpIHsKICBpbnQgbnVtYmVyID0gZ2l2ZV9tZV9hbnVtYmVyKCk7CiAgaWYgKG51bWJlciA9PSAwKSB7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHZlY3RvcjsKICAgIGZvbyhhcmdzLi4uLCB2ZWN0b3IpOwogIH0gZWxzZSBpZiAobnVtYmVyID09IDEpIHsKICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdmVjdG9yOwogICAgZm9vKGFyZ3MuLi4sIHZlY3Rvcik7CiAgfQp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgZm9vKCJmaWxlMSIsICJmaWxlMiIpOwogIHJldHVybiAwOwp9