Я кодируются следующим образом:Intel C++ Compiler - Const строка изменяемые
#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
using namespace std;
string encode(const string& word) {
boost::algorithm::to_upper(word);
return word;
}
int main() {
string word = "a";
string word1 = encode(word);
cout << word << endl;
}
компилируется, а выход "А". Даже если функция принимает const
ссылку, to_upper
изменяет ее. Я использую компилятор Intel 16.0.2
В других компиляторах (например, g ++) этот код генерирует ошибку компиляции.
Вы уверены, что компилируется? Какая форсированная версия и компилятор? – juanchopanza
В gcc 5.4 это дает ошибку для вызова 'to_upper'. –
Я использую boost 1.61.0 и компилятор Intel 16.0.2, и он точно компилируется. Теперь я тестировал его также с gcc. С gcc он терпит неудачу во время компиляции. Итак, значит ли это, что есть проблема с компилятором Intel? – mftrmbn