我有這樣的成員函數測試:SFINAE成員函數存在測試問題
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;
};
它評估爲真時,存在一個給定的名稱的成員函數,該函數有一個重載不帶任何情況參數。對於這樣的函數,在STL容器的情況下,除了元素訪問函數(正面,背面等)之外,它正常工作,它總是評估爲false。
這是爲什麼?我有mingw g ++ 4.7。
是否更改爲結尾返回類型幫助? 'auto f(U * p) - > decltype(p-> member(),true_type());' – Xeo