Skip to content

Commit

Permalink
Prevent brace initialization of AlphaNum
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Abseil Team authored and copybara-github committed Jan 19, 2024
1 parent 04d8afe commit 2be6770
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions absl/strings/str_cat.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <initializer_list>
#include <string>
#include <type_traits>
#include <utility>
Expand Down Expand Up @@ -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 <typename T>
AlphaNum(std::initializer_list<T>) = delete; // NOLINT(runtime/explicit)

AlphaNum(int x) // NOLINT(runtime/explicit)
: piece_(digits_, static_cast<size_t>(
numbers_internal::FastIntToBuffer(x, digits_) -
Expand Down

0 comments on commit 2be6770

Please sign in to comment.