【发布时间】:2021-03-06 10:09:42
【问题描述】:
能否使用 C++ 模板参数来控制类本身的说明符以尽量减少一些代码重复?
例如:我有一个类,我想在带有alignas 说明符的并发上下文(和容器)中使用,也想在没有alignas 说明符的单线程上下文中使用它。类的大小很小(20B)——小于一个高速缓存行。我确实需要在两个班级之间进行复制。现在我已经复制了两个类的两个定义的代码,除了上述说明符之外,它们大部分是相同的。模板或其他方式是否允许一个定义,一个有alignas,一个没有?
【问题讨论】:
-
为什么并发上下文需要
alignas? -
您会在单个项目中使用带有和不带有
alignas说明符的类吗? -
你说你需要能够在类的两个版本之间进行复制。但请记住,模板不是继承。因此,一旦编译实际开始,它们就会被视为完全不同的类。
-
@Eugene 防止在生产者-消费者情况下的虚假共享
-
@NathanOliver 是的