C++11 是否允许非匿名联合包含静态数据成员?

2023-12-25

在 C++11 中,我声明以下联合:

union U4 {
    char c;
    int i;
    static int si;
};

当我使用 -std=c++11 -pedantic-errors 使用 g++ 4.7.0 编译此代码时,出现以下错误(经过少量编辑):

错误:本地类“union U4”不应具有静态数据成员“int U4::si”[-fpermissive]
错误:‘U4::si’可能不是静态的,因为它是联合体的成员

FDIS (N3242) 没有明确allow据我所知,命名联合的静态数据成员。但我也不明白 FDIS 在哪里不允许命名联合的静态数据成员 FDIS 确实反复提到可以使用“非静态数据成员”[第 9.5 节第 1 段]执行的操作。相比之下,这表明该标准允许联合体的静态数据成员。

我不认为联合体的静态数据成员有任何用处。如果我需要它,我可能可以通过包含匿名联合的类获得足够接近的效果。我只是想了解该标准的意图。

谢谢您的帮助。


是的,这是允许的。该标准第 9 节使用了该词class对于类、结构和联合,除非另有明确说明。对静态联合成员的唯一限制是本地联合 (9.4.2/5) 和匿名联合 (9.5/5)。

#include <iostream>

union Test
{
    static int s;   
};

int Test::s;

int main()
{
   Test::s = 1;
   std::cout << Test::s;  
}

输出开启生活工作空间 http://liveworkspace.org/code/nwjRT%246。请注意,它可以在 Clang 3.2 上编译,但不能在 gcc 4.8.0 或 Intel 13.0.1 上编译。看来这是一个 gcc/Intel 错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 是否允许非匿名联合包含静态数据成员? 的相关文章

随机推荐

  • dp-sp与PX的关系

    我不是问 dp sp 和 px 之间有什么区别 我正在设计一个基于谷歌新材料设计的网站 所有尺寸均以 dp 用于网格 和 sp 用于文本 为单位 我的问题是它们如何转换为像素 我设计网站已有 4 年多了 所有尺寸 网格和字体 均以像素为单位
  • Git 无法从 ownCloud 的 webdav 界面克隆存储库

    我在自己的云上有一些个人 git 存储库 我可以通过访问 ownClouds webdav url 从 2 台 ubuntu 机器和一台 Windows PC 克隆它 http myserver a remote php webdav re
  • 在 Thunderbird 扩展中获取邮件发件人

    我正在开发一个非常简单的 Thunderbird 扩展 它应该在发送邮件时提醒发件人的姓名以及收件人的姓名 问题是下面代码片段中的 gMsgCompose compFields from 字段为空 to 字段按预期工作 它处理 compos
  • 动态滚动文本区域

    我的页面上有一个 textarea html 元素 可以通过 ajax 重新加载 每次都会返回整个文本区域 而不仅仅是其内容 并且内容会随着时间的推移而增长 除了文本区域之外 我还返回以下 javascript 片段 在 firefox 3
  • JavaFX 8 中的日期选择器

    默认 JavaFX 8 包中是否有日期选择器和时间选择器的实现 我可以在不使用第三方解决方案的情况下使用它 日期选择器 是的 Java 8 有一个日期选择器 http download java net jdk8 jfxdocs javaf
  • 使用 JQuery 缓慢更改/淡入淡出/动画更改图像

    这是我的img img src one png 当用户将鼠标悬停在使用 jQuery 上时 我想慢慢地将这个图像 src 更改为 oneHovered png 哪种 jQuery 方法最适合执行此操作 我看到很多例子都要求我改变 CSS 背
  • javadoc 工具能否识别方法内的注释?

    我在我的业务逻辑中写了很多这样的评论 Do some important stuff param pDog param pAllDogTraining return Overwrite public Map
  • 如何使用 C# 获取打印作业状态

    我可以打印文档 但不知道如何获取其状态 我查阅了很多资源 MSDN http support microsoft com kb 322091 检查工作状态的链接 https stackoverflow com questions 55637
  • 方法retrieveRequestToken引发“与服务提供商的通信失败:null”

    我正在使用 twitter4j 从我的应用程序发送推文 当我调用方法retrieveRequestToken时 收到错误 与服务提供者的通信失败 null public static void askOAuth Context contex
  • 如何在DotnetNuke 7中临时存储数据?

    我是 DotnetNuke 的新人 请随时向我建议正确的术语 我正在开发 DotnetNuke 7 我使用 C 我有一个包含 30 个字符串字段的表 最多可以有 50 条记录 目前我正在使用数据库管理它 我认为数据不多 我应该将其存储在本地
  • TSQL 选择最大

    Userid FirstName LastName UserUpdate 1 Dan Kramer 1 1 2005 1 Dan Kramer 1 1 2007 1 Dan Kramer 1 1 2009 2 Pamella Slatter
  • 如何使用 Keras 获得可重复的结果?

    我试图使用 Keras 获得可重现的结果 但是每次运行该程序时都会得到不同的结果 我已经设置了 python 哈希种子 Numpy 随机种子 随机种子 TensorFlow 种子和 kernel initializer glorot uni
  • 在Android中将时间戳转换为日期?

    我正在实现一个Android应用程序 我想将时间戳转换为日期 但我无法成功 我尝试过以下事情 请检查一下我是否做错了什么 我正在传递这个值 myTimestamp 1328015914 DateFormat getDateFormat mC
  • 如何在drools中调用Java函数?

    我想从 Utils 类调用 Java 函数 该函数调用 JPA Repository 方法来检索自定义对象 我想从 Drools 决策表中调用这个函数 现在 这个简单的函数给出了空指针异常 我已经为此浪费了几个小时 我在决策表的 导入 部分
  • 如何从服务器获取客户端套接字的确认?

    我有一个向服务器发送消息的客户端套接字 每当服务器收到消息时 我想在客户端得到确认 是否有可能得到这种认可 我使用apache mina开发客户端 提前致谢 TCP中没有消息 只有字节流 有一个内部 ACK 机制可以跟踪有多少流已被正确接收
  • 如何让 PowerShell 等到命令完成后再继续?

    我使用以下行根据其产品 ID 卸载 Office 2007 Start Process C Windows System32 msiexec exe ArgumentList uninstall 90120000 0030 0000 000
  • 使用缓存时的 Rails 字符编码问题

    我正在使用 Rails fragemnet 缓存来缓存一些 html 下面是我的代码
  • Spark 数据集唯一 id 性能 - row_number 与 monotonically_increasing_id

    我想为我的数据集行分配一个唯一的 ID 我知道有两种实现选项 第一个选项 import org apache spark sql expressions Window ds withColumn id row number over Win
  • Cassandra轻量级事务的一致性级别

    我读到了 Cassandra 2 的轻量级事务 这样写的一致性级别是always在法定人数 这是否意味着即使我有一个包含 100 个节点的多数据中心设置 也会涉及整个集群的仲裁 所有数据中心的行副本的大多数 这会不会很慢并且不会影响可用性吗
  • C++11 是否允许非匿名联合包含静态数据成员?

    在 C 11 中 我声明以下联合 union U4 char c int i static int si 当我使用 std c 11 pedantic errors 使用 g 4 7 0 编译此代码时 出现以下错误 经过少量编辑 错误 本地