gpt4 book ai didi

c++ - 编译器可以对类似的模板类成员函数执行全局优化吗?

转载 作者:太空狗 更新时间:2023-10-29 21:27:18 25 4
gpt4 key购买 nike

我正在创建一个新容器。它的模板参数之一是它的初始容量。因此,创建具有不同初始容量的实例将导致编译器为每个模板化类生成相同的代码。

MyVector<3> firstVector;
MyVector<4> secondVector;
...
if (firstVector.empty() && secondVector.empty())
{
...
}

此代码段将导致编译器为两个类生成 empty()。编译器可以消除这种冗余吗?

最佳答案

首先,empty() 可能非常简单,编译器可以将其内联。如果不能内联怎么办?编译器可以进行任何类型的合并,但它必须以不同的函数具有不同的地址的方式进行:

&MyVector<3>::empty() != &MyVector<4>::empty()

Visual C++ 10 可能会在此处表现出非标准行为,具体取决于链接器设置 - 通过某些设置,它会检测此类函数并合并它们,从而违反标准。我从未见过它以符合标准的方式进行此类消除。

关于c++ - 编译器可以对类似的模板类成员函数执行全局优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9358088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com