int i = int(54.28f * 0.999f);
でoperator T()が機能しているとするとすると、
int i(54.28f * 0.999f);
も基本的には同じ仕組みになっているはず。

しかしコンパイラは前者をすんなり通して、後者にだけ暗黙のキャストの警告を出す。
やはり前者は明示的なキャスト(の別表記)と解釈するのが妥当ではないか?