错误C2665:' std :: _ Copy_impl' Boost图书馆

时间:2013-12-28 06:39:14

标签: c++ visual-studio-2010 visual-studio-2012 boost compiler-errors

整个错误消息是:

  

错误C2665:'std :: _ Copy_impl':2个重载中没有一个可以转换所有参数类型(xutility)

您可以下载demo project,其编写仅用于在Visual Studio 2010或2012中的调试模式下编译期间演示此问题。

我知道在调试模式下使用Visual C ++ 2010时,它似乎是Boost的长期错误[1]。实际上,通过大量搜索,可以通过将BOOST_PATH/boost/multi_array/view.hpp修改为:

来解决这个问题
multi_array_view& operator=(const multi_array_view& other) {
    if (&other != this) {
        // make sure the dimensions agree
        BOOST_ASSERT(other.num_dimensions() == this->num_dimensions());
        BOOST_ASSERT(std::equal(other.shape(),
            other.shape()+this->num_dimensions(),
            this->shape()));

#if _MSC_VER >= 1600
        auto
            iterThis = begin();
        auto
            iterOther = other.begin();
        for (; iterThis != end(); ++iterThis, ++iterOther)
            *iterThis = *iterOther;
#else
        // iterator-based copy
        std::copy(other.begin(),other.end(),begin());
#endif
    }
    return *this;
}

但是,这仅适用于VS2010。即使对于最新的v1.55.0,VS2012在调试模式下仍然存在问题。我的最新项目需要在VS2012中完成吗?

0 个答案:

没有答案