From 6f362072d6cf1ce56d4d24982ae0730cd844dead Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 29 Nov 2016 12:50:18 +0100 Subject: Clang: Workaround missing std::make_reverse_iterator Because of the ancient compiler support we cannot use std::make_reverse_iterator. If we support newer compilers we can revert this patch. Change-Id: I9b20ab1e53a0e9784b0455eafbbfd966797ad91e Reviewed-by: Tim Jenssen --- .../clangrefactoringbackend/source/sourcerangeextractor.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/tools/clangrefactoringbackend/source/sourcerangeextractor.cpp') diff --git a/src/tools/clangrefactoringbackend/source/sourcerangeextractor.cpp b/src/tools/clangrefactoringbackend/source/sourcerangeextractor.cpp index 2a79260349..97036695e7 100644 --- a/src/tools/clangrefactoringbackend/source/sourcerangeextractor.cpp +++ b/src/tools/clangrefactoringbackend/source/sourcerangeextractor.cpp @@ -55,12 +55,20 @@ SourceRangeExtractor::SourceRangeExtractor(const clang::SourceManager &sourceMan { } +namespace { +template +std::reverse_iterator make_reverse_iterator(Iterator iterator) +{ + return std::reverse_iterator(iterator); +} +} + const char *SourceRangeExtractor::findStartOfLineInBuffer(llvm::StringRef buffer, uint startOffset) { auto beginText = buffer.begin() + startOffset; - auto reverseEnd = std::make_reverse_iterator(buffer.begin()); + auto reverseEnd = make_reverse_iterator(buffer.begin()); - auto found = std::find_if(std::make_reverse_iterator(beginText), + auto found = std::find_if(make_reverse_iterator(beginText), reverseEnd, [] (const char character) { return character == '\n' || character == '\r'; -- cgit v1.2.1