On 20 May 2011 07:20, Dr. David Kirkby wrote: > On 05/19/11 09:09 PM, Jonathan Wakely wrote: >> >> On 19 May 2011 20:03, David Kirkby<david.kirkby@xxxxxxxxxx> wrote: > >> I thought we were talking about C++ (my first clue was the subject of >> the thread and your mention of "GNU C++") > >> Throughout your reply you only refer to C, which I'm not qualified or >> interested enough to comment on. > > But for many practical purposes C++ is a superset of C, so g++ inherits the > same GNUims as gcc. Some, but not all of them. G++ is not a superset of the C compiler in GCC, they're separate front ends. On the other hand, many C++ extensions have been removed over the years. See http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Deprecated-Features.html and http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Backwards-Compatibility.html which support my point about removing non-standard extensions. As for the other C++ extensions, three of them are now part of the upcoming C++ standard: http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/C_002b_002b-Extensions.html That's why I say the trend is to remove non-standard extensions in the C++ front end, can you see how I can say that now? > For example: > > #include <iostream> > using namespace std; > > int main() { > int a=0b1111111; > cout << a; > } > > compiles with g++, but is not valid C++. > > There's not even a warning if -Wall is used Well of course not, RTFM. If you use -pedantic you get a warning. > drkirkby@hawk:~$ g++ -Wall test.cc > drkirkby@hawk:~$ > > The Sun compiler quickly identifies this as invalid C++ code. > > drkirkby@hawk:~$ CC test.cc > "test.cc", line 5: Error: 0b is not a valid constant. > "test.cc", line 5: Error: Badly formed expression. > 2 Error(s) detected. > >> I'm very interested in making G++ conform to the C++ standard as well >> as possible and only objected to the assertion that G++ users don't >> care about writing standard C++. > > My point is the GNU compilers allow constructs which are not standard. So do all compilers so your point is pretty pointless. e.g. the Sun compiler allows struct X { mutable int& i; }; but that's ill-formed (gcc accepted it until 4.6 too, but I fixed it.) G++ is far stricter and more standard conforming than the Sun compiler. Additionally it accepts some extensions, but most of them can be disabled with -pedantic-errors if you don't want them. > Anyone starting a C++ project and wishing for it to be standard C++, should > not use g++. Now you sound like a troll. I'd ignore you, but I don't want to leave a ridiculous statement like that unchallenged in the archives of this list. I've been starting C++ projects for years using G++ and it's not done me or my code any harm.