Использование GCC 4.2.
У меня есть эта метатемплата для условного типа:
template <bool condition, typename Then, typename Else>
struct IF
{
typedef Then RET;
};
template <class Then, class Else>
struct IF<false, Then, Else>
{
typedef Else RET;
};
и когда я использую это так:
template <typename T>
class Param
{
IF< sizeof(int)<sizeof(long), long, int>::RET i;
};
это работает, но когда я использую это так (пытаясь использовать параметры шаблона):
template <typename T>
class Param
{
IF< sizeof(int)<sizeof(long), T&, T* >::RET mParam;
};
Я получаю этот код ошибки:
error: type 'IF<false, T&, T*>' is not derived from type 'Param<T>'
Почему это происходит? Как это решить?
Заранее спасибо!