aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorCurtis J Bezault <curtbezault@gmail.com>2019-04-09 15:22:49 -0700
committerGitHub <noreply@github.com>2019-04-09 15:22:49 -0700
commitb1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea (patch)
tree410e6538419953205c2427a86dd2b7773865a2a5 /toolsrc/include
parent8a1c4fce3022418e51d29795a845494587849ad5 (diff)
parent79682317c9e087dc1d1ae450e3edd03b0fa0cc59 (diff)
downloadvcpkg-b1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea.tar.gz
vcpkg-b1b7ec5c0be3a3b00071b8fccc0a5ec90a8e78ea.zip
Merge branch 'master' into master
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/base/strings.h26
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)
{