Re[4]: Проверка концептов внутри типа
От: rg45 СССР  
Дата: 10.12.24 13:18
Оценка:
Здравствуйте, sergii.p, Вы писали:

R>>
R>>template<typename T>
R>>concept cloneable = std::derived_from<T, Cloneable<T>>;
R>>


SP>лично у меня не скомпилировалось. Похоже derived_from требует полного типа.


А, ну да. Ну это и не принципиально. По семантике это, так или иначе, требование наследования.

SP>я всегда их понимал как одно и тоже. В Rust трейты — фактически реализация наследования. Но в тоже время — это не что иное как концепты. В общем не вижу ничего плохого в смешении.


В смешении в смысле совместного использования ничего страшного и нет. А вот когда в концепт заложено требование наследования — это сразу же наламывает принцип обобщённости. Взять тот же cloneable — почему бы мне не сделать клонируемыми, например, классы стандартных контейнеров, у которых типы элементов отвечают требованиям этого концепта? Ну да, для этого в концепте не следует закладываться и на функции-члены. Но это уже зло меньшего порядка, чем наследование, это легче исправить.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 10.12.2024 13:19 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.