如何讓我的類在不明確引用它的情況下推斷參數的內部類型?看看下面的小例子:嵌套STL模板的類型
#include <vector>
template <class T>
class foo {
public:
foo(std::vector<T> &x) :
_x(x) {
T dummy = x.front(); // Trying to trick the compiler here
}
private:
std::vector<T> _x;
};
int main() {
std::vector<int> a;
foo<int> b(a); // This works
foo c(a); // This fails
return 0;
}
我看到foo
預計它的參數是一個vector<int>
,但它讓我創造T==[int]
類型的對象,所以它看起來像它知道內部類型是什麼!永遠不要忘記爲空時dummy
的賦值失敗......我如何引用嵌套的內部類型?
我不明白的問題。 「嵌套內部類型」是什麼意思?嵌套模板在哪裏?你想在哪裏推斷類型? 'foo c(a)'這一行或其他地方? – jalf
@jalf對不起,如果措辭不清楚,或者如果我混淆了我的條款(請糾正我)。我想使行'foo c(a)'編譯,而現在它失敗了,因爲'foo'沒有類型。 – Hooked