定义一个函数,当任何子类传入时,返回对应 runtime 的 vector<actual_class>.
如
some_type function(const Base& obj) {
// doing something
return vector<Base>();
}
当实参为 Base 的子类 Derive时,如何推导返回 vector<Derive>?
尝试了 decltype(obj),对应类型是 Derive&,而在 vector 中是无法使用 reference 的。
而如果使用
std::remove_reference<decltype(obj)>::type
甚至
std::remove_const<std::remove_reference<decltype(obj)>::type>::type
,得到的都是 Base 类型。
如果把引用改成用指针,或者智能指针,应该是可破的。但是如果要坚持使用引用,求问有没有什么方法?