АР
p.s. (*this).Bar() =)
Size: a a a
АР
АР
AN
AN
CD
CD
CD
ST
template<size_t Index = 0, typename TTuple, size_t Size = std::tuple_size_v<std::remove_reference_t<TTuple>>,
typename TCallable, typename... TArgs>
void for_each(TTuple &&tuple, TCallable &&callable, TArgs &&... args) {
if constexpr (Index < Size) {
std::invoke(callable, args..., std::get<Index>(tuple));
if constexpr (Index + 1 < Size) {
for_each<Index + 1>(std::forward<TTuple>(tuple), std::forward<TCallable>(callable), std::forward<TArgs>(args)...);
}
}
}FZ
template<size_t Index = 0, typename TTuple, size_t Size = std::tuple_size_v<std::remove_reference_t<TTuple>>,
typename TCallable, typename... TArgs>
void for_each(TTuple &&tuple, TCallable &&callable, TArgs &&... args) {
if constexpr (Index < Size) {
std::invoke(callable, args..., std::get<Index>(tuple));
if constexpr (Index + 1 < Size) {
for_each<Index + 1>(std::forward<TTuple>(tuple), std::forward<TCallable>(callable), std::forward<TArgs>(args)...);
}
}
}brigand::for_each<brigand::reverse<std::tuple<....>>>(...), можно посмотреть https://github.com/edouarda/brigand/
FZ
template<size_t Index = 0, typename TTuple, size_t Size = std::tuple_size_v<std::remove_reference_t<TTuple>>,
typename TCallable, typename... TArgs>
void for_each(TTuple &&tuple, TCallable &&callable, TArgs &&... args) {
if constexpr (Index < Size) {
std::invoke(callable, args..., std::get<Index>(tuple));
if constexpr (Index + 1 < Size) {
for_each<Index + 1>(std::forward<TTuple>(tuple), std::forward<TCallable>(callable), std::forward<TArgs>(args)...);
}
}
}AN
CD
AN
..
AN
AN
..
IZ
AP
AP