Название в значительной степени говорит обо всем этом.
Я реализую свой собственный класс streambuf, и мне интересно, что думал Комитет, когда они решили включить как std::streambuf::seekpos()
, так и std::streambuf::seekoff()
(и аналогично для связанных pubseekpos()
и pubseekoff()
).
Мне кажется, что seekpos(x)
должен иметь тот же эффект, что и seekoff(x, std::ios::beg)
во всех обстоятельствах, которые я могу себе представить. Но, возможно, мое воображение недостаточно. Итак, почему вы хотите иметь оба, когда seekpos
полностью добавляется seekoff
? Или, по крайней мере, почему бы вам не сделать реализацию по умолчанию первого, просто вызвать последний?
Если ответ "потому что это то, что сделал STL" или подобное, тогда предположим, что я спрашиваю о обосновании STL или подобного.
(я понимаю, что первым аргументом seekpos
является streampos
, а первый аргумент seekoff
- это streamoff
. Но обратите внимание, что 27.4.3.2 [lib.fpos.operations] требует, чтобы позиции потока быть конвертируемым в потоки смещения и обратно, поэтому я не думаю, что это ответ.)