我有一个基类。目标是强制使用从 Base 继承的所有类为 std::shared_ptr 专门化 std::hash。
我已经使用虚拟模板参数尝试了以下方法,但编译器错误显然抱怨这是对struct std::hash<std::shared_ptr<_Tp>>
.
class Base {
};
class Derived : public Base {
};
namespace std {
template<typename T,
typename std::enable_if<std::is_base_of<Base, T>::value, Base>::type* = nullptr
>
struct hash<std::shared_ptr<T>> {
size_t operator()(const std::shared_ptr<T>& d) const {
return 616;
}
};
}
我的问题是:是否可以有条件地专门std
开设这样的课程?