2014-05-24 39 views
3

多年来,将功能集成到标准库中的过程变得明显。是否有任何标准擦除型容器的计划?

看来虽然,一个有用&实用提升的一部分,这是容器提供类型擦除,逃脱了这个过程。

  1. 是否有任何特殊原因(性能损失,缺乏鲁棒性)?

  2. 是否有任何建议与将这些功能(如boost::any)纳入下一个标准库有关?

  3. shared_pointer使用类型擦除,在今天的标准库有什么其他的设施,我们可以利用这种技术?

+0

“**将** **提升** ** ** ** ** ** ** ** ** ** ** ** ** ** - ”这是提升原因造成的原因 – sp2danny

回答

3
  1. 类型擦除通常引入了一个额外的间接和降低性能,最终虚函数调用。

  2. 最近刚刚更新的工作草案“C++扩展库的基础知识”,其中提出了(其他功能)boost::any for the standard

  3. std::function将是另一个例子。

+0

There也提出了一些建议,允许'struct'被用作类型擦除模板:然而,强大的反射可能会让我们在库中执行此操作(foreach中的标记方法,写入类型擦除代码)。大概不反射1.0;) – Yakk

+0

@Yakk你会介意你在这里谈论的建议吗?谢谢。 –

+0

@GuillaumeRacicot哦,上帝,那是3年前。我不知道我现在在哪里看到它。抱歉。如果我想从现在开始的7到10年内考虑这样做,我希望反思提案能够进入,并且提出有关元类的提议;那么可以编写名称type_erasure的元类来生成所需的代码mayhap; 'type_erasure bob {int foo; void print(std :: ostream&)const; }'。这比我在上面的评论中描述的要干净得多。 – Yakk

相关问题