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:
parent
8b8ae10059
commit
65f1a76614
3 changed files with 6 additions and 11 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue