1

当我编译我的 VS 2010 C++ 项目时,以下段落在文件 c:\program files\microsoft visual studio 10.0\vc\include\utility 中引发错误

template<class _Other1,
    class _Other2>
    _Pair_base(_Other1&& _Val1, _Other2&& _Val2)
    : first(_STD forward<_Other1>(_Val1)),
        second(_STD forward<_Other2>(_Val2))
    {   // construct from moved values
    }

该错误之后是另一个错误 C2439 'std::_Pair_base..::first element could not be convert'

(所有错误都是从德语翻译的,所以在英语中听起来可能略有不同)

我正在尝试在 VS 2010 上编译 AxCrypt 项目,项目文件已自动从 VS 2008 转换(但我不知道它是否可以在那里工作,我只有 VS 2010)。

4

2 回答 2

1

问题出在使用的 Crypto++ 库中,在 VS 2010 上编译之前需要进行两次小修改。

a) pubkey.h line 243: 
return HashIdentifier(NULL, 0); 
-> 
return HashIdentifier((const byte*)NULL, 0); 
b) zdeflate.cpp line 389 
#if defined(_STDEXT_BEGIN) && !(defined(_MSC_VER) && _MSC_VER < 1400) 
&& !defined(_STLPORT_VERSION) 
-> 
#if defined(_STDEXT_BEGIN) && !(defined(_MSC_VER) && (_MSC_VER < 1400 
|| _MSC_VER >= 1600)) && !defined(_STLPORT_VERSION) 

更多详细信息: http ://groups.google.com/group/cryptopp-users/browse_thread/thread/714f3ec6287a50b1

于 2011-07-26T08:49:31.797 回答
0

此代码可以重现此错误:

pair<int,char*> aPair(10,20);

由于second我指定的类型是 ofchar*但我正在传递一个int,它不能转换为char*.

请注意,这是您可能遇到的错误的过度简化示例。可能您正在使用map.

于 2011-07-25T15:08:19.187 回答