aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKris <kristc@gmail.com>2016-09-07 22:16:19 +0100
committerKris <kristc@gmail.com>2016-09-07 22:16:19 +0100
commitd5847ceef0cd0f3ad8f05c89b150aafca0e1cd68 (patch)
tree3efd7c4ddacac6de9c44bdac235a574c0dbab7c5
parent7d083fd08cb5fbf1e5e953adf72c2c38c258c888 (diff)
parentd23f4d931c98c074ebe90bebf609c397589bf7b9 (diff)
downloadplatform_external_Microsoft-GSL-d5847ceef0cd0f3ad8f05c89b150aafca0e1cd68.tar.gz
platform_external_Microsoft-GSL-d5847ceef0cd0f3ad8f05c89b150aafca0e1cd68.tar.bz2
platform_external_Microsoft-GSL-d5847ceef0cd0f3ad8f05c89b150aafca0e1cd68.zip
Merge remote-tracking branch 'Microsoft/master'
-rw-r--r--gsl/gsl_byte2
-rw-r--r--gsl/string_span10
-rw-r--r--tests/string_span_tests.cpp12
3 files changed, 23 insertions, 1 deletions
diff --git a/gsl/gsl_byte b/gsl/gsl_byte
index f502ab0..09592eb 100644
--- a/gsl/gsl_byte
+++ b/gsl/gsl_byte
@@ -75,7 +75,7 @@ constexpr byte& operator|=(byte& l, byte r) noexcept
constexpr byte operator|(byte l, byte r) noexcept
{
- return byte(static_cast<unsigned char>(l) + static_cast<unsigned char>(r));
+ return byte(static_cast<unsigned char>(l) | static_cast<unsigned char>(r));
}
constexpr byte& operator&=(byte& l, byte r) noexcept
diff --git a/gsl/string_span b/gsl/string_span
index 8e60183..cd49998 100644
--- a/gsl/string_span
+++ b/gsl/string_span
@@ -486,6 +486,16 @@ inline std::wstring to_string(wstring_span<> view)
#endif
+template <typename CharT,
+ typename Traits = typename std::char_traits<CharT>,
+ typename Allocator = std::allocator<CharT>,
+ typename gCharT,
+ std::ptrdiff_t Extent>
+std::basic_string<CharT, Traits, Allocator> to_basic_string(basic_string_span<gCharT, Extent> view)
+{
+ return {view.data(), static_cast<size_t>(view.length())};
+}
+
// zero-terminated string span, used to convert
// zero-terminated spans to legacy strings
template <typename CharT, std::ptrdiff_t Extent = dynamic_extent>
diff --git a/tests/string_span_tests.cpp b/tests/string_span_tests.cpp
index 7e623f3..a1cfe79 100644
--- a/tests/string_span_tests.cpp
+++ b/tests/string_span_tests.cpp
@@ -114,6 +114,18 @@ SUITE(string_span_tests)
CHECK(s2.length() == 5);
}
+ TEST(TestToBasicString)
+ {
+ auto s = gsl::to_basic_string<char,std::char_traits<char>,::std::allocator<char>>(cstring_span<>{});
+ CHECK(s.length() == 0);
+
+ char stack_string[] = "Hello";
+ cstring_span<> v = ensure_z(stack_string);
+ auto s2 = gsl::to_basic_string<char,std::char_traits<char>,::std::allocator<char>>(v);
+ CHECK(static_cast<cstring_span<>::index_type>(s2.length()) == v.length());
+ CHECK(s2.length() == 5);
+ }
+
TEST(EqualityAndImplicitConstructors)
{
{