如何static_cast到变量类型

时间:2018-08-13 20:34:57

标签: c++ c++11 types casting c++14

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

因此,确保将来所有需要更改的变量类型都可以重新编译。

一个非常基本的例子是:

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

现在,如果将来某时需要将x更改为int64_t,则说这很好,如果仅更改所需变量的声明,而不更改所有的static_cast行,其中可能有很多行。

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

2 个答案:

答案 0 :(得分:3)

只需使用decltype

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

答案 1 :(得分:3)

如上面评论中所述,解决方案是

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