根據this question,應添加typename
以告知編譯器iterator
是一種類型(是否正確?什麼時候應該在模板函數中使用typename?
template <typename T>
void print(vector<T> &v) {
for (typename vector<T>::const_iterator it=v.begin(); it!=v.end(); ++it)
cout<<*it<<endl;
}
兩個問題:
下應在
typename
添加什麼情況?有人能給我另一個例子嗎?Can
auto
在C++ 11中取代所有這些typename xxx
個案嗎?
這是'auto'有用的典型例子之一。 – chris
1)請參閱上面的鏈接。 2)是的,這是'auto'的一大好處,它取代了許多這些煩人的事情。 –
當然,如果你想從'auto'得到正確的類型,你需要'cbegin'。 – chris