发布于 2016-05-14 21:24:38
说“任意”类型在存储其值时使用“类型擦除”是正确的吗?
也许我和其他人对“类型擦除”有不同的定义,但是使用类型擦除来实现any对我来说没有任何意义。如果我们使用“通过单个泛型接口表示多种类型”的定义,那么any、std::function等就符合要求了。维基百科定义“确保程序的运行时执行不依赖于类型信息”在C++上下文中没有任何意义。泛型(类型擦除的原型示例)并不意味着“从语言中删除类型”。此外,std::any (可选)使用RTTI。所以我会找维基百科以外的其他地方。
说它在存储值时使用“多态”是正确的吗?
多态性是实现any的一种方法。不过,这绝不是必需的。据我所知,只有Boost使用多态性。见这个答案。
其他实现表明它不是必需的:
“类型擦除”是一种“多态”吗?
不是的。您认为模板、泛型和std::function都是多态的吗?
https://stackoverflow.com/questions/37231525
复制相似问题