投射到同一类型
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
.
的这种用法生成任何可执行代码
我有这个案例:
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 expressionv
to typeT
.
当 v
的类型与 T
相同时,当 T
不是 class 时,转换很简单。一个体面的编译器 不应该 为 static_cast
.