Пришли новости из Франкфурта – Concept’ы убрали из черновика стандарта, при том, что идея Concept’ов была, так сказать, блокбастером этого стандарта. Зато должны теперь успеть в срок со стандартом.
Зато мелких изменений очень много; и судя по тому как легко эти изменения будет использовать, – влияние на C++ они окажут как бы не большее чем Concept’ы.
Официально о Concept’ах – “этой особенности языка надо ещё выстоятся”… Похоже не совсем знают, как адаптировать к другим “плюшкам” в срок. Это было видно ещё раньше – стандартная библиотека в версии на сентябрь не включала в себя шаблоны с применёнными к ним Concept’ами.
В большинстве применений Concept’ы позволяют просто получать более читаемые ошибки для template’ов на соответствие некоторому интерфейсу, но насколько же с ними было бы удобно это делать:
Для меня введение Concept’ов (в виде automatic "concepts", на котором настаивал
Страуструп) позволяло перейти к питонообразному подходу при работе с шаблонными
функциями и классами. – Получать такие же значащие сообщения об ошибках можно и
другим способом – хоть через попытки приведения к некоторому интерфейсу или
родительскому классу. Но всё таки отношения вида “работая с этим шаблоном вы
обязуетесь, что ваш объект соответствует некоторому интерфейсу и
обладает некоторыми свойствами”, удобней чем “работая с этим шаблоном вы
обязуетесь, что ваш объект реализует некоторый интерфейс”. Т.к. в 1-м
случае набор функций в интерфейсе можно получить от различных источников
наследования, а во втором случае надо наследоваться от обязательного интерфейса,
что порождает ненужную связь в архитектуре, да и усложняет работу вцелом.
Так что, ждём этого стандарта и готовимся к следующему, в котором Concept’ы уже надеюсь будут.
Ссылки по теме:
Саттер: http://herbsutter.wordpress.com/2009/07/21/trip-report/
Страуструп: http://www.ddj.com/architect/218600111?pgno=1
Комментариев нет:
Отправить комментарий