gcc 4.7.3 的一个 c++11 bug
来源:互联网 发布:淘宝口红小样是真的吗 编辑:程序博客网 时间:2024/05/21 17:46
请关注我们的技术创业项目 Terark,领先的数据技术提供商
昨天一个朋友 checkout 了我的 febird 代码,编译时出现了一个诡异的错误。经过仔细勘察,他的 g++ 版本是 4.7.3,而我测试过的 g++4.7.2,g++4.8.2均无问题。
后来修改代码,解决了那个问题,但要还原那个bug时,很费了一番力气。以下是还原的那个 bug 的一段简单代码,不过可能不是最简单的。
#include <stdio.h>struct A { int x = 10;};template<class>struct B : A { static void foo(A* a) { // auto b = static_cast<B*>(a); // g++ 4.7.3 compile OK auto* b = static_cast<B*>(a); // g++ 4.7.3 compile error auto lamb = [&](A*) { printf("a.x=%d\n", b->x); }; lamb(a); }};int main() { A a; B<int>::foo(&a); return 0;}
g++4.7.3 出错的原因在于,将 b 的类型推导成了 B<int>*&,而引用不能绑定到 prvalue 上!关于什么事 prvalue,需要你去参考 C++ 标准。
- gcc 4.7.3 的一个 c++11 bug
- gcc的一个小bug
- gcc 一个恶心的 bug
- 发现一个gcc的“BUG”?
- gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 编译器的一个BUG(不是bug)
- [C++] getaddrinfo的一个bug
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- GCC的BUG研究(Rev.3)
- 13个mysql数据库的实用SQL小技巧
- Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数
- ALLEGRO 查看GERBER文件
- V4L2驱动的移植与应用(一)
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程
- gcc 4.7.3 的一个 c++11 bug
- 不只是技术!成为IT经理必备的十大软技能
- jquery创建遮罩层
- 网络套接字socket
- 使用正则中的?=和?<=进行插入操作
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- ubuntu12安装vsftp
- java解析Microsoft Project mpp文件(
- jquery 使用方法