30 unsigned int hard_limit)
31 : m_grouping_criteria(grouping_criteria), m_group_factory(group_factory), m_hard_limit(hard_limit) {
43 unsigned int current_group_size = (matched_group !=
nullptr) ? matched_group->size() : 1;
48 if (current_group_size + (*group_it)->size() >
m_hard_limit) {
54 bool in_group =
false;
55 for (
auto&
s : **group_it) {
63 if (matched_group ==
nullptr) {
64 matched_group = *group_it;
65 matched_group->addSource(source);
67 matched_group->merge(**group_it);
68 groups_to_remove.emplace_back(group_it);
74 if (matched_group ==
nullptr) {
76 matched_group->addSource(source);
80 for (
auto& group_it : groups_to_remove) {
91 for (
auto& source : **group_it) {
100 for (
auto& group : groups_to_process) {
T emplace_back(T... args)