エラーメッセージ見ると、どうやらその実装はExpressoin Template的なものを使ってそうだな
doSomething(std::valarray<float>(A - x));
とか
doSomething(A -= x);
でどうだ?

MSVCの実装は単に要素ごとに引いてるだけだから、コンパイル通ったけどね