void func(T)(T t){
auto file = new std.stream.File("hoge", FileMode.In);
/* ここでTの型によって様々な処理 */
file.read(t);
}

ここでTがenum型Hogeである時、下記のエラーがでます。
Error: function std.stream.Stream.read called with argument types:((Hoge))
matches both:
  std.stream.Stream.read(out int x)
and:
  std.stream.Stream.read(out dchar x)

std.traitsにenumを判別する物がなく、enumの時だけ処理を挟む事もできなくて困っています。
このオーバーロードのエラーを解決するにはどうすればいいのでしょうか?