Overloading Examples

#include <fstream.hfa>

void main( void ) { sout | "void(void)"; }
void main( int i ) { sout | "void(int)"; return i; }
int main( int i ) { sout | "int(int)"; return i + 1; }
void main( double d ) { sout | "void(double)"; }
double main( int i ) { sout | "double(int)"; return 7.3; }
void main( int i1, int i2 ) { sout | "void(int,int)"; }
int main( int i1, int i2 ) { sout | "int(int,int)"; }

int main() {
    main();								// void(void)
    main( 3 );							// void(int)
    main( 3.5 );						// void(double)
    int i = main( 3 );					// int(int)
    double d = main( 3 );				// double(int)
    main( 4, 5 );						// void(int,int)
    i = main( 4, 5 );					// int(int,int)
    int j;

    struct main { int i; };
    main main = { 3 };
    enum E { main };
    int main = 3;
    char main[10];
    E e = main;

    main += 1;
    main.i = 3;
    main[3] = 'a';
    sout | main | (int)main( 4 ) | ' ' | main[3] | ' ' | main.i;
}