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'
では、どのように進めればよいでしょうか (私が意図したことがまったく可能である場合)?