强制转换为相同类型

casting to the same type

本文关键字:同类型 转换      更新时间:2023-10-16

我有这种情况:

using T = classA; //T could be classA and could be `classB` in other platforms.
T a;
auto x = static_cast<classB>(a);

如果T是classA,则必须进行浇铸。在T是classB的情况下,浇铸是多余的。

根据标准,第二次强制转换是否会被丢弃(没有更多的可执行代码),因为它是不必要的?

来自c++ 11标准:

5.2.9静态强制转换

1表达式static_cast<T>(v)的结果是将表达式v转换为类型T的结果。

v的类型与T相同时,当T不是类时,转换简单。一个像样的编译器不应该static_cast的这种用法生成任何可执行代码。