#include <iostream>
#include <vector>

using namespace std;

template<class T>
struct is_container
{
	static const bool value = false;
};

template<>
template<class T, class Alloc>
struct is_container<std::vector<T, Alloc>>
{
	static const bool value = true; 
};

// ... same specializations for other containers...

int main() {
	cout << is_container<std::vector<int>>::value << endl;
	cout << is_container<int>::value << endl;
	return 0;
}