C ++ ненулевое значение по умолчанию для числовых типов - переизобретение? - PullRequest
4 голосов
/ 28 января 2012

Я имею в виду такую ​​конструкцию:

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 Ответ

2 голосов
/ 28 января 2012

Шаблон, который я вижу чаще, заключается в параметризации контейнера, а не типа.

Есть много недостатков, чтобы сделать это по-своему:

  • Пока вы предоставляете назначениеи преобразование, вы не можете на самом деле связать bool& с Numeric<bool, true>.
  • A vector<bool> и vector<Numeric<bool, true> > - это не связанные типы.

Это довольно красивобольно довольно быстро.Я бы не стал этого делать, но, возможно, у вас хороший пример использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...