From Jason Turner

[char.traits.specializations.char32_t]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp1v7l0oxk/{from.md → to.md} +11 -11
tmp/tmp1v7l0oxk/{from.md → to.md} RENAMED
@@ -1,23 +1,23 @@
1
  #### `struct char_traits<char32_t>` <a id="char.traits.specializations.char32_t">[[char.traits.specializations.char32_t]]</a>
2
 
3
  ``` cpp
4
  namespace std {
5
  template<> struct char_traits<char32_t> {
6
- typedef char32_t char_type;
7
- typedef uint_least32_t int_type;
8
- typedef streamoff off_type;
9
- typedef u32streampos pos_type;
10
- typedef mbstate_t state_type;
11
 
12
- static void assign(char_type& c1, const char_type& c2) noexcept;
13
  static constexpr bool eq(char_type c1, char_type c2) noexcept;
14
  static constexpr bool lt(char_type c1, char_type c2) noexcept;
15
 
16
- static int compare(const char_type* s1, const char_type* s2, size_t n);
17
- static size_t length(const char_type* s);
18
- static const char_type* find(const char_type* s, size_t n,
19
  const char_type& a);
20
  static char_type* move(char_type* s1, const char_type* s2, size_t n);
21
  static char_type* copy(char_type* s1, const char_type* s2, size_t n);
22
  static char_type* assign(char_type* s, size_t n, char_type a);
23
 
@@ -29,12 +29,12 @@ namespace std {
29
  };
30
  }
31
  ```
32
 
33
  The type `u32streampos` shall be an *implementation-defined* type that
34
- satisfies the requirements for pos_type in  [[iostreams.limits.pos]] and
35
- [[iostream.forward]].
36
 
37
  The two-argument members `assign`, `eq`, and `lt` shall be defined
38
  identically to the built-in operators `=`, `==`, and `<` respectively.
39
 
40
  The member `eof()` shall return an *implementation-defined* constant
 
1
  #### `struct char_traits<char32_t>` <a id="char.traits.specializations.char32_t">[[char.traits.specializations.char32_t]]</a>
2
 
3
  ``` cpp
4
  namespace std {
5
  template<> struct char_traits<char32_t> {
6
+ using char_type = char32_t;
7
+ using int_type = uint_least32_t;
8
+ using off_type = streamoff;
9
+ using pos_type = u32streampos;
10
+ using state_type = mbstate_t;
11
 
12
+ static constexpr void assign(char_type& c1, const char_type& c2) noexcept;
13
  static constexpr bool eq(char_type c1, char_type c2) noexcept;
14
  static constexpr bool lt(char_type c1, char_type c2) noexcept;
15
 
16
+ static constexpr int compare(const char_type* s1, const char_type* s2, size_t n);
17
+ static constexpr size_t length(const char_type* s);
18
+ static constexpr const char_type* find(const char_type* s, size_t n,
19
  const char_type& a);
20
  static char_type* move(char_type* s1, const char_type* s2, size_t n);
21
  static char_type* copy(char_type* s1, const char_type* s2, size_t n);
22
  static char_type* assign(char_type* s, size_t n, char_type a);
23
 
 
29
  };
30
  }
31
  ```
32
 
33
  The type `u32streampos` shall be an *implementation-defined* type that
34
+ satisfies the requirements for `pos_type` in  [[iostreams.limits.pos]]
35
+ and [[iostream.forward]].
36
 
37
  The two-argument members `assign`, `eq`, and `lt` shall be defined
38
  identically to the built-in operators `=`, `==`, and `<` respectively.
39
 
40
  The member `eof()` shall return an *implementation-defined* constant