...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::units::quantity — class declaration
template<typename Unit, typename Y = double> class quantity { public: // types typedef quantity< Unit, Y > this_type; typedef Y value_type; typedef Unit unit_type; // construct/copy/destruct quantity(); quantity(const this_type &); template<typename YY> quantity(const quantity< Unit, YY > &, unspecified = 0); template<typename YY> quantity(const quantity< Unit, YY > &, unspecified = 0); template<typename Unit2, typename YY> quantity(const quantity< Unit2, YY > &, unspecified = 0); template<typename Unit2, typename YY> quantity(const quantity< Unit2, YY > &, unspecified = 0); quantity(const value_type &); quantity& operator=(const this_type &); template<typename YY> quantity& operator=(const quantity< Unit, YY > &); template<typename Unit2, typename YY> quantity& operator=(const quantity< Unit2, YY > &); // private member functions BOOST_MPL_ASSERT_NOT(unspecified) ; // public member functions const value_type & value() const; template<typename Unit2, typename YY> this_type & operator+=(const quantity< Unit2, YY > &) ; template<typename Unit2, typename YY> this_type & operator-=(const quantity< Unit2, YY > &) ; template<typename Unit2, typename YY> this_type & operator*=(const quantity< Unit2, YY > &) ; template<typename Unit2, typename YY> this_type & operator/=(const quantity< Unit2, YY > &) ; this_type & operator*=(const value_type &) ; this_type & operator/=(const value_type &) ; // public static functions static this_type from_value(const value_type &) ; };
quantity
public
construct/copy/destructquantity();
quantity(const this_type & source);
template<typename YY> quantity(const quantity< Unit, YY > & source, unspecified = 0);
template<typename YY> quantity(const quantity< Unit, YY > & source, unspecified = 0);
template<typename Unit2, typename YY> quantity(const quantity< Unit2, YY > & source, unspecified = 0);
template<typename Unit2, typename YY> quantity(const quantity< Unit2, YY > & source, unspecified = 0);
quantity(const value_type & val);
quantity& operator=(const this_type & source);
template<typename YY> quantity& operator=(const quantity< Unit, YY > & source);
template<typename Unit2, typename YY> quantity& operator=(const quantity< Unit2, YY > & source);
quantity
public member functionsconst value_type & value() const;
can add a quantity of the same type if add_typeof_helper<value_type,value_type>::type is convertible to value_type
template<typename Unit2, typename YY> this_type & operator+=(const quantity< Unit2, YY > & source) ;
template<typename Unit2, typename YY> this_type & operator-=(const quantity< Unit2, YY > & source) ;
template<typename Unit2, typename YY> this_type & operator*=(const quantity< Unit2, YY > & source) ;
template<typename Unit2, typename YY> this_type & operator/=(const quantity< Unit2, YY > & source) ;
this_type & operator*=(const value_type & source) ;
this_type & operator/=(const value_type & source) ;