[libcxx-commits] [libcxx] Implement P1885R12: `<text_encoding>` header (PR #141312)
via libcxx-commits
libcxx-commits at lists.llvm.org
Fri May 23 19:46:52 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions ,inc,h,cpp -- libcxx/include/__text_encoding/text_encoding.h libcxx/include/text_encoding libcxx/src/text_encoding.cpp libcxx/test/std/language.support/support.limits/support.limits.general/text_encoding.version.compile.pass.cpp libcxx/test/std/localization/locales/locale/locale.members/encoding.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.ctor/default.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.ctor/id.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.ctor/string_view.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.id.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/aliases.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/environment.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/literal.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/begin.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/empty.pass.cpp libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/front.pass.cpp libcxx/test/support/test_text_encoding.h libcxx/include/__locale libcxx/include/version libcxx/modules/std/text_encoding.inc libcxx/src/locale.cpp libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index 4da3f38ac..6f6091d08 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -103,9 +103,9 @@ public:
// locale operations:
string name() const;
-
+
# if _LIBCPP_STD_VER >= 26 && __CHAR_BIT__ == 8
- text_encoding encoding() const;
+ text_encoding encoding() const;
# endif // _LIBCPP_STD_VER >= 26
bool operator==(const locale&) const;
diff --git a/libcxx/include/__text_encoding/text_encoding.h b/libcxx/include/__text_encoding/text_encoding.h
index 93d0ae2ab..5edc631f7 100644
--- a/libcxx/include/__text_encoding/text_encoding.h
+++ b/libcxx/include/__text_encoding/text_encoding.h
@@ -18,22 +18,22 @@
#if _LIBCPP_HAS_LOCALIZATION
-#include <__algorithm/copy_n.h>
-#include <__algorithm/lower_bound.h>
-#include <__algorithm/min.h>
-#include <__functional/hash.h>
-#include <__iterator/iterator_traits.h>
-#include <__locale_dir/locale_base_api.h>
-#include <__ranges/view_interface.h>
-#include <__string/char_traits.h>
-#include <__utility/unreachable.h>
-#include <cstdint>
-#include <string_view>
+# include <__algorithm/copy_n.h>
+# include <__algorithm/lower_bound.h>
+# include <__algorithm/min.h>
+# include <__functional/hash.h>
+# include <__iterator/iterator_traits.h>
+# include <__locale_dir/locale_base_api.h>
+# include <__ranges/view_interface.h>
+# include <__string/char_traits.h>
+# include <__utility/unreachable.h>
+# include <cstdint>
+# include <string_view>
_LIBCPP_PUSH_MACROS
-#include <__undef_macros>
+# include <__undef_macros>
-#if _LIBCPP_STD_VER >= 26
+# if _LIBCPP_STD_VER >= 26
_LIBCPP_BEGIN_NAMESPACE_STD
struct _LIBCPP_EXPORTED_FROM_ABI text_encoding {
@@ -340,12 +340,12 @@ public:
constexpr aliases_view(const __encoding_data* __d) : __view_data_(__d) {}
struct __end_sentinel {};
struct __iterator {
- using value_type = const char*;
- using reference = const char*;
- using difference_type = ptrdiff_t;
+ using value_type = const char*;
+ using reference = const char*;
+ using difference_type = ptrdiff_t;
+
+ _LIBCPP_HIDE_FROM_ABI constexpr __iterator() noexcept = default;
- _LIBCPP_HIDE_FROM_ABI constexpr __iterator() noexcept = default;
-
_LIBCPP_HIDE_FROM_ABI constexpr value_type operator*() const {
if (__can_dereference())
return __data_->__name;
@@ -368,19 +368,18 @@ public:
}
_LIBCPP_HIDE_FROM_ABI friend constexpr __iterator operator-(__iterator __it, difference_type __n) {
- __it -= __n;
+ __it -= __n;
return __it;
}
- _LIBCPP_HIDE_FROM_ABI constexpr difference_type operator-(const __iterator& __other) const
- {
- if(__other.__mib_rep_ == __mib_rep_)
+ _LIBCPP_HIDE_FROM_ABI constexpr difference_type operator-(const __iterator& __other) const {
+ if (__other.__mib_rep_ == __mib_rep_)
return __mib_rep_ - __other.__mib_rep_;
std::unreachable();
}
_LIBCPP_HIDE_FROM_ABI friend constexpr __iterator operator-(difference_type __n, __iterator& __it) {
- __it -= __n;
+ __it -= __n;
return __it;
}
@@ -1474,7 +1473,7 @@ inline constexpr bool enable_borrowed_range<text_encoding::aliases_view> = true;
_LIBCPP_END_NAMESPACE_STD
-#endif // _LIBCPP_STD_VER >= 26
+# endif // _LIBCPP_STD_VER >= 26
_LIBCPP_POP_MACROS
diff --git a/libcxx/include/text_encoding b/libcxx/include/text_encoding
index 579608e4f..b312e5ac1 100644
--- a/libcxx/include/text_encoding
+++ b/libcxx/include/text_encoding
@@ -10,7 +10,7 @@
#ifndef _LIBCPP_TEXT_ENCODING
#define _LIBCPP_TEXT_ENCODING
-/* text_encoding synopsis
+/* text_encoding synopsis
namespace std {
struct text_encoding;
@@ -19,7 +19,7 @@ struct text_encoding;
template<class T> struct hash;
template<> struct hash<text_encoding>;
-struct text_encoding
+struct text_encoding
{
static constexpr size_t max_name_length = 63;
@@ -60,9 +60,9 @@ struct text_encoding
#include <__config>
#if _LIBCPP_STD_VER >= 26
-# include <__text_encoding/text_encoding.h>
+# include <__text_encoding/text_encoding.h>
#endif // _LIBCPP_STD_VER >= 26
-#include <version>
+#include <version>
-#endif // _LIBCPP_TEXT_ENCODING
+#endif // _LIBCPP_TEXT_ENCODING
diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp
index 6d8dababb..21c93e093 100644
--- a/libcxx/src/locale.cpp
+++ b/libcxx/src/locale.cpp
@@ -558,18 +558,18 @@ locale::locale(const locale& other, const locale& one, category c)
string locale::name() const { return __locale_->name(); }
-# if _LIBCPP_STD_VER >= 26 && __CHAR_BIT__ == 8
- text_encoding locale::encoding() const {
- std::string __name = this->name();
- if(__name.size() == 1){
- if(__name[0] == 'C')
- return std::text_encoding(text_encoding::id::ASCII);
- if(__name[0] == '*')
- return std::text_encoding();
- }
- return std::text_encoding(__name);
+#if _LIBCPP_STD_VER >= 26 && __CHAR_BIT__ == 8
+text_encoding locale::encoding() const {
+ std::string __name = this->name();
+ if (__name.size() == 1) {
+ if (__name[0] == 'C')
+ return std::text_encoding(text_encoding::id::ASCII);
+ if (__name[0] == '*')
+ return std::text_encoding();
}
-# endif // _LIBCPP_STD_VER >= 26
+ return std::text_encoding(__name);
+}
+#endif // _LIBCPP_STD_VER >= 26
void locale::__install_ctor(const locale& other, facet* f, long facet_id) {
if (f)
diff --git a/libcxx/src/text_encoding.cpp b/libcxx/src/text_encoding.cpp
index 42812aaed..95b0020ba 100644
--- a/libcxx/src/text_encoding.cpp
+++ b/libcxx/src/text_encoding.cpp
@@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
-#include <__config>
+#include <__config>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -14,35 +14,35 @@
#include <__locale_dir/locale_base_api.h>
-#include <text_encoding>
+#include <text_encoding>
#if __has_include(<langinfo.h>)
# include <langinfo.h>
#endif
-#if _LIBCPP_STD_VER >= 26
+#if _LIBCPP_STD_VER >= 26
_LIBCPP_BEGIN_NAMESPACE_STD
-#if __CHAR_BIT__ == 8
+# if __CHAR_BIT__ == 8
text_encoding text_encoding::environment() {
- auto __make_locale = [](const char* __name) {
- text_encoding __enc{};
- if (auto __loc = __locale::__newlocale(LC_CTYPE_MASK, __name, static_cast<locale_t>(0))) {
- if (const char* __codeset = nl_langinfo_l(CODESET, __loc)) {
- string_view __s(__codeset);
- if (__s.size() < max_name_length)
- __enc = text_encoding(__s);
- }
- __locale::__freelocale(__loc);
+ auto __make_locale = [](const char* __name) {
+ text_encoding __enc{};
+ if (auto __loc = __locale::__newlocale(LC_CTYPE_MASK, __name, static_cast<locale_t>(0))) {
+ if (const char* __codeset = nl_langinfo_l(CODESET, __loc)) {
+ string_view __s(__codeset);
+ if (__s.size() < max_name_length)
+ __enc = text_encoding(__s);
}
- return __enc;
- };
+ __locale::__freelocale(__loc);
+ }
+ return __enc;
+ };
- return __make_locale("");
- }
+ return __make_locale("");
+}
-# endif // __CHAR_BIT__ == 8
+# endif // __CHAR_BIT__ == 8
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/text_encoding.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/text_encoding.version.compile.pass.cpp
index 817b0f0d6..1678e8840 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/text_encoding.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/text_encoding.version.compile.pass.cpp
@@ -60,4 +60,3 @@
#endif // TEST_STD_VER > 23
// clang-format on
-
diff --git a/libcxx/test/std/localization/locales/locale/locale.members/encoding.pass.cpp b/libcxx/test/std/localization/locales/locale/locale.members/encoding.pass.cpp
index 7ebfb5a0b..806a025b8 100644
--- a/libcxx/test/std/localization/locales/locale/locale.members/encoding.pass.cpp
+++ b/libcxx/test/std/localization/locales/locale/locale.members/encoding.pass.cpp
@@ -10,7 +10,7 @@
// <text_encoding>
// libc++ not built with C++26 yet
-// XFAIL: *
+// XFAIL: *
// REQUIRES: std-at-least-c++26
// REQUIRES: locale.en_US.UTF-8
// UNSUPPORTED: no-localization
@@ -33,11 +33,10 @@
using id = std::text_encoding::id;
int main() {
-
{
std::locale loc;
- auto te = loc.encoding();
+ auto te = loc.encoding();
auto classicTE = std::text_encoding(id::ASCII);
assert(te == id::ASCII);
assert(te == classicTE);
@@ -46,11 +45,11 @@ int main() {
{
std::locale utf8Locale(LOCALE_en_US_UTF_8);
- auto te = utf8Locale.encoding();
+ auto te = utf8Locale.encoding();
auto utf8TE = std::text_encoding(id::UTF8);
assert(te == id::UTF8);
assert(te == utf8TE);
}
- return 0;
+ return 0;
}
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.ctor/id.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.ctor/id.pass.cpp
index 6562971c7..f01c3956e 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.ctor/id.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.ctor/id.pass.cpp
@@ -41,15 +41,15 @@ int main() {
static_assert(std::is_nothrow_constructible<std::text_encoding, std::text_encoding::id>::value,
"Must be nothrow constructible with id");
}
-
+
{
- for (auto pair : unique_encoding_data){
+ for (auto pair : unique_encoding_data) {
test_ctor(te_id{pair.mib}, te_id{pair.mib}, pair.name);
}
}
{
- for(int i = 2261; i < 2300; i++){ // test out of range id values
+ for (int i = 2261; i < 2300; i++) { // test out of range id values
test_ctor(te_id{i}, te_id::unknown, "");
}
}
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.id.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.id.pass.cpp
index 30ce1bade..bf0c75a3e 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.id.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.id.pass.cpp
@@ -14,7 +14,7 @@
// class text_encoding
-// text_encoding operator==(const text_encoding&, id) _NOEXCEPT
+// text_encoding operator==(const text_encoding&, id) _NOEXCEPT
// Concerns:
// 1. operator==(const text_encoding&, id) must be noexcept
@@ -31,7 +31,6 @@
using id = std::text_encoding::id;
int main() {
-
{ // 1
auto te = std::text_encoding();
ASSERT_NOEXCEPT(te == id::UTF8);
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.pass.cpp
index 81fdb0a68..27cd9bdff 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.eq/equal.pass.cpp
@@ -14,7 +14,7 @@
// class text_encoding
-// text_encoding operator==(const text_encoding&, const text_encoding&) _NOEXCEPT
+// text_encoding operator==(const text_encoding&, const text_encoding&) _NOEXCEPT
// Concerns:
// 1. operator==(const text_encoding&, const text_encoding&) must be noexcept
@@ -32,8 +32,7 @@
using id = std::text_encoding::id;
-int main(){
-
+int main() {
{ // 1
auto te1 = std::text_encoding();
auto te2 = std::text_encoding();
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/aliases.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/aliases.pass.cpp
index 345438d6a..6b363ef75 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/aliases.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/aliases.pass.cpp
@@ -13,10 +13,10 @@
// class text_encoding
-// text_encoding text_encoding::environment();
+// text_encoding text_encoding::environment();
// Concerns:
-// 1. Verify that text_encoding::aliases_view satisfies ranges::forward_range, copyable, view,
+// 1. Verify that text_encoding::aliases_view satisfies ranges::forward_range, copyable, view,
// ranges::random_access_range and ranges::borrowed_range
#include <concepts>
@@ -24,11 +24,11 @@
#include <text_encoding>
#include <type_traits>
-#include "platform_support.h"
+#include "platform_support.h"
#include "test_macros.h"
#include "test_text_encoding.h"
-int main(){
+int main() {
static_assert(std::ranges::forward_range<std::text_encoding::aliases_view>);
static_assert(std::copyable<std::text_encoding::aliases_view>);
static_assert(std::ranges::view<std::text_encoding::aliases_view>);
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/environment.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/environment.pass.cpp
index c0412d4d3..cba72e45f 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/environment.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/environment.pass.cpp
@@ -15,18 +15,18 @@
// UNSUPPORTED: windows
// libc++ is not built with C++26, and the implementation for this function is in a source file.
-// XFAIL: *
+// XFAIL: *
// class text_encoding
-// text_encoding text_encoding::environment();
+// text_encoding text_encoding::environment();
// Concerns:
// 1. text_encoding::environment() returns the encoding for the "C" locale, which should be the default for any C++ program.
// 2. text_encoding::environment() still returns the "C" locale encoding when the locale is set to "en_US.UTF-8".
-// 3. text_encoding::environment() is affected by changes to the "LANG" environment variable.
+// 3. text_encoding::environment() is affected by changes to the "LANG" environment variable.
-// The current implementation of text_encoding::environment() while conformant,
+// The current implementation of text_encoding::environment() while conformant,
// is unfortunately affected by changes to the "LANG" environment variable.
#include <cassert>
@@ -35,14 +35,13 @@
#include <string_view>
#include <text_encoding>
-#include "platform_support.h"
+#include "platform_support.h"
#include "test_macros.h"
#include "test_text_encoding.h"
int main() {
-
{ // 1
- auto te = std::text_encoding::environment();
+ auto te = std::text_encoding::environment();
assert(te == std::text_encoding::environment());
assert(te.mib() == std::text_encoding::id::ASCII);
@@ -68,7 +67,7 @@ int main() {
{ // 3
setenv("LANG", LOCALE_en_US_UTF_8, 1);
-
+
auto te = std::text_encoding::environment();
assert(te == std::text_encoding::environment());
@@ -78,6 +77,6 @@ int main() {
assert(std::text_encoding::environment_is<std::text_encoding::id::UTF8>());
}
-
+
return 0;
}
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/literal.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/literal.pass.cpp
index 200f9630d..4aa6d7930 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/literal.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/literal.pass.cpp
@@ -30,7 +30,7 @@
int main() {
#if __CHAR_BIT__ == 8
-
+
{
auto te = std::text_encoding::literal();
# ifdef __GNUC_EXECUTION_CHARSET_NAME
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/begin.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/begin.pass.cpp
index 61c148f85..ecb98403f 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/begin.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/begin.pass.cpp
@@ -14,53 +14,50 @@
// class text_encoding
-// text_encoding text_encoding::environment();
+// text_encoding text_encoding::environment();
// Concerns:
// 1. begin() of an aliases_view() from a single text_encoding object are the same.
// 2. begin() of aliases_views of two text_encoding objects that represent the same ID but hold different names are the same.
-// 3. begin() of aliases_views of two text_encoding objects that represent different IDs are different.
+// 3. begin() of aliases_views of two text_encoding objects that represent different IDs are different.
#include <cassert>
#include <cstdlib>
#include <text_encoding>
#include <ranges>
-#include "platform_support.h"
+#include "platform_support.h"
#include "test_macros.h"
#include "test_text_encoding.h"
using id = std::text_encoding::id;
int main() {
-
{
- auto te = std::text_encoding(id::UTF8);
+ auto te = std::text_encoding(id::UTF8);
auto view1 = te.aliases();
auto view2 = te.aliases();
-
- assert(std::ranges::begin(view1) == std::ranges::begin(view2));
+
+ assert(std::ranges::begin(view1) == std::ranges::begin(view2));
}
{
auto te1 = std::text_encoding("ANSI_X3.4-1968");
auto te2 = std::text_encoding("ANSI_X3.4-1986");
- auto view1 = te1.aliases();
+ auto view1 = te1.aliases();
auto view2 = te2.aliases();
assert(std::ranges::begin(view1) == std::ranges::begin(view2));
}
{
-
auto te1 = std::text_encoding(id::UTF8);
auto te2 = std::text_encoding(id::ASCII);
-
+
auto view1 = te1.aliases();
auto view2 = te2.aliases();
assert(!(std::ranges::begin(view1) == std::ranges::begin(view2)));
}
-
}
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/empty.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/empty.pass.cpp
index 253a060dc..610565535 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/empty.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/empty.pass.cpp
@@ -14,7 +14,7 @@
// class text_encoding
-// text_encoding text_encoding::environment();
+// text_encoding text_encoding::environment();
// Concerns:
// 1. An alias_view of a text_encoding object for "other" is empty
@@ -26,25 +26,24 @@
#include <ranges>
#include <text_encoding>
-#include "platform_support.h"
+#include "platform_support.h"
#include "test_macros.h"
#include "test_text_encoding.h"
using id = std::text_encoding::id;
-int main(){
-
+int main() {
{
- auto te = std::text_encoding(id::other);
+ auto te = std::text_encoding(id::other);
auto empty_range = te.aliases();
-
+
assert(std::ranges::empty(empty_range));
assert(empty_range.empty());
assert(!bool(empty_range));
}
{
- auto te = std::text_encoding(id::unknown);
+ auto te = std::text_encoding(id::unknown);
auto empty_range = te.aliases();
assert(std::ranges::empty(empty_range));
@@ -53,12 +52,11 @@ int main(){
}
{
- auto te = std::text_encoding(id::UTF8);
+ auto te = std::text_encoding(id::UTF8);
auto range = te.aliases();
assert(!std::ranges::empty(range));
assert(!range.empty());
assert(bool(range));
}
-
}
diff --git a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/front.pass.cpp b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/front.pass.cpp
index fb9f80247..9066e1e9f 100644
--- a/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/front.pass.cpp
+++ b/libcxx/test/std/utilities/text_encoding/text_encoding.members/text_encoding.aliases_view/front.pass.cpp
@@ -14,31 +14,30 @@
// class text_encoding
-// text_encoding text_encoding::environment();
+// text_encoding text_encoding::environment();
// Concerns:
// 1. An aliases_view from a single text_encoding object returns the same front()
// 2. An aliases_views of two text_encoding objects that represent the same ID but hold different names return the same front()
-// 3. An aliases_views of two text_encoding objects that represent different IDs return different front()
+// 3. An aliases_views of two text_encoding objects that represent different IDs return different front()
#include <cassert>
#include <cstdlib>
#include <text_encoding>
-#include "platform_support.h"
+#include "platform_support.h"
#include "test_macros.h"
#include "test_text_encoding.h"
using id = std::text_encoding::id;
int main() {
-
{
auto te = std::text_encoding(id::UTF8);
-
+
auto view1 = te.aliases();
auto view2 = te.aliases();
-
+
assert(view1.front() == view2.front());
}
@@ -46,21 +45,19 @@ int main() {
auto te1 = std::text_encoding("ANSI_X3.4-1968");
auto te2 = std::text_encoding("ANSI_X3.4-1986");
- auto view1 = te1.aliases();
+ auto view1 = te1.aliases();
auto view2 = te2.aliases();
assert(view1.front() == view2.front());
}
{
-
auto te1 = std::text_encoding(id::UTF8);
auto te2 = std::text_encoding(id::ASCII);
-
+
auto view1 = te1.aliases();
auto view2 = te2.aliases();
assert(!(view1.front() == view2.front()));
}
-
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/141312
More information about the libcxx-commits
mailing list