前向声明std :: hash <MyClass>

我有多个重载std :: hash operator()的类。比方说:

class A
{
...
}

A.cpp

template<> struct std::hash<A>
{
  public:
  virtual std::size_t operator()(const A& joint) const noexcept
  {
..

}

And similar classes let's say class B and class C

Now class B uses A's hash like:

boost::hash_combine(h, std::hash<A>{}(b.getA())

Problem: error: use of deleted function std::hash<A>::hash()

我试过了: 啊

namespace std
{
  template<typename T>
  struct hash;
}

h

class B 
{
   friend struct std::hash<A>;
}