问题标签 [compiler-bug]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 可能的 Visual Studio c++ 编译器错误?模板模板非类型参数的问题
新问题
编辑
这个错误似乎与这个相同:
MSVC 拒绝以下代码:
错误 C3201:类模板“x”的模板参数列表与模板参数“X”的模板参数列表不匹配
但是类模板 x 具有与参数 X 相同的一组模板参数。
地狱!这个错误报告来自 2012 年 4 月?!
和
状态:延期关闭
:(
微软,我很失望TT
编辑的编辑
在我的情况下(如下),我可以用自己的方式做我想做的事,但这很丑:
利用:
编译器是否允许在优化期间更改成员的偏移量?
编辑结束
新问题
以下在http://coliru.stacked-crooked.com/a/be088e06861f9349上编译得很好
但是visual studio 2013给了我这个错误:
错误 C3201:类模板“LocalInfo_Problem7”的模板参数列表与模板参数“LocalInfo”的模板参数列表不匹配
这是VS编译器错误吗?还是我的代码错了?
如果这是一个错误,我怎样才能让它工作?
谢谢你的帮助。
老问题
我在使用有点复杂的模板“typedef”时遇到了一些麻烦。
尽可能简化问题,我想出了这个:
Visual Studio 2013 给我:错误 C3201:类模板“BB”的模板参数列表与模板参数“B”的模板参数列表不匹配
我看不出有什么问题。
Foo<AA, BB, ptr>
“扩展到”template <class AA, template <AA*> class BB, AA* ptr> struct Foo : BB<ptr> {}
理论上,如果我们定义以下内容(我实际上并没有尝试编译以下内容):
然后
应该是别名
这对我来说看起来不错。
奇怪的是,以下两个变体编译得很好:
1 /改变template <A*>
和template <AA*>
template <Z*>
这种解决方法让我的程序运行良好,但这违背了我的模板方法的目的。
或者 2/ 去掉 Bar 的第一个模板参数
那么编译器提到的不匹配是什么?
删除 Bar 的第一个模板参数如何解决问题?
谢谢你的帮助。
c++ - 涉及“使用”别名的成员函数重载解析中的英特尔 C++ 编译器错误?
ICC 14.0.2 给出错误:
但是,它可以与 GCC 4.8 和 Clang 3.4.2 一起编译。(在 64 位 Linux 上测试。)
任何熟悉 C++11 标准的人都可以确认这确实是一个错误吗?
此外,是否有一个简单的基于预处理器的解决方法?
delphi - 为什么记录构造函数在内联函数中行为不端?
在下面的代码中,记录构造函数做了一些奇怪的事情。
它在所有情况下都可以正常工作,除了下面标记的行:
为什么这条线会导致失败?
它是编译器错误吗?
还是我错过了什么?
我正在使用德尔福 XE6。
c++ - VC++ 2012 中出乎意料的模棱两可的重载解决方案
Visual C++ 2012。代码。我认为它应该编译;编译器恭敬地不同意。我已将我的复制范围缩小到:
所以我们有两个重载解决方案的候选者。对于第一个重载,第一个参数完全匹配,第二个参数需要整数转换(无符号到有符号)。对于第二个重载,第二个参数完全匹配,第一个参数需要 cv 调整(因为&b
是指向非常量的指针)。
现在看来,这应该是完全明确的。对于重载 1,第一个参数是标准的重载决议部分定义的“精确匹配”,但第二个参数是“转换”。对于重载 2,两个参数都是“精确匹配”(资格转换与身份处于同一等级)。因此(我的推理显然不完美),应该选择重载 2,没有歧义。但是:
GCC 在默认方言和 C++11 中的代码似乎都很好(感谢 IDEOne!)。所以我很想把它归结为 MSVC 中的一个错误,但是(a)你知道他们对那些认为他们的错误是编译器错误的人说了什么,并且(b)这似乎是一个非常明显的错误,在一致性测试期间会发出危险信号的那种。
这是不合规的 MSVC,还是不合规的 GCC?(或两者兼而有之?)我关于过载分辨率的推理是否合理?
c++ - 数组引用和隐式构造函数:gcc 中的错误与否?
以下代码可以使用clang 3.5.0编译,但不能使用gcc 4.9.0编译(带有-Wall -Wextra -pedantic-errors
标志和任何-std=c++03
,-std=c++11
和-std=c++14
标志):
MS VC 2013也 可以很好地编译此代码。
哪个编译器是正确的,什么是符合标准的行为?
c++ - 指向 Visual Studio 2013 中成员函数模板参数的指针
我遇到了一个角落案例并寻找解决方法。我几乎可以肯定这是一个编译器错误,我想不出任何东西。我有一个类,它可选地需要一个指向成员函数的指针。为了允许它是可选的,我将默认值设为 nullptr。它一直有效,直到我做了一个不相关的改变。在 Visual Studio 中,它现在会触发“无效的模板参数,需要编译时常量”。它仍然适用于 GCC。这是工作案例:
这是不起作用的情况
出于某种原因,我无法将键检索与类型分开,因此即使在构造函数中提供 keyfn 很诱人,这也是不可能的。仅当 KeyFn_ 为 nullptr(或 0)时,第二个版本才会失败。如果我给它一个类成员,它编译得很好。
完整的源代码也可用:
http://sourceforge.net/p/gorgon-ge/code/ci/gscript/tree/
工作修订:
http://sourceforge.net/p/gorgon-ge/code/ci/77d287af75c2301fce55ab97ba49362f7ef6d9e0/tree/
我正在寻找解决方法,或者如果它根本不应该工作的解释。
c++ - C ++比较运算符不返回真或假
我有以下程序
我希望这个程序打印出 true 或 false,但它打印出 216。我已经用g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
. 是预期的行为还是一些错误?为什么相等运算符会返回与 bool 不同的类型?
- - - - - 编辑 - - - - -
我的意图不是强制转换为 void,而是让 v 将 216 存储在其内存位置。替代程序可能如下所示:
或者我可以采用未初始化的布尔指针,它指向某个随机值,例如 216。
c++ - 模板参数和它自己的模板参数都包含同名类型;如何在函数签名中引用第二个?
考虑这段代码:
它不能在 VS2012 下编译:
'U::t_type::{ctor} f(void)' 的显式模板参数无效
看起来,编译器得出的结论是,第二个t_type
是typename U::t_type::t_type
命名构造函数而不是同名嵌套类型。我能做些什么来帮助澄清情况吗?
c++ - MSVC++ 中可能的编译器错误
我相信我在 MSVC++ 中发现了一个编译器错误(直到 VS 2013)。我想在报告它之前检查它是否确实是一个错误。
以下代码:
产生编译错误:
但是,对我来说它看起来不错,并且在 ideone.com 上编译得很好。它是一个错误吗?它应该编译干净吗?
c++ - 使用 g++ 4.9.1 修复奇怪的“%a”格式行为?
编译器:来自 Nuwen 发行版的 64 位 MinGW G++ 4.9.1,在 Windows 8.1 下。
代码:
适用于 Visual C++(但 Visual C++ 似乎缺少相反的转换):
不<iostream>
包括在内时也适用于 g++ :
包含以下内容时会出现奇怪的结果<iostream>
:
我要求修复或解决方法。