файловый поток tellg / tellp и gcc-4.6. Это ошибка?

Этот код:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <string>

int main()
{   
    std::remove("test.txt");
    std::fstream f("test.txt",std::ios::in | std::ios::out | std::ios::binary | std::ios::trunc);
    std::cout << f.good() << std::endl;
    f<<"test"<< std::flush;
    std::cout << f.tellg() << " " << f.tellp() << std::endl;
    f.seekg(0);
    std::string s;
    f>>s;
    std::cout << f.tellg() << " " << f.tellp() << std::endl;
}   

Дает следующий вывод в gcc-4.4.5

1
4 4
4 4

, т.е. возвращаются и tellg, и tellp ожидаемая позиция в потоке 4.

Хотя gcc-4.6.0

дает:

1
4 4
-1 4

Где я могу найти ссылку, чтобы сказать:

  1. 1-й случай правильный (ошибка в gcc-4.6)
  2. 2-й случай правильно (ошибка в gcc
  3. Оба случая верны, поведение не определено
6
задан RzR 27 July 2012 в 08:16
поделиться