据我了解,例如,如果您有std::vector<int>
and an std::vector<float>
,编译器创建两个类,每个类对应一种类型。因此,虽然减少了编写的代码量,但并没有减少可执行文件的大小(如果我错了,请纠正我)。
即使类型是指针也是如此吗?例如,将实例化一个std::vector<SomeClass*>
and an std::vector<SomeOtherClass*>
是否一定会导致编译器为两个实例化中的每一个生成单独的代码?
这是一种依赖于实现的假设优化,因此是允许的!
事实上,这甚至不需要编译器来完成。标准库可以这样实现。例如,实现可以使用std::is_pointer
然后将所有事情推迟到一个void*
为基础的实施。 (这是薄模板成语)。事实上,在库方面这样做似乎比编译器在实例化后合并代码更可行,但这也是可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)