- #include <iostream> 
- using namespace std; 
-   
- int i = 0; 
-   
- struct A 
- { 
- 	A() { cout << "A()\n"; if(i++ > 0) throw 42; } 
- 	~A() { cout << "~A()\n"; } 
-     void * operator new [] (size_t t, int, int) 
-     { 
-         cout << "3 parameters allocation" << endl; 
-         return ::operator new[](t); 
-     } 
-   
-     void operator delete [] (void *p, int, int) 
-     { 
-         cout << "3 parameters deallocation" << endl; 
-         return ::operator delete[](p); 
-     } 
- }; 
-   
- int main()  
- { 
- 	try{ 
-     A *a = new (5,5) A[10]; //operator new [] (size_t, int, int) invoked 
- 	}catch(...) {} 
-     //delete [] a; //Error. Overload resolution is failed. 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGkgPSAwOwoKc3RydWN0IEEKewoJQSgpIHsgY291dCA8PCAiQSgpXG4iOyBpZihpKysgPiAwKSB0aHJvdyA0MjsgfQoJfkEoKSB7IGNvdXQgPDwgIn5BKClcbiI7IH0KICAgIHZvaWQgKiBvcGVyYXRvciBuZXcgW10gKHNpemVfdCB0LCBpbnQsIGludCkKICAgIHsKICAgICAgICBjb3V0IDw8ICIzIHBhcmFtZXRlcnMgYWxsb2NhdGlvbiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXdbXSh0KTsKICAgIH0KCiAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSBbXSAodm9pZCAqcCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgY291dCA8PCAiMyBwYXJhbWV0ZXJzIGRlYWxsb2NhdGlvbiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gOjpvcGVyYXRvciBkZWxldGVbXShwKTsKICAgIH0KfTsKCmludCBtYWluKCkgCnsKCXRyeXsKICAgIEEgKmEgPSBuZXcgKDUsNSkgQVsxMF07IC8vb3BlcmF0b3IgbmV3IFtdIChzaXplX3QsIGludCwgaW50KSBpbnZva2VkCgl9Y2F0Y2goLi4uKSB7fQogICAgLy9kZWxldGUgW10gYTsgLy9FcnJvci4gT3ZlcmxvYWQgcmVzb2x1dGlvbiBpcyBmYWlsZWQuCn0=