根据类模板参数生成std:数组大小

时间:2014-05-27 23:10:30

标签: c++ templates standard-library

让我们考虑一下非常简化的例子

#include <array>
template<typename T, F>
class GenericColor {
protected:
   std::array<T, F> components;
}

class RGB : public GenericColor<int, 3> { // three components, red, green...
}

class CMYK : public GenericColor<int, 4> { // four components, cyan, magenta....
}

我的问题是如何使第二个参数指向std :: array size,只是为了让这个例子工作。

1 个答案:

答案 0 :(得分:4)

std::array的声明是*

template<class T, std::size_t N> struct array

告诉您如何编写代码:

template<typename T, std::size_t F>
class GenericColor {
protected:
   std::array<T, F> components;
}

*这里有一些愚蠢的细节,它不一定是那个,但是等等等等等等。