C++数值类型的非零默认值 - 重塑

C++ non-zero default value for numeric types - reinvention?

本文关键字:默认值 重塑 类型 C++      更新时间:2023-10-16

我想到了一个这样的结构:

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 中是否存在这样的东西?

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

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

  • 提供分配和转换时,实际上无法绑定bool&Numeric<bool, true>.
  • vector<bool>vector<Numeric<bool, true> >不相关类型。

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