Ton*_*ina 1 c++ std type-traits
类型特征很酷,我使用它们,因为几年前它们起源于提升.但是,当你看看它们的实现时(查看"如何is_base_of工作?" StackOverflow线程).
为什么编译器不会在这里帮忙?例如,如果你想检查某个类是否是另一个类的基础,编译器已经知道了,为什么它不能告诉我们?这将使概念更容易实现和使用.你可以在那里使用语言结构.
我不确定,但我猜它会提高一般性能.这就像向编译器寻求帮助,而不是C++语言.
我怀疑主要原因听起来像"我们需要保持向后兼容性"并且我同意,但为什么编译器不会更积极地生成通用模板化代码?
实际上...... 有些人做了.
问题在于,如果可以在纯C++代码中实现某些东西,除了简化代码之外,没有理由在编译器中硬连接它们.那么这是一个权衡问题,代码简化带来的价值是否值得硬连线?
这取决于几点:
一旦所有这些点都被加权,那么你可以确定将东西放入库或编译器是否更有利; 更可能的情况是,您将最终得到一个混合策略:编译器中的几个内在函数用作构建块以在库中提供所需的接口.
请注意,编译器中的维护负担更为重要:任何熟悉该语言的C++开发人员都可以深入研究库实现,而编译器代码则是黑盒子.因此,调试和修补库比编译器容易得多,所以除非你有充分的理由,否则不要把东西放在编译器中.