![]() |
1
8
嗯,这是个虫子。const修饰符通过modopt自定义修饰符发送到元数据中。不幸的是,C++/CLI语言规则与CLI规则不匹配。cli规范的第7.1.1章指出:
因此,CLR称派生::FoE()不是重写,C++/CLI称它是。CLR赢了。 你可以在connect.microsoft.com上报告这个错误,但这可能是浪费时间。我认为这种不相容是故意的。他们应该改变C++语言和CLI语言规则,但肯定认为C++兼容性更重要。无论如何,cv修饰符都是一个难题,还有其他不受支持的场景,const指针指向const。无论如何,这在运行时无法强制执行,CLR不支持它。 |
![]() |
2
3
这是一个bug,它不是特定于C++的。 事实上,C++编译器应该剥离顶级的const /易失性。只有指向指针或引用类型的const/volatile才有意义。如果编译器正确地做到了这一点,clr就不会有发言权。 顺便说一句,这是编译器用/clr:pure生成的il
这绝对违反了james列出的删除顶级限定符的规则。 C++/CLI规范的进一步相关部分:
因此,我认为,删除CV限定符的规则同样适用于C++/CLI,因为SPEC专门调用ISO标准C++的第83.5/3节。 |
![]() |
JoeZ · Do while循环不会中断 7 年前 |
![]() |
JoeZ · 如果循环不工作。运行时显示重复cout。 7 年前 |
![]() |
Joe · 正在展开宏以进行调试? 7 年前 |
|
Matthew · 自己编译公共库会提高性能吗? 7 年前 |
![]() |
Barry · 在MSVC中处理宏中的额外括号 7 年前 |