// -*-c++-*- // vim: set ft=cpp: /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmext_algorithm #define cmext_algorithm #include #include #include #include #include #include #include namespace cm { template void append(std::vector>& v, std::vector>&& r) { std::transform(r.begin(), r.end(), std::back_inserter(v), [](std::unique_ptr& item) { return std::move(item); }); r.clear(); } template void append(std::vector& v, std::vector> const& r) { std::transform(r.begin(), r.end(), std::back_inserter(v), [](const std::unique_ptr& item) { return item.get(); }); } template ::value, int> = 0> void append(std::vector& v, InputIt first, InputIt last) { v.insert(v.end(), first, last); } template ::value, int> = 0> void append(std::vector& v, Range const& r) { v.insert(v.end(), r.begin(), r.end()); } } // namespace cm #endif