#include "weight.hpp" #include #include // ------------------------------------------------------------------ // // Operator overloading, various constructors, more templates, etc // // ------------------------------------------------------------------ int main() { usu::microgram mcg(1000000); usu::gram g = usu::weight_cast(mcg); usu::pound lb = usu::weight_cast(g); usu::ounce oz = usu::weight_cast(lb); usu::ton ton = usu::weight_cast(lb); std::cout << std::fixed << std::setprecision(10); std::cout << "--- From micrograms ---" << std::endl; std::cout << "micrograms : " << mcg.count() << std::endl; std::cout << "grams : " << g.count() << std::endl; std::cout << "lbs : " << lb.count() << std::endl; std::cout << "ounces : " << oz.count() << std::endl; std::cout << "tons : " << ton.count() << std::endl; usu::pound somePounds(2000); usu::microgram ugFromPounds = usu::weight_cast(somePounds); usu::gram gramsFromPounds = usu::weight_cast(somePounds); usu::ounce ouncesFromPounds = usu::weight_cast(somePounds); usu::ton tonsFromPounds = usu::weight_cast(ouncesFromPounds); std::cout << std::endl << "--- From pounds ---" << std::endl; std::cout << "micrograms : " << ugFromPounds.count() << std::endl; std::cout << "grams : " << gramsFromPounds.count() << std::endl; std::cout << "lbs : " << somePounds.count() << std::endl; std::cout << "ounces : " << ouncesFromPounds.count() << std::endl; std::cout << "tons : " << tonsFromPounds.count() << std::endl; std::cout << std::endl << "--- Operator Overloading ---" << std::endl; { usu::pound a(1); usu::pound b(0.5); usu::pound c = a + b; std::cout << std::setprecision(2); std::cout << "(pound + pound) : " << a.count() << " + " << b.count() << " = " << c.count(); std::cout << " ==> grams: " << usu::weight_cast(c).count() << std::endl; } { usu::pound a(1); usu::pound b(0.5); usu::pound c = a - b; std::cout << std::setprecision(2); std::cout << "(pound - pound) : " << a.count() << " - " << b.count() << " = " << c.count(); std::cout << " ==> grams: " << usu::weight_cast(c).count() << std::endl; } { usu::pound a(1); usu::pound b = a * 2.2; usu::pound c = 3.2 * a; std::cout << std::setprecision(2); std::cout << "(pound * scalar) : " << a.count() << " * 2.2 " << " = " << b.count(); std::cout << " ==> grams: " << usu::weight_cast(b).count() << std::endl; std::cout << "(scalar * pound) : 3.2 * " << a.count() << " = " << c.count(); std::cout << " ==> grams: " << usu::weight_cast(c).count() << std::endl; } return 0; }