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 eec60ed44..f1a0fa3a8 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;