#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 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzLCBjbGFzcz12b2lkPiBzdHJ1Y3QgaXNfY29tcGxldGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1Y3QgaXNfY29tcGxldGU8VCwgZGVjbHR5cGUodm9pZChzaXplb2YoVCkpKT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsJCgpzdHJ1Y3QgQTsKc3RydWN0IEZvbyB7fTsKaW50IG1haW4oKSB7CgkKCWlzX2NvbXBsZXRlPEZvbz46OnZhbHVlOwoJc3RhdGljX2Fzc2VydChpc19jb21wbGV0ZTxGb28+Ojp2YWx1ZSwgIlR5cGUgaXMgbm90IGRlZmluZWQhIik7CgkKCWlzX2NvbXBsZXRlPEE+Ojp2YWx1ZTsKICAgIHN0YXRpY19hc3NlcnQoaXNfY29tcGxldGU8QT46OnZhbHVlLCAiVHlwZSBpcyBub3QgZGVmaW5lZCEiKTsKCXJldHVybiAwOwp9