有关ios:app的一点有关问题

有关ios::app的一点问题今天编写程序的时候发现,如果定义了一个fstream的的对象,那么以下声明语句是可以通

有关ios::app的一点问题
    今天编写程序的时候发现,如果定义了一个fstream的的对象,那么以下声明语句是可以通过编译器的,
     fstream myFile("test.dat",ios::in | ios::app);
    并且这样可以在test.dat不存在时创建一个文件,即文件不存在时myFile.is_open()也非0。
     但是我用以下声明语句,
     fstream myFile("test.dat",ios::in | ios::out);
    则在test.dat不存在时不会创建文件,myFile.is_open()为0。
     请问这是为什么呢?会不会是编译器的问题?
     恳求各位大牛给以解答。
in
[解决办法]
out 相当于r+,不会创建文件。 没有看见in
[解决办法]
app组合, 估计是实现相关。 截图来自c++ 2003标准
[解决办法]
读写关系么?