I think it's being parsed as
A a(std::fstream argv[1]);
i.e. a function that takes in an array of 1 std::fstream
, where the extra parentheses are redundant.
Of course, in reality, that array parameter decays to a pointer, so what you end up with semantically is:
A a(std::fstream* argv);