最新发布的boost版本是在2014年11月3日发布,由于项目里使用,就立即更新为最新版本的库,这样也可以让可能出现的BUG减到最少。
不过在更新这库之后,发现原来可以编译通过的项目,而现在不能通过了,提示错误如下:

transform_width.hpp(156): error C2589: '(' : illegal token on right side of '::'

通过仔细地查看transform_width.hpp文件,发现是其中的std::min使用有问题,因为min函数的两个传入参数类型不一样,这样进行模板
匹配时,就找不到相应的模板。这行代码如下:
unsigned int i = std::min(missing_bits, m_remaining_bits);

通过函数的代码来分析,missing_bits是unsigned int类型,而m_remaining_bits是CHAR类型,导致编译出错。知道了出错的原因,就容易
解决了。把这行代码修改为:
unsigned int i = std::min<unsigned int>(missing_bits, m_remaining_bits);

相关的模板代码:
template<
    class Base, 
    int BitsOut, 
    int BitsIn, 
    class CharType
>
void transform_width<Base, BitsOut, BitsIn, CharType>::fill() {
    unsigned int missing_bits = BitsOut;
    m_buffer_out = 0;
    do{
        if(0 == m_remaining_bits){
            if(m_end_of_sequence){
                m_buffer_in = 0;
                m_remaining_bits = missing_bits;
            }
            else{
                m_buffer_in = * this->base_reference()++;
                m_remaining_bits = BitsIn;
            }
        }

// append these bits to the next output
        // up to the size of the output
修改之前:
         unsigned int i = std::min(missing_bits, m_remaining_bits);
        把这行修改为:
        unsigned int i = std::min<unsigned int>(missing_bits, m_remaining_bits);

// shift interesting bits to least significant position
        base_value_type j = m_buffer_in >> (m_remaining_bits - i);
        // and mask off the un interesting higher bits
        // note presumption of twos complement notation
        j &= (1 << i) - 1;
        // append then interesting bits to the output value
        m_buffer_out <<= i;
        m_buffer_out |= j;

// and update counters
        missing_bits -= i;
        m_remaining_bits -= i;
    }while(0 < missing_bits);
    m_buffer_out_full = true;

}

蔡军生 QQ: 9073204  深圳

boost 1.57在VC2012里编译出错以及解决相关推荐

  1. 有线网卡linux驱动,Ubuntu 12.04下QCA8172有线网卡驱动编译出错的解决方法

    基于以前的笔记本配置太低,无法满足科研需求,本人屁颠屁颠的去买了一个还算配置蛮新的电脑. 因为科研要在Linux环境下,本人安装了Ubuntu 12.04+WIN7双系统.但是问题出来了,在Ubunt ...

  2. Linux微信运行错误,Ubuntu 16.04 运行微信开发者工具编译出错的解决办法

    最近有折腾小程序的意向,但微信的开发者工具只提供了 Windows 和 Mac 两个版本,对于我这样的 Linux 用户来说不是那么地友好. 经过观察发现,那个开发者工具实际上是基于nw.js开发的, ...

  3. 静态编译出错的解决办法 undefined reference to `clock_gett...

    2019独角兽企业重金招聘Python工程师标准>>> gcc -Wall -g -O2 -I/usr/local/include -m64 -o magent magent.o k ...

  4. QML新建QML后编译出错的解决方法

    解决方法: 原有工程可以编译通过,添加了新的qml文件后,编译出现以下错误: undefined reference to QmlCacheGeneratedCode XXX 重新构建工程,错误仍未解 ...

  5. [ExtJS 6] SenchaCmd编译出错与解决

    错误描述 D:\inssoftware\Sencha\Cmd\6.6.0.13\plugin.xml:333: The following error occurred while executing ...

  6. 由一次奇怪的编译出错想起的

    现象 最近在工作中遇到了一次奇怪的编译出错.事情是这样的,本来这个asp.net webform应用是可以编译的.但是将另外一个class library的工程加入到这个asp.net webform ...

  7. 20220319编译OpenHarmony-v3.1-beta出错的解决方法

    20220319编译OpenHarmony-v3.1-beta出错的解决方法 2022/3/19 14:29 [结论]:华为的做事也太不认真了!^_你的压缩包都没有给完整的,还好我做过的! (程序文本 ...

  8. 关于“ROS2 Topic-Statistics-Tutorial编译出错”的思考2

    关于"ROS2 Topic-Statistics-Tutorial编译出错"的思考 复现了一下其中报错信息: 如果选foxy会有如上错误,如果选galactic则不会报错,顺利编译 ...

  9. macOS+matlab 2020b matlab_bgl工具箱使用时 MEX文件编译出错

    引言 对于matlab_bgl工具箱来说,要在64 位 mac 上使用最新版本的 Matlab 进行编译时,需要使用者手动进行一些配置,在成功配置之后,决定将一系列过程整理成文,供大家参考. 解决&q ...

最新文章

  1. tomcat日志切割
  2. 习题1.9 有序数组的插入 (20 分)
  3. Genymotion模拟器
  4. 零基础的跨界自学拿到腾讯Offer的学习资料
  5. restify mysql_[菜鸟试水]关于Nodejs搭建后台API服务(Mysql-Restify)[下]
  6. webpack对脚本和样式的处理
  7. Apache+Tomcat动静分离
  8. 设计模式的七大设计原则:其六:迪米特法则
  9. (花生壳)向日葵 相关虚拟硬件(驱动)造成 xp 系统无法正常 待机、休眠
  10. .NET 4.0 使用 asyn await
  11. 如何下载乌龟svn中文版
  12. Chrome 安装有道画词取义插件
  13. Python爬虫爬取淘宝天猫,处理url正确的解码方法
  14. Stata:各类全要素生产率TFP估算方法
  15. 【机器学习】十大机器学习基础算法
  16. js怎么实现hmacsha256_各种语言HMAC SHA256实现
  17. 为什么 SD-WAN 很重要?
  18. 第六十八章 Caché 函数大全 $WASCII 函数
  19. VCS编译仿真警告Warning
  20. 华为云灾备方案,如何保障企业数据安全

热门文章

  1. 华为员工轻松入会的秘诀是?
  2. 【软件开发底层知识修炼】九 链接器-可重定位文件与可执行文件
  3. 软件项目常见风险及其预防措施
  4. qrcode 创建带LOGO的二维码
  5. 练习下csnd博客怎么用
  6. modbus转profinet网关连接ABB变频器在博图程序案例
  7. .net6.0wpf如何使用winform控件
  8. spring基本框架搭建(初学者)(IDEA)
  9. 数电Modelsim,Quartus仿真实验
  10. 使用Quartus软件实现存储器仿真