c++ 概念std::derived_from(当参数是智能指针时)

jei2mxaa  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(223)

我有几个这样的函数

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派生的对象?

mwngjboj

mwngjboj1#

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) { }

相关问题