#include <iostream>
using namespace std;

template <class, class=void> struct is_complete : std::false_type {};
template <class T>
struct is_complete<T, decltype(void(sizeof(T)))> : std::true_type {};	

struct A;
struct Foo {};
int main() {
	
	is_complete<Foo>::value;
	static_assert(is_complete<Foo>::value, "Type is not defined!");
	
	is_complete<A>::value;
    static_assert(is_complete<A>::value, "Type is not defined!");
	return 0;
}