#include <type_traits>
#include <stddef.h>
template <size_t N>
struct i { enum { value = N }; };
template <typename T>
struct is_complete {
template <typename T1>
static i<sizeof(T1)> test(int);
template <typename>
static i<23> test(...);
typedef decltype(test<T>(0)) type;
};
#include <iostream>
class foo;
int main() {
std::cout << is_complete<foo>::type::value;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8c3RkZGVmLmg+Cgp0ZW1wbGF0ZSA8c2l6ZV90IE4+CnN0cnVjdCBpIHsgZW51bSB7IHZhbHVlID0gTiB9OyB9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBpc19jb21wbGV0ZSB7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+CiAgICBzdGF0aWMgaTxzaXplb2YoVDEpPiB0ZXN0KGludCk7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CiAgICBzdGF0aWMgaTwyMz4gdGVzdCguLi4pOwoKICAgIHR5cGVkZWYgZGVjbHR5cGUodGVzdDxUPigwKSkgdHlwZTsKfTsKCiNpbmNsdWRlIDxpb3N0cmVhbT4KCmNsYXNzIGZvbzsKCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8IGlzX2NvbXBsZXRlPGZvbz46OnR5cGU6OnZhbHVlOwp9