mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-28 18:54:55 +00:00
Implement LWG#2761: 'basic_string should require that charT match traits::char_type'. Tests for string_view, too
llvm-svn: 297872
This commit is contained in:
parent
0d98b03b9f
commit
4069c2bc48
@ -637,7 +637,7 @@ public:
|
|||||||
typedef basic_string __self;
|
typedef basic_string __self;
|
||||||
typedef basic_string_view<_CharT, _Traits> __self_view;
|
typedef basic_string_view<_CharT, _Traits> __self_view;
|
||||||
typedef _Traits traits_type;
|
typedef _Traits traits_type;
|
||||||
typedef typename traits_type::char_type value_type;
|
typedef _CharT value_type;
|
||||||
typedef _Allocator allocator_type;
|
typedef _Allocator allocator_type;
|
||||||
typedef allocator_traits<allocator_type> __alloc_traits;
|
typedef allocator_traits<allocator_type> __alloc_traits;
|
||||||
typedef typename __alloc_traits::size_type size_type;
|
typedef typename __alloc_traits::size_type size_type;
|
||||||
@ -648,7 +648,7 @@ public:
|
|||||||
typedef typename __alloc_traits::const_pointer const_pointer;
|
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_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");
|
"traits_type::char_type must be the same type as CharT");
|
||||||
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
|
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
|
||||||
"Allocator::value_type must be same type as value_type");
|
"Allocator::value_type must be same type as value_type");
|
||||||
|
@ -199,6 +199,10 @@ public:
|
|||||||
typedef ptrdiff_t difference_type;
|
typedef ptrdiff_t difference_type;
|
||||||
static _LIBCPP_CONSTEXPR const size_type npos = -1; // size_type(-1);
|
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
|
// [string.view.cons], construct/copy
|
||||||
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
|
||||||
basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}
|
basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||||
|
// Source Licenses. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
// <string>
|
||||||
|
// The strings's value type must be the same as the traits's char_type
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::basic_string<char, std::char_traits<wchar_t>> s;
|
||||||
|
}
|
@ -7,6 +7,12 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
// <string_view>
|
||||||
|
// The string_views's value type must be the same as the traits's char_type
|
||||||
|
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
|
||||||
int main () {}
|
int main()
|
||||||
|
{
|
||||||
|
std::basic_string_view<char, std::char_traits<wchar_t>> s;
|
||||||
|
}
|
@ -463,7 +463,7 @@
|
|||||||
<tr><td><a href="http://wg21.link/LWG2853">2853</a></td><td>Possible inconsistency in specification of erase in [vector.modifiers]</td><td>Kona</td><td></td></tr>
|
<tr><td><a href="http://wg21.link/LWG2853">2853</a></td><td>Possible inconsistency in specification of erase in [vector.modifiers]</td><td>Kona</td><td></td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2855">2855</a></td><td>std::throw_with_nested("string_literal")</td><td>Kona</td><td></td></tr>
|
<tr><td><a href="http://wg21.link/LWG2855">2855</a></td><td>std::throw_with_nested("string_literal")</td><td>Kona</td><td></td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2857">2857</a></td><td>{variant,optional,any}::emplace should return the constructed value</td><td>Kona</td><td></td></tr>
|
<tr><td><a href="http://wg21.link/LWG2857">2857</a></td><td>{variant,optional,any}::emplace should return the constructed value</td><td>Kona</td><td></td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2861">2861</a></td><td>basic_string should require that charT match traits::char_type</td><td>Kona</td><td></td></tr>
|
<tr><td><a href="http://wg21.link/LWG2861">2861</a></td><td>basic_string should require that charT match traits::char_type</td><td>Kona</td><td>Clow</td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2866">2866</a></td><td>Incorrect derived classes constraints</td><td>Kona</td><td></td></tr>
|
<tr><td><a href="http://wg21.link/LWG2866">2866</a></td><td>Incorrect derived classes constraints</td><td>Kona</td><td></td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2868">2868</a></td><td>Missing specification of bad_any_cast::what()</td><td>Kona</td><td>Complete</td></tr>
|
<tr><td><a href="http://wg21.link/LWG2868">2868</a></td><td>Missing specification of bad_any_cast::what()</td><td>Kona</td><td>Complete</td></tr>
|
||||||
<tr><td><a href="http://wg21.link/LWG2872">2872</a></td><td>Add definition for direct-non-list-initialization</td><td>Kona</td><td>Complete</td></tr>
|
<tr><td><a href="http://wg21.link/LWG2872">2872</a></td><td>Add definition for direct-non-list-initialization</td><td>Kona</td><td>Complete</td></tr>
|
||||||
|
Loading…
Reference in New Issue
Block a user