std :: forward编译错误VS2010

时间:2014-01-02 13:31:59

标签: c++ visual-studio-2010 templates compiler-errors std

我收到一个奇怪的错误,我无法理解(因为它来自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);

1 个答案:

答案 0 :(得分:0)

编译器似乎无法处理传入的字符串文字。我不知道它是VS2010使用的标准库实现中的错误,还是它是否符合标准的边缘情况(并且实际上应该会失败),但不管怎样,您可以通过从文字中明确创建std::string来解决它:

std::map<std::string, DWORD>::value_type(std::string("SOME_STRING"), 8192);