compiler-bug相关内容
我有一个C++11程序,可以检查一个数字是否为质数。有一个程序等待准备好的未来对象。在它准备好之后,程序告诉未来对象的一个提供程序函数是否将该数字视为质数。 // future example #include // std::cout #include // std::async, std::future #include
..
以下代码被 Clang 和 GCC(主干版本): #include 结构基础{Base() = 默认值;Base(Base const&) = 删除;Base(Base&&) = 默认值;};结构派生:基础{派生()=默认;Derived(Derived const&) = 删除;派生(派生&&)=默认;};自动 foo()->根据{导出d;返回 d;//这里有错误} 导致以下
..
在过去的几天里,我一直在调试一个涉及 C++ 中 lambda 的奇怪问题.我已将问题归结为以下症状: this 指针在 lambda 中损坏(注意:this 总是被副本捕获,因此 lambda 应该有自己的 this 指针,指向 App 对象) 只有在 std::cout 打印语句存在时才会发生,并且在创建 lambda 之前调用.print 语句可能看起来完全不相关(例如 print
..
命名空间 X{void* operator new (size_t);} 给出错误信息: error: ‘void* X::operator new(size_t)’ 不能在命名空间中声明 它是 gcc 编译器错误 吗?在较旧的 gcc 版本中,它似乎正在工作.任何想法,为什么不允许? 用例:我想只允许类的自定义 operator new/delete 并希望禁止全局 new/oper
..
使用 VS2013 Update 2,我偶然发现了一些奇怪的错误消息: //test.cint main(void){结构 foo {国际我;浮动 f;};结构栏{未签名的你;结构 foo foo;双d;};结构 foo some_foo = {.i = 1,.f = 2.0};结构栏 some_bar = {.u = 3,//错误 C2440 : 'initializing' : 无法从 'f
..
编辑:这确实是由 Visual Studio 中的错误引起的 - 它已经得到修复.将更新 2 应用到 Visual Studio 后,该问题无法重现(此处提供候选版本).我道歉;我以为我的补丁是最新的. 当我在 Visual Studio 2013 中运行以下代码时,我终生无法弄清楚为什么会出现段错误: #include #include 结构基{虚拟 int GetValue() { 返
..
所以我写了一个讨厌的 lambda 来满足“实现这个目标所需的最短代码量"问题: values.resize(距离(开始(值),remove_if(begin(values), end(values),[i = 0U, it = cbegin(intervals), end = cend(intervals)](const auto&) mutable {返回它!=结束&&++i >它->首先&
..
我认为这是一个编译器错误. 以下控制台应用程序在使用 VS 2015 编译时可以完美地编译和执行: 命名空间 ConsoleApplication1{课程计划{静态无效主(字符串 [] args){var x = MyStruct.Empty;}公共结构 MyStruct{公共静态只读 MyStruct Empty = new MyStruct();}}} 但现在变得很奇怪:这段代码可以
..
根据: http://www.ibm.com/developerworks/library/j-jtp03304/ 在新的内存模型下,当线程 A 写入易失性变量 V,而线程 B 从 V 读取时,在写入 V 时 A 可见的任何变量值现在保证对 B 可见 互联网上的许多地方都声明以下代码不应打印“错误": 公共类测试{volatile 静态私有 int a;静态私有 int b;p
..
考虑下面的代码.看起来完全有效的 C# 代码对吗? //项目B使用系统;公共委托无效 ActionSurrogate(Action addEvent);//公共委托 void ActionSurrogate2();//使用 ActionSurrogate2 而不是 System.Action 会导致同样的错误//使用虚拟参数 (Action) 会导致相同的错误//项目A公共静态类 Class1
..
此程序在使用 VC12(在 Visual Studio 2013 RTM 中)编译时[1] 导致崩溃(在所有构建配置中),而实际上不应该: #include void foo(std::string const& oops = {}){}int main(){富();} 我知道可能有两个无声的不良代码生成错误: https://connect.microsoft.com/VisualSt
..
遇到一个有趣的面试问题: 测试1:printf("测试%s\n", NULL);printf("测试%s\n", NULL);印刷:测试(空)测试(空)测试2:printf("%s\n", NULL);printf("%s\n", NULL);印刷分段错误(核心转储) 虽然这可能在某些系统上运行良好,但至少我的会引发分段错误.这种行为的最佳解释是什么?上面的代码是用 C 编写的. 以下是
..
代码(spring-web 5.1.2) public static void main(String[] args) {RestTemplate restTemplate = new RestTemplate();HttpHeaders headers = new HttpHeaders();headers.set(HttpHeaders.AUTHORIZATION, "token");Htt
..
最近几天,我一直在调试一个涉及 C++ 中 lambda 的奇怪问题.我已将问题简化为以下症状: this 指针在 lambda 内部被破坏(注意:this 总是被副本捕获,因此 lambda 应该获得自己的 this 指针,指向 App 对象) 它仅在 std::cout 打印语句存在时发生,并在创建 lambda 之前调用.打印语句可能看起来完全不相关(例如打印“你好!").print
..
背景 Class Foo 具有用户声明的构造函数,因此没有 隐式声明的默认构造函数: struct Foo {Foo(...) {...}}; 然后在std::pair的std::vector中使用如下: std::vector> 用法 尝试向后推向量: std::vector>v;v.push_back(std::make_pair(std::string("some st
..
代码(spring-web 5.1.2) public static void main(String[] args) {RestTemplate restTemplate = new RestTemplate();HttpHeaders headers = new HttpHeaders();headers.set(HttpHeaders.AUTHORIZATION, "token");Htt
..
在尝试优化 x86_64 上的返回值时,我注意到了一件奇怪的事情.即,给定代码: #include #include #include 使用命名空间标准;constexpr uint64_t a = 1u;constexpr uint64_t b = 2u;对f() { 返回 {a, b};}元组g() { 返回元组{a, b};} 锵3.8输出 f 的
..
C# 7.1 引入了一项名为“默认文字"的新功能,该功能允许使用新的 default 表达式. //而不是写Foo x = default(Foo);//我们可以写Foo x = 默认值; 对于 Nullable 类型,默认值为 null,按照通常的用法,它按预期工作: int?x = 默认(整数?);//x 为空内部?x = 默认值;//x 为空 但是,当我尝试使用新的默认文字作为
..
根据标准,支撑的函数强制转换始终会产生prvalue, 解决方案 这是 CWG1521 : T {expr} 以及引用类型 根据8.2.3 [expr.type.conv]第4段, 类似地,简单类型说明符或类型名称说明符后跟括号初始列表会创建一个临时对象指定类型的直接列表初始化(11.6.4 [dcl.init.list]),带有指定的括号初始化列表,其值是该临时对象作为pr
..
考虑以下 最小的,可复制的示例 : 接口代码{静态void main(String [] args){象征(String.valueOf(真的 ?'一种' :真的 ?'b':真的 ?'C' :失败()));}私有静态无效符号(字符串符号){System.out.println(symbol);}私有静态R fail(){抛出空}} (接近最小值, true 是一个有用的布尔表达式的代
..