いくつかの型を宣言したいと思います(テンプレート化されたクラスの内部で、K
キャッシングV
動作を提供します):
typedef std::map<
long long,
typename key_to_value_type::iterator // Ooops... not declared yet
> timestamp_to_key_type;
typedef std::map<
K,
std::pair<V,typename timestamp_to_key_type::iterator>
> key_to_value_type;
もちろん、循環定義のため、これはそのままでは不可能です。でハックすることもできますが、void*
前方宣言の魔法や、より良い仕事をする他のテクニックがあるかどうか疑問に思っています。
(はいboost::bimap
、問題を回避することは承知しています)。