#include <iostream>

template< typename t >
typename std::enable_if< sizeof (t), std::true_type >::type
is_complete_fn( t * );

std::false_type is_complete_fn( ... );

template< typename t, bool value = decltype( is_complete_fn( (t *) nullptr ) )::value >
struct is_complete : std::integral_constant< bool, value > {};

struct q;

void a() {
    std::cout << is_complete< q >::value << '\n';
}

struct q {};

void b() {
    std::cout << is_complete< q >::value << '\n';
}

int main() {
    std::cout.setf( std::ios::boolalpha );
    a();
    b();
}