對於一個普通的C++函數,它可能在參數列表不顯示模板參數:類的構造函數與非參數模板類型
template<typename T>
T default_construct()
{
return T();
}
與
some_type x = default_construct<some_type>();
即使調用此我使用的類型不在參數列表中,我仍然可以將它傳遞給函數。現在,我想這樣做在類的構造函數:
struct Base;
template<typename T>
Base* allocate()
{
return new T; //Assume T derives from Base...
}
struct factory {
template<typename T>
factory()
: func(allocate<T>)
{}
std::tr1::function<Base*()> func;
};
,但我不能找到一種方法,參數向構造函數時,我想構建的factory
一個實例。
有沒有辦法做到這一點沒有把類變成模板類或發送一些未使用的對象到構造函數?
好吧,標準答案很引人注目。謝謝。 – CAdaker 2009-09-19 02:48:43