lac*_*lan 2 c++ types casting c++11 c++14
如果我有一个已知类型的变量或成员,是否有一种方法可以静态转换为所述类型而无需明确说明类型?
因此,确保将来如果变量类型发生变化,只需重新编译即可。
一个非常基本的例子是:
int y = 5;
uint32_t x;
x = static_cast< TYPEOF( x ) >( foo );
Run Code Online (Sandbox Code Playgroud)
现在,如果在未来的某个时刻 x 需要更改为 int64_t 的话,如果只需要更改变量的声明而不是所有 static_cast 行(可能有很多行),那就太好了。
作为个人说明,我正在使用 g++ 6 进行编译,因此我能够使用 c++14 功能,尽管与其他版本兼容的答案可能会让其他人受益。
正如上面评论中所述,解决方案是
int y = 5;
uint32_t x;
x = static_cast< decltype( x ) >( y );
Run Code Online (Sandbox Code Playgroud)