Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Шахтер, Вы писали:
AVK>>>Да? А если мы возьмем обыкновенные контейнеры? Там именно что дублирование — разница только в адресах функций и размерах оперируемых данных.
Ш>>Да? А не освежить ли тебе память и не посмотреть ли на то, как устроен итератор по вектору и по списку?
AVK>возьмем обыкновенные контейнеры
Вектор и список -- самые что ни на есть обыкновеннейшие контейнеры.
AVK>Я понимаю, что есть случай, когда дублирование оправдано. Но ровно так же есть случаи, когда оно не оправдано. И если внимательно на такие случаи посмотреть, то это окажется как раз то самое метапрограммирование.
Просто не могу вкурить, что ты хочешь сказать. Наверно, я тупой.
AVK>Итераторы как раз и есть метапрограммирование.
Уф. Итераторы
никаким боком не относятся к метапрограммированию. Метапрограммирование -- это набор техник, позволяющих провести вычисление над типами и константами во время компиляции.
Итераторы -- это как раз хороший пример
обобщённого программирования.
И ещё. Обобщённое программирование потому так и называется, что позволяет абстрагироваться от деталей устройства того или иного типа и использовать его абстрактные свойства и поведение. Одинаковый код при этом получится никак не может. Если при использовании дженериков получается один и тот же MSIL код, то это означает только одно -- никаким обобщённым программированием там и не пахнет, максимум что там есть -- старый банальный полиморфизм (поданый под новым соусом).
... << RSDN@Home 1.1.0 stable >>