diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2017-01-09 18:07:34 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2017-01-09 18:07:34 +0000 |
| commit | 8fd58a6be815937f4dbb2b90c175acf0a994545d (patch) | |
| tree | d2b25bb8b9af473638ab4883f3d02e1dfd87a2cd /libcxx/include | |
| parent | c13a8e84d1fac50b99f34d419f53dbb2c5417012 (diff) | |
| download | bcm5719-llvm-8fd58a6be815937f4dbb2b90c175acf0a994545d.tar.gz bcm5719-llvm-8fd58a6be815937f4dbb2b90c175acf0a994545d.zip | |
Implement P0403R1 - 'Literal suffixes for basic_string_view'. Requires clang 4.0 (specifically, r290744)
llvm-svn: 291457
Diffstat (limited to 'libcxx/include')
| -rw-r--r-- | libcxx/include/string_view | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libcxx/include/string_view b/libcxx/include/string_view index f98bbb5345d..20a4e06cd4c 100644 --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -156,6 +156,11 @@ namespace std { template <> struct hash<u32string_view>; template <> struct hash<wstring_view>; + constexpr basic_string<char> operator "" s( const char *str, size_t len ); // C++17 + constexpr basic_string<wchar_t> operator "" s( const wchar_t *str, size_t len ); // C++17 + constexpr basic_string<char16_t> operator "" s( const char16_t *str, size_t len ); // C++17 + constexpr basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++17 + } // namespace std @@ -749,6 +754,38 @@ hash<basic_string_view<_CharT, _Traits> >::operator()( return __do_string_hash(__val.data(), __val.data() + __val.size()); } + +#if _LIBCPP_STD_VER > 11 +inline namespace literals +{ + inline namespace string_view_literals + { + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char> operator "" sv(const char *__str, size_t __len) + { + return basic_string_view<char> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<wchar_t> operator "" sv(const wchar_t *__str, size_t __len) + { + return basic_string_view<wchar_t> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char16_t> operator "" sv(const char16_t *__str, size_t __len) + { + return basic_string_view<char16_t> (__str, __len); + } + + inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + basic_string_view<char32_t> operator "" sv(const char32_t *__str, size_t __len) + { + return basic_string_view<char32_t> (__str, __len); + } + } +} +#endif _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STRING_VIEW |

