在类范围内重新定义类型名

时间:2019-06-30 09:37:23

标签: c++ c++11

[我真的会要求任何人将此标签标记为重复,以便在匆忙将其标记为此类之前先阅读整个问题。我的问题是为什么允许编译器以不同的方式解释这,这是未定义的,未指定的还是必需的行为?]

这是代码

typedef double Money;

class Account {
public:
    Money balance() {
        return bal;
    }
private:
    typedef long Money;
    Money bal;
};

根据C ++ Primer 5e,在内部类范围内重新定义相同类型(Money)是错误的。
但是,还提到某些编译器可能不会强制执行此操作。

这是否意味着它是未定义的行为或未指定的行为?如果standard明确表示不允许这样做,那么主要编译器如何决定不将其标记为错误?

0 个答案:

没有答案