Re: Templates
От: so5team https://stiffstream.com
Дата: 04.07.18 11:46
Оценка: +2 :))
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP.


Хорошо бы пруфов. И про негативное. И, в особенности, про большинство.

S>Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще.


Ну вот, схематически из совсем свежего:
struct successful_result_t { ... };
struct failed_result_t { ... };

struct reply_t {
  request_id_t id_;
  worker_id_t worker_;
  std::variant<successful_result_t, failed_result_t> result_;

  template<typename Actual_Result>
  reply_t(request_id_t id, worker_id_t worker, Actual_Result && result)
    : id_{std::move(id)}, worker_{std::move(worker)}
    , result_{std::forward<Actual_Result>(result)}
  {}
};

Позволяет использовать один и тот же конструктор и для
return reply_t{id, self, successful_result_t{...}};

и для
return reply_t{id, self, failed_result_t{...}};

И останется таковым даже если список результатов расширится, например, когда добавятся overloaded_result_t, postponed_result_t и пр. Не говоря уже о том, что сам по себе std::variant и средства работы с ним -- это сплошная шаблонная магия.

Вы вместе с вашими матерыми C++ разработчиками вместо этого предлагаете что?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.