Информация об изменениях

Сообщение Re[2]: Проверка концептов внутри типа от 10.12.2024 12:15

Изменено 10.12.2024 12:45 rg45

Re[2]: Проверка концептов внутри типа
Здравствуйте, 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>>;


Только закладывать в концепт наследование от конкретного класса — идея так себе, по-моему.

Я бы пошерстил дизайн на предмет циклических зависимостей.
Re[2]: Проверка концептов внутри типа
Здравствуйте, 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... И у каждого прикладного класса будет пачка базовых. Программа превратится в зоопарк монстров.

Я бы пошерстил дизайн на предмет циклических зависимостей.