Listing 3: Free function examples
/* /////////////////////////////////////////////////////////////
*
* ...
*
* Extract from stlsoft_true_typedef.h
*
* www: http://www.synesis.com.au/stlsoft
* http://www.stlsoft.org/
*
* Copyright (C) 2002, Synesis Software Pty Ltd.
* (Licensed under the Synesis Software Standard Source License:
* http://www.synesis.com.au/licenses/ssssl.html)
*
* ...
*
* ////////////////////////////////////////////////////////// */
...
// operator ~
template <ss_typename_param_k T, ss_typename_param_k U>
inline true_typedef<T, U> operator ~(const true_typedef<T,U> &v)
{
return ~v.base_type_value();
}
// Pre-increment
template <ss_typename_param_k T, ss_typename_param_k U>
inline true_typedef<T, U> &operator ++(true_typedef<T, U> &v)
{
++v.base_type_value();
return v;
}
// Post-decrement
template <ss_typename_param_k T, ss_typename_param_k U>
inline true_typedef<T, U> operator --(true_typedef<T,U> &v, int)
{
true_typedef<T, U> r(v);
v.base_type_value()--;
return r;
}
// operator <
template <ss_typename_param_k T, ss_typename_param_k U>
inline ss_bool_t operator <(const true_typedef<T, U> &lhs,
const true_typedef<T, U> &rhs)
{
return lhs.base_type_value() < rhs.base_type_value();
}
template <ss_typename_param_k T, ss_typename_param_k U>
inline ss_bool_t operator <(const true_typedef<T, U> &lhs,
const true_typedef<T, U>::value_type &rhs)
{
return lhs.base_type_value() < rhs;
}
template <ss_typename_param_k T, ss_typename_param_k U>
inline ss_bool_t operator <(
const true_typedef<T, U>::value_type &lhs,
const true_typedef<T, U> &rhs)
{
return lhs < rhs.base_type_value();
}