152ですが、int型でも負の値をいれると8進、16進でうまくいきません。
double型の場合、ios::oct等が対応していないためcout.setfの行を無視していると思ったのですが・・・
これも155さんが言うサイズと関係しているような気がするのですがよくわかりません。
(もしかしたらこの質問自体が意味不明な文になってるかも・・・)