#pragma once namespace units { template 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; using resistance = unit; voltage operator""_V(long double volts); resistance operator""_Ohm(long double ohms); };