首页 > 解决方案 > 前向声明或继承 std::type_index

问题描述

我正在开发几个非常重的模块,我想提供轻量级的标头,只需要一些前向声明。同时,我std::type_index在代码中使用以便在不同类型之间切换,因此必须在“前向声明”标题中引入这种类型。

为此,我有两个问题: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,如轻量级标题?

标签: c++inheritancestlforward-declaration

解决方案


推荐阅读