From 19e07fd54969fbf0d6b41c55a4a7adaca86b01cd Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Tue, 10 Sep 2019 22:34:26 +0200 Subject: [PATCH] Digital information concept added --- test/unit_test/test_custom_units.cpp | 39 +++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/test/unit_test/test_custom_units.cpp b/test/unit_test/test_custom_units.cpp index a7c8c77b..b8349b89 100644 --- a/test/unit_test/test_custom_units.cpp +++ b/test/unit_test/test_custom_units.cpp @@ -27,7 +27,44 @@ namespace { -using namespace std::experimental::units; + using namespace std::experimental; + + inline constexpr units::base_dimension base_dim_digital_information{"digital information"}; + + struct digital_information : units::make_dimension_t> {}; + + template + concept bool DigitalInformation = units::QuantityOf; + + struct bit : units::unit {}; + struct byte : units::unit> {}; + + inline namespace literals { + + constexpr auto operator""_b(unsigned long long l) { return units::quantity(l); } + constexpr auto operator""_b(long double l) { return units::quantity(l); } + + constexpr auto operator""_B(unsigned long long l) { return units::quantity(l); } + constexpr auto operator""_B(long double l) { return units::quantity(l); } + + } +} + +namespace stde = std::experimental; + +template<> struct stde::units::downcasting_traits> : stde::units::downcast_to {}; +template<> struct stde::units::downcasting_traits> : stde::units::downcast_to {}; +template<> struct stde::units::downcasting_traits> : stde::units::downcast_to<::byte> {}; + +namespace { + + static_assert(1_B == 8_b); + +} + +namespace { + + using namespace stde::units; // power spectral density // todo: add support for make_dimension_t of non base units