Я использую std:: unique_ptr в этом фрагменте кода, который компилируется и запускается, как я ожидал.
std::stringstream out;
out << std::setw(3) << std::setfill('0') << i;
std::unique_ptr<std::string> s(new std::string(out.str()));
s->insert(s->end()-2, 1, '.');
return std::move(s);
Тем не менее, я получаю сообщения об ошибках из Eclipse CDT. В четвертой строке: метод "insert" не может быть разрешен, метод "конец" не может быть разрешен.
Раньше я также получал ошибки при появлении имени std:: unique_ptr. Это было решено установкой символа препроцессора __GXX_EXPERIMENTAL_CXX0X__
и перестройкой индекса, как описано в ответе на этот вопрос.
Есть ли способ сделать CDT понятным, что s имеет тип std::string * и что он должен выглядеть в std::string для s- > insert() и s- > end()?
PS: Я использую Eclipse 3.7.1 и CDT 8.0.0.201106081058
PS2: Мне бы хотелось опубликовать это как комментарий в вышеуказанном вопросе, но я не могу, по-видимому, потому, что я новый пользователь