diff --git a/llvm/include/llvm/Support/JSON.h b/llvm/include/llvm/Support/JSON.h --- a/llvm/include/llvm/Support/JSON.h +++ b/llvm/include/llvm/Support/JSON.h @@ -193,10 +193,9 @@ void push_back(Value &&E); template void emplace_back(Args &&...A); void pop_back(); - // FIXME: insert() takes const_iterator since C++11, old libstdc++ disagrees. - iterator insert(iterator P, const Value &E); - iterator insert(iterator P, Value &&E); - template iterator insert(iterator P, It A, It Z); + iterator insert(const_iterator P, const Value &E); + iterator insert(const_iterator P, Value &&E); + template iterator insert(const_iterator P, It A, It Z); template iterator emplace(const_iterator P, Args &&...A); friend bool operator==(const Array &L, const Array &R); @@ -535,14 +534,14 @@ V.emplace_back(std::forward(A)...); } inline void Array::pop_back() { V.pop_back(); } -inline typename Array::iterator Array::insert(iterator P, const Value &E) { +inline typename Array::iterator Array::insert(const_iterator P, const Value &E) { return V.insert(P, E); } -inline typename Array::iterator Array::insert(iterator P, Value &&E) { +inline typename Array::iterator Array::insert(const_iterator P, Value &&E) { return V.insert(P, std::move(E)); } template -inline typename Array::iterator Array::insert(iterator P, It A, It Z) { +inline typename Array::iterator Array::insert(const_iterator P, It A, It Z) { return V.insert(P, A, Z); } template