stu*_*101 0 c++ optimization static-cast
我正在使用一个代码库,我在其中看到以下代码行
auto a = static_cast<custom_type*>(obj.get())->a();
auto b = static_cast<custom_type*>(obj.get())->b();
auto c = static_cast<custom_type*>(obj.get())->c();
Run Code Online (Sandbox Code Playgroud)
期望编译器优化一系列get()andstatic_cast调用是否合理,或者最好执行以下操作:
auto temp = static_cast<custom_type*>(obj.get());
auto a = temp->a();
auto b = temp->b();
auto c = temp->c();
Run Code Online (Sandbox Code Playgroud)
static_cast<T>不是一个函数。
根据custom_type*和之间的关系decltype(obj.get()),以及 或 是否a是b虚拟c的,在生成的目标代码中可能找不到它的踪迹,具体取决于实现如何选择实现成员函数调用。
如果编译器可以证明obj.get()每次都会返回相同的值,并且没有其他可观察到的影响,那么它可能会根据 as-if 规则执行与第二次剪辑相同的操作。
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |