В чем разница между C++ Concepts и C++ Template Constraints?

Как видно из названия, есть что-то под названием Concepts Lite (шаблонные ограничения) и Concept Design для STL. Кто-нибудь может объяснить некоторые фундаментальные различия между ними?

1 ответ

Первый вводит изменения в язык C++ (ядро), чтобы иметь возможность выражать ограничения на шаблоны. Обеспечение разумных проверок, хороших сообщений об ошибках для пользователей и простых инструментов для авторов шаблонов.

Он будет разработан как Техническая спецификация (TS) и ожидается к середине 2014 года, примерно в то же время C++14. Авторы компиляторов, похоже, с энтузиазмом отправят его в ближайшее время.

Второе касается библиотеки: текущий стандарт lib не может использовать ограничения, которые еще не являются частью стандарта по понятным причинам. Но как только эта часть станет бозе, шаблоны могут и будут улучшены с более естественным выражением требований. Т.е. в настоящее время только в тексте написано, что аргумент шаблона должен быть конструируемым или назначаемым по умолчанию. Так что если вы используете C++03 и std::vector<std::auto_ptr<int> > это просто UB. Но с продуманной версией такие проблемы будут диагностироваться при компиляции.

Другие вопросы по тегам