C++11 declaration `::T i`?
C++11 declaration `::T i`?
本文关键字:C++11 declaration 更新时间:2023-10-16
下面的C++11翻译单元是否形成良好?
typedef int T;
::T i;
如果是这样,它似乎与标准语法不匹配。
simple-type-specifier
应该与::T
匹配,但语法为:
simple-type-specifier:
nested-name-specifier_opt type-name
并且nested-name-specifier
不能单独与::
匹配,所以simple-type-specifier
不能与::T
匹配。
这是标准缺陷吗?
这是一个规范缺陷。它在最新草案N3691(PDF)中得到了修复,其中嵌套名称说明符为:
nested-name-specifier:
::
type-name ::
namespace-name ::
decltype-specifier ::
nested-name-specifier identifier ::
nested-name-specifier templateopt simple-template-id ::
(在C++11中,缺少第一个产品,嵌套名称说明符->::
。)
因此,除了答案之外,仅作为澄清:::identifier
指的是全局命名空间中的(限定的)标识符。所以是的,有问题的代码实际上是格式良好的
相关文章:
- MSVC是否支持C++11样式的属性而不是__declspec
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 如何将模板转换为C++11之前的模板
- c++11评估顺序(未定义的行为)
- C++中的VLA,扩展名为std=C++11
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- "类模板示例<int>;"语句对 C++11 是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 如何使用lock_guard在c++11中实现scoped_lock功能
- C++11 中不同类型的对象的 std::array 的替代方案
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- STLPort using C++11
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- C++11 declaration `::T i`?