windows — ошибка компилятора для std :: string в проекте CE Builder XE3

Я работаю над приложением-службой в 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 Files\Embarcadero\RAD Studio\10.0\include\boost_1_39\boost\tr1\tr1\string
string(20): #include c:\program files\embarcadero\rad studio\10.0\include\../include/dinkumware/string
string(7): namespace std
string(140): parsing: string std::string + <char,char_traits<char>,allocator<char> >(string &&,const char *)

Я пытался добавить #include <utility> чуть выше #include <string> но все равно получаю ту же ошибку.
Вместо этого, если я разделю строку на две части следующим образом, она компилируется без ошибок.

string a = string("abcd");
a += "xyz";

ИЛИ ЖЕ

string b = string("abcd");
string a = b + "xyz";

Это непрактично, чтобы использовать этот обходной путь, поскольку я должен использовать существующий код, который становится большим без ошибок. Этот же код работает без ошибок в другом проекте XE3.
Есть идеи, как исправить эту ошибку?

1

Решение

Я нашел исправление в другом проекте. Установка значения «обратная совместимость» в значение false исправила ошибку.
Вы можете найти флажок в — Параметры проекта -> Компилятор C ++ -> Совместимость -> Общие.
Это было изначально установлено на true.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]