我见过上下文cv-qualifiers中使用的 qualified :
非限定类型可以隐式转换为const
但我也看到 qualified 用于表示任何嵌套类型:
MyClass :: MyNestedType x;
答案 0 :(得分:5)
要解决资格的两个含义,请参阅下文......
语法nits:
&
代表地址或reference type
(有争议 - 不是很混乱)[]
用于数组索引或lambda声明 >>
用于右移或关闭嵌套模板定义
pop-quiz: what is this:
template <size_t> struct X {};
std::vector<X<3>> a; // valid? invalid?
最令人烦恼的解析:
std::istream_iterator<int> first(std::cin); // declares a variable
std::istream_iterator<int> last(); // declares a function
等
(原始回复)
首先是'const / volatile'资格
变量/函数/参数声明包含一个类型。这种类型可以是'const'或'volatile',可以修改类型的语义。
第二个是名称空间限定
C ++可以将名称分组到名称空间中,以避免冲突。 unqalified name 足以引用当前或可见名称空间中声明的标识符:
namespace ns1
{
struct X {};
X f();
}
using namespace ns1;
X f2();
然而
你必须使用所谓的“合格”名称:
struct X {} ;
namespace ns2
{
struct X {};
ns2::X f();
ns1::X g();
}
X h(); // uses ::X
using namespace ns2;
::X i(); // disambiguate
ns2::X i();