boost 1.57在VC2012里编译出错以及解决

最新发布的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  深圳

时间: 2024-08-29 23:57:17

boost 1.57在VC2012里编译出错以及解决的相关文章

Thuthesis在Tex live2015中编译出错的解决方法

Tex live 2015安装后,它本身已经将thuthesis.cls及相关的bst等文件安装在它自己的搜索路径上面,亦即thuthesis模板已作为Tex live的组成部分被安装.你只要按照示例文件直接写你自己的tex文件即可,而无需下载thuthesis.cls等相关的模板文件.当然你也可以下载thuthesis.cls等文件放在当前目录下,系统路径上面的thuthesis.cls自动不起作用. 错误!undefined control sequence \[email protecte

使用modelsim仿真DDR3时编译出错的解决方法

Modelsim 10.1c release note sates as : Product Changes in 10.1c Release 10.1b introduced a new error, number 2902. By default in the 10.1x series of releases this should have been a warning. In future releases this will become a suppressible error. I

gcc编译出错---make[5]: *** [s-attrtab] Killed

内存不足导致的编译出错,解决方法是增加swapfile. [email protected]:home# swapon -s Filename    Type            Size    Used    Priority 创建swapfile大小512M: [email protected]:home# dd if=/dev/zero of=/swapfile bs=1024 count=512k 524288+0 records in 524288+0 records out 536

Perl编译出错解决方法

Perl编译出错: 解决:yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker cpan perl-devel -y 原文地址:http://blog.51cto.com/461205160/2073194

Eclipse Android项目导入Android Studio时常见的编译错误及解决办法

现在最新的Android Studio对以前的基于Eclipse ADT的项目的支持已经很好了,一般情况只需要通过File-> Import 导入项目就行了,但有些项目编译时会出现问题,现在把这些问题汇总记录下: NinePatch(.9.png)图片的问题 如果某个图片命名成了.9.png,实际图片并不是Ninepatch格式的,或格式错误,会编译出错,解决办法是按Ninepatch格式修改图片 android studio 非法字符: \65279 Error:(1, 10) 错误: 需要c

boost 1.57 vs2013 编译

下载解压后, 管理员运行cmd.exe,  进入boost目录. 运行: bootstrap.bat 启动vs2013中的命令行注意区分32/64, 进入boost目录,  再次运行 bootstrap.bat 编译: bjam.exe stage --toolset=msvc-12.0  --stagedir="vc12_x64" link=static runtime-link=shared threading=multi debug release address-model=6

java_基础——在代码里编译.java文件

[本文介绍] 本文不是深入理解和使用java编译器,只是在代码里编译.java文件的helloWorld.这种技术还是蛮有意思的,说不定在将来的某些只能化项目会运用到!^_^ [编译最基础的流程] [java代码] 1 package com.zjm.www.test; 2 3 import java.io.IOException; 4 5 import javax.tools.JavaCompiler; 6 import javax.tools.JavaCompiler.Compilation

The method getTextContent()is undefined for...编译出错

在build项目中出现了The method getTextContent() is undefined for the type Element 的错误, 原因是 本来调用的那个方法应该是jdk下的那个包里的类,而在web项目里却调用了J2EE里的xml-apis.jar下的org.w3c.dom.(实际上要 调用的那个方法是在jdk下的rt.jar下的org.w3c.dom). 解决方法 尝试了很多次.后来把jdk和J2EE在项目里的位置调整了下就好 了,即让jdk在J2EE上面. buil

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF