本文介绍了Visual Studio C ++编译器怪异的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只是想知道为什么这小段代码在 Visual Studio 中正确编译(并且没有警告)。也许结果与和,但很遗憾,我现在无法测试。
struct T {
int t;
T():t(0){}
};
int main(){
T(i_do_not_exist);
return 0;
}
解决方案
T(i_do_not_exist);
是与 T i_do_not_exist;
相同含义的对象声明。
N4567§6.8 [stmt.ambig] p1
I'm just curious to know why this small piece of code compiles correctly (and without warnings) in Visual Studio. Maybe the result is the same with GCC and Clang, but unfortunately I can't test them now.
struct T {
int t;
T() : t(0) {}
};
int main() {
T(i_do_not_exist);
return 0;
}
解决方案
T(i_do_not_exist);
is an object declaration with the same meaning as T i_do_not_exist;
.
N4567 § 6.8[stmt.ambig]p1
§ 8.3[dcl.meaning]p6
这篇关于Visual Studio C ++编译器怪异的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!