【发布时间】:2021-08-24 03:44:07
【问题描述】:
我有一个二进制格式,我正在为其编写编码器和解码器。几乎所有二进制类型都直接映射到原语,除了两种容器类型,一个列表和一个映射类型,可以包含格式中的任何其他类型,包括它们自己。
这些感觉就像他们只想成为std::variant的typedef
typedef std::variant<std::vector<char>, std::vector<int>, ...> ListType
但是因为我需要能够包含 ListType 本身的向量,所以我最终会这样做
struct ListType {
std::variant<std::vector<char>, std::vector<int>, ..., std::vector<ListType>> value;
}
这增加了使用类型的一些摩擦。这些变量确实没有其他状态可以证明封装它们是合理的。
输入它我意识到我在问“你能转发声明一个模板吗?”这似乎是一个愚蠢的问题。不过,有人对此有更好的策略吗?
【问题讨论】:
-
这只是 C++ 设计中的一个根本盲点,没有更干净的解决方法。
-
@SamVarshavchik 这就是我的怀疑,谢谢