#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) ;

}
