#include <vector>
#include <list>
#include <cstdio>
template<typename T>
struct template_struct;
template<typename T>
struct template_struct<std::vector<T>> {
static void exec() {
printf("std::vector specialization\n");
}
};
template<typename T>
struct template_struct<std::list<T>> {
static void exec() {
printf("std::list specialization\n");
}
};
int main() {
std::vector<int> x;
std::list<float> y;
template_struct<decltype(x)>::exec();
template_struct<decltype(y)>::exec();
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxjc3RkaW8+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgdGVtcGxhdGVfc3RydWN0OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IHRlbXBsYXRlX3N0cnVjdDxzdGQ6OnZlY3RvcjxUPj4gewoJc3RhdGljIHZvaWQgZXhlYygpIHsgCgkJcHJpbnRmKCJzdGQ6OnZlY3RvciBzcGVjaWFsaXphdGlvblxuIik7Cgl9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgdGVtcGxhdGVfc3RydWN0PHN0ZDo6bGlzdDxUPj4gewoJc3RhdGljIHZvaWQgZXhlYygpIHsKCQlwcmludGYoInN0ZDo6bGlzdCBzcGVjaWFsaXphdGlvblxuIik7Cgl9Cn07CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPGludD4geDsKCXN0ZDo6bGlzdDxmbG9hdD4geTsKCXRlbXBsYXRlX3N0cnVjdDxkZWNsdHlwZSh4KT46OmV4ZWMoKTsKCXRlbXBsYXRlX3N0cnVjdDxkZWNsdHlwZSh5KT46OmV4ZWMoKTsKCQoJcmV0dXJuIDA7Cn0=