我有一个类(称为它Outer
),它有一个私有成员类(Inner
)。我想将 的实例存储Outer::Inner
在无序的标准容器中,所以我想专门化std::hash<Outer::Inner>
.
但是,在编写此代码时:
namespace std {
template<>
struct hash<Outer::Inner> {
std::size_t operator()(const Outer::Inner &arg) const
{
return std::hash<int>()(arg.someSpecialProperty);
}
};
}
编译器抱怨:
error: 'Inner' is a private member of 'Outer'
std::size_t operator()(const Outer::Inner &p) const
^
我试图std::hash
通过遵循这个答案来建立一个朋友结构,但这也不起作用:Outer::Inner
失败的前向声明:
error: use of undeclared identifier 'Outer'
那么我应该如何进行(如果我打算做的事情是可能的)?