32 void remove(std::vector<T> &vec, T &item) {
33 auto new_end = std::remove_if(vec.begin(), vec.end(), [item](
const std::unique_ptr<T> &l) {
34 return item == l.get();
36 vec.erase(new_end, vec.end());
39 template <
typename TContainer>
40 void vectorForward(std::unique_ptr<TContainer> &) {
43 template <
typename TContainer,
typename TCurrent,
typename... TNext>
44 void vectorForward(std::unique_ptr<TContainer> &container, TCurrent &&t, TNext &&... args) {
45 container->push_back(std::move(t));
46 vectorForward(container, args...);
49 template <
typename CONTAINER,
typename TCURRENT,
typename... TNEXT>
50 std::unique_ptr<CONTAINER> make_unique_container(TCURRENT &&t, TNEXT &&... args) {
51 std::unique_ptr<CONTAINER> container = std::make_unique<CONTAINER>();
52 container->push_back(std::move(t));
53 vectorForward<CONTAINER>(container, args...);
54 return std::move(container);
57 #if (!defined UINT_MAX) 58 # define UINT_MAX (~((unsigned int)0)) 70 int fopen_s(FILE **f,
const char *name,
const char *mode);