1#ifndef NEFORCE_CORE_INTERFACE_ICHARACTER_HPP__
2#define NEFORCE_CORE_INTERFACE_ICHARACTER_HPP__
14NEFORCE_BEGIN_NAMESPACE__
30template <
typename T,
typename CharT>
31struct icharacter : ipackage<T, CharT> {
34 constexpr icharacter()
noexcept =
default;
35 NEFORCE_CONSTEXPR20 ~icharacter() =
default;
37 constexpr icharacter(
const icharacter&)
noexcept =
default;
38 constexpr icharacter(icharacter&&)
noexcept =
default;
40 constexpr icharacter& operator=(
const icharacter&)
noexcept =
default;
41 constexpr icharacter& operator=(icharacter&&)
noexcept =
default;
48 ipackage<T, CharT>(
value) {}
54 NEFORCE_NODISCARD
constexpr explicit operator bool() const noexcept {
72#ifdef NEFORCE_STANDARD_20
87 return T::to_u16string(obj);
96 return T::to_u32string(obj);
114template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
125template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
136template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
147template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
158template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
170 return _NEFORCE
move(x);
179template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
190template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
201template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
212template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
223template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
235 return _NEFORCE
move(x);
238#ifdef NEFORCE_STANDARD_20
246template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
257template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
268template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
279template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
290template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
302 return _NEFORCE
move(x);
313template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
324template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
335template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
346template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
357template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
369 return _NEFORCE
move(x);
378template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
389template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
400template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
411template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
422template <
typename CharT, enable_if_t<is_
character_v<CharT>,
int> = 0>
434 return _NEFORCE
move(x);
439NEFORCE_END_NAMESPACE__
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 view_type view() const noexcept
获取字符串视图
NEFORCE_INLINE17 constexpr bool is_character_v
is_character的便捷变量模板
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string< char16_t > u16string
UTF-16字符串
basic_string< char8_t > u8string
UTF-8字符串
basic_string< wchar_t > wstring
宽字符字符串
basic_string< char32_t > u32string
UTF-32字符串
NEFORCE_CONSTEXPR20 u8string to_u8string< char8_t >(u8string &&x)
char8_t类型右值UTF-8字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 u16string to_u16string< char16_t >(u16string &&x)
char16_t类型右值UTF-16字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 u8string to_u8string(const CharT &x)
将字符转换为UTF-8字符串
NEFORCE_CONSTEXPR20 wstring to_wstring(const CharT &x)
将字符转换为宽字符串
NEFORCE_CONSTEXPR20 u16string to_u16string(const CharT &x)
将字符转换为UTF-16字符串
NEFORCE_CONSTEXPR20 u32string to_u32string< char32_t >(u32string &&x)
char32_t类型右值UTF-32字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 string to_string< char >(string &&x)
char类型右值字符串特化 - 直接移动
NEFORCE_CONSTEXPR20 string to_string(const CharT &c)
将字符转换为普通字符串
NEFORCE_CONSTEXPR20 u32string to_u32string(const CharT &x)
将字符转换为UTF-32字符串
NEFORCE_CONSTEXPR20 wstring to_wstring< wchar_t >(wstring &&x)
wchar_t类型右值宽字符串特化 - 直接移动
static NEFORCE_CONSTEXPR20 wstring to_wstring(const basic_string_view< CharT > &obj)
转换为宽字符串
constexpr icharacter(CharT value) noexcept
构造函数
static NEFORCE_CONSTEXPR20 u32string to_u32string(const basic_string_view< CharT > &obj)
转换为UTF-32字符串
static NEFORCE_CONSTEXPR20 u16string to_u16string(const basic_string_view< CharT > &obj)
转换为UTF-16字符串
static NEFORCE_CONSTEXPR20 string to_string(const basic_string_view< CharT > &obj)
转换为普通字符串
static NEFORCE_CONSTEXPR20 u8string to_u8string(const basic_string_view< CharT > &obj)
转换为UTF-8字符串
NEFORCE_NODISCARD constexpr package_type value() const noexcept
获取数值