if else问题
template<typename T,bool isPolymorphic>
class NiftyContainer
{
private:
void DoSomething(T* Obj,Int2Type<true>)
{
T *pNewObj = pObj->Clone();
}
void DoSomething(T *Obj,Int2Type<false>)
{
T *pNew = new T(*pObj);
}
public :
void DoSomething(T *pObj)
{
DoSomething(pObj,Int2Type<isPolymorphic()>);
}
}
函数重载问题
template <typename T>
struct Type2Type
{
typedef T OriginalType;
}
template <const U&arg,Type2Type<T>>
{
return new T(arg)
}
template<class U>
Widget * Create(const U&arg,Type2Type<Widget>)
{
return new Widget(arg,-1);
}
String * PStr=Create("Hello",Type2Type<String()>);
Widget * pW= Create