From 2c4953386ad17fc6b6988c6ec1dfa9865d9d7365 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 20 Aug 2020 22:28:00 +0300 Subject: [PATCH] Optimize logging of const strings. GitOrigin-RevId: af8de902d07c4862a77e0d8050db47ee1ccacbf6 --- tdutils/td/utils/StringBuilder.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tdutils/td/utils/StringBuilder.h b/tdutils/td/utils/StringBuilder.h index 5491f8053..57fe5b9e0 100644 --- a/tdutils/td/utils/StringBuilder.h +++ b/tdutils/td/utils/StringBuilder.h @@ -39,9 +39,22 @@ class StringBuilder { return error_flag_; } - StringBuilder &operator<<(const char *str) { + template + std::enable_if_t>::value, StringBuilder> &operator<<(T str) { return *this << Slice(str); } + template + std::enable_if_t>::value, StringBuilder> &operator<<(T str) { + return *this << Slice(str); + } + + template + StringBuilder &operator<<(char (&str)[N]) = delete; + + template + StringBuilder &operator<<(const char (&str)[N]) { + return *this << Slice(str, N - 1); + } StringBuilder &operator<<(const wchar_t *str) = delete; @@ -94,11 +107,6 @@ class StringBuilder { StringBuilder &operator<<(const void *ptr); - template - StringBuilder &operator<<(const T *ptr) { - return *this << static_cast(ptr); - } - private: char *begin_ptr_; char *current_ptr_;