Bu üye fonksiyon testi vardır:SFINAE üye fonksiyon varlığı testi sorunu
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;
};
verilen isimdeki üye işlevi vardır zaman fonksiyonu hiçbir götüren bir aşırı vardır durumda, doğru olarak değerlendirilir argümanlar. Bu tür işlevler için ve STL kapsayıcılarında, her zaman yanlış olarak değerlendirdiği eleman erişim işlevleri (ön, arka vb.) Dışında düzgün çalışır.
Neden? Ben mingw g ++ 4.7 var.
Takip eden dönüş tipi yardımına geçiyor mu? auto f (U * p) -> decltype (p-> üye(), true_type()); – Xeo