13 template<
typename ElementType>
14 using set_t = std::vector<ElementType>;
16 template<
typename ElementType>
20 template<
typename ElementType>
26 permutations.emplace_back(R);
30 size_t size = L.size();
33 R.emplace_back(ElementType{});
44 auto CreateCleanup = [] (
auto& obj)
48 using obj_t = std::remove_reference_t<
decltype(obj)>;
52 CleanUpPlease(obj_t& o): m_obj{o} { }
62 return CleanUpPlease{ obj };
69 auto r_pop_back = [&R](
auto ptr)
71 cout <<
"Wow, popping again "<<
nl;
75 using r_type_t = std::remove_reference_t<
decltype(R)>;
78 std::unique_ptr<r_type_t,
decltype(r_pop_back)>
79 clean_up(&R, r_pop_back);
81 for(
size_t i_th = 0; i_th < size; ++i_th)
87 copied_L.erase(copied_L.begin()+i_th);
103 template<
typename ElementType>
114 for(
size_t i = 0; i < permutations.size(); ++i)
116 for(
size_t j= 0; j < permutations[i].size(); ++j)
118 cout << permutations[i][j] <<
", ";
130 permu::test_enum_permutations<int>();
set_t< set_t< ElementType > > set_of_sets_t
std::vector< ElementType > set_t
void test_enum_permutations()
void enum_permu(set_of_sets_t< ElementType > &permutations, const set_t< ElementType > &L, set_t< ElementType > &R)