首页 > 解决方案 > 如何将 static_cast 转换为变量的类型

问题描述

如果我有一个已知类型的变量或成员,是否有一种方法可以在不明确说明类型的情况下静态转换为所述类型?

因此,确保将来如果变量更改类型,则只需重新编译即可。

一个非常基本的例子是:

int y = 5;
uint32_t x;
x = static_cast< TYPEOF( x ) >( foo );

现在,如果将来某个时候 x 需要更改为 int64_t ,那么如果只更改需要更改的变量的声明而不是所有的 static_cast 行(其中可能有很多行),那就太好了。

作为个人说明,我正在使用 g++ 6 进行编译,因此我能够使用 c++14 功能,尽管与其他版本兼容的答案可能会使其他人受益。

标签: c++c++11typescastingc++14

解决方案


只需使用decltype

x = static_cast<decltype(x)>(y);

推荐阅读