#include <iostream>
int main()
{
const char cstr[] = "abcd" ;
const void* p = cstr ;
std::cout << cstr ;
// overload resolves to: free function which prints a c-style string
// std::ostream& operator<< ( std::ostream&, const char* ) ;
std::operator<< ( std::cout, cstr ) ;
std::cout << p ;
// overload resolves to: member function which prints the value of a pointer
// std::ostream::operator<< ( const void* ) ;
std::cout.operator<< (p) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7CiAgICBjb25zdCBjaGFyIGNzdHJbXSA9ICJhYmNkIiA7CiAgICBjb25zdCB2b2lkKiBwID0gY3N0ciA7CgogICAgc3RkOjpjb3V0IDw8IGNzdHIgOwogICAgLy8gb3ZlcmxvYWQgcmVzb2x2ZXMgdG86IGZyZWUgZnVuY3Rpb24gd2hpY2ggcHJpbnRzIGEgYy1zdHlsZSBzdHJpbmcKICAgIC8vIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCAoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0IGNoYXIqICkgOwogICAgc3RkOjpvcGVyYXRvcjw8ICggc3RkOjpjb3V0LCBjc3RyICkgOwoKICAgIHN0ZDo6Y291dCA8PCBwIDsKICAgIC8vIG92ZXJsb2FkIHJlc29sdmVzIHRvOiBtZW1iZXIgZnVuY3Rpb24gd2hpY2ggcHJpbnRzIHRoZSB2YWx1ZSBvZiBhIHBvaW50ZXIKICAgIC8vIHN0ZDo6b3N0cmVhbTo6b3BlcmF0b3I8PCAoIGNvbnN0IHZvaWQqICkgOwogICAgc3RkOjpjb3V0Lm9wZXJhdG9yPDwgKHApIDsKCn0K