Ошибка при создании итератора
При создании итератора компилятор пишет "непредвиденные лексемы перед ;" и "синтаксическая ошибка: идентификатор "iterator" " не могу понять в чем причина...
#include <list>
#include <iterator>
#include <iostream>
using namespace std;
template <typename T>
class LinkedList {
private:
list <T> spisok;
public:
int size;
list <T> :: iterator begin, end;
private:
void BE() {
begin = spisok.begin();
end = spisok.end();
return;
}
void LC() {
size = spisok.size();
return;
}
public:
LinkedList() {
LC();
BE();
}
LinkedList(T n ...) {
auto* p = &n;
while (*p) {
spisok.push_back(*p);
p++;
}
LC();
BE();
}
LinkedList(LinkedList ©List) {
for (int i = 0; i < copyList.size; i++) {
spisok.push_back(copyList.GetAt(i));
}
LC();
BE();
}
void Append(T x) {
spisok.push_back(x);
LC();
BE();
}
void Prepend(T x) {
spisok.push_front(x);
LC();
BE();
}
void AppendAll(LinkedList copyList) {
spisok.merge(copyList);
LC();
BE();
}
void InsertAt(int a, int x) {
auto it = spisok.begin();
a--;
advance(it, a);
spisok.emplace(it, x);
LC();
BE();
}
void RemoveAt(int a) {
auto it = spisok.begin();
a--;
advance(it, a);
LC();
BE();
}
void RemoveAll() {
spisok.clear();
LC();
BE();
}
auto Pop() {
int s = size - 1;
auto ret = GetAt(s);
spisok.pop_back();
LC();
BE();
return ret;
}
auto Dequeue() {
auto ret = GetAt(0);
spisok.pop_front;
LC();
BE();
return ret;
}
int Length() {
return spisok.size();
}
auto GetAt(int a) {
auto it = spisok.begin();
a--;
advance(it, a);
return *it;
}
};