diff options
author | Maxim Yurchuk <maxim-yurchuk@ydb.tech> | 2024-11-20 17:37:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-20 17:37:57 +0000 |
commit | f76323e9b295c15751e51e3443aa47a36bee8023 (patch) | |
tree | 4113c8cad473a33e0f746966e0cf087252fa1d7a /library/cpp/yt/string/format_string-inl.h | |
parent | 753ecb8d410a4cb459c26f3a0082fb2d1724fe63 (diff) | |
parent | a7b9a6afea2a9d7a7bfac4c5eb4c1a8e60adb9e6 (diff) | |
download | ydb-f76323e9b295c15751e51e3443aa47a36bee8023.tar.gz |
Merge pull request #11788 from ydb-platform/mergelibs-241120-1113
Library import 241120-1113
Diffstat (limited to 'library/cpp/yt/string/format_string-inl.h')
-rw-r--r-- | library/cpp/yt/string/format_string-inl.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/library/cpp/yt/string/format_string-inl.h b/library/cpp/yt/string/format_string-inl.h index a692d9648d..67f9bad45c 100644 --- a/library/cpp/yt/string/format_string-inl.h +++ b/library/cpp/yt/string/format_string-inl.h @@ -4,6 +4,8 @@ #include "format_string.h" #endif +#include <algorithm> + namespace NYT { //////////////////////////////////////////////////////////////////////////////// @@ -15,8 +17,13 @@ consteval TBasicFormatString<TArgs...>::TBasicFormatString(const T& fmt) : Format_(fmt) { CheckFormattability(); -#if !defined(NDEBUG) && !defined(YT_DISABLE_FORMAT_STATIC_ANALYSIS) - NDetail::TFormatAnalyser::ValidateFormat<std::remove_cvref_t<TArgs>...>(Format_); +#if !defined(YT_DISABLE_FORMAT_STATIC_ANALYSIS) + std::tie(Markers, Escapes) = NDetail::TFormatAnalyser::AnalyzeFormat<std::remove_cvref_t<TArgs>...>(Format_); +#else + std::ranges::fill_n(std::ranges::begin(Escapes), 1, -1); + if constexpr (sizeof...(TArgs) != 0) { + std::ranges::fill_n(std::ranges::begin(Markers), 1, std::tuple{0, 0}); + } #endif } @@ -46,6 +53,11 @@ template <class... TArgs> TBasicFormatString<TArgs...>::TBasicFormatString(TRuntimeFormat fmt) : Format_(fmt.Get()) { + std::ranges::fill_n(std::ranges::begin(Escapes), 1, -1); + if constexpr (sizeof...(TArgs) != 0) { + std::ranges::fill_n(std::ranges::begin(Markers), 1, std::tuple{0, 0}); + } + // NB(arkady-e1ppa): StaticFormat performs the // formattability check of the args in a way // that provides more useful information |