if-else depende de si T es un tipo completo

Cómo verificar si cierto tipo es un tipo completo en cierto.cpp?

template<class T>class Test{
    //some fields
    void(*functor)(T*) =[](T*){}; 
    //^ will be written by some .cpp that can access T as complete-type 
    T* t=nullptr;
    void fComplete(){    
        delete t;     //faster
        /** ^ some code that use complete type*/    
    }
    void fForward(){
        functor(t);   //slower
        /** ^ some code that forward declaration is enough*/   
    }
    void f(){  
        /*if(T is complete type){    
            fComplete();
        }else fForward();*/
    }
};

manifestación

Será útil cuando quieraprematuramente optimizar una función de eliminación en mi puntero inteligente personalizado.

¿Alguien puede confirmar que es imposible?
No estoy pidiendo una solución (pero no me importa), esta pregunta es solo mi curiosidad.

Respuestas a la pregunta(2)

Su respuesta a la pregunta