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

SP>
SP>template<typename T>
SP>concept cloneable = requires (T x) {
SP>    static_cast<Clonable<T>>(x);
SP>};
SP>


Тогда уж проще:

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


Только закладывать в концепт наследование от конкретного класса — идея так себе, по-моему. Если на каждый концепт заводить по базовому классу — Cloneable, Printable, Loggagle, Serializable, Drawable, Sendable, Receivable, Insertable, Extractable... Программа превращается в зоопарк монстров. Концепты же для того и придумывались, чтоб этого всего не было. Чтоб можно было реализовывать обобщенные алгоритмы, применимые как пользовательским класам, так и к встроенными и библиотечным типам.

Я бы, все-таки, пошерстил дизайн на предмет циклических зависимостей.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 10.12.2024 13:08 rg45 . Предыдущая версия . Еще …
Отредактировано 10.12.2024 13:07 rg45 . Предыдущая версия .
Отредактировано 10.12.2024 12:51 rg45 . Предыдущая версия .
Отредактировано 10.12.2024 12:46 rg45 . Предыдущая версия .
Отредактировано 10.12.2024 12:45 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.