Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/units/detail/dimensionless_unit.hpp @ 125:34e428693f5d vext
Vext -> Repoint
author | Chris Cannam |
---|---|
date | Thu, 14 Jun 2018 11:15:39 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line source
// 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) #ifndef BOOST_UNITS_DETAIL_DIMENSIONLESS_UNIT_HPP #define BOOST_UNITS_DETAIL_DIMENSIONLESS_UNIT_HPP #include <boost/mpl/bool.hpp> #include <boost/units/units_fwd.hpp> namespace boost { namespace units { template<class T> struct heterogeneous_system; template<class T> struct homogeneous_system; template<class T1, class T2, class Scale> struct heterogeneous_system_impl; typedef boost::units::heterogeneous_system< boost::units::heterogeneous_system_impl< boost::units::dimensionless_type, boost::units::dimensionless_type, boost::units::dimensionless_type > > heterogeneous_dimensionless_system; namespace detail { template<class System> struct void_if_dimensionless { typedef int type; }; template<class T> struct void_if_dimensionless<boost::units::homogeneous_system<T> > { typedef void type; }; template<> struct void_if_dimensionless<heterogeneous_dimensionless_system> { typedef void type; }; template<class System, class Test = void> struct void_if_heterogeneous { typedef void type; }; template<class System> struct void_if_heterogeneous<System, typename void_if_dimensionless<System>::type> { typedef int type; }; template<class System, class Enable=void> struct is_dimensionless_system : mpl::false_ {}; template<class System> struct is_dimensionless_system<System, typename void_if_dimensionless<System>::type> : mpl::true_ {}; #define BOOST_UNITS_DIMENSIONLESS_UNIT(T)\ boost::units::unit<\ boost::units::dimensionless_type,\ T,\ typename ::boost::units::detail::void_if_dimensionless<T>::type\ > #define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T)\ boost::units::unit<\ boost::units::dimensionless_type,\ T,\ typename ::boost::units::detail::void_if_heterogeneous<T>::type\ > } } } #endif