Цитата:
имеется, могу только заметить, что они лишь сокращают написание требуемого количества кода, а не выполняют оптимизацию — запись требуемого конечного алгоритма в ручную может дать больший эффект, к тому же наличие «лишних» операций шаблоны убрать никак не способны. Поэтому я говорю, что в узких местах не надо надеятся на то, что ваши шаблоны с компилятором создатут вам идеальный код, а попробовать улучшить алгоритм.Вот как раз это я и имею в виду. И с самого начала утверждаю, что всё это возможно. Выполняют оптимизацию до уровня написанного вручную цикла; исключают "лишние" операции полностью; не требуют специального сложного анализатора кода, т.к. такой уже встроен в компилятор, и нужно только грамотно им воспользоваться.
«"строить" наиболее эффективный цикл независимо от сложности выражения» — сейчас это невозможно для произвольного выражения, тут требуется сложный анализатор кода, способный «понять», разобрать на части и оптимизировать выражение.
Цитата:
«шаблоны выражений» могут решить это задачу лишь для некоторого набора выражений, для которого они были созданы.Вот только это, пожалуй, имеет некоторое отношение к их ограничениям. Однако ровно столько же, сколько вообще имеет отношение перегрузка операторов к пользовательским типам. Если потребуется новый перегруженный оператор, то придётся и дополнить шаблон выражений новым классом. Однако по трудоёмкости этот новый класс создаётся куда как легче, чем новый перегруженный оператор. Я сюда включаю также и потенциальную вероятность ошибиться при кодинге с дальнейшей отладкой.
Цитата:
Класс скрывает разделяемый код, а шаблон — копируемый. Или я не прав?
Цитата: А назначение классов тогда в реализации принципов ООП?