std::transform_reduce compatible for old version gcc
Hi @ahmadsamir
gcc 8.3.0 and libstdc++ does not support std::transform_reduce
:
[ 36%] Building CXX object src/filewidgets/CMakeFiles/KF5KIOFileWidgets.dir/kurlnavigator.cpp.o
/media/loongson/A2D47378D4734E13/repo/public/kio/src/filewidgets/kurlnavigator.cpp:769:42: error: no member named 'transform_reduce' in namespace 'std'
const int requiredButtonWidth = std::transform_reduce(m_navButtons.cbegin(), m_navButtons.cend(), 0, std::plus<>(), MinWidth);
~~~~~^
1 error generated.
Please compatible for old version gcc:
diff --git a/src/filewidgets/kurlnavigator.cpp b/src/filewidgets/kurlnavigator.cpp
index f95f0d31b..76a5d230d 100644
--- a/src/filewidgets/kurlnavigator.cpp
+++ b/src/filewidgets/kurlnavigator.cpp
@@ -766,7 +766,10 @@ void KUrlNavigatorPrivate::updateButtonVisibility()
return button->minimumWidth();
};
// Check whether buttons must be hidden at all...
- const int requiredButtonWidth = std::transform_reduce(m_navButtons.cbegin(), m_navButtons.cend(), 0, std::plus<>(), MinWidth);
+ int requiredButtonWidth = 0;
+ for (const KUrlNavigatorButton *button : std::as_const(m_navButtons)) {
+ requiredButtonWidth += button->minimumWidth();
+ }
if (requiredButtonWidth > availableWidth) {
// At least one button must be hidden. This implies that the
Thanks, Leslie Zhai