diff options
| author | Curtis J Bezault <curtbezault@gmail.com> | 2019-04-09 15:22:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-09 15:22:49 -0700 |
| commit | b1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea (patch) | |
| tree | 410e6538419953205c2427a86dd2b7773865a2a5 /toolsrc/include | |
| parent | 8a1c4fce3022418e51d29795a845494587849ad5 (diff) | |
| parent | 79682317c9e087dc1d1ae450e3edd03b0fa0cc59 (diff) | |
| download | vcpkg-b1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea.tar.gz vcpkg-b1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea.zip | |
Merge branch 'master' into master
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/vcpkg/base/strings.h | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/toolsrc/include/vcpkg/base/strings.h b/toolsrc/include/vcpkg/base/strings.h index 16876cf5c..3165dc8ee 100644 --- a/toolsrc/include/vcpkg/base/strings.h +++ b/toolsrc/include/vcpkg/base/strings.h @@ -112,12 +112,10 @@ namespace vcpkg::Strings bool ends_with(StringView s, StringView pattern); bool starts_with(StringView s, StringView pattern); - template<class Container, class Transformer> - std::string join(const char* delimiter, const Container& v, Transformer transformer) + template<class InputIterator, class Transformer> + std::string join(const char* delimiter, InputIterator begin, InputIterator end, + Transformer transformer) { - const auto begin = v.begin(); - const auto end = v.end(); - if (begin == end) { return std::string(); @@ -133,6 +131,24 @@ namespace vcpkg::Strings return output; } + + template<class Container, class Transformer> + std::string join(const char* delimiter, const Container& v, Transformer transformer) + { + const auto begin = v.begin(); + const auto end = v.end(); + + return join(delimiter, begin, end, transformer); + } + + template<class InputIterator> + std::string join(const char* delimiter, InputIterator begin, InputIterator end) + { + using Element = decltype(*begin); + return join(delimiter, begin, end, + [](const Element& x) -> const Element& { return x; }); + } + template<class Container> std::string join(const char* delimiter, const Container& v) { |
