【问题标题】:Can PODs have implicit conversion?POD 可以隐式转换吗?
【发布时间】:2023-02-22 16:00:24
【问题描述】:

POD 是否可以隐式转换到 POD 或从 POD 转换为 POD?

struct Data
{
   int a;
   
#ifdef __cplusplus
   POD(int _a) : a(_a) {}
   operator int() const { return a; }
#endif
}

请注意,我也需要 Data 才能成为 C++ 中的 POD,我只想将隐式转换作为语法糖。所以我需要编译器对 POD 进行的优化,因为它用在程序的热路径中。

【问题讨论】:

  • 你找到答案here

标签: c++ struct


【解决方案1】:

根据 cpp 参考,POD 类被视为 POD 类型。这是 cpp 参考列表中的 requirements for a class to be a POD class

  • 是一个集合
  • 没有用户声明的复制赋值运算符
  • 没有用户声明的析构函数
  • 是一个简单的类
  • 是标准布局类
  • 没有非静态非POD数据成员

你的班级似乎尊重这些属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多