From b9cca49e1461e142f1f0946dcb930c7bf1517566 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 2 Sep 2018 08:15:39 +0200 Subject: [PATCH] lib/dbus/ReadIter: switch off -Wshadow on GCC<8 GCC 6.3.0 emits bogus warnings like this: In file included from src/lib/dbus/UDisks2.cxx:22:0: src/lib/dbus/ReadIter.hxx: In instantiation of 'ODBus::ReadMessageIter::ForEachProperty(F&&):: [with auto:2 = ODBus::ReadMessageIter; F = std::_Bind, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]': src/lib/dbus/ReadIter.hxx:102:6: required from 'ODBus::ReadMessageIter::ForEachRecurse(int, F&&):: [with auto:1 = ODBus::ReadMessageIter&; F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::]' src/lib/dbus/ReadIter.hxx:92:5: required from 'void ODBus::ReadMessageIter::ForEach(int, F&&) [with F = ODBus::ReadMessageIter::ForEachRecurse(int, F&&) [with F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::]::]' src/lib/dbus/ReadIter.hxx:101:3: required from 'void ODBus::ReadMessageIter::ForEachRecurse(int, F&&) [with F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::]' src/lib/dbus/ReadIter.hxx:114:3: required from 'void ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]' src/lib/dbus/UDisks2.cxx:71:30: required from here src/lib/dbus/ReadIter.hxx:114:53: error: declaration of 'ODBus::ReadMessageIter&& i' shadows a parameter [-Werror=shadow] ForEachRecurse(DBUS_TYPE_DICT_ENTRY, [&f](auto &&i){ ^ src/lib/dbus/ReadIter.hxx:101:33: note: shadowed declaration is here ForEach(arg_type, [&f](auto &&i){ ^ --- src/lib/dbus/ReadIter.hxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/lib/dbus/ReadIter.hxx b/src/lib/dbus/ReadIter.hxx index a8ea9d7d4..9284f2baa 100644 --- a/src/lib/dbus/ReadIter.hxx +++ b/src/lib/dbus/ReadIter.hxx @@ -34,6 +34,13 @@ #define ODBUS_READ_ITER_HXX #include "Iter.hxx" +#include "util/Compiler.h" + +#if GCC_OLDER_THAN(8,0) +/* switch off completely bogus shadow warnings in older GCC + versions */ +#pragma GCC diagnostic ignored "-Wshadow" +#endif namespace ODBus {