diff --git a/src/blackmisc/algorithm.h b/src/blackmisc/algorithm.h index 0571873e1..5c18be696 100644 --- a/src/blackmisc/algorithm.h +++ b/src/blackmisc/algorithm.h @@ -165,13 +165,8 @@ namespace BlackMisc template void tupleForEachPairImpl(T &&tuple, F &&visitor, std::index_sequence) { - // parameter pack swallow idiom - static_cast(std::initializer_list - { - //! \fixme C-style cast is needed due to a clang bug: https://bugs.llvm.org/show_bug.cgi?id=39375 - // cppcheck-suppress accessForwarded - ((void)(std::forward(visitor)(std::get(std::forward(tuple)), std::get(std::forward(tuple)))), 0)... - }); + // cppcheck-suppress accessForwarded + (static_cast(std::forward(visitor)(std::get(std::forward(tuple)), std::get(std::forward(tuple)))), ...); } } diff --git a/src/blackmisc/metaclass.h b/src/blackmisc/metaclass.h index a2866b0e1..0db0a868d 100644 --- a/src/blackmisc/metaclass.h +++ b/src/blackmisc/metaclass.h @@ -280,12 +280,7 @@ namespace BlackMisc template static void forEachMember(F &&visitor) { - // parameter pack swallow idiom - static_cast(std::initializer_list - { - //! \fixme C-style cast is needed due to a clang bug: https://bugs.llvm.org/show_bug.cgi?id=39375 - ((void)(std::forward(visitor)(members().at(index()))), 0)... - }); + (static_cast(std::forward(visitor)(members().at(index()))), ...); } private: diff --git a/src/blackmisc/predicates.h b/src/blackmisc/predicates.h index 021bb9331..d97f73fd7 100644 --- a/src/blackmisc/predicates.h +++ b/src/blackmisc/predicates.h @@ -96,7 +96,7 @@ namespace BlackMisc { return [vs...](const auto &a, const auto &b) { - return std::forward_as_tuple((a.*vs)()...) == std::forward_as_tuple((b.*vs)()...); + return (((a.*vs)() == (b.*vs)()) && ...); }; }