概念std::derived_from当实参是智能指针时



我有几个函数像这样

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) { }
// Or as an abbreviated function template
bool RegisterModel (std::shared_ptr<std::derived_from<BaseClass> auto> model) { }

最新更新