![]() |
1
8
你能试试吗?
我没有访问GCCCatm的权限,但我也遇到了类似的问题,添加模板关键字总能解决这些问题。它也适用于vs。 |
![]() |
2
11
只是为了提供一些背景
当编译器看到这个函数时,它不知道
1:
编译器看到
2。
三。
至于第一步,它现在知道从get-inner返回的必须是类类型,所以它知道下一个标识符是成员对象或函数。
4。
那么,什么可以
我们知道
在这种情况下,编译器不知道表达式的类型
那么,为什么要修复?
添加
实际上,我们告诉编译器
删除模板参数
当Do-Outer没有模板参数时,即:
|
![]() |
3
-1
我不能自称是地球上10个完全理解C++模板的人之一,但是你在这里做的对我来说很好。(GCC 4.4.1失败,错误相同,btw)。
改变
与GCC一起工作,大概也将用Visual C++工作。 您可能会考虑向gcc提交一个bug;要么他们会修复它,要么它将作为无效代码关闭,在这个过程中,希望有人能解释为什么您所做的是无效代码。 进一步的更新和aha:结果发现它实际上不是有效的代码,gcc只是给出了一个可怕的错误消息。英特尔C++输出(实际上很有用!)错误信息:
这让我意识到了问题所在。将Do_Inner更改为
ICC和GCC都接受该规范。 |
![]() |
George S. · 是否存在基于元组的控制流语句内部表示? 7 年前 |
![]() |
FlatAssembler · 在x86程序集中计算exp(x) 7 年前 |
![]() |
cib · 即时编译和动态编译有什么区别? 7 年前 |
![]() |
Artemis · 寄存器与指令之间的差异 7 年前 |
![]() |
Sam · 了解go工具编译和链接命令 7 年前 |