定义一个函数,当任何子类传入时,返回对应 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 类型。
如果把引用改成用指针,或者智能指针,应该是可破的。但是如果要坚持使用引用,求问有没有什么方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.