歧义消解
void S(){}
struct S{};
int main(){
S();
}
在上面的代码中,main 中的表达式“S()”被视为函数调用表达式,而不是尝试创建“S”类型的临时表达式。
C++ 标准的哪一部分讨论了有利于函数声明的表达式的解析?由于某种原因我无法找到它。
void S(){}
struct S{};
int main(){
S();
}
In the code above, the expression 'S()' in main is treated as a function call expression rather than an attempt to create a temporary of type 'S'.
Which portion of the C++ Standard talks about the resolution of such an expression in favour of a function declaration? For some reason I am unable to locate it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第 3.3.7/2 节
那么在这种情况下你需要使用详细的类型说明符
3.4.4/1详细的类型说明符
Section 3.3.7/2
Then you need to use elaborated type specifier in such cases
3.4.4/1 Elaborated type specifiers
它可以通过使用范围解析运算符(::)或使用 virtual 关键字来解决(当我们处理多重继承或混合继承时。
It can be resolved either by using the scope resolution operator(::) or by using virtual keyword(when we are dealing with either multiple or hybrid inheritance.