我正在努力完成标题中描述的事情。
template <class T>
void foo(const Foo* f) // this is general case template
{
}
// this should work only if T has static variable named _Foo with type const Foo*
template <class T>
typename std::enable_if<std::is_same<decltype(T::_Foo), const Foo*>::value>::type
foo(const Foo* f)
{
T::_Foo = f;
}
但它无法编译:
error C2039: 'type' : is not a member of 'std::enable_if<false,void>'
如果 enable_if 失败,它不应该默认为第一个实现吗?我的意思是我在这里错过了什么,有人可以向我解释什么是错的,可能是什么解决方案。(我感觉问题出在这个幼稚的 decltype(T::_Foo) 上)