Здравствуйте, FR, Вы писали:
FR>>В общем с мая никаких глобальных или ломающих изменений не видно, пора уже хотя бы в бету перейти.
FR>Похоже я поторопился в новой версии http://www.digitalmars.com/d/2.0/changelog.html#new2_037 появились новые фичи.
FR>Самое интересное по моему http://www.digitalmars.com/d/2.0/operatoroverloading.html#Dispatch. Дает возможность диспетчеризации вызовов, если какой то метод не определен в структуре или классе, но при этом определен шаблонный метод opDispatch с соответствующей сигнатурой, то он и вызывается. Раньше была перегрузка оператора точки opDot (во многом аналог operator-> из C++) сейчас из документации это исчезло, opDispatch в общем полностью перекрывает его функциональность.
opDot перекрылся уже alias this (перенаправление вызовов неопределённых методов другому объекту. Иными словами, наследование методом делегирования, как в
snit). opDispatch — новая фича.
opDispatch — шаблонный метод. Если он объявлен в классе или структуре, то, при вызове отсутствующего в классе метода, имя функции и все аргументы (в соответствии с сигнатурой. Либо tuple'ом, либо фиксированными аргументами) будут переданы в opDispatch. Незаменимая штука в некоторых случаях. Например, с помощью этой штуки можно реализовать класс, который будет все вызываемые у него методы... преобразовывать в удалённые Xml-Rpc вызовы.