为什么C++范围解析运算符::?

Dou*_*ell 2 c++

这是我在Stroustroup的C++设计和演变中找不到答案的少数几个问题之一.为什么C++范围解析运算符::,而不仅仅是:?

我猜它是因为:已经用于指示构造函数中初始化列表的开始.有没有人同意,不同意或对此有明确的答案?

ham*_*mar 15

例如,它会与goto标签产生歧义.

foo:bar;  // is foo a label or a namespace?
Run Code Online (Sandbox Code Playgroud)