// ForwardParamT<T>::Type is // - constant reference for class types // - plain type for almost all other types // - a dummy type (Unused) for type void
template<typename T>
class ForwardParamT {
public:
typedef typename IfThenElse<TypeT<T>::IsClassT,
typename TypeOp<T>::RefConstT,
typename TypeOp<T>::ArgT
>::ResultT
Type;
};
template<>
class ForwardParamT<void> {
private:
class Unused {};
public:
typedef Unused Type;
};