From 6d05ba7bfcd6f0ae1e1af100cd4aab1cdc0c3a8c Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 6 Dec 2017 17:25:24 +0100 Subject: Algorithm: Fix compilation with Xcode 7.2.1 Change-Id: I4413841adc00156a4c8877c00ba6929262ae8e8f Reviewed-by: Tobias Hunger --- src/libs/utils/algorithm.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/libs') diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index c0fb62b645f..7c0b73d2028 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -333,7 +333,7 @@ inserter(QSet &container) // different container types for input and output, e.g. transforming a QList into a QSet // function: -template class C, // result container type +template class C, // result container type template class SC, // input container type typename F, // function type typename... SCArgs, // Arguments to SC @@ -348,6 +348,22 @@ decltype(auto) transform(const SC &container, F function) return result; } +template class C, // result container type + template class SC, // input container type + typename F, // function type + typename... SCArgs, // Arguments to SC + typename Value = typename SC::value_type, + typename Result = std::decay_t>, + typename ResultContainer = C>> +Q_REQUIRED_RESULT +decltype(auto) transform(const SC &container, F function) +{ + ResultContainer result; + result.reserve(container.size()); + std::transform(std::begin(container), std::end(container), inserter(result), function); + return result; +} + // member function: template class C, // result container type template class SC, // input container type -- cgit v1.2.3