concept std::derived_from 当参数是智能指针时

concept std::derived_from when the argument is a smart pointer

我有几个这样的功能

bool RegisterModel (std::shared_ptr<DerivedA> model) { }

bool RegisterModel (std::shared_ptr<DerivedB> model) { }

我想利用 C++ 20 概念并像这样实现它:

bool RegisterModel (std::derived_from<BaseClass> auto model) { }

这不起作用,因为我正在传递共享指针。有可能需要一个共享指针来保存从 BaseClass?

派生的对象

std::shared_ptr<T> 推导出 T 并约束:

template<std::derived_from<BaseClass> T>
bool RegisterModel (std::shared_ptr<T> model) { }