내가이 멤버 함수 테스트가 있습니다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;
};
주어진 이름의 멤버 함수가 존재 할 때이 기능이 더 걸리는 과부하가있는 경우에, true로 평가 인수. 이러한 함수 및 STL 컨테이너의 경우 요소 액세스 함수 (앞, 뒤 등)를 제외하고는 올바르게 작동합니다.이 함수는 항상 false로 평가됩니다.
왜 그럴까요? 나는 mingw g ++ 4.7을 가지고있다.
후행 반환 유형으로 변경하면 도움이됩니까? 'auto f (U * p) -> decltype (p-> member(), true_type()); ' – Xeo