我编码了以下内容:
#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;
}
编译,输出为“A”。即使该函数采用const
引用,to_upper
也会对其进行修改。
我正在使用英特尔的16.0.2编译器
在其他编译器(如g ++)上,此代码会引发编译错误。
答案 0 :(得分:4)
根据a post on Intel's developer zone,它是英特尔编译器的一个错误,已在版本16.0.3(更新3)中修复。
引用 Judith Ward(英特尔)(02/05/2016):
根本问题是我们的编译器抑制了来自系统头的自由裁量错误(如string和stl_algo.h)。
我们需要对像这样的实际有用的错误(即指示潜在的运行时问题)做一个例外。这最近已经由另一个用户提交为DPD200380931,我们刚刚修复了它并确认修复了这个问题。此修复程序未使16.0更新2的代码截止,但将在16.0更新3中。