1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Tidy up parameter pack expansions

This commit is contained in:
reuk 2022-09-06 12:13:55 +01:00
parent 8b8ae10059
commit 65f1a76614
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
3 changed files with 6 additions and 11 deletions

View file

@ -120,9 +120,8 @@ namespace ID
template <typename Func, typename... Items>
constexpr void forEach (Func&& func, Items&&... items)
noexcept (noexcept (std::initializer_list<int> { (func (std::forward<Items> (items)), 0)... }))
{
(void) std::initializer_list<int> { ((void) func (std::forward<Items> (items)), 0)... };
(func (std::forward<Items> (items)), ...);
}
template <typename... Components>

View file

@ -38,7 +38,7 @@ namespace detail
template <typename Fn, typename Tuple, size_t... Ix>
constexpr void forEachInTuple (Fn&& fn, Tuple&& tuple, std::index_sequence<Ix...>)
{
(void) std::initializer_list<int> { ((void) fn (std::get<Ix> (tuple), std::integral_constant<size_t, Ix>()), 0)... };
(fn (std::get<Ix> (tuple), std::integral_constant<size_t, Ix>()), ...);
}
template <typename T>
@ -50,12 +50,8 @@ namespace detail
forEachInTuple (std::forward<Fn> (fn), std::forward<Tuple> (tuple), TupleIndexSequence<Tuple>{});
}
// This could be a template variable, but that code causes an internal compiler error in MSVC 19.00.24215
template <typename Context, size_t Ix>
struct UseContextDirectly
{
static constexpr auto value = ! Context::usesSeparateInputAndOutputBlocks() || Ix == 0;
};
inline constexpr auto useContextDirectly = ! Context::usesSeparateInputAndOutputBlocks() || Ix == 0;
}
#endif
@ -103,7 +99,7 @@ public:
}
private:
template <typename Context, typename Proc, size_t Ix, std::enable_if_t<! detail::UseContextDirectly<Context, Ix>::value, int> = 0>
template <typename Context, typename Proc, size_t Ix, std::enable_if_t<! detail::useContextDirectly<Context, Ix>, int> = 0>
void processOne (const Context& context, Proc& proc, std::integral_constant<size_t, Ix>) noexcept
{
jassert (context.getOutputBlock().getNumChannels() == context.getInputBlock().getNumChannels());
@ -113,7 +109,7 @@ private:
proc.process (replacingContext);
}
template <typename Context, typename Proc, size_t Ix, std::enable_if_t<detail::UseContextDirectly<Context, Ix>::value, int> = 0>
template <typename Context, typename Proc, size_t Ix, std::enable_if_t<detail::useContextDirectly<Context, Ix>, int> = 0>
void processOne (const Context& context, Proc& proc, std::integral_constant<size_t, Ix>) noexcept
{
auto contextCopy = context;

View file

@ -217,7 +217,7 @@ private:
template <typename Func, typename... Items>
static constexpr void forEach (Func&& func, Items&&... items)
{
(void) std::initializer_list<int> { ((void) func (std::forward<Items> (items)), 0)... };
(func (std::forward<Items> (items)), ...);
}
public: