// Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion // // Copyright (C) 2003-2008 Matthias Christian Schabel // Copyright (C) 2007-2008 Steven Watanabe // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) /** \file \brief non_base_dimension.cpp \details Another example of user-defined units with conversions. Output: @verbatim //[non_base_dimension_output //] @endverbatim **/ #include #include #include #include #include #include #include #include namespace boost { namespace units { //[non_base_dimension_snippet_1 struct imperial_gallon_tag : base_unit { }; typedef make_system::type imperial; typedef unit imperial_gallon; struct us_gallon_tag : base_unit { }; typedef make_system::type us; typedef unit us_gallon; //] } // namespace units } // namespace boost BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial_gallon_tag, boost::units::us_gallon_tag, double, 1.2009499255); using namespace boost::units; int main(void) { quantity ig1(1.0*imperial_gallon()); quantity ug1(1.0*us_gallon()); quantity ig2(ug1); quantity ug2(ig1); return 0; }