From 0cf4617828652e3ae2efb5064cab055659f4679a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Dee=20=28J=C5=8Dshin=29?= Date: Wed, 19 Jun 2024 07:18:33 -0700 Subject: [PATCH] Just use the anonymous union --- ctl/string.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ctl/string.h b/ctl/string.h index dca15b753..c94be103b 100644 --- a/ctl/string.h +++ b/ctl/string.h @@ -350,36 +350,38 @@ class string { if (isbig()) __builtin_trap(); - return reinterpret_cast<__::small_string*>(blob); + return &__s; } inline const __::small_string* small() const noexcept { if (isbig()) __builtin_trap(); - return reinterpret_cast(blob); + return &__s; } inline __::big_string* big() noexcept { if (!isbig()) __builtin_trap(); - return reinterpret_cast<__::big_string*>(blob); + return &__b; } inline const __::big_string* big() const noexcept { if (!isbig()) __builtin_trap(); - return reinterpret_cast(blob); + return &__b; } friend string strcat(string_view, string_view); - alignas(union { - __::big_string a; - __::small_string b; - }) char blob[__::string_size]; + union + { + __::big_string __b; + __::small_string __s; + char blob[__::string_size]; + }; }; static_assert(sizeof(string) == __::string_size);