template <typename T>
class ArrayList
{
public:
class const_iterator {
private:
const T *p;
public:
const_iterator(const T *l) {
p = l;
}
const_iterator(const const_iterator &ci) : p(ci.p) {}
};
T data[10];
const_iterator cbegin() const {
return const_iterator(&data[0]);
}
};
int main()
{
ArrayList<int> a;
ArrayList<int>::const_iterator it = a.cbegin();
}
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIEFycmF5TGlzdAp7CglwdWJsaWM6CgkJY2xhc3MgY29uc3RfaXRlcmF0b3IgewoJCXByaXZhdGU6CgkJCWNvbnN0IFQgKnA7CgkJcHVibGljOgoJCQljb25zdF9pdGVyYXRvcihjb25zdCBUICpsKSB7CgkJCQlwID0gbDsKCQkJfQoJCQljb25zdF9pdGVyYXRvcihjb25zdCBjb25zdF9pdGVyYXRvciAmY2kpIDogcChjaS5wKSB7fQoJCX07CgoJCVQgZGF0YVsxMF07CgoJCWNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IHsKCQkJcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCZkYXRhWzBdKTsKCX0KfTsKCmludCBtYWluKCkKewoJQXJyYXlMaXN0PGludD4gYTsKCUFycmF5TGlzdDxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGEuY2JlZ2luKCk7Cn0=