gpt4 book ai didi

c++ - 双右尖括号 (>>) 在特定情况下会产生语法错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:46 27 4
gpt4 key购买 nike

Eclipse (Luna, 4.4.2) 告诉我以下行有语法错误:

static_cast<Vec<int, DIM>>(a.mul(b));

我记得双右尖括号 >>> 会导致某些编译器出现问题,所以我在中间放了一个空格:>>。语法错误消失。

但是我的程序中有很多 >>> 没有检测到语法错误,例如:

Node<Element<DIM>> * e= a.get();

为什么在上述特定情况下会出现错误?这不是 error: 'varName' was not declared in this scope 的拷贝,因为我特别询问为什么我的编译器有时会接受 >>>,但并非总是如此。

最佳答案

您已经使用了 c++11 之前的标准编译器。旧标准在让解析器消除来自 operator>>() 的嵌套模板类型说明符中使用的一对右尖括号 >> 时存在问题。因此你必须在它们之间写一个空格。

>>>>>* 这样的示例属于旧解析器的不同情况,因此它们可以正常工作而不会出现错误消息。


我不得不承认,我实际上并不知道在 c++11(当前)标准定义中到底做了什么,这种情况可以被 c++11 兼容的解析器清楚地消除歧义。

关于c++ - 双右尖括号 (>>) 在特定情况下会产生语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com