Implement LWG#2761: 'basic_string should require that charT match traits::char_type'. Tests for string_view, too
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@297872 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -637,7 +637,7 @@ public:
|
||||
typedef basic_string __self;
|
||||
typedef basic_string_view<_CharT, _Traits> __self_view;
|
||||
typedef _Traits traits_type;
|
||||
typedef typename traits_type::char_type value_type;
|
||||
typedef _CharT value_type;
|
||||
typedef _Allocator allocator_type;
|
||||
typedef allocator_traits<allocator_type> __alloc_traits;
|
||||
typedef typename __alloc_traits::size_type size_type;
|
||||
@@ -648,7 +648,7 @@ public:
|
||||
typedef typename __alloc_traits::const_pointer const_pointer;
|
||||
|
||||
static_assert(is_pod<value_type>::value, "Character type of basic_string must be a POD");
|
||||
static_assert((is_same<_CharT, value_type>::value),
|
||||
static_assert((is_same<_CharT, typename traits_type::char_type>::value),
|
||||
"traits_type::char_type must be the same type as CharT");
|
||||
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
|
||||
"Allocator::value_type must be same type as value_type");
|
||||
|
||||
@@ -199,6 +199,10 @@ public:
|
||||
typedef ptrdiff_t difference_type;
|
||||
static _LIBCPP_CONSTEXPR const size_type npos = -1; // size_type(-1);
|
||||
|
||||
static_assert(is_pod<value_type>::value, "Character type of basic_string_view must be a POD");
|
||||
static_assert((is_same<_CharT, typename traits_type::char_type>::value),
|
||||
"traits_type::char_type must be the same type as CharT");
|
||||
|
||||
// [string.view.cons], construct/copy
|
||||
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
|
||||
basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}
|
||||
|
||||
Reference in New Issue
Block a user