Slashdot Mirror


Microsoft's C++/CLI Spec Has an Identity Crisis

Andy Updegrove writes "Microsoft's submission of its XML Reference Schema to Ecma has gotten lots of attention in recent months, because Microsoft offered it to Ecma to try to neutralize Massachusetts' adoption of the OpenDocument Format (ODF) standard. But last week it's earlier submission of C++/CLI to Ecma was in the limelight when the U.K. representatives to ISO cried foul over (of all things) its name, which they said was confusingly, and inappropriately, similar to C++. Some think that there may be more afoot, including the potential for Microsoft to add proprietary extensions after ISO finally adopts the new standard under a different name. Either way, the C++/CLI experience represents an interesting dry run for what to expect as Microsoft pushes the XML Reference Schema throught the same process."

154 comments

  1. It's all in how you read it by smittyoneeach · · Score: 2, Interesting

    C++ Continues Linux's Invasion
    651 (DCLI)
    C++ Command Line Interface

    The name, as submitted, is a sufficient train-wreck that people savvy enough to know a compile shan't confuse it with something they want. Possibly it will appeal to the PHB audience.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:It's all in how you read it by Keeper · · Score: 1

      CLI = Common Language Infrastructure

    2. Re:It's all in how you read it by stanmann · · Score: 1

      And here I always thought it was command line interface, HMM. Next you'll be telling me HDD means High Definition Display.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    3. Re:It's all in how you read it by jo42 · · Score: 1
      CLI == Command Line Interface

      Prior Art: AmigaOS you ignorant Microsoft brainwashed clod.

    4. Re:It's all in how you read it by Anonymous Coward · · Score: 0

      At ease, Fido. Mr. Softy has his eye on this site, and he reports to Santa Claus. It's coal in your stockings if you don't calibrate yourself.

    5. Re:It's all in how you read it by Keeper · · Score: 1

      It's a TLA. It isn't like Command Line Interface is the only set of words that start with C, L, and I that make sense. If it were we wouldn't need words in the first place.

    6. Re:It's all in how you read it by Keeper · · Score: 1

      CLI in this context is a TLA for Common Language Infrastructure. CLI is a three letter acronym, which are by no means unique. The only people freaking out about this are morons such as yourself. Oh nos! A name for something has three words which start with C, L, and I! What ever shall we do!

    7. Re:It's all in how you read it by Nutria · · Score: 1

      in this context

      Lawyers (which is what MSFT really cares about) care about context only in that it allows them to raise ambiguity, and say, "No, we really meant something else. Too bad, so sad you got screwed."

      --
      "I don't know, therefore Aliens" Wafflebox1
    8. Re:It's all in how you read it by Keeper · · Score: 1

      Context doesn't increase ambiguity, it reduces it. Without context, nothing would have meaning. Hell, the words I'm typing here mean nothing without the other words present in this sentence. Your arguement is nonsensical.

  2. Spellcheck. Please. by lightyear4 · · Score: 2, Funny

    ..as Microsoft pushes the XML Reference Schema throught the same process.

    thought + through = throught != a well perused article summary.

    1. Re:Spellcheck. Please. by bcat24 · · Score: 0

      Spell checking? What do you the this is, Hogwarts?

    2. Re:Spellcheck. Please. by eikonos · · Score: 2, Funny

      Grammar? Who the how are what the, Harry Potter?

    3. Re:Spellcheck. Please. by CaptnMArk · · Score: 1

      I'd complain more about XML Reference Schema. WTF is that???

      Googling reveals the: Office 2003 XML Reference Schemas, a me-too equivalent to ODF (Open Document Format)

    4. Re:Spellcheck. Please. by Anonymous Coward · · Score: 0

      deep throught? Nevermind...

    5. Re:Spellcheck. Please. by the+chao+goes+mu · · Score: 1

      Me failing english? That's unpossible!

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
  3. Sounds like a molehill masquerading as a mountain by BadAnalogyGuy · · Score: 2, Interesting

    This doesn't seem to be anything more than someone who's got his panties in a bunch about Microsoft and is creaming between his thighs about the chance to stick it to the Man.

    C++/CLI seems to be a (standardized) proprietary extension to the C++ language that allows it to interface well with the rest of the .Net architecture. It's not a huge departure from the core language by any means, at least not enough of one to require a complete name change.

    On the one hand, you've got Microsoft who is willing to label various related products under one brand (Windows, .Net, etc) and on the other hand you've got a group who is relatively unwilling to give Microsoft the time of day.

    I'm not saying that ISO's wrong, but they could certainly stand to pull that rod out of their collective asses.

  4. The name _is_ confusing. by jZnat · · Score: 1, Funny

    I thought C++ programs by default were CLI (as opposed to GUI).

    --
    'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
    1. Re:The name _is_ confusing. by r00t · · Score: 2, Insightful

      No kidding. ".net++" would be kind of sane.

    2. Re:The name _is_ confusing. by Anonymous Coward · · Score: 0

      For an obvious counter-example, try reading your own "I'm a 14 year old jizztroll" sig.

  5. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 1, Funny

    BadAnalogyGuy
    "This doesn't seem to be anything more than someone who's got his panties in a bunch about Microsoft"

    I actually think that's a pretty good analogy :)

  6. Re:Sounds like a molehill masquerading as a mounta by BadAnalogyGuy · · Score: 2, Funny

    I actually think that's a pretty good analogy

    Dammit!

  7. Re:Sounds like a molehill masquerading as a mounta by radtea · · Score: 4, Insightful

    C++/CLI seems to be a (standardized) proprietary extension to the C++ language that allows it to interface well with the rest of the .Net architecture. It's not a huge departure from the core language by any means, at least not enough of one to require a complete name change.

    Compilers have no sense of humour. If a language is not ISO C++, it is not C++ and should not have C++ as part of the name. I'm dating myself, but I've worked with "FORTRAN" compilers that didn't support FORTRAN 77 (which was the standard at the time) and to all intents and purposes they were not FORTRAN compilers--they were "some proprietary FORTRAN-like-language compilers" and completely useless if you wanted to compile many perfectly ordinary FORTRAN programmes.

    The issue here is that the use of the C++ name is a big marketing issue. But to apply the C++ name in any variant to a language that is not C++ is fundamentally misleading and dishonest. This is because humans are lazy and stupid, and tend to drop the modifier and think of "C++/CLI" as simple "C++"--the article points out that MS documentation has many examples of code samples labelled "C++" with no "CLI" modifier that are not, in fact, C++. They are C++/CLI.

    And as I said, compilers have no sense of humour--they don't care that "C++/CLI" is "almost" C++. They see non-standard syntax and barf. So it is very important for those of us who want our code to compile and who want to be able to communicate with others to keep the name "C++" as pure as possible. This isn't being uptight--it is a purely pragmatic concern about keeping marketing droids as far from technology as possible so that software professionals can communicate with each other as clearly and unambigously as possible given the limitations we all have as human beings.

    --
    Blasphemy is a human right. Blasphemophobia kills.
  8. If they want to make it less confusing... by dcapel · · Score: 1, Funny

    Just name it --C/CLI :)

    --
    DYWYPI?
    1. Re:If they want to make it less confusing... by Anonymous Coward · · Score: 0
      Just name it --C/CLI :)

      CCLI? What does this have to do with Christian music?

    2. Re:If they want to make it less confusing... by Mr2001 · · Score: 1

      More like C--/CLI, since C++ and C-- have the same value anyway. ;)

      --
      Visual IRC: Fast. Powerful. Free.
  9. Plus Plus! by tepples · · Score: 2, Insightful

    The issue here is that the use of the C++ name is a big marketing issue. But to apply the C++ name in any variant to a language that is not C++ is fundamentally misleading and dishonest.

    The same argument could have been advanced against the name C++ itself: "The issue here is that the use of the C name is a big marketing issue. But to apply the C name in any variant to a language that is not C is fundamentally misleading and dishonest." Along these lines, I don't see anything wrong with something like "C++ Extensions for CLI" so long as the name makes it clear that it's an extension to C++98 and/or C++0x.

    1. Re:Plus Plus! by tomhudson · · Score: 1
      c++ was originally" c with classes", plus a bunch of the extensions that had evolved on c.

      c++/cli is NOT descended from c or c++. Its descended from net. Call it net/cli if you want.

    2. Re:Plus Plus! by Anonymous Coward · · Score: 0

      > c++/cli is NOT descended from ... c++

      Could you be any more dumb?

      ALSO, I don't see anyone here arguing that KDE programs are "not C++" because TrollTech extended the language with Signals/Slots in order to use their libraries.

    3. Re:Plus Plus! by Anonymous Coward · · Score: 0

      ALSO, I don't see anyone here arguing that KDE programs are "not C++" because TrollTech extended the language with Signals/Slots in order to use their libraries.

      could you be any more dumb yourself? TrollTech did not 'extend' anything - they came up with a different preprocessor scheme. The code that gets compiled is what the preprocessor spits out and is valid c++. You can write it yourself, but the macro language + moc preprocessing is easier. Now please do tell how to pre-process the managed 'c++ extensions' to produce valid c++ code that g++ would not barf on.

      Here's a nickel, kid - buy yourself a clue and smack your head with it, you might learn something from the echo.

    4. Re:Plus Plus! by Anonymous Coward · · Score: 0

      wow, congratulations. You've managed to prove yourself even dumber that the original post suggested. Challenging the average troll's IQ level from below is a true feat and I commend you for it. Although that's pretty much the only commendable quality you've displayed. If you do have a job (outside the subtle implications from your post) I pity those who have to work with you.

      Mods, if you happen to stumble upon this lost thread, this post is flamebait; the parent is the troll one.

    5. Re:Plus Plus! by angel'o'sphere · · Score: 3, Interesting

      This is completely wrong.

      C++/CLI might be the name of the standard, what it means is: having a standard that defines how C++ is compiled to .NET byte code and executed in the .NET FrameWork.

      C++/CLI or C++/.NET is essentially: C++. However with added tweakes like finalizers (yepp, thats not a destructor), (optional) garbage collection bublic/private classes liek in C#/Java and a mapping from primitv data types on .NET System Classes like System.Int32 etc.

      Further all primitive datatypes have a determined size, unlikey ISO C++ where still only char <= short <= int <=long is valid which means often that char == 1 byte and the rest is 4 bytes.

      Finally a lot of typical C# (or .NET) like threading etc. and finalization has to have a counterpart in C++/.NET which is defined in C++/CLI.

      a typical C++ clas in .NET mitght look like:

      public class __gc MYClass {
            !MyClass() { ... } // finalizer - called after/during GC
            ~MyClass() { ... } // destructor (like in standard C++)
            MyClass() { ... } // ....
      }


      HINT: don't write new programms in C++/.NET except you need fancy stuff like templates (but I'm not sure how templates exactly work in C++/.NET ... I could imagine tehy are only generics, but I think they are still templates like in Visual C++).

      If you need to write new code in .NET then only use C++/.NET to port/interface with existing C++ code, otherwise all those subtible changes that are made in C++/.NET versus ordinary C++ (or MS Visual C++) will drive you completely mad!!

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Plus Plus! by CaymanIslandCarpedie · · Score: 2, Insightful

      I preface this by saying I know I'm being anal (sorry) ;-)

      c++/cli is NOT descended from c or c++. Its descended from net.

      I'd have to disagree with that. At least if we are to consider c++ a descendant of c, than calling c++/cli a descendant of c++ could certainly be valid while calling it a descendant of .NET really doesn't make any sense.

      .NET is a common langage runtime, common type system, meta-data about assemblies and thier internals, etc. In a nut-shell you can consider .NET a virtual machine. While that is not at all acurate in the VMWare sense of the word, in the JVM sense its probably as accurate as can be without going into huge detail.

      Anyway, the point is .NET is anything but a "language" like c, c++, FORTRAN, ect though .NET does include Common Intermediate Language (CIL), it is the equivelent to Java byte-code and not really a langange as a developer would think of it. Since .NET is NOTHING like c++/cli, I don't see how you can consider it a descendant of .NET.

      Think about it like OOP. If an object B inherits from another object A than object B will have all the same properties, methods, etc as object A. Object B will have some extra stuff and may override some of the original objects stuff, but basically Object B is Object A with "extensions". In that sense c++ may be a descendant of c and c++/cli may be a descedant of c++ (but certainly not .NET).

      Now perhaps a better name for this would be something like c++.NET as what these extensions mainly do is provide the c++ lanange (or at least MS's version of it) with an interface to the .NET environment and in fact I think that would perhaps be more clear and help resolve this situation. However, with MS calling everything xxx.NET perhaps they are trying to kick that habbit ;-)

      --
      "reality has a well-known liberal bias" - Steven Colbert
    7. Re:Plus Plus! by Anonymous+Brave+Guy · · Score: 4, Insightful
      The same argument could have been advanced against the name C++ itself: "The issue here is that the use of the C name is a big marketing issue. But to apply the C name in any variant to a language that is not C is fundamentally misleading and dishonest."

      You're comparing apples to oranges.

      Stroustrup didn't go around "casually" referring to C++ as C using a multi-million-dollar PR machine. On the contrary, he has written extensively about the relationship between C++ and C as the newer language has evolved, and has always been clear about the significance of having similar syntaxes and where the differences start.

      Microsoft, on the other hand, frequently do refer to C++/CLI simply as C++. They even have a column on their MSDN web site called Pure C++; would you like to guess whether the C++ in question is the ISO standard variety or the C++/CLI one? That one's a real shame, and I'd have expected better from a distinguished C++ expert like Stan Lippman.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    8. Re:Plus Plus! by radtea · · Score: 4, Insightful

      C++/CLI or C++/.NET is essentially: C++.

      This is false. To you all the nice people who have thoughtfully replied to my comment with pedantic outrage, let me remind you what hummassa (157160) has pointed out in a mysteriously low-moderated response:

      C++/CLI will not compile the STL.

      This has been my own experience with C++/CLI, and one of the primary reasons for my being so hard-assed about the name. This is not a minor deviation from the standard. It is a radical deficiency. The STL is a core piece of any C++ programmer's toolkit, and any compiler in 2006 that will not compile it is not a C++ compiler, and should never be refered to as C++, and should not have a name that could possibly be confused with C++.

      This is like having a FORTRAN compiler that can't handle LAPACK. If I created something called FORTRAN/CLI that couldn't compile LAPACK people would rightly yell at me. MS deserves to be smacked on the nose with a rolled up newspaper for doing the equivalent to C++.

      --
      Blasphemy is a human right. Blasphemophobia kills.
    9. Re:Plus Plus! by angel'o'sphere · · Score: 1

      C++/CLI or C++/.NET is essentially: C++.

      This is false.

      OFC its not false, please stop your nitpicking.

      Three are endless of C++ compilers that don't have a standard STL but their own crippled version. As others pointed out: who descides if a compiler is called a C++ compiler? The vendor!

      As all your critics is right, from a language point of view C++/CLI is ofc C++ ... its not "standard" C++, but it is its own standard. Thats why they wanted an ISO recogniced one.

      The whole reason why *I* don't use C++ anymore is that *ALL* C++ compilers I *EVER* have used (and that is 5 different C++ compilers on windows ... partly over years and their particular versions, SUN C++ compiler, AIX C++ compiler, HP C++ compiler, lots of GNU C++ compilers, several compilers on older Mac OS 6 - 8) *NEVER* could agree on compiling my code like I wrote it. After porting the same program from one compiler to the next finally the subset of the C++ lanuage I could use was so small, that all benefits of using C++ where gone.

      There are lots of issues, might it be multiple inheritance, default template arguments, partial template specialization ... or or or ...

      After your definition, the majority of C++ compilers are not C++ ....

      So what? I only wanted to shed some light on the C++/CLI ... because calling it *not* C++ like you did in your first post sounded for me like it would miss several majour features from ISO C++, but it basically only misses: multiple inheritance. And thats why it does not compile the standard STL. Probably it misses lots more stuff Visual C++ already misses ... but for someone like you that is not interesting anyway.

      C++/CLI is for compiling towards .NET. there won't be any true C++ compiler for compilation towards .NET soon ... so either you want to target .NET than this is your only help in porting C++ to it, or you don't target it, so you don't need to care ;D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  10. Re:Sounds like a molehill masquerading as a mounta by MBCook · · Score: 4, Insightful
    I saw this somewhere else the other day. The problem is not that they created this version of the language, but what they are calling it. If they called it "C++.Net" all over the place, no one would complain. Even if they called it "C++/CLI" which I think is a little more unwieldy for general use.

    But the problem is that MS has taken to calling it.. C++. We already have a C++. If you look at MSDN they have C++.Net code all over the place, but they never call it that. They always call it C++. They make a C++.Net complier, but they just call it C++. From what I've read, they seem to be almost purposely trying to confuse the difference between C++ and C++.Net.

    The worry seems to be that if this standard is ratified, MS will continue this practice. One can argue they have done this in the past, trying to confuse J++ and Java (J++ being their "version" of Java). While this all does seem a bit nit-picky, I think it is important.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  11. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    If a language is not ISO C++, it is not C++ and should not have C++ as part of the name.

    By that logic, C++ should not have C in its name.

    C++/CLI is C++ with additional extensions for the Common Language Infrastructure. I believe it's actually a strict superset of C++, unlike C++ vs. C.

  12. Re:Sounds like a molehill masquerading as a mounta by Billly+Gates · · Score: 1

    The argument for c++ and C is that you can create your own libraries for it if the default ones dont suite your needs.

    Does c++.net run ansi c++ code? Then its C++

  13. ANSI by NullProg · · Score: 1, Insightful

    ANSI C/C++; If your a .Net developer, don't use Microsoft C++ extensions/managed VM, But of course most c/c++ programmers know that already. Microsoft could/should call thier .Net VS5 hybrids something else besides C++. I'm suprised Bjarne Stroustrup hasn't said anything yet.

    Enjoy,

    --
    It's just the normal noises in here.
    1. Re:ANSI by kupci · · Score: 4, Informative

      As a matter of Stroustrup has commented. In a nutshell, he says that Microsoft is revising their documentation to minimize confusion.

    2. Re:ANSI by Anonymous Coward · · Score: 0

      They called their Java J#, why not call their C++ C#?

    3. Re:ANSI by DrXym · · Score: 1
      Sometimes you need to use managed extensions, just as with Java you need to use JNI. For example you might have a lump of legacy code which is too hard to rewrite, or a 3rd party DLL with no .NET equivalent and therefore you must wrap it.

      The problem is that Microsoft make it far too easy. Far too easy by half. With JNI you feel the pain a lot more and are therefore encouraged to use Java if at all possible, which as it happens is usually not too hard because the APIs and 3rd party market is massive.

      The market is not so mature with .NET and there is so much legacy crap that everyone wants the lazy way out rather than do a rewrite or stick with what they have. Many .NET apps are actually a mix of ActiveX, native DLLs and CLR compliant code and have absolutely no chance of ever working properly on other platforms. The cynic in me says Microsoft are aware of this which is why they're making it even easier to pollute the code with unmanaged & managed code.

      The sick thing is that the payoff of switching to .NET diminishes almost to nothing if you include large chunks of C++ or VB6 (through ActiveX). What happens is your app picks up 2 or 3 runtimes where there used to be one and is therefore a memory hog whose performance is much worse than C++ and not appreciably better than VB6.

    4. Re:ANSI by Jamu · · Score: 1

      The wealth of new language facilities in C++/CLI compared to ISO Standard C++ tempts programmers to write non-portable code that (often invisibly) become intimately tied to Microsoft Windows.

      This sounds a lot like Microsoft's usual business. The Garbage Collector in particular means that porting the new code to other platforms will result in memory leaks and poor performance.

      --
      Who ordered that?
  14. "an interesting dry run for what to expect..." by FFFish · · Score: 1

    I expect they'll do everything they can to benefit themselves exclusively and screw everyone else subtley. Or blatantly.

    Perhaps that's why open-source and community projects will ultimately win (provided Microsoft doesn't succeed in making such software wholly illegal): the community efforts are about making everyone win.

    --

    --
    Don't like it? Respond with words, not karma.
  15. Re:Sounds like a molehill masquerading as a mounta by Quantam · · Score: 0

    Congratulations. You just argued that most "English" speakers are not in fact speaking English, but something that sounds very much like English; of course, it's important not to confuse the two, because one is English, and one is not. You just argued that most "Spanish" speakers are not in fact speaking Spanish, but something that sounds very much like Spanish; of course it's important not to confuse the two, because one is Spanish, and one is not. Etc., etc.

    --
    You have tried to support your argument with faulty reasoning! Go directly to jail; do not pass Go, do not collect $200!
  16. Interetingly by Utopia · · Score: 3, Interesting

    The prominent C++ expert Herb Sutter is the lead architect of C++/CLI.
    He also chair the ISO C++ standards committee.

    1. Re:Interetingly by PsychicX · · Score: 1

      Well the ISO in general is not objecting. It's a handful of UK members who have nothing else to do.

    2. Re:Interetingly by Anonymous Coward · · Score: 0

      Don't confuse a Microsoft employee with Herbert Schildt one of the original designers of C++

  17. Re:Sounds like a molehill masquerading as a mounta by Col.+Klink+(retired) · · Score: 1
    The problem is that C++/CLI is not ANSII. Even in MS's own documentation, they often refer to their language simply as "C++".

    The Brits are concerned that if MS can't even keep the name straight, what's the chance of everyone else doing so. The end result will be programs that claim to be C++ programs that won't compile without MS.

    --

    -- Don't Tase me, bro!

  18. Various corrections and more information. by jdennett · · Score: 5, Informative

    (And some opinions too; I'll leave you to work out which are facts and which are opinions.)

    It's the UK's panel that has submitted this paper to ISO; the UK panel is part of BSI, the British Standards Institute, one of the NB's (National Bodies) making up ISO.

    The biggest problem is that ISO should not publish two standards which are for such different languages with such similar names, and encourage the confusion. Standards are there to reduce confusion, not to contribute to it.

    And make no mistake, C++/CLI is a huge departure from the core language. It introduces a whole new type of pointer, it adds generics to C++ templates, it abandons const-correctness for core using "ref" classes, it has yet another string type (this time somewhat integrated into the language rather than being a pure library entity), it adds mandatory garbage collection (C++ has always permitted, but not required, GC, though with some caveats) in a way not consistent with previous work with GC in C++, and there's more I'm sure.

    It's also a concern that C++ may wish to expand into areas overlapping with those that are covered by Microsoft's language "C++/CLI", and may not wish to do so in the same way as C++/CLI, which is mostly just one of a pile of vendor-specific extensions to C++.

    ISO is about standardizing existing practice. Some of the biggest problems with existing C++ and C standards has been when they got too inventive, and accepted into the standards things that were implemented in few (or no) compilers. So far as I know, there's still only one compiler that supports C++/CLI (though I've a feeling one other company is working on one).

    Microsoft and the ISO C++ groups have been getting along a lot better in the last few years; Microsoft returned to attending committee meetings, and hired some great people, both names that get publicity and some that don't. However, Microsoft is still a large company with a monopoly in certain areas, and some history of anticompetitive practices, and it seems sensible for us to tread carefully.

    1. Re:Various corrections and more information. by legirons · · Score: 2, Funny

      "Standards are there to reduce confusion, not to contribute to it"

      Apparently ISO didn't get that memo:

      Kilobyte

  19. Re:Sounds like a molehill masquerading as a mounta by SnprBoB86 · · Score: 3, Informative

    C++/CLI is, in fact, a strict superset of C++. Any C++ code that compiles without the /clr flag should compile without any complaints with the /clr flag. Linking, however, is another story. Because the result of a /clr linking is different than a native linking, there is no guarentee that C++ code will link correctly.

    "Managed C++" or "C++ with Managed Extensions" or "C++/CLI" or "C++.net" or whatever you want to call it (Microsoft has done a very poor naming job with the entire .NET brand) IS STILL C++

    --
    http://brandonbloom.name
  20. So what? by kclittle · · Score: 3, Insightful
    So what if MS tries to super-set C++ -- big deal! The industry as a whole has only been doing this to C for, oh, 30 years or so? Have you ever looked at list of advanced, non-standard features of "GNU C" (note the full name in quotes)? And I don't recall in which C compiler I first saw support for the end-of-line comment "//" (Vax C?), but is sure as hell was non-standard at the time. I don't recall any pulling of hair and renting of garments over that.

    --
    Generally, bash is superior to python in those environments where python is not installed.
    1. Re:So what? by Anonymous Coward · · Score: 0

      > I don't recall any pulling of hair and renting of garments over that.

      Uh, no. Usually I only do that for weddings/parties. You might mean rending of garments. ;)

    2. Re:So what? by kclittle · · Score: 0, Flamebait
      from dictionary.com: rent (2) Audio pronunciation of "rent" ( P ) Pronunciation Key (rnt) v. A past tense and a past participle of rend. "I don't recall" puts the tense into the past, yes? (no? :-)

      --
      Generally, bash is superior to python in those environments where python is not installed.
    3. Re:So what? by Anonymous Coward · · Score: 0

      Good call on the past tense, but doesn't apply in this case. Example...

      "I eat pie."
      "I ate pie."

      Then, "I don't recall any eating of pie." Not, "I don't recall any ateing of pie." :)

      But you did make me think about it.

    4. Re:So what? by Al+Dimond · · Score: 1

      What's your point? It's obnoxious when GNU does it, it's obnoxious when DEC does it and its obnoxious when Microsoft does it.

    5. Re:So what? by kclittle · · Score: 1
      LOL! Ok, you win!

      --
      Generally, bash is superior to python in those environments where python is not installed.
    6. Re:So what? by kclittle · · Score: 2, Insightful
      The point is, adding non-standard enhancements to C is a long accepted practice. Even when done by big, powerful companies. And, IIRC, no one considered it all that obnoxious, as long as it didn't break old code (i.e., was either a superset feature or could be controlled by compile-time options). It was competing, it was innovation, it was pushing the envelope. Now, all of a sudden, because it's MS, it's "news", it's "oooooooo, scary!". Baloney. This is just slashdot paranoia and/or bias at its worst.

      --
      Generally, bash is superior to python in those environments where python is not installed.
    7. Re:So what? by mrchaotica · · Score: 2, Insightful

      ...and all the C I write -- despite the fact that it only targets platforms with GCC -- gets compiled with the -ansi flag.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    8. Re:So what? by Anonymous Coward · · Score: 1, Informative

      Here's the problem.

      First, C++ / CLI is not compatible with C++. It's not even close. It's not a strict superset of C++, so old programs might behave differently under C++ / CLI, in much the same way that C programs can behave differently when compiled as C++. They aren't really the same language.

      Second, Microsoft are misrepresenting C++ / CLI as standard C++. Their tools and their documentation lead people to believe that C++ / CLI is actually C++.

      The problem is not that Microsoft have come up with an extended version of C++. In fact, C++ is an extended version of C, as is Objective-C, and there are a couple of other languages derived from C++, like Embedded C++. The problem is that they're calling it C++, when it's really quite different.

    9. Re:So what? by julesh · · Score: 2, Funny

      And I don't recall in which C compiler I first saw support for the end-of-line comment "//" (Vax C?), but is sure as hell was non-standard at the time. I don't recall any pulling of hair and renting of garments over that.

      You don't? Obviously you've never read comp.lang.c.

    10. Re:So what? by maxwell+demon · · Score: 1
      First, C++ / CLI is not compatible with C++. It's not even close. It's not a strict superset of C++, so old programs might behave differently under C++ / CLI, in much the same way that C programs can behave differently when compiled as C++.

      I don't know much about C++/CLI, but this is different from what I've heared before (of course what I've heared before may be wrong). Could you please post a valid C++ program which would behave different under C++/CLI?

      there are a couple of other languages derived from C++, like Embedded C++.

      Embedded C++ is not an extended version of C++, but a crippled one. It was created basically by removing every feature from C++ which the inventors did not consider appropriate for embedded programming. They also use a modified library because the standard one cannot be implemented without those features.
      --
      The Tao of math: The numbers you can count are not the real numbers.
    11. Re:So what? by aug24 · · Score: 1

      So long as they referred to it in every instance as C++/CLI, I don't think there'd be half the fuss, no.

      So long as we hadn't experienced monopoly-powered embrace and extend before, I don't think we'd be so worried.

      But they don't, and we have.

      Justin.

      --
      You're only jealous cos the little penguins are talking to me.
    12. Re:So what? by MooCows · · Score: 2, Informative
      I don't know much about C++/CLI, but this is different from what I've heared before (of course what I've heared before may be wrong). Could you please post a valid C++ program which would behave different under C++/CLI?

      Well, as far as I know any C++ code compiles just fine in with C++/CLI extensions enabled.
      Just last month I wrote a C++/CLI wrapper class for a large C++ codebase so our .Net applications could link up with it. No code in this substantially large library had to be altered so it could compile in C++/CLI. The C++/CLI extensions are only needed to interface with .Net.
      Also note that the code was originally 'written for' GCC++. :P

      So for example, take this pseudocode:
      String^ GetText(int index)
      {
      char* ctext = myNativeLibrary->GetText(index);
      String^ text = gcnew String(ctext);
      delete[] ctext;
      return text;
      }
      The method GetText can now be called from any .Net application, and will return the .Net type String. Everything in myNativeLibrary is just plain old C++, without garbage collection or .Net library support.
      --
      The path I walk alone is endlessly long.
      30 minutes by bike, 15 by bus.
    13. Re:So what? by Anonymous Coward · · Score: 0

      'rending' is a direct object of 'recall' - as such, it names the action, not executes it, so what you need is a verbal noun, in this case the gerund form of 'rend'; now 'renting' is the gerund form of 'rent', a completely differnt thing.

    14. Re:So what? by the+chao+goes+mu · · Score: 1

      In the case of GNU it's not just C. Don't forget all the extensions added to gforth. Try taking gforth code and running it in another forth interpreter. Even after you load the dozen or so libraries of extensions.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    15. Re:So what? by Ayende+Rahien · · Score: 1

      You got a memory leak there, if the String ctor throws :-)

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
  21. Re:Sounds like a molehill masquerading as a mounta by slashdotnickname · · Score: 2, Insightful

    If a language is not ISO C++, it is not C++ and should not have C++ as part of the name.

    What a load of crap.

    C++ was well established on all major platform long before ISO standardized it. I know I've written my share of #ifdef/#define's to make code more portable between IRIX and othe *nix variants in my 15 plus years of C++ coding.

    If you want to write a (mostly)cross-platform C++ program then use ISO C++. But if you want to reuse your C++ code and integrate it with newer .NET technologies, then C++/CLI is perfect. Any C++ coder worth anything will know that the term "C++" by itself does not fully describe a C++ project's language.

  22. Link to Groklaw by kupci · · Score: 5, Informative
    Some additional detail with good comments on this subject available over at Groklaw.

    Stroustrup's comment. Apparently Microsoft is revising their documentation to clear up the confusion.

    1. Re:Link to Groklaw by Anonymous Coward · · Score: 0
      At first I thought this possibility of confusion was a complete non-issue. However, reading the first sentence of Stroustrup's comment has changed my mind:

      C++ is an extremely complete "binding" of C++ to Microsoft's CLI.

  23. Re:Sounds like a molehill masquerading as a mounta by PsychicX · · Score: 1

    All C++ code compiles cleanly in C++/CLI. C++/CLI is a set of (fairly radical) language extensions and modifications that allow interop with managed code.

  24. Re:Sounds like a molehill masquerading as a mounta by NutscrapeSucks · · Score: 1

    One can argue they have done this in the past, trying to confuse J++ and Java (J++ being their "version" of Java).

    Yes, but:
    1) J++ was being pitched as a VB replacement, at a much lower programmer education level
    2) Java was relatively new, the standard wasn't widely known.

    I guess I'm having trouble believing that C++ programmers would be confused by this.

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
  25. Re:Sounds like a molehill masquerading as a mounta by eikonos · · Score: 1

    There are in fact different variants of English such as British English and American English. Another example is also European Portuguese and Brazilian Portuguese.
    There are special cases of the English language like RFC documents and legal documents where certain words like "must", "should", etc have very specific meanings. That is necessary so that the documents will have the exact same meaning to different people. In contrast poetry has no such regulations. C++ is not poetry though, and it has strict standards so that all compilers (which are written to that standard) will be able to compile it.
    Having a dialect of C++ which is not really C++ and cannot be compiled by the standard compilers breaks the standard.

  26. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 1, Insightful

    So, I take it you're vehemently against EC++ as well?

    You can't be too happy with those Boost guys, either, tampering with the purity of ISO C++ by adding library features.

  27. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    I'm dating myself

    Well at least someone on Slashdot is dating someone.

    Bahduh-ching!

  28. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    "C++/CLI is, in fact, a strict superset of C++."

    Have you ever used a microsoft C++ compiler, and compared to a good one?!?! What I mean to say is, C++/CLI is a strict superset of the C++ features which microsofts compilers happen to support. A lot of strict C++ will make MS Compiler poo errors all day.

  29. Re:Sounds like a molehill masquerading as a mounta by Sux2BU · · Score: 1

    The problem with your arguement is that the parts where they call C++/CLI C++ is when dealing with .Net code. In those places using ISO C++ isn't an option because it doesn't use the CLI and doesn't support .Net.

  30. Re:Sounds like a molehill masquerading as a mounta by paedobear · · Score: 1

    So you're trying to claim that MS are like the programming world's equivalent of Noah Webster?

  31. Re:Sounds like a molehill masquerading as a mounta by dynamo · · Score: 1

    You're dating yourself?

    Well, congrats and all, but maybe if you realize that Fortran is such an obstacle to meeting women, take a break once in a while.

  32. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 1, Funny

    I'm dating myself

    Yes... most of us call that "single".

  33. Re:Sounds like a molehill masquerading as a mounta by mrchaotica · · Score: 2, Interesting
    How could you not be confused by it? Here's the sequence of events:
    1. You're working on an ISO C++ project
    2. You some particular functionality, so you search for it on the Internet.
    3. You find a library that seems to do what you want at MSDN.
    4. It's labeled "C++" (not "C++/CLI" or ".NET", just plain old "C++").
    5. You download it, figure out the API (i.e. look at documentation, not the code itself, so you don't see the weird syntax), and integrate calls to it into your code.
    6. You try to compile, and it fails horribly.
    7. After some time spent debugging, you finally notice that it isn't normal C++ like it said it was, it's actually some kind of proprietary extension that you can't use.
    8. You get really pissed off because you just wasted several hours.
    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  34. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    Have you used Visual Studio ever? Since VC7.1, Microsoft has had the most standards compliant compiler. Period. Sorry to burst your bubble.

  35. Re:Sounds like a molehill masquerading as a mounta by julesh · · Score: 2, Insightful

    If a language is not ISO C++, it is not C++ and should not have C++ as part of the name.

    So I guess there weren't any C++ compilers between 1997 when the language was standardised and some time around 2001 when the compiler vendors started catching up with the features that had been included in the spec?

    Perhaps my copy of Borland C++ 4.5 from ~1994 isn't a C++ compiler at all, because the language hadn't been standardised when it was written?

    Here's a clue for you: in the real world, we call a compiler a C++ compiler if it compiles C++ code. It doesn't have to compile *all* C++ code for this to be true, just a useful subset. If it complies with the spec, so much the better. These we'll call ISO C++ compilers if we're in the mood to distinguish between them.

    The same happened with C when it was first standardised. The standard described a language substantially different from what older compilers understood and compiled, but those compilers didn't cease being C compilers just because they couldn't compile all the code that the spec said complying compilers had to. They just weren't ANSI C compilers.

  36. I'm glad people are complaining about this. by alyosha1 · · Score: 3, Informative
    I've already been bitten by this - I wrote a perfectly short C++ program as a tutorial for a friend, using VC++ 2003, but when he tried to compile it on VC++ 2005 it gave this warning:
    warning C4996: 'std::_Transform' was declared deprecated
    which implies, at least to the novice developer, that the use of the standard c++ algorithm library is no longer considered appropriate practice. This is extremely annoying and misleading. One of the major strengths of C++ is that you can extend it almost limitlessly without changing the underlying language. As far as I can see, for every extension that people have tried to add to the language to support a particular paradigm, it has been shown that the same effect can be achieved without going beyond the bounds of the language.
    For example, Qt introduces signals and slots as an extension, but the same effect can be achieved with libsigc++ or boost::signals, making intelligent use of the template system. Smart pointers and garbage collection have been demonstrated by boost::shared_ptr and so on.
    I understand that in the past weaknesses in implementations of C++ made some of these extensions necessary, but now that we have compliant compilers that actually implement almost all of the language standard, there are less and less reasons to create proprietary extensions to it.
    1. Re:I'm glad people are complaining about this. by ardor · · Score: 2, Interesting

      Actually, Qt signals can not be achieved by template-based signals, since Qt signals allow limited introspection, which is impossible with template-based ones. This comes in handy when serializing signal-slot-connections, for example.

      --
      This sig does not contain any SCO code.
    2. Re:I'm glad people are complaining about this. by Anonymous Coward · · Score: 0

      Everything declared deprecated in VC++ 2005 are either functions prone to buffer overflow or POSIX methods that have ANSI-equivalents. (Mostly begging with _)

    3. Re:I'm glad people are complaining about this. by Dr.+Sp0ng · · Score: 1

      If that's the case, how did Trolltech achieve compatibility between Qt 4's signals/slots and Boost's signals/slots?

      Trolltech themselves have stated that the reason they use a preprocessor instead of a template-based system is for compiler compatibility, and not any functionality that is gained.

  37. Saturate, diffuse and confuse by SgtChaireBourne · · Score: 1
    Saturate, diffuse and confuse is the natural political extension of the old technical strategy of embrace, extend, and extinguish. MS has transitioned from being a software company in the early 80's to being an operating system company in the late 80's to being a marketing company in the early 90's to being a lobbying company in the late 90's to its current incarnation as a political / ideological movement. It's only natural that it's new strategies will match the needs of a movement and focus more on psyops than technology.

    Odds are the overlap is probably on purpose. Here's a sample:

    Someone familiar with the special terms MS uses could probably dig up plenty more.

    Want to mess with the search results? Simply put links on some of your pages to the non-MS definition.

    --
    Beta is broken and the link to classic doesn't work. Stop wasting our time or there won't be anybody left here.
    1. Re:Saturate, diffuse and confuse by Nutria · · Score: 1

      # RMS vs (MS) RMS

      VMS Record Management Services
      http://h71000.www7.hp.com/doc/731FINAL/4523/4523pr o_contents.html

      --
      "I don't know, therefore Aliens" Wafflebox1
  38. its typical of mircorsoft by 3seas · · Score: 0

    to spread confusion and to try and manipulate that confusion to their advantage.

  39. Re:Sounds like a molehill masquerading as a mounta by prefect42 · · Score: 1

    As long as you clicked lots of options to make it behave somewhat sanely. Scoping by default has always been a little loose when I've used VC++ such that:

    for (int i...)

    for (int i...)

    certainly always used to not compile with the default settings, as it claimed that the 'i' variables clashed, and resulted in lots of code being written like:

    for (int i=...)

    for (i=...)

    --

    jh

  40. Boys, boys, calm down. by hummassa · · Score: 2, Informative

    The difference between the cases you all made is simple:

    0. C++ (at one time, at least) EXTENDS C
    1. moc/Qt EXTENDS C++
    2. C++Builder "properties" and VCL EXTENDS C++

    but

    2. C++/CLI LIMITS C++ (no multiple inheritance, no metaprogramming, etc etc) -- more than it extends it (.net class libraries)

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
    1. Re:Boys, boys, calm down. by plughead · · Score: 1
      2. C++/CLI LIMITS C++ (no multiple inheritance, no metaprogramming, etc etc) -- more than it extends it (.net class libraries)

      Ooh, I know! They should call it 'Java'! Oh. Right... The lawsuit thing...

      --
      If a giant oil company wanted an abortion, would W's head explode?
    2. Re:Boys, boys, calm down. by Anonymous Coward · · Score: 0

      > 0. C++ (at one time, at least) EXTENDS C
      > ...
      > 2. C++/CLI LIMITS C++ (no multiple inheritance, no metaprogramming, etc etc) -- more than it extends it (.net class libraries)

      According to Strousop, C++ is not entirely a superset of C either.

      "In the strict mathematical sense, C isn't a subset of C++. There are programs that are valid C but not valid C++"

      Source: http://public.research.att.com/~bs/bs_faq.html#C-i s-subset

    3. Re:Boys, boys, calm down. by Anonymous Coward · · Score: 0

      2. C++/CLI LIMITS C++ (no multiple inheritance, no metaprogramming, etc etc) -- more than it extends it (.net class libraries)

      What? No it doesn't... The older "Managed C++" does this, but C++/CLI does not. You can't expose these types to other languages running on the CLR, because it does not support these features, but you can use them within C++/CLI code.

  41. and the problem would be??? by penguin-collective · · Score: 1

    ncluding the potential for Microsoft to add proprietary extensions after ISO finally adopts the new standard under a different name.

    I fully expect them to "add proprietary extension". Why shouldn't they? Almost every language in existence has had "proprietary extensions" added to it after its standardization. That's a good thing. It's the way languages evolve. Eventually, some of those proprietary extensions themselves become standardized.

    Even when Microsoft is the company doing the extending, it doesn't seem to matter; all those proprietary extensions Microsoft has added to C and C++ haven't hurt C or C++ one bit.

    The notion that there is a single, enforceable standard that everybody adheres to is some bizarre, self-serving meme created by Sun (made even worse by the fact that Sun's so-called "standard" is actually a proprietary system whose actual behavior is defined by Sun's proprietary implementation).

    The only question that hovers over the ECMA CLI-related standards is whether Microsoft can later assert proprietary rights (mostly patents) against implementors of the standards. I think there is still a theoretical possibility, but from my point of view, it's not serious enough to worry about. If someone comes up with a decent alternative to C# that's not linked to either Microsoft or Sun, I'll consider it, though.

    1. Re:and the problem would be??? by TheRaven64 · · Score: 1
      You are wrong if you think standards in languages are a Sun-propagated myth. Most languages (LISP, Pascal, C, C++, etc) are governed by standards. Someone wishing to write a compiler will acquire a copy of this standard, and use it to implement the language. Someone wishing to write code will acquire the standard, learn the language, and then write code in it.

      Now, a lot of compilers don't 100% support the standards, but most come close. This means that code written to the standard that compiles on one compiler should work with another one (and usually will with some minor tweaking).

      The problem here is not that Microsoft are extending C++. Most compiler writers extend their language slightly to make things easier for the developer. If you are only targeting one platform, you can use these and your life will be easier. If you need to target more than one compiler, then you have to sacrifice this benefit in exchange for portability. Incidentally, most compilers have a 'standards mode' which ignores extensions, so you can check easily whether your code uses them. With GCC, for example, you can compile with -std=c99 to enforce the C99 standard without GNU extensions, or -std=c99 for the C99 standard with GNU extensions.

      The problem is that there is a standard called C++. It is an international, ISO standard, and is well documented. Microsoft are creating a new standard with a name suspiciously similar to C++. This could easily lead to confusion about which C++ a product claims to support.

      By the way, in response to your anti-Sun diatribe:

      Java is controlled by the Java Community Process. This is lead, but not exclusively controlled, by Sun. They provide a specification. Sun produce an implementation based on this specification. Anyone else is free to implement this specification. Several groups have successfully implemented the JVM specification, while at least two are currently in process of implementing the (larger) class library specifications.

      --
      I am TheRaven on Soylent News
    2. Re:and the problem would be??? by Serapth · · Score: 1

      Incidentally, most compilers have a 'standards mode' which ignores extensions, so you can check easily whether your code uses them. With GCC, for example, you can compile with -std=c99 to enforce the C99 standard without GNU extensions, or -std=c99 for the C99 standard with GNU extensions.

      You mean like how VS2K5 has /clr for C++ with CLR extensions, and no /clr for standard C++?

    3. Re:and the problem would be??? by Anonymous Coward · · Score: 0

      This is another attack on open source software: Microsoft tries to make a language that LOOKS similar, with a few extensions here and there, and low and behold, it does not compile with other compilers, say, GCC. Now Microsoft makes the claim that they have a superior product.

    4. Re:and the problem would be??? by penguin-collective · · Score: 1

      You are wrong if you think standards in languages are a Sun-propagated myth. Most languages (LISP, Pascal, C, C++, etc) are governed by standards.

      I don't think language standards are a myth. Quite to the contrary, language standards are very important. It is a disgrace that Sun first promised, and then failed to deliver, a language standard for Java.

      Sun's myth is that language standards require enforcement, and/or that language standards should prohibit proprietary extensions.

      The problem is that there is a standard called C++. It is an international, ISO standard, and is well documented. Microsoft are creating a new standard with a name suspiciously similar to C++. This could easily lead to confusion about which C++ a product claims to support.

      I don't see a problem calling a standard "C++ / CLI", but if it bothers people, maybe Microsoft could call it "C++ bindings and extensions for the CLI runtime environment".

      Sun produce an implementation based on this specification. Anyone else is free to implement this specification.

      That's a lie; the official specifications are available only under license, a license that requires the recipient to agree to onerous licensing conditions with Sun. You are not "free to implement" the specs unless you give Sun extraordinary rights, rights that almost no previous language standards has required you to assign to a single company. Even if you do all that, there is still no guarantee that you won't be sued for patent infringement.

      Several groups have successfully implemented the JVM specification, while at least two are currently in process of implementing the (larger) class library specifications.

      And those implementations are at constant risk of being shut down by Sun at Sun's liberty and choosing, for license violations, for coypright violations, and for patent violations. Sun simply has chosen not to do so for now to keep alive the myth that Java is somehow "open".

      Furthermore, those implementations aren't anywhere near compatible, for several reasons: Sun's so-called specification is poor quality and incomplete and the Java platform is bloated. There is currently no usable third party implementation of the Java Standard Edition other than Sun's and its derivatives. Furthermore, for a healthy programming language market, there would have to be independent interoperable commercial third party implementations of Java, and there are none of the standard or EE platforms (the ones that there are are all licensed derivatives).

    5. Re:and the problem would be??? by Anonymous Coward · · Score: 0

      This is another attack on open source software: Microsoft tries to make a language that LOOKS similar, with a few extensions here and there, and low and behold, it does not compile with other compilers, say, GCC. Now Microsoft makes the claim that they have a superior product.

      No, that's competition and language evolution, and there is nothing wrong with it.

      Microsoft does a lot of evil and sleazy things, but extending C++ and submitting their changes to a standards body is not one of them.

  42. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 1, Insightful

    5 You try to compile, and it fails horribly.
    6 After some time spent debugging,


    And now, back in reality:

    5. You try to compile and it fails.
    6. You spend seconds looking at the compiler errors and realise this isn't the C++ you know.

    You could say the same about any library. eg. I get a linux C++ lib, compile it, link against the .so and it fails horribly. Gosh, imagine a C++ lib not being C++ in that case.

    Or, if you have the source code (and not a library), you get a C++ lib, compile it and it fails.. because it contains (say) Linux signal handling code that Windows doesn't understand. Gosh!

    You may get really pissed off but I hope you're only being annoyed at your own incompetence.

  43. Cava, anyone? by BarryNorton · · Score: 1

    Maybe they should do the symmetric process to Visual J++ and call it Cava!

  44. Re:Sounds like a molehill masquerading as a mounta by Shimbo · · Score: 1

    Since VC7.1, Microsoft has had the most standards compliant compiler.

    So when Herb Sutter posted:

    "Microsoft and Gnu have both greatly improved in recent years and are both ship current compilers that are around 98-99%... conformance as measured by the major commercial test suites, which is pretty good -- good enough to build Boost and Loki without workarounds -- but EDG is the only "100% conformance" champ."

    he was wrong?

  45. Re:Sounds like a molehill masquerading as a mounta by shutdown+-p+now · · Score: 1

    There was precisely one option for that specific behaviour (I think it being not enabled had to do with the fact that many MFC headers relied on it not being there). Furthermore, it is turned on by default in VC++ 2005.

  46. Re:Sounds like a molehill masquerading as a mounta by Abedneg0 · · Score: 1

    Compilers have no sense of humour. If a language is not ISO C++, it is not C++ and should not have C++ as part of the name.

    Yea, good luck with that line of reasoning. Have you seen Microsoft's "Visual C++"? Compare and contrast with the real C++, as defined by ISO, and you'll be shocked.

  47. Re:Sounds like a molehill masquerading as a mounta by Anonymous+Brave+Guy · · Score: 1

    You're missing the point. The fact that standard C++ code can be compiled with the Microsoft compiler isn't contested. The problem is that Microsoft is presenting its version as if it were C++. That means anyone coming to C++/CLI and writing code in the style advocated by Microsoft will not be producing code that can be compiled by any other C++ compiler, though they might not understand this. That is disingenuous, and will damage those who are misled by locking them into the Microsoft platform.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  48. Short answer: no. by hummassa · · Score: 3, Informative

    > Does c++.net run ansi c++ code? Then its C++

    Long answer: NO. C++/CLI does not have multiple inheritance; it does have generics, which are templates without the metaprogramming possibilities -- because it does not have templates. Henceforth, the STL does not work under C++/CLI. Nor does Boost.

    It does have annotations on classes and methods, reference/value class dichotomy, garbage collection built-in (as opposed to library-based), finalizers (one strange kind of destructor), its generics have type restrictions (like the new templates planned for C++0x -- of which I'm not a big fan)

    It's as different from C++ as is C# or Java, really.

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
    1. Re:Short answer: no. by Anonymous Coward · · Score: 0

      C++/CLI does not have multiple inheritance

      It does, but there are places where you cannot use it because the CLR does not have multiple inheritance. The information is kinda fuzzy on this subject... You will find places that say that MI isn't supported, but they mean for things exported to the CLR.

      it does have generics, which are templates without the metaprogramming possibilities -- because it does not have templates.

      Why C++/CLI Supports both Templates for CLI Types and the CLI Generic Mechanism

      Henceforth, the STL does not work under C++/CLI. Nor does Boost.

      That's a different matter, as implementations often need to use compiler-specific tricks.

    2. Re:Short answer: no. by Dr.+Sp0ng · · Score: 1

      it does have generics, which are templates without the metaprogramming possibilities -- because it does not have templates. Henceforth, the STL does not work under C++/CLI. Nor does Boost.

      Yes it does. No multiple inheritance, that's true, but as for templates, they're supported just fine.

  49. Re:Plus Plus *WAS* C by JetScootr · · Score: 1

    The first C++ compiler I used was a pre-preprocessor. It scanned the C++ code, spat out C, and ran the C compiler on it.

    --
    Pavlov wouldn't be so famous if he'd used a can opener instead of a bell.
  50. Re:Sounds like a molehill masquerading as a mounta by fullpunk · · Score: 1

    EDG is the only compiler to support the export keyword on templates, which allows the template definition to be separated from their declarations. It is a feature that is really complicated to implement and that does not seem to worth it.

    I think that is what Mr Sutter meant when he said that EDG based compilers were the only 100% compliant compiler. More information is available on http://www.gotw.ca/publications/mill24.htm.

  51. ?!?! Not AFAIK by hummassa · · Score: 1

    C++/CLI cannot compile ISO C++. You can mix both languages in the same project but the languages are radically different. See my other posts.

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  52. Good for PHBs, bad for maintaince programmers by bensch128 · · Score: 1, Insightful

    I think this naming scheme is bad for the C++ community as a whole because it creates the impression that code created using C++/CLI will be portable to other platforms and compilers. Of course, this is not true because after the initial programmer creates the "innovative' program using generics and managed pointers, the maintance programmer after him will find it impossible to port the code over to another platform without majorly refactoring the code.

    Of course the initial programmer will love to use C++/CLI because it looks good on his resume and he can get a 50% pay raise when he jumps over to another job. The PHB loves it because he looks like he's using cutting edge technology to solve the company's problems. He too gets to put .Net on his resume to recieve that 50% pay raise. Everyone else loses.

    Personally, I consider g++ to be the standard and I highly disrepect other compilers which can handle code valid for g++. Of course VC++ will be able to compile g++ code but the reverse is hardly ever true. (3.4.4 has been good, Im hoping 4.0.x will be better...)

    Cheers,
    Ben

    1. Re:Good for PHBs, bad for maintaince programmers by LubosD · · Score: 1
      Of course VC++ will be able to compile g++ code but the reverse is hardly ever true. (3.4.4 has been good, Im hoping 4.0.x will be better...)

      Of course? Don't you see all those VS.NET hacks in many commonly used libraries? What about that horrible dynamic cast bug that took them so looong to fix?
      4.0.x was released long time ago, now I use 4.1beta without any problems...

      But I admit that VC++ is unbeatable when we look at optimizations.
    2. Re:Good for PHBs, bad for maintaince programmers by cnettel · · Score: 1
      Voilà: >?=, maybe handy, but certainly a proprietary g++ extension. (Last I heard, they considered deprecating it.) It's also been possible to write small "statements like expresions", like the following:
      int c = {int x = 42; if (rand() > x) x = 19; x};

      ...which will assign the end value of x to c, but it's CERTAINLY not standard C, or C++. Still, the GNU compilers allow it. There are also a lot of other details like modiyfing structurs with active iterators, that's not allowed by the standard. g++ and VC handles them differently and of course the newbies will claim they've found a bug in the STL in either of them when they try to port their own buggy code.

  53. The fact is: by hummassa · · Score: 1

    C++/CLI is no more C++ than C# or Java or J++ or D.

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  54. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    No, it's not quite a strict superset.

    Some examples of backward incompatibilities:

    C++/CLI introduces some new keywords (therefore no longer available as identifiers), like "nullptr". The comma operator can have a different meaning in some contexts. And there may be other such differences.

  55. You have this exactly backwards. by Anonymous Coward · · Score: 0
    Being a strict superset of C++ is precisely what makes it not C++. Suppose C++ were still a proper superset of C. Would you then say of C++ code, "it's still C?" No. It won't compile with a raw C compiler.

    If C++/CLI were a subset of C++, even an improper one, that would be good and useful, as you could then feed C++/CLI into a C++ compiler and watch it work.

    The example from the article backs this up:
    Documentation for Microsoft's Visual C++ product contains many code examples identified as "C++" -- not "C++/CLI" or even "C++.Net" -- which will fail to compile in a Standard C++ environment.

    See? That it's not-a-subset is the problem.

    Whether C++/CLI is a superset of C++ is totally irrelevant.

    1. Re:You have this exactly backwards. by Anonymous Coward · · Score: 0

      Being a strict superset of C++ is precisely what makes it not C++. Suppose C++ were still a proper superset of C. Would you then say of C++ code, "it's still C?" No. It won't compile with a raw C compiler.

      If a compiler will compile all ANSI C code, is it a C compiler? If it also compiles code that has some vendor-added syntax in it, is it still a C compiler?

      Then what do you call this code? It's clearly not ANSI C, but is it C with extensions or not C at all? Do I have to come up with a completely new name, or can I call it, say, "Objective C"? Can I call an extension to C++ "C++/CLI"?

      Whether C++/CLI is a superset of C++ is totally irrelevant.

      Not entirely. Remember the context of this comment: "If a language is not ISO C++, it is not C++ and should not have C++ as part of the name."

      The point is this: C++ is not a superset of C. C++/CLI is (not quite, but let's say it were) a superset of C++. How can the objection stand that C++/CLI cannot have "C++" as part of its name when C++ can have "C"? C++/CLI has (would have) more of a claim to being C++ than C++ does to being C!

    2. Re:You have this exactly backwards. by Anonymous Coward · · Score: 0

      C++ is extremely close to being a superset of C. The incompatibilities are quite obscure and unlikely to affect anyone.

      C++/CLI isn't even remotely a superset of C++. The missing features are so essential that implementations simply won't be useful for working with existing code. It's certainly possible to start writing C++/CLI code, but at that point I'd actually be better off writing C# code.

  56. But then how about javascript? by TheLink · · Score: 1

    Isn't javascript just as guilty or even worse?

    There must be tons of PHBs who lump java and javascript together and make many stupid decisions as a result.

    --
  57. Re:Sounds like a molehill masquerading as a mounta by SnprBoB86 · · Score: 1

    I don't think there is a software developer in the entire world that could possibly make that mistake as you describe it.

    In order to use any of the Microsoft specific functionality of C++/CLI (and hence be locked in to MS playforms), you are going to realize that they are .NET extensions. It's not like a C++ developer is going to sit down, accidentally type "ref class" and create non-standard C++ code.

    You are going to have a major deploy problem on your hands reguarding the WINDOWS platform if you write a .net framework requiring application without being aware of it.

    If a software engineer doesn't understand this, they are doomed to failure anyway. This is not "missleading" or "disingenuous" action on Microsoft's part. You are worring about DUMB ASS DEVELOPERS. And as many dumb ass developers as there are, I am pretty convinced that there are none dumb enough to look up and learn about managed extensions without realizing they are dependant on Microsoft.NET

    --
    http://brandonbloom.name
  58. Re:Sounds like a molehill masquerading as a mounta by caseih · · Score: 1
    C++/CLI seems to be a (standardized) proprietary extension to the C++ language that allows it to interface well with the rest of the .Net architecture. It's not a huge departure from the core language by any means, at least not enough of one to require a complete name change.


    Actually if you use any of the more powerful aspects of C++ you'll know that no, C++.net is *not* C++. For instance, as far as I know, C++.net only supports single inheritance whereas C++ supports multiple inheritance.

    The biggest problem, though, is the inclusion of the garbage collector. Because of this there is the introduced semantic of "finalizing" an object which is very different from the default C++ behavior. Many C++ programmers rely on what is called "guaranteed destruction semantics." What this means is that the moment an object goes out of scope or is deleted with the delete operator, we are guaranteed that the destructor is called and the object is destroyed. In C++.net, the object may or may not be destroyed when you think it is. This seems like a minor thing, but in reality it can be quite major. This introduces subtle changes in a program's behavior. Sure these things can be programmed around in C++.net, but that is just one more evidence that C++.net is *not* C++.

    Now it is possible that all of these issues have been addressed. If so, then C++.net is just a C++ compiler that targets the MS virtual machine. But this didn't appear to be the case when I last examined the issue. If this remains unsolved, I can only imagine the chaos that would ensue when clueless end-users (programmers) try to build some hunk of C++ code written by a professional C++ developer and have it compile, but behave incorrectly. Definitely not a desired situation for C++ developers of code that is to be used by others.
  59. Standards compliance by phlamingo · · Score: 1

    It's all very well to get on the standards purity high-horse, but in the entire history of ANSI and ISO language standards, how many translators (compilers, interpreters, or in-between) have been 100% compliant to a standard? That is, they implement every feature of the standard, with no extensions at all?

    I don't have any statistics, but I can think of ... well, none. Hm. Whaddya know?

    Please don't interpret this as a defense of Microsoft in this instance. I think that something like "CLI extensions to C++" would be a better name, putting the environment (CLI) ahead of the language (C++), because that is obviously consistent with Microsoft's policy.

    So, if a translator is not 100% compliant with standard Foo, is it not a Foo translator? At what percentage of compliance should it be called a "some proprietary Foo-like language" translator? And how do you measure that percentage?

    What about inconsistencies, irregularities, and vagueness in the standard? What about behaviors that the standard leaves as explicitly implementation-dependent? How do you measure those?

    Standards are generally good, but don't confuse them with Scripture. Their purpose is to make it easier to do good work, not to define the One True Way of Programming Holiness.

    Oh, PS: I tried dating myself. I found that it is much more fulfilling to date another person. :-)

    --
    I had forgotten how much cooler teenagers look when they are smoking. Oh, wait ...
  60. Re:Sounds like a molehill masquerading as a mounta by Anonymous+Brave+Guy · · Score: 3, Interesting

    You're still missing my point. You fundamentally assume that all developers are aware of portability issues, standardisation issues, the technical details of exactly what is and what isn't in ISO C++, the nature of Microsoft's .Net platform and the C++/CLI language, and so on.

    Take a look at any C++ newsgroup, preferably one of the unmoderated ones with a lot of newbies asking for help. Observe their level of understanding (or otherwise) of exactly how even standard C++ works. They frequently don't "get" concepts like undefined behaviour, compiler extensions, and standard vs. non-standard libraries. A huge number of the problems posted on such groups come directly from making that sort of mistake; some groups have dozens of examples every week. Some people will even aggressively defend their misconceptions, telling other (correct) posters that they don't know what they're talking about because "it works on my compiler". This has been happening with GCC extensions for years, and it's already happening with Microsoft extensions as well.

    So yes, I'm completely convinced that there are huge numbers of new and inexperienced programmers out there who really won't appreciate the significance of tying themselves into Microsoft's platform. Moreover, it is naive to pretend that Microsoft doesn't know this very well. Their whole marketing strategy, which the BSI guys are rightly challenging, seems to be based on creating this ambiguity in people's minds. I've mentioned the "Pure C++" column and random blog post misterminology elsewhere in this thread. There are simpler things too, like highlighting C++/CLI reserved words even when you're editing native C++ code in the IDE, as if they were a part of standard C++, and including C++/CLI and .Net material prominently in help pages even when nothing implying this platform is selected in the filters.

    I'm no arbitrary MS-basher -- go ahead and check my previous posts, and you'll find sometimes I support them and others I don't -- but in this case, I think they have a blatant strategy for trying to abuse the system, and it's quite right that those responsible for maintaining that system call them on it. If they had tried this with any well-known language with a major commercial backer, they would have been sued into oblivion by now, probably with a court order not only preventing standardisation under their derivative name but also preventing them from even marketing their own product with it.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  61. No, again by hummassa · · Score: 1

    >> Henceforth, the STL does not work under C++/CLI. Nor does Boost.
    > That's a different matter, as implementations often need to use compiler-specific tricks.

    Nope. Both the STL (as in STLport) and Boost will do fine in any ISO-compliant compiler without resorting to compiler-specific wizardry.

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  62. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    Allow me to rephrase that:

    Yes... most of us are "single".

    This is Slashdot, after all.

  63. Not necessarily by Anonymous Coward · · Score: 0

    "If a compiler will compile all ANSI C code, is it a C compiler?"

    I do not have the ANSI C standard at hand, but I expect that it has at least one paragraph where it proscribes that the language must issue a warning or error when encountering certain non-ANSI C constructs.

    A compiler that does not generate those warning or error messages (possibly even accepting it as valid) on that code is not an ANSI C compiler.

  64. Re:Plus Plus *WAS* C by the+chao+goes+mu · · Score: 1

    By that logic, does the perl-to-C processor mean that perl is C too?

    --
    Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
  65. Re:Sounds like a molehill masquerading as a mounta by Rick+BigNail · · Score: 1
    No, I don't think it is a blatant strategy to confused users.

    I see it as an improvement of Managed C++

    PHB may be confused, but that's neither here nor there :)

  66. Re:Sounds like a molehill masquerading as a mounta by plague3106 · · Score: 1

    If a language is not ISO C++, it is not C++ and should not have C++ as part of the name.

    Um, is the point of what MS is doing is to add the C++/CLI as PART of the ansi standard? That is, they are trying to extend the standard so that calls to .Net code is easier. Honestly, I don't see the problem with that.

    Doesn't part of ANSI C support extensions that can interact with assembly language?

  67. Re:Sounds like a molehill masquerading as a mounta by plague3106 · · Score: 1

    You download it, figure out the API (i.e. look at documentation, not the code itself, so you don't see the weird syntax), and integrate calls to it into your code.

    Um, downloading it would probably be downloading the .Net framework SDK. So I certainly hope that you'd know that you were using a .Net feature.

  68. Re:Sounds like a molehill masquerading as a mounta by 87C751 · · Score: 1
    I'm dating myself
    Just like every other /.'er?
    --
    Mail? Put "slashdot" in the subject to pass the spam filters.
  69. Re:Sounds like a molehill masquerading as a mounta by jgrahn · · Score: 1
    So I guess there weren't any C++ compilers between 1997 when the language was standardised and some time around 2001 when the compiler vendors started catching up with the features that had been included in the spec? Perhaps my copy of Borland C++ 4.5 from ~1994 isn't a C++ compiler at all, because the language hadn't been standardised when it was written?

    If someone says "Pascal", I know they can mean any of a dozen vendor-specific dialects. I expect and accept that. Same thing with many other languages from that era.

    C++ on the other hand was standardized at some point. All compiler vendors worked in the same direction. C++ programmers have gotten used to the idea that there is one standard. We expect to be able to talk to other people about C++ and agree on what language we mean.

    Then Microsoft comes along with a C++-based language which adds an important new object model, new operators and all, and refer to it sometimes as C++/CLI, sometimes vaguely as C++. Of course we are pissed. Of course we see this as a threat to the C++ community.

    Or at least do. But my point is, it depends on the language. If I was a Pascal programmer I wouldn't feel as threatened. In the case of C, I believe the competition between C89 and C99 has been harmful to the C programmers out there -- and yet C99 brings useful features for everyone, not just for some people whose target happens to be some specific virtual machine.

  70. Re:Sounds like a molehill masquerading as a mounta by Dr.+Sp0ng · · Score: 1

    For instance, as far as I know, C++.net only supports single inheritance whereas C++ supports multiple inheritance.

    I think you're right; however, the reason for that is the the CLR itself only supports single inheritance (except for interface inheritance). Which is a good thing. I've been using C++ for 13 years and I have needed multiple inheritance exactly once (except for, as I said, when implementing interfaces). And it was a problem that could have been worked around in other ways anyway.

    In C++.net, the object may or may not be destroyed when you think it is. This seems like a minor thing, but in reality it can be quite major. This introduces subtle changes in a program's behavior.

    No it doesn't. new and delete are still there, and they still work the same way. It's only when you use managed objects that the garbage collector comes into play, and that's not going to cause problems for pre-existing code, now is it?

    No, C++/CLI is not stock C++. But it's basically C++ with (a very few) restrictions and a couple added keywords and features. It's certainly close enough that the name C++/CLI applies.

  71. C++/CLI supports templates, people! by Dr.+Sp0ng · · Score: 1

    (posting this as a top level comment because I can't reply to EVERY SINGLE COMMENT that is loudly proclaiming that C++/CLI isn't C++ because it doesn't support templates)

    Yes, yes it does - it just happens to support generics also: straight from MSDN. Templates, being strictly a compiler phenomenon requiring no post-compilation support from the runtime, are supported just fine. The only real C++ feature that isn't supported is multiple inheritance (with the exception of interface implementation). And that's just fine with me.

    So to all you people claiming C++/CLI doesn't support templates, you're dead wrong.

    1. Re:C++/CLI supports templates, people! by Jeremi · · Score: 2, Insightful
      The only real C++ feature that isn't supported is multiple inheritance (with the exception of interface implementation). And that's just fine with me.


      It sure as hell isn't fine with me. I use multiple inheritance a lot, and if Microsoft's language doesn't support it, that means I would have to throw away (or at least, radically redesign) most of my existing code in order to use their compiler. The whole point of having a standardized language specification is so that you can migrate existing code without rewriting it. So their new language may be many things, but without multiple inheritance it's not C++.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    2. Re:C++/CLI supports templates, people! by Dr.+Sp0ng · · Score: 1

      Sure you can, you'll just have to continue compiling it as regular c++, with an c++/cli interface layer if you want to access it from .net.

      And gratuitous use of multiple inheritance is bad design, so you might want to think about that. Yes it's a good thing sometimes, but this is VERY RARE - it always increases complexity and can cause problems later, it's just that sometimes the benefits are worth it. Usually not, though. Anyway, I'm not getting into that right now.

    3. Re:C++/CLI supports templates, people! by Jeremi · · Score: 2, Informative
      Sure you can, you'll just have to continue compiling it as regular c++, with an c++/cli interface layer if you want to access it from .net.


      Right, I could use a cross-language interface layer, the same as if I had written the code any other non-compatible language. Which is the point: Without MI, C++/CLI is not C++ in any meaningful sense of the term. It's a separate, similar-but-incompatible language, much like C# or Java.


      And gratuitous use of multiple inheritance is bad design, so you might want to think about that. Yes it's a good thing sometimes, but this is VERY RARE - it always increases complexity and can cause problems later, it's just that sometimes the benefits are worth it.


      I agree that it's very easy to misuse multiple inheritance and get into trouble, and I have been bitten by that in the past. From those experiences I was able to learn where MI is helpful and where it isn't, and now I use it only when it's appropriate. But really, whether MI is considered "good", "bad", or "ugly" is beside the point -- it's an integral part of C++, and a language that doesn't support it simply can't claim to be "C++ ".

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
  72. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0
    I'm dating myself...

    That's a nasty habit! You should really try to quit!

  73. Re:Sounds like a molehill masquerading as a mounta by legirons · · Score: 1

    "C++/CLI is, in fact, a strict superset of C++"

    So when you do a google search for "C++ programming examples" and it returns something in that strict superset, you won't mind that it doesn't compile?

  74. Re:Sounds like a molehill masquerading as a mounta by Jeremi · · Score: 1
    someone who's got his panties in a bunch about Microsoft and is creaming between his thighs about the chance to stick it to the Man


    BadAnalogyGuy, indeed. Please, stop! :^)

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
  75. A couple of comments by Jerry+Coffin · · Score: 1
    First of all, I'd like to note for the record that despite comments elsethread, C++/CLI is not actually a strict superset of C++. It appears that they've gone to considerable lengths to make it as close as they consider reasonable to a strict superset, but it's still true that some perfectly legitimate C++ code won't compile as C++/CLI.

    Second, the official objection is only to the name, not the idea or implememtation of the language itself. In case somebody wants to hear the story more or less directly from the horse's mouth, consider reading one of Francis Glassborrow's Usenet posts where he tells about the situation. The subject's been under discussion to varying degrees for a while, but most of it sheds far more heat than light.

    --
    The universe is a figment of its own imagination.
  76. Who Cares? by Kosgrove · · Score: 1

    Forgive me for asking the obvious, but why is this important? What would be good reasons for using what's effectively C++ .NET when there are 2 other language choices for .NET (C#, VB .NET) that are much better-suited to writing .NET applications?

    I thought it kind of was understood that if performance was a priority, you shouldn't be writing for a Microsoft platform in the first place except for a front end, let alone with a framework as performance-shitty (although much more fun to code in) as .NET.

    I mean, I'm sure there are good reasons to use C++/CLI or whatever it's going to be called, but could someone explain them to me?

    Thanks.

  77. Re:Sounds like a molehill masquerading as a mounta by Ayende+Rahien · · Score: 1

    About multiply inheritance, I very much regret that I don't have it in .Net.
    There are several real cases where I need it, usually for mixins, that are a pain to live without.

    --

    --
    Two witches watched two watches.
    Which witch watched which watch?
  78. Re:Sounds like a molehill masquerading as a mounta by Dr.+Sp0ng · · Score: 1

    I know there are certain situations that MI is extremely useful. But you can always work around it somehow, and it gets abused more often than used legitimately. Overall, I'm of the opinion that MI hurts more than it helps, so I'm not upset to see it gone.

  79. Re:Sounds like a molehill masquerading as a mounta by Anonymous Coward · · Score: 0

    The more experienced you are, the more likely you are to use advanced features like STL and multiple inheritance. Therefore the only code you can reuse with C++/CLI is the half-baked crap produced by knuckle-dragging coders who never managed to understand good C++ style.

  80. Re:Sounds like a molehill masquerading as a mounta by MikeBabcock · · Score: 1

    Your argument is fruitless. You forgot to define "C++".

    What subset of C++ does it need to compile to be a C++ compiler?

    Do you even care?

    What if it can't compile templates or classes, is that good enough? After all, not everyone uses them.

    What if it can do classes and not operator overloads? Is that still a C++ compiler?

    The reason the standards exist is to help with this *real* problem -- what is or isn't a compiler for this language.

    --
    - Michael T. Babcock (Yes, I blog)
  81. CLI++ sounds better by fprog · · Score: 0

    In fact, CLI++ sounds better and would be a better compromise. Between C++, C++/CLI, CLI/C++, CLI and C++ =P You don't have to search forever...

  82. Re:Sounds like a molehill masquerading as a mounta by julesh · · Score: 1
    Your argument is fruitless. You forgot to define "C++".

    My point is that it isn't well defined. Various people might like to think that C++ means "the programming language C++ as standardised by the ISO in 1997", but in reality what people mean when they say C++ is a whole load of different things, depending on who's saying it and in what context.

    The reason the standards exist is to help with this *real* problem -- what is or isn't a compiler for this language.

    Yes, and that's fair enough. However, the fact that a language has been standardised doesn't mean that we're not now allowed to use the name for other things that would have been perfectly acceptable prior to that standard being published.

    Borland C++ 4.5 is still a C++ compiler, even if it doesn't support function templates or STL. It isn't, however, an ISO-compliant C++ compiler.

    The following is still a valid C program, despite the fact that it doesn't follow the syntax prescribed by the ANSI committee when they standardised C:
    main()
    {
      printf ("hello, world\n");
    }
    The point I'm making is simply this: "C++" (or "C") isn't something that's all that well defined. "ISO C++" (or "ANSI C") is. That's all.