comportamiento extraño de corriente

Me he encontrado con un comportamiento extraño de la corriente, 'menos extraño para mí. Aquí está mi programa, estoy usando Visual Studio 2010 Express Edition.

int main () {

    std::ofstream file("file.txt");
    file << "something1";
    file.close();

    file.open("file.txt", std::ios::ate | std::ios::in );
    file << "something2";
    file.close();

    return 0;
}

Esto produce la salida correcta.

algo1algo2

Ahora si reemplazo la novena línea con el siguiente código,

file.open("file.txt", std::ios::ate);

Obtengo esta salida.

algo2

Pero si vuelvo a reemplazar la novena línea, esta vez con este código,

file.open("file.txt", std::ios::ate | std::ios::in );

Obtengo esta salida.

algo1algo2

Ahora, supongo que la pregunta es, ¿podría alguien ayudarme a tener algún sentido de esto? ¿Por qué funciona la última solución, pero no la media?

EDITAR: Se corrigió la función principal. Aprendes algo cada día.

Respuestas a la pregunta(1)

Su respuesta a la pregunta