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