📄 dimension.cpp
字号:
// 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)/** \file \brief dimension.cpp\detailedTest dimension list manipulation.Output:@verbatim//[dimension_outputlength_dimension = list<dim<length_base_dimension, static_rational<1l, 1l> >, dimensionless_type>mass_dimension = list<dim<mass_base_dimension, static_rational<1l, 1l> >, dimensionless_type>time_dimension = list<dim<time_base_dimension, static_rational<1l, 1l> >, dimensionless_type>energy_dimension = list<dim<length_base_dimension, static_rational<2l, 1l> >, list<dim<mass_base_dimension, static_rational<1l, 1l> >, list<dim<time_base_dimension, static_rational<-2l, 1l> >, dimensionless_type> > >LM_type = list<dim<length_base_dimension, static_rational<1l, 1l> >, list<dim<mass_base_dimension, static_rational<1l, 1l> >, dimensionless_type> >L_T_type = list<dim<length_base_dimension, static_rational<1l, 1l> >, list<dim<time_base_dimension, static_rational<-1l, 1l> >, dimensionless_type> >V_type = list<dim<length_base_dimension, static_rational<1l, 1l> >, list<dim<time_base_dimension, static_rational<-1l, 1l> >, dimensionless_type> >//]@endverbatim**/// undefine this if you don't want to demangle symbols// need to link with libboost_regex to get demangling functionality#define MCS_USE_DEMANGLING#include <boost/type_traits/is_same.hpp>#include <boost/mpl/assert.hpp>#include <boost/units/detail/utility.hpp>#include "test_system.hpp"namespace mpl = boost::mpl;int main(void){ using namespace boost::units; BOOST_MPL_ASSERT((boost::is_same< length_dimension, mpl::push_front< dimensionless_type, dim<length_base_dimension, static_rational<1L, 1L> > >::type >)); BOOST_MPL_ASSERT((boost::is_same< mass_dimension, mpl::push_front< dimensionless_type, dim<mass_base_dimension, static_rational<1L, 1L> > >::type >)); BOOST_MPL_ASSERT((boost::is_same<energy_dimension, mpl::push_front< mpl::push_front< mpl::push_front< dimensionless_type, dim<time_base_dimension, static_rational<-2L, 1L> > >::type, dim<mass_base_dimension, static_rational<1L, 1L> > >::type, dim<length_base_dimension, static_rational<2L, 1L> > >::type>)); std::cout << "length_dimension = " << simplify_typename(length_dimension()) << std::endl << "mass_dimension = " << simplify_typename(mass_dimension()) << std::endl << "time_dimension = " << simplify_typename(time_dimension()) << std::endl << "energy_dimension = " << simplify_typename(energy_dimension()) << std::endl; //[dimension_snippet_1 typedef mpl::times<length_dimension,mass_dimension>::type LM_type; typedef mpl::divides<length_dimension,time_dimension>::type L_T_type; typedef static_root< mpl::divides<energy_dimension,mass_dimension>::type, static_rational<2> >::type V_type; //] BOOST_MPL_ASSERT((boost::is_same<LM_type, mpl::push_front< mpl::push_front< dimensionless_type, dim<mass_base_dimension, static_rational<1L, 1L> > >::type, dim<length_base_dimension, static_rational<1L, 1L> > >::type>)); BOOST_MPL_ASSERT((boost::is_same<L_T_type, mpl::push_front< mpl::push_front< dimensionless_type, dim<time_base_dimension, static_rational<-1L, 1L> > >::type, dim<length_base_dimension, static_rational<1L, 1L> > >::type>)); BOOST_MPL_ASSERT((boost::is_same<V_type, mpl::push_front< mpl::push_front< dimensionless_type, dim<time_base_dimension, static_rational<-1L, 1L> > >::type, dim<length_base_dimension, static_rational<1L, 1L> > >::type>)); std::cout << "LM_type = " << simplify_typename(LM_type()) << std::endl << "L_T_type = " << simplify_typename(L_T_type()) << std::endl << "V_type = " << simplify_typename(V_type()) << std::endl; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -