C++ class 说明符 alignas 选项通过模板
C++ class specifier alignas option via template
是否可以使用 C++ 模板参数来控制 class 本身的说明符以尽量减少一些代码重复?
例如:我有一个 class,我想在带有 alignas
说明符的并发上下文(和容器)中,以及在没有的单线程上下文中使用alignas
说明符。 class 的大小很小 (20B) -- 小于缓存行。我确实需要在两个 classes 之间进行复制。现在我有两个 classes 的两个定义的重复代码,除了上述说明符之外,它们大部分是相同的。模板或其他方式是否允许单一定义,一个有 alignas
一个没有?
你可以这样做:
template <size_t alignment = 0>
class alignas(alignment) C {
// ...
};
现在 C<>
将具有其定义的默认对齐方式(因为 alignas(0)
被忽略)而您可以使用 例如 C<16>
来强制对齐 16.
是否可以使用 C++ 模板参数来控制 class 本身的说明符以尽量减少一些代码重复?
例如:我有一个 class,我想在带有 alignas
说明符的并发上下文(和容器)中,以及在没有的单线程上下文中使用alignas
说明符。 class 的大小很小 (20B) -- 小于缓存行。我确实需要在两个 classes 之间进行复制。现在我有两个 classes 的两个定义的重复代码,除了上述说明符之外,它们大部分是相同的。模板或其他方式是否允许单一定义,一个有 alignas
一个没有?
你可以这样做:
template <size_t alignment = 0>
class alignas(alignment) C {
// ...
};
现在 C<>
将具有其定义的默认对齐方式(因为 alignas(0)
被忽略)而您可以使用 例如 C<16>
来强制对齐 16.