In the following code fragment:
# include <ios>
# include <fstream>
# include <istream>
using namespace std;
void CommandLine(int argc, char** argv);
int main(int argc, char** argv) {
CommandLine(argc, argv[]);
ifstream x.open(argv[1], ios:in);
ofstream y.open(argv[1], ios::in);
return 0;
};
g++-4 messaging is:
>> g++-4 x.cpp
x.cpp: In function 'int main(int, char**)':
x.cpp:8: error: expected primary-expression before ']' token
x.cpp:10: error: expected primary-expression before ':' token
A recommendation and reason for change is:
1: x.cpp:8 error: illegal to pass an array without subscript value as an
argument
The given message is accurate but non-expressive of the reason
for failure.
3: cpp:10 error: illegal scope resolution operator ':'
From memory, there are three uses of ':' in C++
':' label terminator, <label>:
':' case in a switch statement, case <value>:
':' scope resolution operator, "::"
The given diagnostic message is deceptive.
art