我无法理解为什么g ++一直抱怨它?
vector.cpp:42:8:错误:“std :: initializer_list< _Tp> :: iterator
之前需要”typename“这是代码:
template<typename T>
Vector<T>& Vector<T>::operator=(std::initializer_list<T> list)
{
if ( list.size() > 0 )
{
clear();
for( std::initializer_list<T>::iterator iter = list.begin();
iter != list.end(); iter++ )
{
push_back(*iter);
}
}
return *this;
}
亲切的问候
答案 0 :(得分:1)
您需要向编译器指出std::initializer_list<T>::iterator
是一种类型,因为它也可以是成员。由于编译器在此函数中不知道T
,因此两种可能性都会导致含糊不清。
答案 1 :(得分:1)
IT必须是typename std::initializer_list<T>::iterator
,因为编译器无法判断迭代器是成员还是类型。