【问题标题】:Changes to C++ explicit casts对 C++ 显式转换的更改
【发布时间】:2021-01-29 16:29:55
【问题描述】:

我还没有掌握 C++20。 C++20 中的 C++ 显式转换运算符(static_castdynamic_castconst_castreinterpret_cast)是否有任何更改?也就是说,有任何改进、弃用或新的演员表吗?例如,有什么改进可以让reinterpret_cast 更不容易出错?

【问题讨论】:

  • std::bit_cast 被添加到 STL 并要求源和目标大小相同。
  • 如何让reinterpret_cast 更不容易出错?它的存在是为了(暂时)对编译器撒谎。
  • "我还没有掌握 C++20" - 也许 C++20 - final draft 就足够了?
  • @DavisHerring 确切地说,reinterpret_cast 仅作为最后手段存在,当其他人都不会做你需要的事情时。仅当您 100% 确定自己在做什么时才应使用它。不知道有没有编译器每次使用都会产生警告?
  • 感谢各位有见地的 cmets 和 @Ted Lyngmo 提供的链接。格拉西亚斯。

标签: c++ casting type-conversion c++20


【解决方案1】:

显式转换没有任何重大变化,但值得注意的是:

  • P1327R1在常量表达式中允许 dynamic_cast、多态 typeid

允许dynamic_cast 在常量表达式中。

另一个与演员表相关的变化是引入了std::bit_cast

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2016-06-03
    • 2013-04-04
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多