que tiene esta función de miembro de ensayo:SFINAE función miembro problema prueba de la existencia
template <typename T>
struct has_member {
template <typename U> static true_type f(decltype(declval<U>().member()) *);
template <typename> static false_type f(...);
static const bool value = decltype(f<T>(0))::value;
};
Evalúa a cierto cuando existe una función miembro con un nombre dado, en el caso de que la función tiene una sobrecarga que no toma argumentos. Para tales funciones y en el caso de los contenedores STL, funciona correctamente excepto para las funciones de acceso a elementos (frontal, posterior, etc.), donde invariablemente se evalúa como falso.
¿Por qué es eso? Tengo mingw g ++ 4.7.
¿El tipo de cambio al final es útil? 'auto f (U * p) -> decltype (p-> member(), true_type());' – Xeo