c++のstd::ifstreamとかってなんでstringを引数にとってコンストラクトできないの?

c++の標準ライブラリって、結構考えて作ってあるから、もし理由があるなら知りたいんですが。
ファイル名などの文字列を扱うには、char*よりstringの方が便利ですから、
ifstreamにファイル名指定する時にも、stringが直接渡せればいいと思うのですけれども。
c_str()つけるのが面倒なんですけれども。