整个错误消息是:
错误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中完成吗?