这是我的代码,它会在vector<ET>(iterator start, iterator end)
namespace ro {
template<typename ET>
class vector : public std::vector<ET> {
public:
vector<ET>() : std::vector<ET>() { }
vector<ET>(std::initializer_list<ET> l) : std::vector<ET>(l) { }
using std::vector<ET>::iterator;
vector<ET>(iterator start, iterator end) : std::vector<ET>(start, end) { }
};
}
int main(int argc, char **argv) {
ro::vector<int> v{1, 2};
return (0);
};
完整的错误输出:
/home/roroco/Dropbox/cs/ro-c/ex/ex.cc:15:29: error: expected ‘)’ before ‘start’
vector<ET>(iterator start, iterator end) : std::vector<ET>(start, end) { }
如何让它发挥作用?
答案 0 :(得分:1)
将using std::vector<ET>::iterator;
替换为
using typename std::vector<ET>::iterator;
// ^^^^^^^^
没有typename
编译器无法确定iterator
是成员字段/函数还是类型。因此编译器假定它是一个字段/函数。