我有以下類:C++ 11方法的返回類型的模板特
class Foo {
public:
template <typename T>
T bar() {
cout << "Called with return type: " << typeid(T).name() << endl;
T t = //... (some implementation here)
return t;
}
}
它在以下方式調用:
Foo foo;
int i = foo.bar<int>();
long l = foo.bar<long>();
現在我想有不同的專業化情況下,當函數與shared_ptr<T>
Foo foo;
foo.bar<shared_ptr<int>>();
foo.bar<shared_ptr<long>>();
但當然調用我不想創建完整規格每種類型的ialization。是否有可能實現這種行爲(如果需要,可以基於特徵)?
函數模板不能部分專用,但類模板可以。創建一個公開靜態成員函數的包裝類模板,部分專門化該類並適當地更改成員函數。 – 0x499602D2