/******************************************************************************/
/* */
/* FILE: december.cpp */
/* */
/* I am still surprised by some variants of misusing operators */
/* =========================================================== */
/* */
/* Compiled and tested with Visual C++ V6.0 */
/* */
/* V1.01 27-DEC-2002 P. Tellenbach http://www.heimetli.ch/ */
/* */
/******************************************************************************/
#include <iostream>
struct X
{
char *ps ;
X &operator *()
{
std::cout.put( *ps++ ) ;
return *this ;
}
int operator *( const X &x )
{
return 0 ;
}
} x = { "Hello world !\n" } ;
int main()
{
return * * * * * * * x * * * * * * * * x ;
}
Update 5. December 2022
The compiler complained because a string literal was assigned to a non-const pointer. A single const fixed the problem.
/******************************************************************************/
/* */
/* FILE: december.cpp */
/* */
/* I am still surprised by some variants of misusing operators */
/* =========================================================== */
/* */
/* Compiled and tested with Visual C++ V6.0 */
/* */
/* V1.01 27-DEC-2002 P. Tellenbach https://www.heimetli.ch/ */
/* */
/* Compiled and tested with g++ 11.2.0 */
/* */
/* V1.10 05-DEC-2022 P. Tellenbach https://www.heimetli.ch/ */
/* */
/******************************************************************************/
#include <iostream>
struct X
{
const char *ps ;
X &operator *()
{
std::cout.put( *ps++ ) ;
return *this ;
}
int operator *( const X &x )
{
return 0 ;
}
} x = { "Hello world !\n" } ;
int main()
{
return * * * * * * * x * * * * * * * * x ;
}