我想要一个带有参数typename T的模板和一个表示null_object的类型为T的对象。目标是创建一个容器类,在该类中,对于每种类型,都为空构造函数提供一个给定的null_value。例如。
template<typename T, T null_value>
class MyObject {
private:
std::array<T,4> data;
public:
MyObject() {
data.fill(null_value);
}
};
但是,使用上面给定的语法,我无法做到这一点。我怎样才能做到这一点?如果嵌套模板无法做到这一点,那么有没有办法为某些给定的模板值定义不同的构造函数?例如。
template<typename T>
class MyObject {
private:
std::array<T,4> data;
public:
MyObject<int>() {
data.fill(0);
}
MyObject<float>() {
data.fill(0.0f);
}
MyObject<char>() {
data.fill('a');
}
};
编辑:
对于某些类型,如
int
,将编译第一块代码。但是,对于诸如
float
,块将不会编译。