我有这个成员函数测试:
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 容器,它可以正常工作,除了元素访问函数(前、后等),它总是评估为假。
这是为什么?我有 mingw g++ 4.7。