我經常發現需要使用以下模式:C++:根據參數實例化模板化類
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」功能,有沒有辦法做到這一點?爲什麼模板推導只能在函數參數中工作而不能在構造函數參數中工作?
見http://stackoverflow.com/questions/ 984394 /爲什麼不推斷模板參數從構造函數 – Nick
可能重複[\ [C++ \]當模板參數推演失敗](http://stackoverflow.com/questions/5528096/c-when-template-參數 - 扣除 - 失敗) – bobbymcr