4
使用GCC 4.2。 我有這個metatemplate有條件類型:C++模板類問題中的類型條件
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>'
爲什麼會發生?如何解決它? 在此先感謝!
http://www.boost.org/doc/libs/1_42_0/libs/mpl/doc/refmanual/if-c.html – 2010-08-22 16:55:10