История изменений
Исправление 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) { }