考虑以下代码:
template<typename T, size_t S> struct MyArray {
int length;
T contents_[S];
MyArray() { length = S; }
T& operator[](const int index) {
assert(index >= 0 && index < length);
return contents_[index];
}
int Length() { return length; }
};
从根本上说,没有理由为 S 的每个值创建长度函数和下标运算符的单独副本。但我担心实际上每个不同的 S 值都会重复这些函数,从而限制了它的有用性方法。
(如果你好奇我为什么不使用 std::vector,那是因为这是一个没有任何基于堆的内存分配的嵌入式应用程序)