gpt4 book ai didi

c++ - 对于 C++17 中的非标准布局类, `offsetof` 为 "conditionally-supported"是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 22:39:18 27 4
gpt4 key购买 nike

C++17 标准在 [support.types.layout] 中说:

Use of the offsetof macro with a type other than a standard-layout class is conditionally-supported.

[defns.cond.supp] :

conditionally-supported

program construct that an implementation is not required to support

我发现 offsetof 的这个定义不是很精确。

  • 这是否意味着我可以安全地尝试将它与非标准布局类一起使用?

  • “有条件支持”与定义的实现有何不同?

  • 编译器是否不支持生成诊断所需的特定类型的类的 offsetof

最佳答案

Does it mean that I can safely attempt to use this with non standard-layout classes?

如果实现允许。有条件地支持意味着这必须记录在案。

How is "conditionally-supported" different from implementation defined?

引用标准:

[defns.cond.supp] conditionally-supported - “不需要实现支持的程序结构”

[defns.impl.defined] implementation-defined behavior - “行为,对于格式良好的程序构造和正确的数据,这取决于实现和每个实现文档”

关键区别在于实现的选择。完全按照标准所说的去做,或者根本不做。比。以几种方式中的一种方式进行,而没有拒绝的选项。

Is a compiler not supporting offsetof for a particular type of class required to produce a diagnostic?

如果它是符合标准的实现,它将发出诊断信息([intro.compliance]/2.2 由@T.C. 提供):

“如果程序包含违反任何可诊断规则或出现在本文档中描述为“有条件支持”的结构,而实现不支持该结构,则符合要求的实现应至少发出一个诊断信息。”

关于c++ - 对于 C++17 中的非标准布局类, `offsetof` 为 "conditionally-supported"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com