![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
THE BOOST MPL LIBRARY: Implementing Addition and SubtractionBoost , ,
|
Front Page / Tutorial: Metafunctions and Higher-Order Metaprogramming / Dimensional Analysis / Implementing Addition and Subtraction |
Теперь мы можем легко писать правила сложения и вычитания, поскольку размеры аргументов всегда должны совпадать.
template <class T, class D> quantity<T,D> operator+(quantity<T,D> x, quantity<T,D> y) { return quantity<T,D>(x.value() + y.value()); } template <class T, class D> quantity<T,D> operator-(quantity<T,D> x, quantity<T,D> y) { return quantity<T,D>(x.value() - y.value()); }
Эти операторы позволяют нам писать код, например:
quantity<float,length> len1( 1.0f ); quantity<float,length> len2( 2.0f ); len1 = len1 + len2; // OK
Но не позволяйте нам добавлять несовместимые измерения:
len1 = len2 + quantity<float,mass>( 3.7f ); // error
Статья THE BOOST MPL LIBRARY: Implementing Addition and Subtraction раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |