对 c++1z 中的 [dcl.spec]/3 的疑问
Doubts about [dcl.spec]/3 in c++1z
[dcl.spec]/3 in c++1z (重点是我的(:
如果在解析 decl-specifier-seq 时遇到类型名称, 它被解释为 decl-specifier-seq 的一部分,当且仅当 除了cv-qualifier in the decl-specifier-seq.顺序应自洽,如下所述。[ 示例:
typedef char* Pc; static Pc; // error: name missing
在这里,声明
static Pc
格式不正确,因为没有名称 为类型Pc
的静态变量指定。获取变量 称为Pc
,类型说明符(const
或volatile
除外(具有 以指示类型定义名称Pc
是名称 被(重新(宣布,而不是成为decl-specifier
的一部分 序。
尽管如此,下面的代码片段并不能用 g++ 和 clang 编译。为什么?
typedef char* Pc;
static int Pc;
该段落的目的是表明typedef char* Pc
是有效的,而static Pc
不是,而不是你可以将Pc
重新声明为其他东西(在同一范围内(。换句话说,static Pc
和static int Pc
不是不同的实体。没有任何变化可以让你这样做。
[basic.scope.declarative]/4
给定单个声明区域中的一组声明,每个声明 指定相同的非限定名称,
(4.1( — 它们均应指同一实体,...
相关文章:
- C++17 / C++1z 并行使用 std::for_each.
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 为什么"S x({})"仅在GCC 7/C++1z模式下调用默认构造函数?
- 如何在 C++1z 中使用实验并行 STL
- 如何让 CMake 基于 GCC 版本通过 std=c++14/c++1y 或 c++17/c++1z?
- C 1Z标准如何定义模板功能声明中属性的正确位置
- c++1z动态异常规范错误
- C 1Z Coroutine线程上下文和Coroutine调度
- 用C++1z编译时反射
- 为什么 qmake 忽略 -spec 标志
- 重新解释一个模板非类型参数:clang c++14 vs c++1z
- 对 c++1z 中的 [dcl.spec]/3 的疑问
- §12.3.2 [class.conv.fct]/1 in C++1z 相对于 C++14 发生了重大变化。有意义吗?
- C++1z 处理 == 测试,在自动函数中使用 std::initializer_list<int> 和 w/o const
- 折叠表达式是C++14还是C++1z特性
- C++1z 协程是一种语言功能
- 为什么这段代码会出现"exception spec is more lax than base"错误?
- C++1z-如果在模板展开过程中出现条件,则引发编译错误
- C++1z(?)运行时大小的数组作为返回值
- std::invoke(C++1z) 如何工作