【发布时间】:2015-03-31 15:48:33
【问题描述】:
我想设计一个带有小向量优化的向量类。它看起来像:
template <typename T, int small_size = 0>
class Vector {
private:
T data_small_[small_size];
T* data_;
T* size_;
T* capacity_;
public:
...
}
不幸的是,大多数时候,该类将与 small_size = 0 一起使用。有没有办法删除 data_small_ for small_size = 0 而无需进入模板专业化并重写该类的整个代码?
【问题讨论】:
-
通常你会做一个模板特化,但不是整个 Vector,一个基类。
-
当 small_size == 0 时,您是否使用“data_small_”?如果没有,当您使用 small_size = 0 实例化类时,编译器可能会将其作为死代码删除。
-
@James:如果 small_size = 0,则代码不使用它。但我认为编译器不会删除它,因为它会影响 sizeof(Vector
). -
@Marc:嗨,Marc。我对 C++ 没有那么丰富的经验,我唯一使用的继承是抽象类。您能否详细说明您将使用什么?