Поведение C++ как аргумент шаблона

Поведение C++ как аргумент шаблона
Поведение C++ как аргумент шаблона - teleroel @ Unsplash

Это абсолютно нормально и совершенно нормально.

Подобное изменение поведения с помощью параметра шаблона обычно называется Policy, чтобы отличить его от паттерна Strategy, который представляет собой точно такое же действие с полиморфизмом во время выполнения, а не во время компиляции (см. книгу Modern C++ Design и GoF Design Patterns).

Моя единственная критика заключается в следующем

  1. что стиль псевдонимов шаблонов стал идиоматическим с C++11, и немного меньше типизации:

    template<typename T>
    using SafeQueue = BaseQueue<T, IrqGuard>;
    
  2. что если вам когда-нибудь понадобится написать метафункции более высокого уровня над BaseQueue, это будет немного проще, если вы реэкспортируете параметры шаблона, например:

    template<typename T, typename GuardT>
    struct BaseQueue
    {
        using value_type = T;
        using guard_type = GuardT;
    

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - Шаблоны функций. Шаблонные функции c++. template typename. template class. Урок - 41

Прикрепленное видео 2 - Лекция 10. Введение в шаблоны I (Программирование на C++, часть 1)

Прикрепленное видео 3 - Шаблоны классов с++ примеры. Обобщенные классы. Изучение С++ для начинающих. Урок - 126


LetsCodeIt, 17 января 2023 г., 17:29