【发布时间】:2009-09-19 02:36:11
【问题描述】:
对于普通的 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 的实例时,我找不到将参数提供给构造函数的方法。
有没有办法做到这一点不将类转换为模板类或将一些未使用的T 对象发送给构造函数?
【问题讨论】: