Re[24]: IEquatable<T>
От: alex_public  
Дата: 22.02.17 07:51
Оценка:
Здравствуйте, vdimas, Вы писали:

_>>Кстати, в библиотеки алгоритмов D static if частенько используется для оптимизации. Типа есть универсальная версия алгоритма для диапазона с последовательным доступом и местами её ускорение, если переданный диапазон поддерживает произвольный доступ.

V>Ну, в плюсах тоже оптимизатор может выкинуть лишний код, но! Этот выкинутый код всё-равно будет валидным.

Это не те оптимизации. В случае описанных мною не получится делать валидный код в двух вариантах (потому что у контейнера с последовательным доступом тупо нет метода [] — не скомпилируется). В текущем C++ подобное делалось просто двумя вариантами функции. Это в принципе нормальное рабочее решение (и даже как ты и говорил в чём-то более ясное). Однако в случае значительного объёма одинакового кода в обоих вариантах это приводит к обширной копипасте и раздуванию исходника.

V>А в твоём примере одна из выкидываемых частей ф-ии получается невалидной, потому что нельзя одновременно вернуть *t и t. Я это имел ввиду, когда говорил про "режет глаз".


Угу, я потому и привёл именно этот пример, т.к. он демонстрирует главное отличие от обычного рантаймового if. )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.