確かによく使われる書き方だけどキャストしまくりでソースが汚れるからこういうのを考えました

template <typename Rng, class OutStream>
OutStream& binWrite(Rng& rng, OutStream& os) {
  using namespace boost::lambda;
  using boost::addressof;
  using boost::range_value;

  boost::for_each(rng,
    bind( &OutStream::write, &os,
        ll_reinterpret_cast<char*>( bind( addressof<typename range_value<Rng>::type >, _1 ) ),
        ll_static_cast<std::streamsize>( ll_sizeof( _1 ) )
      )
  );
  return os;
}

使い方は
std::ofstream ofs("test.dat");
std::string a("abcdefg");
として
binWrite(a,ofs);だけでおk

どうよ?