Четыре шаблона классов обеспечивают комбинации для нахождения минимального или максимального из двух<signed>или<unsigned>(<long>) параметров.Значение1иЗначение2, в срок. Каждый шаблон имеет один статический элемент данных<value>, который устанавливается на соответствующий минимум или максимум параметров шаблона.
#include<boost/integer/static_min_max.hpp>template<unsignedlongAddendSize1,unsignedlongAddendSize2>classadder{public:staticunsignedlongconstaddend1_size=AddendSize1;staticunsignedlongconstaddend2_size=AddendSize2;staticunsignedlongconstsum_size=boost::static_unsigned_max<AddendSize1,AddendSize2>::value+1;typedefintaddend1_type[addend1_size];typedefintaddend2_type[addend2_size];typedefintsum_type[sum_size];voidoperator()(addend1_typeconst&a1,addend2_typeconst&a2,sum_type&s)const;};//...intmain(){intconsta1[]={0,4,3};// 340intconsta2[]={9,8};// 89ints[4];adder<3,2>obj;obj(a1,a2,s);// 's' should be 429 or { 9, 2, 4, 0 }//...}
Программаstatic_min_max_test.cppпредставляет собой упрощенную демонстрацию различных сравнений с использованием шаблонов класса экстрема компиляции-времени.
Автор шаблонов класса extrema по времени компиляции BoostДэрил Уокер.
Статья Compile time min/max calculation раздела Boost.Integer Boost.Integer может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.