I want to achieve behavior like sizeof(complete_type) will return real sizeof, and sizeof(incomplete_type) - will be just 0
I need this to provide extended run time
It is fundamentally unsound. Templates are parametrized by types, not instantiation point. A class type is not complete or not in itself, it is complete at some point during translation.
A template instantiated on some types must have the exact same semantic in every instantiation.
If not, the behaviour is not defined.