Простые шаблоны-функции

Возведение в степень:

template<class T> inline 
T _pow2 ( const T & i )
{
    return i * i;
}

template<class T> inline 
T _pow3 ( const T & i )
{
    return i * i * i;
}

template<class T> inline 
T _pow4 ( const T & i )
{
    return _pow2 ( i * i );
}

template<class T> inline 
T _pow5 ( const T & i )
{
    return _pow2 ( i * i ) * i;
}

template<class T> inline 
T _pow6 ( const T & i )
{
    return _pow3 ( i * i );
}

template<class T> inline 
T _pow7 ( const T & i )
{
    return _pow3 ( i * i ) * i;
}

template<class T> inline 
T _pow8 ( const T & i )
{
    return _pow4 ( i * i );
}

template<class T> inline 
T _pow9 ( const T & i )
{
    return _pow3 ( i * i * i );
}

template<class T> inline 
T _pow10 ( const T & i )
{
    return _pow5 ( i * i );
}
Обмен местами:
template<class T> inline 
void _swap ( T & i1, T & i2 )
{
    const T i ( i1 );
    i1 = i2;
    i2 = i;
}
Минимум и максимум двух элементов:
template<class T> inline 
const T & _min ( const T & i1, const T & i2 )
{
    return i1 < i2 ? i1 : i2;
}

template<class T> inline 
const T & _max ( const T & i1, const T & i2 )
{
    return i1 > i2 ? i1 : i2;
}
Минимум и максимум трёх элементов:
template<class T> inline 
const T & _min ( const T & i1, const T & i2, const T & i3 )
{
    return i1 < i2 ? i1 < i3 ? i1 : i3 : i3 < i2 ? i3 : i2;
}

template<class T> inline 
const T & _max ( const T & i1, const T & i2, const T & i3 )
{
    return i1 > i2 ? i1 > i3 ? i1 : i3 : i3 > i2 ? i3 : i2;
}
Минимум и максимум четырёх элементов:
template<class T> inline 
const T & _min ( const T & i1, const T & i2, const T & i3, const T & i4 )
{
    return _min ( i1, _min ( i2, i3, i4 ) );
}

template<class T> inline 
const T & _max ( const T & i1, const T & i2, const T & i3, const T & i4 )
{
    return _max ( i1, _max ( i2, i3, i4 ) );
}
Минимум и максимум пяти элементов:
template<class T> inline 
const T & _min ( const T & i1, const T & i2, const T & i3, const T & i4, const T & i5 )
{
    return _min ( i1, _min ( i2, i3, i4, i5 ) );
}

template<class T> inline 
const T & _max ( const T & i1, const T & i2, const T & i3, const T & i4, const T & i5 )
{
    return _max ( i1, _max ( i2, i3, i4, i5 ) );
}

Исходники находятся в файле Template.h.

Наверх