// 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) 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) #ifndef BOOST_UNITS_DETAIL_ONE_HPP #define BOOST_UNITS_DETAIL_ONE_HPP #include namespace boost { namespace units { struct one { one() {} }; // workaround for pathscale. inline one make_one() { one result; return(result); } template struct multiply_typeof_helper { typedef T type; }; template struct multiply_typeof_helper { typedef T type; }; template<> struct multiply_typeof_helper { typedef one type; }; template inline T operator*(const one&, const T& t) { return(t); } template inline T operator*(const T& t, const one&) { return(t); } inline one operator*(const one&, const one&) { one result; return(result); } template struct divide_typeof_helper { typedef T type; }; template struct divide_typeof_helper { typedef T type; }; template<> struct divide_typeof_helper { typedef one type; }; template inline T operator/(const T& t, const one&) { return(t); } template inline T operator/(const one&, const T& t) { return(1/t); } inline one operator/(const one&, const one&) { one result; return(result); } template inline bool operator>(const boost::units::one&, const T& t) { return(1 > t); } } // namespace units } // namespace boost #endif