#include <iostream>
#include <type_traits>

using namespace std;

template<typename T>
void foo(const T &arg)
{
	static_assert(std::is_same<T, int>::value, "int requeired");
}

struct C {};

int main() {
	int a;
	foo(a);
	
	C c;
	foo(c);
	return 0;
}