Visual Studio C ++编译器怪异行为

我只是想知道为什么这小段代码可以在Visual Studio中正确编译(并且没有警告)也许GCCClang的结果是一样的,但是不幸的是我现在无法测试它们。

struct T {
    int t;
    T() : t(0) {}
};

int main() {
    T(i_do_not_exist);
    return 0;
}
cpplearner

T(i_do_not_exist);是与含义相同的对象声明T i_do_not_exist;

N4567§6.8 [stmt.ambig] p1

语法中包含expression-statement s和declaration s的模棱两可具有函数式显式类型转换(5.2.3)expression-statement最左边的子表达式与第一个declarator第一个declarator开头声明是无法区分的。在那种情况下,声明就是声明(

§8.3 [dcl。含义] p6

在声明T DD具有以下形式

( D1 )

所含的类型说明符-ID是相同的,所述含有的声明符-ID的声明

T D1

括号不会更改嵌入的声明符id的类型,但是可以更改复杂声明符的绑定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Visual Studio C ++编译器拒绝将枚举作为模板参数?

也许是Visual Studio 2015中的C#编译器错误

Visual Studio 2015更新3-C ++编译器错误?

是否有与Visual Studio C ++编译器等效的-ffast-math标志

如何在Visual Studio 2015中使用roslyn C#编译器?

Visual Studio 2015更新1中C ++的内部编译器错误

Visual Studio 2015-编译器警告(等级2)C4146

如何从Visual Studio C编译器获取更多有用的警告?

Python 3,如何设置Visual Studio C ++ 2015编译器?

Visual Studio 2013中可能的C / C ++编译器错误

使用Visual Studio编译器分析内联的C ++函数

Visual Studio 2015 C ++编译器可能提供代码内指令集标记

仅在发行版中的Visual Studio 2019“ C1001内部编译器错误”

使用g ++编译器在Visual Studio中编译C ++程序会在最后生成%

如何防止输出屏幕在Visual Studio 2013 C ++编译器中消失

C ++:使用Visual Studio编译器时的const指针

拆解Visual Studio Intel编译器C ++代码

C ++奇怪行为Visual Studio

Visual Studio C编译器未将头文件链接到其源副本

可能的Visual Studio 2015 C ++编译器和IntelliSense错误

是否应该在Visual Studio C#编译器中将此列表初始化器行为报告为错误?

哪些编译器选项用于在Visual Studio中编译C ++ STL类/函数?

确定C ++编译器是否将在Visual Studio中以某种方式进行优化

C ++ 11列出Visual Studio 2013上的初始化怪异行为

Visual Studio C ++编译器在局部变量对象上的异常行为

从 Visual Studio 代码中排除 C# 编译器警告

Visual Studio Code 的 C/C++ 扩展如何找到默认编译器?

Visual Studio C++ 编译器尝试编译 CUDA C/C++ 文件

如何使用 Visual Studio 编译器在 Windows 上编译 cython 编译的 c 代码