有時工作有時不:當編譯器可以推斷出模板參數嗎?
template <class T>
void f(T t) {}
template <class T>
class MyClass {
public:
MyClass(T t) {}
};
void test() {
f<int>(5);
MyClass<int> mc(5);
f(5);
MyClass mc(5); // this doesn't work
}
有沒有辦法破解圍繞上面的例子?即強制編譯器從構造函數參數中推斷出模板參數。
這會在將來得到解決,還是有一個好的理由不會呢?
編譯器可以推斷出模板參數的一般規則是什麼?
+1,徹底。 Minor nit:建議將「當參數類型相關時」更改爲「當參數類型相關時」。 – 2009-04-28 12:30:48