C++ named requirements: CharTraits
From cppreference.com
                    
                                        
                    
                    
                                                            
                    CharTraits is a traits class that abstracts basic character and string operations for a given character type. Most standard library string and input/output classes require a CharTraits template type parameter alongside a corresponding character template type parameter.
Requirements
No operation listed below on CharTraits may throw an exception.
Given
- CharT, a character type
 - X, a CharTraits type for type CharT
 - c, d, values of type CharT
 - p, q, values of type const CharT*
 - s, a value of type CharT*
 - n, i, j, values of type std::size_t
 - e, f, values of type X::int_type
 - pos, a value of type X::pos_type
 - state, a value of type X::state_type
 - r, an lvalue of type CharT
 
| expression | return type | semantics | complexity | 
|---|---|---|---|
| X::char_type | CharT | Used to refer to the character type | Compile-time | 
| X::int_type | A type that can hold all valid values of X::char_type plus X::eof() | Compile-time | |
| X::off_type | Invokes implementation-defined behaviour if not std::streamoff when X is used as the traits template parameter in input/output classes. | Compile-time | |
| X::pos_type | 
  | 
Compile-time | |
| X::state_type | Destructible, CopyAssignable, CopyConstructible, DefaultConstructible | Compile-time | |
| X::eq(c,d) | bool | Returns: whether c is to be treated as equal to d | Constant | 
| X::lt(c,d) | bool | Returns: whether c is to be treated as less than d | Constant | 
| X::compare(p,q,n) | int |  Returns:
  | 
Linear | 
| X::length(p) | std::size_t | Returns: the smallest i such that X::eq(p[i], CharT()) is true | Linear | 
| X::find(p,n,c) | const X::char_type* |  Returns:
  | 
Linear | 
| X::move(s,p,n) | X::char_type* | 
  | 
Linear | 
| X::copy(s,p,n) | X::char_type* | 
  | 
Linear | 
| X::assign(r,d) | (Not used) | Assigns r = d | Constant | 
| X::assign(s,n,c) | X::char_type* | 
  | 
Linear | 
| X::not_eof(e) | X::int_type |  Returns:
  | 
Constant | 
| X::to_char_type(e) | X::char_type |  Returns:
  | 
Constant | 
| X::to_int_type(c) | X::int_type | Returns: some value e, constrained by the definitions of X::to_char_type and X::eq_int_type | Constant | 
| X::eq_int_type(e,f) | bool | 
  | 
Constant | 
| X::eof() | X::int_type | Returns: a value e such that X::eq_int_type(e, X::to_int_type(c)) is false for all values c | Constant | 
Standard library
CharTraits is required by the following standard library class templates as a template type parameter:
 Strings | |
|    stores and manipulates sequences of characters  (class template)  | |
|    (C++17)  | 
   read-only string view   (class template)  | 
 Streams | |
|    manages an arbitrary stream buffer  (class template)  | |
|    wraps a given abstract device (std::basic_streambuf) and provides high-level input interface (class template)  | |
|    implements high-level file stream input operations  (class template)  | |
|    implements high-level string stream input operations  (class template)  | |
|    (C++23)  | 
   implements fixed character buffer input operations  (class template)  | 
|    wraps a given abstract device (std::basic_streambuf) and provides high-level output interface (class template)  | |
|    implements high-level file stream output operations  (class template)  | |
|    implements high-level string stream output operations  (class template)  | |
|    (C++20)  | 
   synchronized output stream wrapper  (class template)  | 
|    (C++23)  | 
   implements fixed character buffer output operations  (class template)  | 
|    wraps a given abstract device (std::basic_streambuf) and provides high-level input/output interface (class template)  | |
|    implements high-level file stream input/output operations  (class template)  | |
|    implements high-level string stream input/output operations  (class template)  | |
|    (C++23)  | 
   implements fixed character buffer input/output operations  (class template)  | 
 Stream iterators | |
|    input iterator that reads from std::basic_istream  (class template)  | |
|    output iterator that writes to std::basic_ostream  (class template)  | |
 Stream buffers | |
|    abstracts a raw device  (class template)  | |
|    implements raw file device  (class template)  | |
|    implements raw string device  (class template)  | |
|    (C++20)  | 
   synchronized output device wrapper  (class template)  | 
|    (C++23)  | 
   implements raw fixed character buffer device  (class template)  | 
 Stream buffer iterators | |
|    input iterator that reads from std::basic_streambuf  (class template)  | |
|    output iterator that writes to std::basic_streambuf  (class template)  | |
CharTraits is satisfied by the following standard library classes:
|   template<> class char_traits<char>; template<> class char_traits<wchar_t>;  | 
  (since C++20) (since C++11) (since C++11)  | 
|