refiriéndose a la publicación de ayer, esto me despertó esta mañana. ¿Por qué esto realmente funciona? Siempre que se trate de la función test
, esta función no tiene cuerpo, ¿cómo puede realizar algo? Quiero saber por qué y cómo funciona esto? Estoy REALMENTE interesado en ver tus respuestas.Por qué esto funciona (Plantillas, SFINAE). C++
template<typename T>
class IsClassT {
private:
typedef char One;
typedef struct { char a[2]; } Two;
template<typename C> static One test(int C::*); //NO BODY HERE
template<typename C> static Two test(…); //NOR HERE
public:
enum { Yes = sizeof(IsClassT<T>::template test<T>(0)) == sizeof(One) };
enum { No = !Yes };
};
Gracias de antemano por ayudarme a entender este fenómeno tan interesante.
Para el Standardese, ver '3.2/2' y '3.2/3' (tanto en la definición de "uso" y las consecuencias de "utilizar " alguna cosa). –