Я хочу объявить пару типов
(внутренний по отношению к классу, шаблону для 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 *
, но мне интересно, есть ли какая-нибудь магия прямого объявления или другой метод, который сделает эту работу лучше.
(Да, я знаю о повышении :: bimap
может обойти проблему).