/******************************************************************************/ /* */ /* 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 ; }