Какое самое яркое использование шаблонов вы когда-либо встречали? - PullRequest
3 голосов
/ 26 апреля 2009

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

Когда я впервые почувствовал статический полиморфизм, меня поразило, что вы можете делать с шаблонами. Очевидно, что шаблоны полезны не только для проектирования контейнеров. Я купил «Современный дизайн C +» Андрея, но, к сожалению, пока не нашел ни времени, ни концентрации, чтобы прочитать его, но я уверен, что он предлагает огромное количество блестящих шаблонов.

ИМХО это также очень умное использование шаблонов.

Какое самое оригинальное использование шаблонов вы когда-либо встречали?

Ответы [ 6 ]

8 голосов
/ 26 апреля 2009
5 голосов
/ 26 апреля 2009

boost's Spirit метапрограммирование для создания грамматики парсера.

4 голосов
/ 26 апреля 2009

Утверждение времени компиляции с использованием специализации шаблона. Я думаю, что это так просто, но так красиво использовать шаблоны.

2 голосов
/ 26 апреля 2009

Работа Александреску с шаблонами увлекательна. Библиотека Loki наглядно демонстрирует магию, которую он может соткать с помощью шаблонов.

1 голос
/ 13 мая 2009

Я не помню имя lib, но идея заключалась в том, чтобы использовать шаблонные типы, параметризованные целыми числами, для обеспечения согласованности при выполнении согласованности при выполнении вычислений между физическими величинами. Концепция очень проста, возьмите шаблонный тип, который просто встраивает поплавок двойной точности. Параметризован тремя целыми числами, один для массы, один для расстояния, один для времени. Например, скорость - это параметр расстояния = 1 и параметр времени = -1. Ускорение равно параметру расстояния = 1, параметру времени = -2. Затем перегрузите все операторы, чтобы можно было только добавлять / вычитать типы с одинаковыми параметрами, и вы суммируете параметры при работе с продуктом. Таким образом, если скорость равна типу <1, -1,0>, а время равно типу <0,1,0>, то скорость x время равна типу <1 + 0,1 + -1,0 + 0>, поэтому скорость * время -> расстояние.

Мало того, что это умный, но это один из немногих примеров хорошего использования шаблонов с параметрами, отличными от typename

1 голос
/ 26 апреля 2009

Мне скорее нравятся «умные указатели» Microsoft, которые тщательно продумывают использование шаблонов, чтобы сделать COM менее понятным, а код - более читабельным.

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