diff options
Diffstat (limited to 'absl/strings/substitute.h')
-rw-r--r-- | absl/strings/substitute.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/absl/strings/substitute.h b/absl/strings/substitute.h index 507bc4ff295f..32dec30b63a0 100644 --- a/absl/strings/substitute.h +++ b/absl/strings/substitute.h @@ -69,6 +69,8 @@ #include <cstring> #include <string> +#include <type_traits> +#include <vector> #include "absl/base/macros.h" #include "absl/base/port.h" @@ -151,6 +153,17 @@ class Arg { Arg(Hex hex); // NOLINT(runtime/explicit) Arg(Dec dec); // NOLINT(runtime/explicit) + // vector<bool>::reference and const_reference require special help to + // convert to `AlphaNum` because it requires two user defined conversions. + template <typename T, + absl::enable_if_t< + std::is_class<T>::value && + (std::is_same<T, std::vector<bool>::reference>::value || + std::is_same<T, std::vector<bool>::const_reference>::value)>* = + nullptr> + Arg(T value) // NOLINT(google-explicit-constructor) + : Arg(static_cast<bool>(value)) {} + // `void*` values, with the exception of `char*`, are printed as // "0x<hex value>". However, in the case of `nullptr`, "NULL" is printed. Arg(const void* value); // NOLINT(runtime/explicit) |