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