LINUX.ORG.RU

История изменений

Исправление quiet_readonly, (текущая версия) :

Вообще Цэпэпэ кодеры живут в каком-то замкнутом мирке. Какие-то виртуальные деструкторы, шаблоны и прочий лютый писец. Я бы на такую работу не пошел, просто не выдержал бы.

Кстати, можно спросить матёрого, как бы ограничить использование шаблонов, дабы не раздражать остальную команду и не создать непреодолимых препятствий перед новичками.

Лично я ограничиваюсь двумя случаями:

  • RAII, который будет использоваться с различными классами.
  • Шаблонная функция, которую никогда не придётся специализировать и которая не даёт конфликтов
    // Мне нравится, к тому же автодополнение от libclang
    // распознаёт такие случаи и не подставляет placeholder
    // для специализации шаблона, просто выдаёт 'void handle(#T *ptr#)'.
    template <class T>
    void handle(T *ptr)
    {
    }
    
    // Мне не нравится из-за min(2, 0.5),
    // который надо переделывать в min<float>(2, 0.5).
    template <class T>
    T min(const T &a, const T &b)
    {
    }
    

Исходная версия quiet_readonly, :

Вообще Цэпэпэ кодеры живут в каком-то замкнутом мирке. Какие-то виртуальные деструкторы, шаблоны и прочий лютый писец. Я бы на такую работу не пошел, просто не выдержал бы.

Кстати, можно спросить матёрого, как бы ограничить использование шаблонов, дабы не раздражать остальную команду и не создать непреодолимых препятствий перед новичками.

Лично я ограничиваюсь двумя случаями:

  • RAII, который будет использоваться с различными классами.
  • Шаблонная функция, которую никогда не придётся специализировать и которая не даёт конфликтов
    // Мне нравится, к тому же автодополнение от libclang
    // распознаёт такие случаи и не подставляет placeholder
    // для специализации шаблона, просто выдаёт 'void handle(#T *ptr#)'.
    template <class T>
    void handle(T *ptr)
    {
    }
    
    // Мне не нравится из-за min(2, 0.5),
    // который надо переделывать в min<int>(2, 0.5).
    template <class T>
    T min(const T &a, const T &b)
    {
    }