Как я могу убедиться, что оператор «<<» работает для любого универсального типа из определения шаблона ADT? - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю шаблонный класс, который реализует функциональность математического набора. Поскольку он принимает любой универсальный тип и поскольку доступна функция display (), я хочу, чтобы он работал с любым переданным типом. Как я могу гарантировать, что это произойдет?

1 Ответ

1 голос
/ 01 апреля 2019

Рассмотрим:

template <typename T>
class Wrapper {
  public:
    explicit Wrapper(const T &value) : m_value(value) {}

    void display() const {
      std::cout << m_value;
    }

  private:
    T m_value;
};

Если вы попытаетесь создать экземпляр Wrapper с типом, который не реализует потоковую передачу с operator<<, то ваш код не скомпилируется.

Поэтому самое простое решение - не беспокоиться об этом.Всякий раз, когда компилятор сообщает вам, что перегрузка operator<< для типа значения отсутствует, вам придется добавить соответствующую перегрузку.

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