summaryrefslogtreecommitdiffstats
path: root/libcxx/include
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2017-01-09 18:07:34 +0000
committerMarshall Clow <mclow.lists@gmail.com>2017-01-09 18:07:34 +0000
commit8fd58a6be815937f4dbb2b90c175acf0a994545d (patch)
treed2b25bb8b9af473638ab4883f3d02e1dfd87a2cd /libcxx/include
parentc13a8e84d1fac50b99f34d419f53dbb2c5417012 (diff)
downloadbcm5719-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_view37
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
OpenPOWER on IntegriCloud