2001

Grusel++ of the month

Home
Download Source
/******************************************************************************/
/*                                                                            */
/*                                                           FILE: august.cpp */
/*                                                                            */
/*  Demonstrates a severe abuse of the preprocessor and a numeric algorithm   */
/*  =======================================================================   */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   23-AUG-2001   P. Tellenbach   http://www.heimetli.ch/             */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <numeric>

#define _               'H'
#define X                _+'e'
#define __               _,X
#define X_               X+'l'
#define ___              __, X_
#define X__              X_+'l'
#define ____             ___,X__
#define X___             X__+'o'
#define _____            ____,X___
#define X____            X___+' '
#define ______           _____,X____
#define X_____           X____+'W'
#define _______          ______,X_____
#define X______          X_____+'o'
#define ________         _______,X______
#define X_______         X______+'r'
#define _________        ________,X_______
#define X________        X_______+'l'
#define __________       _________,X________
#define X_________       X________+'d'
#define ___________      __________,X_________
#define X__________      X_________+' '
#define ____________     ___________,X__________
#define X____________    X__________+'!'
#define ______________   ____________,X____________
#define X______________  X____________+'\n'
#define ________________ ______________,X______________

int mistery[] = { ________________ } ;

int main()
{
  return &std::
     adjacent_difference( mistery,
                          mistery + sizeof(mistery)/sizeof(mistery[0]),
                          std::ostream_iterator<char>(std::cout) ) == 0 ;
}

Update 31. August 2021

The ostream_iterator is now defined in the iterator-header, and the compiler refused to take the address of the temporary ostream_iterator.

One warning remains: the compiler complains that &oi can never be 0.

/******************************************************************************/
/*                                                                            */
/*                                                           FILE: august.cpp */
/*                                                                            */
/*  Demonstrates a severe abuse of the preprocessor and a numeric algorithm   */
/*  =======================================================================   */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   23-AUG-2001   P. Tellenbach   http://www.heimetli.ch/             */
/*                                                                            */
/*  Compiled and tested with g++ 8.3.0                                        */
/*                                                                            */
/*  V2.00   31-AUG-2021   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <iterator>
#include <numeric>

#define _               'H'
#define X                _+'e'
#define __               _,X
#define X_               X+'l'
#define ___              __, X_
#define X__              X_+'l'
#define ____             ___,X__
#define X___             X__+'o'
#define _____            ____,X___
#define X____            X___+' '
#define ______           _____,X____
#define X_____           X____+'W'
#define _______          ______,X_____
#define X______          X_____+'o'
#define ________         _______,X______
#define X_______         X______+'r'
#define _________        ________,X_______
#define X________        X_______+'l'
#define __________       _________,X________
#define X_________       X________+'d'
#define ___________      __________,X_________
#define X__________      X_________+' '
#define ____________     ___________,X__________
#define X____________    X__________+'!'
#define ______________   ____________,X____________
#define X______________  X____________+'\n'
#define ________________ ______________,X______________

int mistery[] = { ________________ } ;

int main()
{
  std::ostream_iterator<char> oi = std:: adjacent_difference(
                          mistery,
                          mistery + sizeof(mistery)/sizeof(mistery[0]),
                          std::ostream_iterator<char>(std::cout) ) ;
  return &oi == 0 ;
}