#include #include #include #include #include #include #include #include typedef boost::units::temperature::celsius_base_unit::unit_type celsius_unit; BOOST_UNITS_STATIC_CONSTANT(celsius, celsius_unit); typedef boost::units::quantity celsius_quantity; typedef boost::units::absolute celsius_absolute_unit; BOOST_UNITS_STATIC_CONSTANT(celsius_absolute, celsius_absolute_unit); typedef boost::units::quantity celsius_absolute_quantity; // template // std::string unit_name(const boost::units::quantity, T>&) // { // return name_string(Unit()); // } // template // std::string unit_symbol(const boost::units::quantity, T>&) // { // return symbol_string(Unit()); // } template std::string unit_name(const boost::units::quantity&) { return name_string(Unit()); } template std::string unit_symbol(const boost::units::quantity&) { return symbol_string(Unit()); } int main() { celsius_quantity c = 54.2 * celsius; std::cout << "Name is " << unit_name(c) << '\n'; std::cout << "Name is " << unit_symbol(c) << '\n'; std::cout << "Value is " << c << '\n'; celsius_absolute_quantity ac = 54.2 * celsius_absolute; std::cout << "Name is " << unit_name(ac) << '\n'; std::cout << "Name is " << unit_symbol(ac) << '\n'; std::cout << "Value is " << ac << '\n'; }