问题标签 [qualified-name]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
403 浏览

c++ - C++ 返回类型和类型名称

我有以下代码:

这在 VS2012 中给出了这个错误:error C3892: 'd' : you cannot assign to a variable that is const

我可以通过限定第一个函数返回类型(如注释掉的行)来修复它。但我真的不明白这里发生了什么。这是编译器错误还是真正危险的代码?

0 投票
1 回答
15927 浏览

r - Is it a good practice to call functions in a package via ::

I'm writing some R functions that employ some useful functions in other packages like stringr and base64enc. Is it good not to call library(...) or require(...) to load these packages first but to use :: to directly refer to the function I need, like stringr::str_match(...)?

Is it a good practice in general case? Or what problem might it induce?

0 投票
2 回答
142 浏览

java - 为什么在 java 序列化框架中允许创建语法上非法的 QName?

我遇到了很多 JAXB 序列化错误,这些错误是由于代码在各个地方创建了无效的限定名称这一事实引起的。我正在研究我正在使用的 API 和其他 java XML 选项,奇怪的是实现限定名称的类似乎根本不做任何输入检查。

这确实是有问题的,因为复杂的代码会生成各种 JAXB 对象,并且直到编组时间才发现某些东西出了严重的错误。异常堆栈通常不会告诉您哪个元素/属性是错误的,只是有问题。

这些库一开始就让创建不可序列化的内容变得更加困难,难道不​​是更有意义吗?

这是一个代码片段:为什么会这样?它不应该抛出一个IllegalArgumentException吗?在其他定义 QName 的 API 中,行为是相同的。此类的 javadocs 指定如果命名空间为空,您将得到一个IllegalArgumentException,否则不会。

参考: QName 的相关 javadoc说明 name 是 anyURI 的规范约束,而 localpart 是 NCName。换句话说,根据规范,上面的代码显然是无效的,与序列化无关。

0 投票
2 回答
1965 浏览

c++ - 限定名称的使用无效

0 投票
1 回答
137 浏览

c++ - 嵌套名称说明符的名称查找规则

我已阅读以下内容(3.4.3/1):

如果嵌套名称说明符中的 :: 范围解析运算符前面没有 decltype 说明符,则查找 :: 之前的名称 仅考虑其特化为类型的名称空间、类型和模板。

嵌套名称说明符的查找规则是什么?

例如:

第二个例子:

在第二个示例中,A::B 是否会被视为命名空间内的限定名称?即我们可以归纳地定义嵌套名称说明符查找的规则。但我在标准中找不到类似的东西。这是真的吗?

0 投票
3 回答
73 浏览

c++ - 在限定的 declarator-id 之后进行名称查找

我试图了解以下引用的含义(3.4.3/3 N3797):

在成员的类或命名空间的范围内查找限定 ID 之后的名称。

的范围static int b;由' 声明点之后的声明性区域组成。实际上:b

在类中声明的名称的潜在范围不仅包括名称声明点之后的声明区域,还包括所有函数体、默认参数、异常规范和 非静态的大括号或等式初始化器该类中的数据成员

这意味着static const int a=7;不属于static int b;. 因此在static const int a=7中找不到int A::C::b=a;

这是标准中的错字还是我的误解?

0 投票
1 回答
200 浏览

c++ - 名称中的限定名称查找

我想了解命名空间限定名查找规则。我正在尝试在示例中执行此操作:

我的推理中有一个引用(3​​.4.3.2/2 N3797):

对于命名空间 X 和名称 m,命名空间限定查找集 S(X, m) 定义如下: 令 S (X, m) 是 X中所有 m 声明的集合和 X 的内联命名空间集 ( 7.3.1)。若S(X,m)不为空,则S(X,m)为S(X,m);否则,S(X, m) 是 S(Ni , m) 的并集,用于通过 X 中的 using 指令指定的所有命名空间 Ni 及其内联命名空间集。

让我们X成为一个全局范围。我们有那个S(X,b)={int b=6}。这意味着名称查找必须成功。但实际上,该程序是格式错误的。我可能没有正确理解这条规则吗?

0 投票
2 回答
190 浏览

c++ - 我不明白标准中的 3.4/2

我不明白标准中的 3.4/2:

“在表达式的上下文中查找”的名称在找到表达式的范围内被查找为非限定名称。

如果名称符合条件怎么办,N::i如下所示?

限定名N::i不在找到的范围内N::i查找,即不在 main() 的范围和全局范围内查找!

0 投票
1 回答
121 浏览

c++ - Qualified-ids,它们是左值还是纯右值?

我试图在 C++11 标准的第 5.1.1/8 段(第 87 页)中验证这个陈述(我的重点)

表示一个类的嵌套名称说明符,可选地后跟关键字模板(14.2),然后是该类(9.2)或其基类之一(第 10 条)的成员的名称,是合格的ID;3.4.3.1 描述了对出现在qualified-ids 中的类成员的名称查找。结果是成员。结果的类型是成员的类型。如果成员是静态成员函数或数据成员,则结果为左值,否则为纯右值

使用以下代码段:

clanggcc编译这段代码,VS2013需要定义成员函数f

他们三个都打印

但我不知道这些数字是从哪里来的。

活生生的例子

根据上面突出显示的段落,表达式N::A::f是纯右值,而f不是静态成员函数。尽管如此,我还是能够在代码中获取它的地址。

同时,在第 5.3.1/3 节中写道(强调我的):

一元 & 运算符的结果是指向其操作数的指针。操作数应该是一个左值一个qualified-id。如果操作数是一个 限定标识符,命名某个类 C 的类型为 T 的非静态成员 m,则结果类型为“指向类型为 T 的类 C 的成员的指针”,并且是一个指定 C::m 的纯右值。

这给人的印象既不是左值N::A::f也不N::A::i是左值,因为它们是qualified-id

0 投票
5 回答
4538 浏览

java - Java中的不合格名称

我们编程课上的老师在谈论“不合格的名字”,但我想知道它们到底是什么。

我怀疑诸如方法名称之类的东西是不合格的,但我不确定。

有谁能给我解释一下吗?我需要知道这一点,因为我需要解释 Java 以何种方式看起来是不合格的名称。