#include <iostream>
#include <type_traits>
typedef struct {} Foo;
int main() {
	std::cout
	    << std::is_assignable<int, int>::value
	    << std::is_assignable<int&, int>::value
	    << std::is_assignable<Foo, Foo>::value
	    << std::is_assignable<Foo&, Foo>::value
	    << std::endl;
	return 0;
}