emplace_back不同的定义

时间:2018-01-02 02:48:59

标签: c++ mfc string-conversion c2664

我在visual studio的cpp项目中使用emplace_back函数,它可以正常工作。 Visual studio显示以下定义:

void std::vector<std::string>::emplace_back<CHAR(&)[1]>(CHAR(&_Val)[1])

然后,我将把我的cpp项目文件移动到MFC项目并在基于对话框的应用程序中使用它们。当我将代码移动到MFC项目时,emplace_back定义已更改为:

void std::vector<std::string>::emplace_back<WCHAR(&)[1]>(WCHAR(&_Val)[1])

在构建之后,它导致xmemory0中出现C2664错误:

Error   C2664
std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(const std::basic_string<char, std::char_traits<char>, std::allocator<char>> &)':
cannot convert argument 1 from 'WCHAR [1]' to 'std::initializer_list<_Elem>'

在输出中它说:

note: see reference to function template instantiation 'void std::vector<std::string,std::allocator<_Ty>>::emplace_back<WCHAR(&)[1]>(WCHAR (&)[1])' being compiled
1>          with
1>          [
1>              _Ty=std::string
1>          ]

我该如何处理这些问题? Visual Studio Project的属性中是否有任何选项可以更正?

由于

0 个答案:

没有答案