Después de que resultó que lo que originalmente quería probablemente no sea posible sin C++ 11, deseo cambiar ligeramente el requisito y preguntarle si esto se puede lograr .Tiempo de compilación compruebe si una clase base es "interfaz"
Básicamente quiero comprobar en tiempo de compilación si una clase hereda de "interfaz". Por interfaz quiero decir clase con métodos virtuales puros solamente. me gustaría hacer el siguiente código:
template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
El comportamiento aquí es si T tiene sólo métodos virtuales puros continuación, se compilará y si uno de sus métodos no es entonces un error.
¿Alguien puede pensar en algo así?
¿Realmente todos los métodos son puros virtuales? Incluso el destructor? – Andrzej
Es probable que desee comprobar si 'T' también tiene clases base, y si es así, si también son" interfaces ". Pero la respuesta es de hecho "No". – MSalters