【发布时间】:2014-05-21 03:35:49
【问题描述】:
我正在阅读 c++14 N3797,我遇到过 3.3.7/1:
如果对类中的成员声明重新排序会产生一个替代的有效 (1) 和 (2) 下的程序,程序格式错误,没有诊断 必填。
有(1)和(2):
1) 类中声明的名称的潜在范围不仅包括 在名称的声明点之后的声明区域, 还有所有函数体,默认参数, 异常规范和大括号或等式初始化器 该类中的非静态数据成员(包括嵌套中的此类内容 类)。
2) 在类 S 中使用的名称 N 应引用相同的声明 它的上下文以及在 S 的完整范围内重新评估时。否 违反此规则需要进行诊断。
如果我们这样写:
class A
{
int a;
int b;
}
那么程序格式错误。重新定义成员声明会产生一个替代的有效程序:
class A
{
int b;
int a;
}
我可能没有正确理解这条规则吗?
【问题讨论】:
-
这肯定不会创建一个替代有效程序。它可能看起来不同,但它会编译和执行相同的。