diff options
author | Kris <kristc@gmail.com> | 2016-09-07 22:16:19 +0100 |
---|---|---|
committer | Kris <kristc@gmail.com> | 2016-09-07 22:16:19 +0100 |
commit | d5847ceef0cd0f3ad8f05c89b150aafca0e1cd68 (patch) | |
tree | 3efd7c4ddacac6de9c44bdac235a574c0dbab7c5 | |
parent | 7d083fd08cb5fbf1e5e953adf72c2c38c258c888 (diff) | |
parent | d23f4d931c98c074ebe90bebf609c397589bf7b9 (diff) | |
download | platform_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_byte | 2 | ||||
-rw-r--r-- | gsl/string_span | 10 | ||||
-rw-r--r-- | tests/string_span_tests.cpp | 12 |
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) { { |