mi ha questa funzione membro di test:SFINAE funzione membro questione di prova dell'esistenza
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;
};
Si restituisce vero quando esiste una funzione di membro con un dato nome, nel caso in cui la funzione ha un sovraccarico che non tiene argomenti. Per tali funzioni e nel caso di contenitori STL, funziona correttamente eccetto per le funzioni di accesso agli elementi (fronte, retro ecc.), Dove invariabilmente viene valutato come falso.
Perché è quello? Ho mingw g ++ 4.7.
Si passa alla guida di tipo ritorno di ritorno? 'auto f (U * p) -> decltype (p-> membro(), true_type());' – Xeo