Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可以使用 C++ 模板参数来控制类本身的说明符以最小化一些代码重复吗?
例如:我有一个类,我想在带有说明alignas符的并发上下文(和容器)中使用,也想在没有说明符的单线程上下文中使用它alignas。类的大小很小(20B)——小于一个高速缓存行。我确实需要在两个班级之间进行复制。现在我已经复制了两个类的两个定义的代码,除了上述说明符之外,它们大部分是相同的。模板或其他方式可以允许一个定义,一个有alignas一个没有?
alignas
你可以这样做:
template <size_t alignment = 0> class alignas(alignment) C { // ... };
现在C<>将具有其定义的默认对齐方式(因为alignas(0)被忽略),而您可以使用eg C<16>强制对齐 16。
C<>
alignas(0)
C<16>