[我真的会要求任何人将此标签标记为重复,以便在匆忙将其标记为此类之前先阅读整个问题。我的问题是为什么允许编译器以不同的方式解释这,这是未定义的,未指定的还是必需的行为?]
这是代码
typedef double Money;
class Account {
public:
Money balance() {
return bal;
}
private:
typedef long Money;
Money bal;
};
根据C ++ Primer 5e,在内部类范围内重新定义相同类型(Money)是错误的。
但是,还提到某些编译器可能不会强制执行此操作。
这是否意味着它是未定义的行为或未指定的行为?如果standard明确表示不允许这样做,那么主要编译器如何决定不将其标记为错误?