Мне было интересно, как переслать объявить boost::multi_index_container
какое-то время.
Есть multi_index_container_fwd.hpp
, ordered_index_fwd.hpp
и так далее в multi_index
каталоги.
Предполагается, что они скрывают реализацию от той части программы, которая не должна знать детали объекта, верно?
Тем не менее, я не могу найти способ объявить multi_index_container
только с этими * _fwd.hpp файлами.
Я всегда включал полный файл реализации, multi_index_container.hpp
индекс.
В принципе, вы должны быть в состоянии объявить, например, функции, которые зависят от multi_index_container
введите с помощью соответствующего *_fwd.hpp
заголовки. Но не каждая ситуация может быть обработана таким образом:
class A{
...
private:
multi_index_container<...>* p; // can use *_fwd.hpp headers
};
class B{
...
private:
multi_index_container<...> m; // needs full headers!!
};
Здесь нет ничего особенного с Boost.MultiIndex: всякий раз, когда вы объявляете переменную типа T
чей размер должен быть известен во время компиляции, вы должны иметь полное определение T
на месте.
Других решений пока нет …