From 40dcc9de660556b25c9d38551ff39d4065617da4 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 18 Jan 2024 18:59:10 +0100 Subject: [PATCH] feat: `basic_fixed_string` contructor now can take a list of arguments --- .../mp-units/bits/external/fixed_string.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/include/mp-units/bits/external/fixed_string.h b/src/core/include/mp-units/bits/external/fixed_string.h index eec60ed4..f1a0fa3a 100644 --- a/src/core/include/mp-units/bits/external/fixed_string.h +++ b/src/core/include/mp-units/bits/external/fixed_string.h @@ -57,18 +57,18 @@ struct basic_fixed_string { using size_type = std::size_t; using difference_type = std::ptrdiff_t; - constexpr explicit basic_fixed_string(CharT ch) noexcept - requires(N == 1) - { - data_[0] = ch; - } - constexpr explicit(false) basic_fixed_string(const CharT (&txt)[N + 1]) noexcept { if constexpr (N != 0) for (std::size_t i = 0; i < N; ++i) data_[i] = txt[i]; } + template... Rest> + requires(1 + sizeof...(Rest) == N) + constexpr explicit basic_fixed_string(CharT first, Rest... rest) noexcept : data_{first, rest..., CharT('\0')} + { + } + constexpr basic_fixed_string(const CharT* ptr, std::integral_constant) noexcept { if constexpr (N != 0) @@ -131,12 +131,12 @@ struct basic_fixed_string { } }; -template -basic_fixed_string(CharT) -> basic_fixed_string; - template basic_fixed_string(const CharT (&str)[N]) -> basic_fixed_string; +template... Rest> +basic_fixed_string(CharT, Rest...) -> basic_fixed_string; + template basic_fixed_string(const CharT* ptr, std::integral_constant) -> basic_fixed_string;