"静态空隙"作为描述符
'static void' as decl-specifier
下面的代码用clang编译得很好。我想知道C++标准是否适用于此。
class A {
static void x; // #1
static const void x; // #2
static volatile void x; // #3
};
在我看来,没有一项声明是有效的。一年一次的C++标准验证套件有这样一个测试(#1),而clang(v3.4)在这方面失败了。
不过,如果我从#1中删除static,那么clang会像预期的那样报告错误。
我查看了标准,发现了一段关于静态数据成员的内容(9.4.2-2),其中写道:
2静态数据成员在其类定义中的声明不是定义,可能是一种不完整的类型,而不是cv合格的无效。。。
据我所知,这一行将#2和#3取消为无效,但不确定#1。是否还有任何与静态存储类声明相关的详细信息应该排除#1?
谢谢,
不,这是不允许的,正是因为您引用的段落。请注意,您引用的段落中的"合格简历"一词包括不合格。根据C++11标准第3.9.3/10段:
在本国际标准中,用于描述类型的符号
cv
(或cv1
、cv2
等)表示cv限定符的任意集合,即{const
}、{volatile
}、{const
、volatile
}、中的一个或空集
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在C++中获得"静态纯虚拟"功能?
- 私有类型的静态常量成员
- 使用gcc从静态链接的文件中查找可选符号
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 如何在C++中使用非静态成员函数作为回调函数
- 将静态库链接到不带-fPIC的共享库中
- 静态结构和一个定义规则
- "静态空隙"作为描述符