我收到一个奇怪的错误,我无法理解(因为它来自VS的原生文件)来自文件 utility
(它位于 {{1} ),它是用我的Visual C ++ 10.0项目编译的。
'std :: forward':无法将参数1从''转换为'&'
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\
任何人都可以解释这个错误吗?在我看来这很奇怪,但我对C ++完全不熟悉,我不明白如何解决它。
错误似乎在这里:
template<class _Other1, class _Other2>
pair(_Other1&& _Val1, _Other2&& _Val2)
: _Mybase(_STD forward<_Other1>(_Val1), _STD forward<_Other2>(_Val2))
{ // construct from moved values
}
汇编报告了这个:
std::map<std::string, DWORD>::value_type("SOME_STRING", 8192);
答案 0 :(得分:0)
编译器似乎无法处理传入的字符串文字。我不知道它是VS2010使用的标准库实现中的错误,还是它是否符合标准的边缘情况(并且实际上应该会失败),但不管怎样,您可以通过从文字中明确创建std::string
来解决它:
std::map<std::string, DWORD>::value_type(std::string("SOME_STRING"), 8192);