c++ - 如何将 static_cast 转换为变量的类型
问题描述
如果我有一个已知类型的变量或成员,是否有一种方法可以在不明确说明类型的情况下静态转换为所述类型?
因此,确保将来如果变量更改类型,则只需重新编译即可。
一个非常基本的例子是:
int y = 5;
uint32_t x;
x = static_cast< TYPEOF( x ) >( foo );
现在,如果将来某个时候 x 需要更改为 int64_t ,那么如果只更改需要更改的变量的声明而不是所有的 static_cast 行(其中可能有很多行),那就太好了。
作为个人说明,我正在使用 g++ 6 进行编译,因此我能够使用 c++14 功能,尽管与其他版本兼容的答案可能会使其他人受益。
解决方案
只需使用decltype
:
x = static_cast<decltype(x)>(y);
推荐阅读
- sql - 子表合并到主表的查询计划突然加入了急切的spool,性能损失巨大
- angular - 过期后的Angularfire2刷新令牌
- java - 将相邻元素相乘并比较哪个具有更高的值
- docker - 持续交付 - 微服务发布/版本控制
- sql-server - 更改服务器/实例而不将连接字符串更改为 SQL Server
- node.js - 节点应用程序的正确错误日志记录
- javascript - 如何从表中发布作为来自服务器的 GET 请求的响应的行的内容?
- ruby-on-rails - Activerecord 查询比原始 sql 花费更多时间
- javascript - 我想将 HTML 表转换为角度 2 的 JSON 数组
- forms - 具有必填字段的 MVC 表单作为下拉列表或创建新值