Я работаю над несколькими довольно тяжелыми модулями и хочу предоставить облегченный заголовок с некоторыми предварительными декларациями.В то же время я использую std::type_index
в коде, чтобы переключаться между различными типами, и поэтому должен ввести этот тип в заголовок «forward декларации».
Для этого у меня есть два вопроса: 1)Неужели так плохо делать предварительную декларацию, такую как
namespace std { struct type_index; }
2) Если это так - есть ли причины не наследовать ее, как это:
// light.hpp:
struct TypeID;
// heavy_implementation.hpp
struct TypeID : std::type_index {}; // just empty body
Наконец: еслиоба варианта подвержены ошибкам и / или по какой-то причине их трудно поддерживать - есть ли способ прозрачно (без непрозрачных типов) ввести std::
тип, подобный type_index
, в облегченный заголовок?