diff --git a/src/core-io/include/units/bits/external/fixed_string_io.h b/src/core-io/include/units/bits/external/fixed_string_io.h deleted file mode 100644 index d06cc5cc..00000000 --- a/src/core-io/include/units/bits/external/fixed_string_io.h +++ /dev/null @@ -1,37 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2018 Mateusz Pusz -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#pragma once - -#include -#include - -namespace units { - -template -std::basic_ostream& operator<<(std::basic_ostream& os, - const basic_fixed_string& txt) -{ - return os << txt.c_str(); -} - -} // namespace units diff --git a/src/core-io/include/units/quantity_io.h b/src/core-io/include/units/quantity_io.h index b4081ebb..8ff43e15 100644 --- a/src/core-io/include/units/quantity_io.h +++ b/src/core-io/include/units/quantity_io.h @@ -24,31 +24,27 @@ #pragma once #include - -// IWYU pragma: begin_exports -#include -#include +#include #include -// IWYU pragma: end_exports namespace units { namespace detail { -template -void to_stream(std::basic_ostream& os, const quantity& q) +template +void to_stream(std::basic_ostream& os, const quantity& q) { os << q.number(); - constexpr auto symbol = detail::unit_text(); - if constexpr (!symbol.standard().empty()) { - os << " " << symbol.standard(); + if constexpr (!std::derived_from>) { + os << " "; + unit_symbol_to(std::ostream_iterator(os), R.unit); } } } // namespace detail -template -std::basic_ostream& operator<<(std::basic_ostream& os, const quantity& q) +template +std::basic_ostream& operator<<(std::basic_ostream& os, const quantity& q) requires requires { os << q.number(); } { if (os.width()) {