#include <iostream>
struct A { friend std::ostream& operator << (std::ostream& o, const A& c) { return o; }; };
struct B { friend std::ostream& operator << (std::ostream& o, const B& c) { return o; }; };
int main(int argc, char** argv)
{
A *arrayA = new A[10];
B *arrayB = new B[10];
/* some codes to initialize arrayA and arrayB */
for (int i = 0; i < 10; i++) { std::cout << arrayA[i]; } // this work
for (int j = 0; j < 10; j++) { std::cout << arrayB[j]; } // this complain
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgeyBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBBJiBjKSB7IHJldHVybiBvOyB9OyB9OwpzdHJ1Y3QgQiB7IGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IEImIGMpIHsgcmV0dXJuIG87IH07IH07CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCnsKCiAgICBBICphcnJheUEgPSBuZXcgQVsxMF07CiAgICBCICphcnJheUIgPSBuZXcgQlsxMF07CgogICAgLyogc29tZSBjb2RlcyB0byBpbml0aWFsaXplIGFycmF5QSBhbmQgYXJyYXlCICovCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsgc3RkOjpjb3V0IDw8IGFycmF5QVtpXTsgfSAvLyB0aGlzIHdvcmsKICAgIGZvciAoaW50IGogPSAwOyBqIDwgMTA7IGorKykgeyBzdGQ6OmNvdXQgPDwgYXJyYXlCW2pdOyB9IC8vIHRoaXMgY29tcGxhaW4KICAgIHJldHVybiAwOwp9Cg==