diff options
author | Alexander Smirnov <alex@ydb.tech> | 2024-11-20 11:14:58 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2024-11-20 11:14:58 +0000 |
commit | 31773f157bf8164364649b5f470f52dece0a4317 (patch) | |
tree | 33d0f7eef45303ab68cf08ab381ce5e5e36c5240 /library/cpp/yt/string/format_string-inl.h | |
parent | 2c7938962d8689e175574fc1e817c05049f27905 (diff) | |
parent | eff600952d5dfe17942f38f510a8ac2b203bb3a5 (diff) | |
download | ydb-31773f157bf8164364649b5f470f52dece0a4317.tar.gz |
Merge branch 'rightlib' into mergelibs-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 |