c++ builder XE3 项目中的 std::string 的编译器错误
Compiler error for std::string in c++ builder XE3 project
我正在用 c++ builder XE3 开发一个服务应用程序。如果我添加此行,我会收到 std::string 的编译器错误:
string a = string("abcd") + "xyz";
错误输出如下:
[bcc32 Error] string(141): E2285 Could not find a match for 'move<_Ty>(string)'
Full parser context
string(140): decision to instantiate: string std::string + <char,char_traits<char>,allocator<char> >(string &&,const char *)
--- Resetting parser context for instantiation...
svcmain.cpp(21): #include C:Program FilesEmbarcaderoRAD Studio10.0includeboost_1_39boosttr1tr1string
string(20): #include c:program filesembarcaderorad studio10.0include../include/dinkumware/string
string(7): namespace std
string(140): parsing: string std::string + <char,char_traits<char>,allocator<char> >(string &&,const char *)
我试图在#include <string>
上方添加#include <utility>
但仍然遇到相同的错误。相反,如果我按如下方式将行一分为二,它会编译而没有错误。
string a = string("abcd");
a += "xyz";
或
string b = string("abcd");
string a = b + "xyz";
使用此解决方法是不切实际的,因为我必须使用现有代码,这些代码没有错误。相同的代码在其他 XE3 项目中没有错误。任何想法如何解决此错误?
我在另一个项目中找到了修复程序。将"向后兼容性"选项设置为 false 修复了错误。您可以在 - 项目选项 -> C++ 编译器 -> 兼容性 -> 常规 中找到该复选框。这最初设置为 true。
相关文章:
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- 为什么编译器不能优化这个 std::string 构造?
- 使用constexpr c-string作为编译器错误消息
- 想要断言 std::string,但编译器认为是布尔值
- 为什么编译器在某些情况下只能隐式地将 char * 转换为 std::string
- 为什么构造 std::string(0) 不会发出编译器警告
- C++,实现函数"int next(std::string param)"时出现奇怪的编译器错误
- 为什么会出现这个编译器错误?- 调用'std::basic_ofstream<char>::open(std::string&)'没有匹配功能
- 提高编译器中 std::string 的效率
- "string_literal"解析为布尔值,但不解析为 std::string,当编译器选择函数的重载版本时
- c++ builder XE3 项目中的 std::string 的编译器错误
- 为什么编译器认为传递的是 std::string&而不是 std:string
- 为什么编译器不能优化std::string concat
- 类中的编译器错误,数据类型为 typedef map<std::string,std::p air<std::string,vector<int>>> MapPai
- std::move of string literal - 哪个编译器是正确的
- 为什么编译器告诉我<string>向量没有声明?
- Intel c++编译器- const string是可修改的
- std::string在Visual Studio 2010中给出编译器警告