投射到同一类型

casting to the same type

我有这个案例:

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 Static cast

1 The result of the expression static_cast<T>(v) is the result of converting the expression v to type T.

v 的类型与 T 相同时,当 T 不是 class 时,转换很简单。一个体面的编译器 不应该 static_cast.

的这种用法生成任何可执行代码