From 2be67701e7a33b45d322064349827e1155953338 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 19 Jan 2024 10:29:06 -0800 Subject: [PATCH] Prevent brace initialization of AlphaNum This was not intended to be supported, and it has resulted in calls as `absl::StrCat({...})`, which are not supported and only work coincidentally for the first 4 arguments due to `absl::StrCat` having overloads that take `absl::AlphaNum` directly for those. The existing situation prevents modifying the implementations of such functions to alternatives that do not have such overloads for those arguments. PiperOrigin-RevId: 599872755 Change-Id: I02c90119b2b96a922cf7e3b5d5f02affe24a272d --- absl/strings/str_cat.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/absl/strings/str_cat.h b/absl/strings/str_cat.h index ea2c4dcad80..bc8ea7d4a82 100644 --- a/absl/strings/str_cat.h +++ b/absl/strings/str_cat.h @@ -93,6 +93,7 @@ #include #include #include +#include #include #include #include @@ -312,6 +313,10 @@ class AlphaNum { // No bool ctor -- bools convert to an integral type. // A bool ctor would also convert incoming pointers (bletch). + // Prevent brace initialization + template + AlphaNum(std::initializer_list) = delete; // NOLINT(runtime/explicit) + AlphaNum(int x) // NOLINT(runtime/explicit) : piece_(digits_, static_cast( numbers_internal::FastIntToBuffer(x, digits_) -