数值类型的C ++非零默认值 - 重新发明?

时间:2012-01-28 00:49:36

标签: c++ templates boost types default-value

我想到了这样的结构:

template <typename T, T defaultValue>
struct Numeric
{
    Numeric(T t=defaultValue) : value(t) { }
    T value;
    T operator=()(T t);
    operator T();
};

我可能会这样使用它:

std::vector<Numeric<bool, true> > nothingButTheTruth;

我的问题很简单:这是一个很好的方法,如果是这样的话,标准库或Boost中是否存在类似的东西?

1 个答案:

答案 0 :(得分:2)

我更常见的模式是参数化容器,而不是类型。

按照自己的方式行事有很多缺点:

  • 当您提供作业和转化时,您实际上无法绑定 bool&Numeric<bool, true>
  • vector<bool>vector<Numeric<bool, true> >无关 类型。

这很快就会非常痛苦。我不会这样做,但也许你有一个强大的用例。