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();*/
}
};
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.