Files
Cpp-in-Embedded-Systems/Chapter18/cib/util/inc/units.hpp
Amar Mahmutbegovic 8634accda5 add Chapter18
2025-02-06 00:19:59 +01:00

33 lines
819 B
C++

#pragma once
namespace units
{
template<typename T, typename ST>
class unit {
private:
T val_;
public:
explicit unit(T val) : val_(val){}
[[nodiscard]] T get() const {return val_;}
[[nodiscard]] T get_mili() const {return 1e3 * val_;}
constexpr T operator/(const unit& second) const{
return val_ / second.get();
}
constexpr unit operator*(const T& second) const{
return unit(val_ * second);
}
constexpr unit operator/(const T& second) const{
return unit(val_ / second);
}
};
using voltage = unit<float, struct the_voltage>;
using resistance = unit<float, struct the_resistance>;
voltage operator""_V(long double volts);
resistance operator""_Ohm(long double ohms);
};