【发布时间】:2011-09-23 01:39:02
【问题描述】:
我经常发现需要使用以下模式:
template<typename T>
class SomeClass : public Base {
SomeClass(const T& t) {...}
...
};
template<typename T>
SomeClass<T>* makeSomeClass(const T& t) {
return new SomeClass<T>(t);
}
并使用它:
Base* = makeSomeClass(123);
这在我不想显式指定 T 时很有用,因为它非常复杂(函数类型等),并且函数参数可以隐式推断类型。
有没有办法在没有额外的“make”功能的情况下做到这一点?为什么模板推导只在函数参数中有效,而在构造函数参数中无效?
【问题讨论】: