if-else depende se T é um tipo completo

Como verificar se um determinado tipo é um tipo completo em um determinado.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();*/
    }
};

demonstração

Será útil quando eu quiserprematuramente otimizar uma função de exclusão no meu ponteiro inteligente personalizado.

Alguém pode confirmar que é impossível?
Não estou pedindo uma solução alternativa (mas não me importo) - essa pergunta é apenas minha curiosidade.

questionAnswers(2)

yourAnswerToTheQuestion