GoingNative Live at BUILD: Herb Sutter, Joanna Mason, Tony Goodhew

Play GoingNative Live at BUILD: Herb Sutter, Joanna Mason, Tony Goodhew

The Discussion

  • User profile image

    I'm taken back by the vitriol in many posts about C++.  I love C++ as much as the next guy (or I thought I did), but the fact that Microsoft will not have completed any significant features of C++11 (beyond what was in VC10) is not the end of the world.

    I am very disappointed, but I also understand why it has happened.  If Microsoft cannot get Metro launched with great success, then Microsoft will be in for a rough time over the next 5 years.  It is a testament of the power of C++ that they came back to native in order to ensure the success of this platform.

    Sure, MS could have done a better job of managing their product backlog (suspending variadic work at the first sign of trouble for instance), but they didn't, which means that they can learn from this.  If anything, it seems like there is a push (probably thanks to Herb) to reduce the amount of time between release of new compiler features because of this failure.  THIS IS A GOOD THING!!!

    Advice for the trolls: How about you worry about your own feature set and shipping on time instead of needlessly attacking someone who is improving a broken system from the inside?

  • User profile image

    Great talk, you managed to put together a heavy party Smiley Need put a link to this video on GoingNative show. Rock'n Roll.

  • User profile image
    Ben Hanson

    @MichaelPrice: +1

    Of course we wish there was more progress with C++ language features (Not least of all proper Unicode string literal support...), but attacking Herb is simply insane. Not only does he give very informative and insightful interviews, there can surely be few people around that work so tirelessly to help improve C++ (both language and libraries).

    All C++ developers should be very glad indeed that Herb fights our corner within Microsoft.

  • User profile image

    @KMNY_a_ha: I'm curious about why you use our product? From your posts it seems fairly clear that you value a high degree of standards conformance and that you find our compiler lacking. It also seems clear that you're aware of GCC and the fact that it does a better job of delivering on conformance than ours.

    So why are you using Visual C++?

    I'm really interested in this - You're clearly passionate about conformance and angry at our product plans - Is this because you use different products during the day and by not delivering on conformance we're making it harder for you to maintain a core code model? Is it because you have some old Microsoft based codebase that you have to maintain and it annoys you that you can't use the language the way you do in GCC?

    If you can take the time to explain why/how you use Visual C++ I think it'd do a lot for us to come to a better understanding.


    Tony Goodhew

    Microsoft Corp.

  • User profile image

    Please stop the personal insults. It's great to be passionate, but do not attack someone in the process. Thank you.


  • User profile image

    @new2STL: The link is (and has been since posting) in the first paragraph of the description of GoingNative 2 Smiley


  • User profile image

    I need to highlight something here, because Herb may have just verified the most key piece of information yet.  In response to the question about UI choices for C++ desktop (not Metro) apps, the response was (all the obvious previous choices), plus XAML!  So Herb is confirming that we can in fact use XAML to develop C++ UI for non-Metro applications (or did he just not hear the whole question)?  For me this is a critical piece of the puzzle.  All the stuff for Metro is fine and good, but what I really need is a modern option for C++ desktop UIs.  I suspected that the WinRT stuff would eventually be applied for desktop apps too (after the initial push for Metro support), but this is the first time I have heard an answer more definitive than "we'll think about it".  (We are still talking about C+++/CX here, not C++/CLI/managed, right?) 

    If everything that has been provided for creating Metro apps also becomes available to target desktop apps (and maybe WP and XBOX too), then this will be huge.  Fingers crossed that (at least the desktop apps) will run on Vista/Win7 too.


  • User profile image

    @ryanb: That could be a perfect goal for Silverlight 6.

  • User profile image

    The collaboration is amazing!  The more the better.

  • User profile image

    @Tony the reasons I'm frustrated/irritated/angry/using your product:

    1. Your product is most popular and due to this fact most companies use it, the one I work for uses it too. Now, due to this fact I have to work with your product, and due to this fact in turn I'm somewhat "trapped/forced" to use your product (for the exact same reason I use Windows and MS Office). I hope that this answer to the question why I'm using your product (for most of my work). Now, to the question why I'm so angry/frustrated/irritated. Ok, here we go: I'm not sure how it is in US but here in Europe we like to divide our time between work and family. In order to do so weekends are mostly reserved for the latter. But, but, but, but... As I've already explained, during my working hours I work with your product, which by being incompatible with the new standard disallows me to educate myself and stay on top of the C++ game. In order to do that I'm forced to:

     a) Use different product/compiler during weekends

     b) Instead of spending my dedicated for family time with my family I (because of you not providing conformant compiler) have to spend this time at the computer, and that I think makes me most angry. You literally stealing my family time. Is it good reason to get annoyed? I don't know you tell me.  

    2. Do not lie to me/us (C++ community), treat us with respect - be honest, do not pretend. The whole business with C++ renaissance at MS is a lie. What C++ renaissance? It's C++/CX which conveniently no one from MS before //BUILD bothered to mention. What this created is this: a) you've (MS) raised our (C++ community) hopes and then with one swift blow knocked us down. b) you (MS) still trying to play this disgusting game of pretending that everything is ok and exactly as you've promised. No, it's not. Even those stupid examples on your website that have nothing to do with C++ are marked as C++ examples. What you doing is, you spitting on people's neck and trying to tell them that the rain is raining. Could this be seen as a reason to get irritated/angry/pissed off? I don't know, you tell me.

    3. I bought some time ago for my own private use VS2010, just to be let's say "In your camp/playing on your side/support you etc.". Now it looks that in order to do modern ISO C++ I can throw your product through the window (I hoped that by buying update to VS.next will allow me to code in pure C++). But in order to do that I have to get FREE!!! GCC. Does that constitute to an annoying and irritating behaviour on your part? I don't know. Tony, you can answer that for yourself. I think MS is very well aware of the fact that most C++ guys are not really interested in your proprietary extensions etc. Most C++ guys want to code in ISO C++ and are absolutely uninterested in your extensions, which by the way brake C++ syntax - was it really necessary to do so? That's why, those who really love C++ (count me among them) didn't jump on your C# wagon few years ago and they stayed firmly and loyally with what they really love. You, (MS) trying to play on this feelings by raising campaign and trying to pretend that you really care (from now on) about C++ and C++ community. But the truth is that you don't really. Because if you cared Tony, core C++ features would be implemented first. Because they're core to C++ and C++ community. So again, you treating us like some kind of second class citizens, lying and pretending to us and ABSOLUTELY IGNORING what you hear from us:


    Then you're surprised that some of us react harshly to your behaviour. You know, we are also humans, we also need to earn money and we understand that people are working in order to earn it. And I'm telling you right now that if you were honest with us (C++ community) and said something like:

    "Guys, we really do want to engage again with C++ community but for now in order to keep our position in the market we have to do x, y, z (without giving sensitive information of course). Guys, we will not have time to implement core features in next release of VS but please stay with us and we will do everything what's in our power to improve this situation ASAP.

    And let me tell you Tony that this would be received with understanding (because people are good by nature and understand that everyone wants to live) and would earn you credits as being honest company. Company who really cares about its costumers but for obvious reasons must do X,Y and Z in order to stay afloat.

    But no, you (MS) didn't do that (as usual by the way). What you did is was lying/pretending and stalling us and ignore everything what you've heard from us just to at the end reveal that you have ABSOLUTELY NOTHING prepared for C++ devs who want to do modern ISO C++ except for few libraries. Why the priorities have been wrongly assigned? Because you didn't really care/have other more important priorities. Could that be seen as annoying/irritating behaviour?

    4. If you initiated dialog with someone/group of people, please continue it, not break it when the questions became "uneasy". You yourself Tony have been asked on few of the VS forums, also by myself (I've tried to look at this today but unfortunately couldn't find it) questions but did you bother to answer to it. As for very fresh example of starting a dialog and not bothering to continue: https://channel9.msdn.com/posts/Raman-Sharma-Building-Metro-Style-Apps-with-C-and-JavaScript

    Is that behaviour expected from professionalists/people who really care about their costumers? Could that be seen as annoying/irritating/arrogant behaviour which has the potential of making people angry? I don't know Tony, you tell me.

    So just quick sum-up:

    1. Do not lie to us, be honest, treat us with respect and you will be rewarded accordingly. This will get you somewhere and people will have respect for you for being honest. Lying/pretending will get you nowhere + you'll get irritated customers + you will be rewarded accordingly.

    2. If you starting something (discussion for example) have the courtesy to continue and finish it in a civilized manner.

    3. Don't be surprised that people are getting annoyed with you due to your negative/arrogant/ignorant behaviour.

    I hope that this answers and explains why I (and I suspect few other people too), can feel irritated and angry with MS.


    Artur Czajkowski

  • User profile image

    @KMNY_a_ha:Artur, Thank you for the long post on your reasons - I appreciate you taking the time to write that up for us.

    Let me break this into 2 parts. The first is really just commentary on our actions as you have described, the second is where we can talk the specifics of what we can do in the product to better the situation.


    I don't believe that at any time I have lied in answering comments here nor in any of the videos - Do we have a difference of opinion? Certainly we do - It's my opinion, and the opinion of the people I work with that we are committed to C++ - Your opinion is that we aren't - That's fine, we have a difference of opion, we're not lying to each other.

    Now you may not be part of the group I highlighted with my comment but I stand behind the fact that, yes there are people who effectively believe that if we don't implement 100% of the language standard then we clearly don't care about C++. In this release and most likely the next we're not going to reach 100% conformance - Does this mean we don't care about the language? I don't believe so.

    Your comment:

    "Guys, we really do want to engage again with C++ community but for now in order to keep our position in the market we have to do x, y, z (without giving sensitive information of course). Guys, we will not have time to implement core features in next release of VS but please stay with us and we will do everything what's in our power to improve this situation ASAP."

    I believe this is very close to what we've been doing and saying here - But this isn't a point worth sticking on - Let's just agree to disagree and move on.

    As for stopping answering questions if I have missed completing a thread I'm more than happy to go back and answer that - Feel free to either post links to those threads here or send me email directly (tgoodhew) and I'll go back and post a public answer - If I have missed questions that is an oversight not a policy.

    As an aside, on Raman's thread I have a couple of questions that I had posed to the team and intend to post back to that thread once I'm sure that I have the answers correct.

    With that out of the way let's move on to:

    Part 2:

    The 2 compilers you use are ours and gcc - There is a gap in conformance between the 2 - We're working to try and close that but it would be valuable to know what the stack ranked order of this we could do to make the situation better.

    If you could list the top 5 - 7 language features that would be important to you, in order of importance, what would they be? It's look something like this:

    1. Variadic templates
    2. Defaulted/Deleted functions
    3. ...
    4. ..
    5. Range based for loop

    But your actual language features not just the example I gave above.

    What would your list be?

  • User profile image

    Hi Tony, thank you for your reply.

    Few clarifications:

    Clarification number one, when I wrote 'you' I meant MS *not you* as a Tony Goodhew

    (English as wonderful as it is isn't my first language,  but that you've probably guessed

    long time ago).

    So just to make it straight once and for all - I DO NOT claim that you, Tony

    Goodhew lied to me at any point. Please accept my sincere apologies for not

    specifying this clearly. The only point in my previous post when I've referenced

    you directly (as a Tony not as MS) is when I talk about you not answering to my

    question in one of the threads but as I've mentioned already I'm simply unable to

    find it.

    Clarification number two: No Tony, I do not think that if you (MS) do not

    implement 100% features it automatically means that you don't care, but for the

    love of God at least implement some of them in every future release.

    As for list of my "Most Wanted:"

    0. Whole concurrency model - not just portion of it,

    1. Variadic Templates + everything what concerns work with templates, like for example:

    2. Default template arguments for function templates,

    3. constexpr,

    4. Non-static data member initializers,

    5. Delegating/Inheriting ctors,

    6. Defaulted and deleted fncs.

    On the side:

    I personally do not like to see explanation/implementation in the vain of (this

    is from: https://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx):

    [begin of quote] "... This makes it (about override/final) an Ascended Extension, as VC already

    supports this "override" syntax on functions, with semantics reasonably close to

    C++11's.  "final" is also supported, but under the different spelling "sealed". 

    This qualifies for "Partial" support in my table."[end of quote]

    Either do it as it should be done or don't do it at all - reasonably close just

    isn't good enough. And as for expecting us to use equivalent (sealed) instead of

    final... As you've suggested Tony, let's move on.


    [Note: ] Tony, I sincerely hope/believe that we (I/C++ community and you/MS) will be able

    to communicate in the future with each other on equal/civilized terms.

    Thank you.


    Artur Czajkowski

  • User profile image

    I value the intent of the Windows runtime and the C++ extensions more than some yet to be implemented C++ standard features. 

    If VS11 did not support the WinRT reasonably for C++ by Build, that would have been a minor disaster. 

    One of the reasons why C took over was the crystal quality of the K&R's "The C programming Language".  VS11's release needs a single document of that quality for C++ and WinRT.

  • User profile image

    tgoodhew, I think you can answer this question.

    Before VS11 gets officially released are you going to implement any additional C++11 features or are the features frozen?

    Please don't answer "at this current point we can't say ... blabla", I'm sure you guys have made the decision if you're going to implement more of C++11 or no.

  • User profile image

    Part 1.

    First, @everybody: Someone elses perspective on WinRT:

    "While technologies like HTML5/JavaScript and XAML have become first-class citizens for use with the new API, C++ is still in the list. There are a few catches, however - for example, you can't simply drop in your favorite libraries and start them up in Metro. That's because DLLs in Metro land must be only be exposed through WinRT; essentially, a managed COM interface. All native C++ must stay tucked away inside the component, and traditional public DLLs cannot be used."

    Click the link, then the top link that appears after that to read the authors full thoughts and latest updates.

    Then get ready for more wrapping than a snoop dog video or a Chrsitmas Eve spent at Santa's grotto.

    Are you ready for this future? What a performance.


    Hey big guy! The Rumble in the Jungle finished years ago. I guess this is the Rattle in Seattle! It's unfortunate that a fighting metaphor springs to mind, but I guess that's because it feels like I'm watching one again.

    After some fine coaching, Raman ducked and dived I see:

    Oh well. I've no doubt he's a nice guy, but with so much deflection you can understand why the answers aren't knocking peoples socks off. However, since that's the MS style and a lot of my point, and you've entered the ring, so to speak, here's my questions for you that have been doing the rounds:

    Ding ding.

    #0 (About being too clever and playing fair): First, man, why pick on KMNY aka Artur aka Family Guy? He's admitted to a language problem! Yeah, I know the problem is that he wont stop using it lol, but what can you do? I've kindly nudged him about that before (really! see my posts to him); but you know, being passionate and all that, he hasn't got the message yet!

    So I'll nudge him again for you:

    @KMNY stop reading those cheap, bad language books for foreign people! They just teach you all the bad words! I know they are fun, but they're a bad influence! Trust me, my french is a un masse de m*rde because of it! :)

    Ok, Tony, now we've both picked on the guy with the stutter and glasses in the name of fair play, can we now stop because it hasn't achieved much from what I can see?

    #1. (About the message you send): English is your first language Tony. It's mine too. So why ask Artur? Is he is the weak one of the herd or something? When you know better articulated versions of his and other opinions just litter (literally) these Build blogs, it's hard to understand why you would start with him otherwise and not @jalf or myself or someone. Did you not see the other questions? You don't wear glasses too do you? I am trying to be nice, but this is hard to watch.

    #2 (About mocking the afflicted and asking without listening). If you are going to do an improptu language poll on Artur, why not use your uservoice forums so everyone can join in? Ah, you're right, I've heard that Microsoft ignores those ones too! In that case, do I assume you are going to pay special attention to Arturs personal poll then?? Ok, that came out all wrong... but if you aren't going to enact his personal wishes, then aren't you just raising his um, expectations, again, in order to leave him still unsatisfied? Do you see how this cycle works? Do you know where the point is that you stop asking and start listening? Otherwise, everybody is down, but you are the sucker.

    #3. (About how to listen and answer) Tony, Arturs opinions are appallingly worded, but they aren't remotely unique. I've been trying to get him to improve on that to my credit, so how about you do the same for yours? Can you actually get your team to address questions fully and frankly and to understand the value of that? To answer what they think people are getting at, not just answer the bits they like, whilst ignoring the bits they know will sound bad, or spinning things through omission or part answers? @Artur calls it lying. @Raman calls it saving his skin. @Miriam calls it simply, bs (go Miriam!). @Jalf calls it a lot of good things. I call it painful. I'm sure we can agree on that last one. But if we're going to stop the pain, will MS look at how they might be dishing it out? You don't need glasses or Bing, I'm telling you.

    #4. (About silence and manipulation): You asked Artur why is he using VC? Good question. I imagine 'cos he has to for now, but clearly it pains him. Why are *you* (MS) *using* it? To create a walled garden? And when are you using it? WinRT and C++/CX has potential, but when it's so horribly incompatible, sealed off (good use of VC++11 there!) and potentially poisonous, then common sense says you should label it properly. So why didn't you? If MS had told customers there would be a "C++/CX renaissance" instead of a "C++ renaissance", the community could have adjusted its expectations, helped shape it, or have started understanding it sooner. But MS didn't do any of this - no roadmap, no standards proposal, nothing. Nor was it clear on most of the Build slides what was being sold, nor the limitations in them. It just said C++. Why create the fud, the silence, and use ingenuine labeling *again* when you already know how well that went down last time with the public, the BSI, and Bjarne himself?

    To answer your question "why are we using VC?": If Microsoft had told us about the walled garden future sooner, maybe we wouldn't be. Maybe that's why Microsoft does it this way? When thats the case, is it fair to ask us such lame questions? People feel this way Tony. Maybe that's why MS is getting the bash and not of the script kind? You can't keep spinning the wheel like this. It comes off. Evangelism isn't one way either. Are you still wondering what this is all about? Herb talked about the borders. Borders keep people out as well as in.

    #5. (About if it hurts stop doing it). Is that the real undercurrent of your "So why are using VC?" question to Artur? It strikes me as flippant if it was. Points for asking the right question and answering part of it correctly, yes, was was is it; but points lost if you miss the rest of this. When reasonable people are feeling like this, the sound you are hearing is of people searching for the exits. What are you still searching for? Is it so hard to believe that this isn't just one or two isolated anti MS cases? Does MS feels it is?

    Continued, after the break....

  • User profile image

    Part 2.

    First, more alternative futures:


    #6 (About being reasonable). So are these isolated or ureasonable people angry with MS? What do you hear? I hear people feeling that dropping VC will hurt in the short term but worrying getting stuck under Microsofts next land grab will hurt more in the long term. Until that becomes clear, MS shouldn't be surprised if the hurt keeps coming their way *while* their customers *do* stop using it. I've attached just a few handles of posters who seem like reasonable dudes or dudettes to me - and not because they agree with me, see my conversations with Miriam for instance. But because they are hard to argue with even when I take the MS side. IMHO that demonstrate decent view points. Will you read them? Anyway, you can't miss them now I've included a few below; but look out for their names in the future. I didn't want you to have to search since Bing isn't always the greatest! But if you continue to have trouble finding the answers, I can recommend another Search provider for you. Mine begins with G...! :)

    #7. (About bad relationships). Herb answered "Why C++" (and I've appreciated him for it). That was already sold to us. But my concern is that what he really demonstrated was Why Native? What you guys have yet to sell is Why C++/CX? Because try as I might (and I do, see my posts); all I can see is that MS keeps abandoning C++ and then coming back to change it, like a dysfunctional lover who can't understand why their partner(s!) are unhappy about that!?

    #8. (About good relationships). They say you should leave a relationship if you can't accept your partner for who they are. Then, why does MS keep trying to change C++ all the time, first C++/CLI, then with C++/CX and the millions of other extensions over the years. When your partner is already open to change - but just expects it done the professional and responsible way - using the relationship guidance counsellor that is called the ISO C++ committee - then why can't you use it, earlier, and more often?

    #9. (About going back to your ex): Why do you expect second chances when you appear up to your old tricks straight from the get go? Herb did claim a few of the C++/CLI extensions have made it back into the language but really, they weren't that novel and the basic ideas that did get home were more thanks to Java than C++/CLI, so it's not a good enough reason to keep scr*wing with your ex. They don't like it anymore! Is MS going to stop?

    #10. (About making up the right way not just scr*wing everyone) Are you going to find out and publish what members of the ISO C++ standards body make of C++/CX at least? If it's good, are you going to submit it? If so when? Those Boost guys, the real unsung heroes of the real C++ renaissance will have a lot of fun wrapping C++/CX should it ever come to it. I don't want it to come to it. Hats off to them, so to speak, because they are the real C++ renaissance and contribute more to the standard as far as I can see than MS does. Their approach is not just open in terms of source, but also in terms of dialogue. What's not to love there vs here?

    #11. (About costly breakup and runions). Those you ditched, but have now returned to, you seem to think they should have to pay for that pleasure that is Metro? It sounds it too. Not quite one nor the other. It also sounds like Artur and *many others* want out of this relationship but know it's a costly proposition. Maybe some don't have a choice. But given its now going to be even more costly to stay in that relationship, maybe this is the time for everyone to come out now, so to speak?

    #12 (About loyalty). I can see why you cheated on C++ for C#. It wasn't the latest hot model, but that's you guys all over. How many bites of the cherry do you think you get? Always out for the next new model and to heck with the last one. Why can't you keep it in your pants and commit? Some of C#'s looks have faded over time and the baggage is getting a bit much, but I can't help but worry that without ISO C++ protection, /CX will be the virus I catch from that cross dressing old/new hag that is COMpletely Metro. Some very well meaning people *still* love to code with that fugly that is C++. The point is they accepted her, warts (ewe) and all and aren't turned on by every new model that comes along especiall when they age so quickly. But if you are going to make us pay for the pleasure of dancing with that old/new thing that is COM/Metro, why should we sully our reputation by paying for it plus risk giving something nasty to the old gal that has served us so well; just to keep sleeping with that disloyal, cheating, infectious creature that is MS?

    So Tony, no more videos trying to justfy being late with the C++11 features - that seemed to be your sole contribution to this video - because in the end everyone else did make it to the wedding with the dowry on time, except you guys. That was the gcc reality and ibm reality, just not yours. Go ask them what it took to do it because you obviously feel it wasn't even possible still, despite them showing us both otherwise. Pragmatic customers also know that. Interesting how IBMs stock is going vs MS by the way! Must be a reason for that?

    We missed you, but you always arrive late. Stop justifying it. Just be there in the std::future<Tony>!!! How many chances do you think you deserve and when are you going to start listening and taking walls down?

    Ok, fade to black and roll credits.


    @mojonez, says reflects my best case view.

    "Agree with Peter and dee here. Having done win C++ dev for the past 15 years with Win32, COM and MFC, and lately C++/CLI managed layers into Winforms and WPF, the XAML/C++ discussed here is a vast improvement. Fast, native C++ code directly behind declarative XAML, with a rich designer/developer workflow toolset - perfect.

    Some language extensions for reflection - fine, big deal. Compared to COM code (ugh) or some other system (e.g. QT) for pseudo

    reflection its great, and easy to isolate from other portable C++ layers.

    Appreciate MS's investment in preserving dev choice here.

    Good work MS - love it."

    But see other opinions: @Tomas asks:

    Please answer this question: If I decide to write C++ GUI application in Metro style am I forced to use all these proprietary ref, sealed, ^, Platform::String^ extensions for GUI components or not? I am not interested in communicating with other MS languages.

    If the answer is yes I Am still forced to use those then I am not interested in anything what WinRT offers to me and I hope somebody else (Qt) will come with Metro port which will let me continue to write my code in standard C++.

    I also don't like you are calling it C++ although it's not standard C++. It's C++/CX. This is something I wouldn't expect from former C++ ISO chairman."

    @Tomas, that is being looked at, but I don't yet know how viable that is going to be.

    A few more quotes from:

    @Bernd, has mentioned some great potential, but concludes:

    "For a C++ renaissance on Windows a great UI / general native library (like WinRT for Metro is) to program desktop applications on Win XP and successors is still missing (like the .NET Framework and WPF is for managed applications). And when I have to continue to program against the Win32 library now and know that there is something much bettern than this, but I cannot use it, it is a bit frustrating."

    @sigh, says:
    "A new "incompatible with everything" platform which will be thrown away in a couple of years, like the "original" .NET platform has been thrown away.

    Hey Microsoft, wake up!!"

    @jalf, says:
    "But that's missing the point. According to Microsoft's marketing material, there's supposed to be a "fast and fluid" way to use WinRT from your language of choice. What is the fast and fluid way to do it from ISO C++? "

    "But you know what's most bothering ? The everywhere present and misleading "written in C++". I'm sorry, this is not C++. I'm pretty sure it's not the C++ that you talk about in your books, Herb. So why these slogans everywhere ? Why not just come straight and just say "hey, if you want to write metro apps you have to use our contraption" ?"

    @Miriam says:

    "C++/CX is absolutely NOT what I want to use. I want to use C++11. I don't buy this "you only have to use C++/CX on the border" business. The border is important! I can't believe Microsoft is once again pushing their own incompatible with everything solutions instead of implementing the standard."

    adding later:

    "It seems that in the short term, switching from smart pointers to C++/CX will buy us exactly nothing. And the long term future, you know, seems highly questionable.

    I'd gladly trade this C++/CX as well as a dozen next C++/CY successors for one real thing: C++11."

    Thankyou and goodnight.

  • User profile image


    Respectful discourse spans cultures and languages. Traitor, for example, does not have a good meaning in any language that carries the word... This isn't about that, however. In fact, it has nothing to do with it.

    This conversation is about C++11 conformance, trade-offs that software manufacturers have to make, a new programming model for Windows where native is as first class as managed and interpreted languages. We all agree that it's a bummer not all C++11 language features will ship in VC11 RTM (did you have a chance to listen to what Herb said in the video that accompanies this thread? Please listen carefully.)

    Feedback is great. Please keep it up. Let's just have a reasonable conversation without insults, foul language, innunendos and overly-zealous-mostly-off-topic rants.

    I, too, suffer from occasionally lacing questions or remarks with too much passion, which can make me come across as an angry or hostile Charles. Nobody's perfect. We're all humans. Let's just try to communicate humanely!

    Happy river,


  • User profile image

    @KMNY_a_ha: Artur - Thank you for the clarification, I completely understand the english as second (third, fourth, etc) language - Let's assume we've shaken hands and put that behind us.

    I do want to ask you though to not feel shy about challenging anything we do say - I work closely with the rest of the team to ensure that everything we say is accurate and truthful so if it appeaars that we aren't doing that then please feel free to raise questions - As I've said before if there is every anything that you think we're doing that doesn't uphold that policy please contact me directly and I'll get it sorted out.

    Onto your request - Thank you for the list of things that would help you - Your point about final/sealed is well made and think easily fixed - It's a little thing in terms of the list you provided but we're going to try and fix that for the Beta - I can't confirm that it's in until the work is fully done and we ship the bits but we'll try.

    As Herb alluded to in our video we're going to try to change the way we deliver language features in our compiler - Again we can't be sure we can given the realities of our situation but we have heard you (both you and the community) asking for faster turn around on this and we're working to try and make that a reality. Right now all I can ask is for you to wait until after we get our beta out to start seeing that cadence change in release - Of course telling you we're trying to do something and doing it are 2 different things, which is why all I can do is to ask you to wait on that and consider the above.

    Tony Goodhew

    Microsoft Corp

  • User profile image

    @hmm: The reality is that schedules change as we progress towards RTM, sometimes you have to cut things and sometimes you get the ability to add things - This is why I can't gurantee what is in the product until it actually locks down for shipping.

    That said, in my response to Artur I said we're not going to be in 100% conformance, we're not going to be equivalent with gcc in conformance. Are we going to be better than where we are today? Maybe, we're looking at what we can do about that.

    We are currently investigating shipping the compiler and libraries at a faster cadence than VS - Is this going to happen? We don't know, we're just starting the work on it - Would this mean quicker delivery of additional language features? Yes - How much quicker? At this point we don't know.

    Tony Goodhew

    Microsoft Corp

  • User profile image

    @Glen: From reading both your parts it's still unclear to me what problems you see with using C++ & WRL? I don't believe there is anything you can do with the component extensions that you can't do with WRL so I'm wondering why WRL isn't a suitable answer for you.

    Please see my replies to Artur & Hmm for language conformance and address that through updated release cadences.

    Tony Goodhew

    Microsoft Corp


  • User profile image


    I not only agreed language like KMNY's is unhelpful - I got out and discouraged it; as much as I am able to within my own abilities to remain free of the friction your company generates.

    I do this as a service to you because you guys regularly ask for feedback and clearly don't always know how to respond to it or interpret it or bother with it. If you did, you wouldn't keep asking for it, losing it, or opinning it as just of the "we don't care" kind - or generally just keep getting a beating from it, as one poster succinctly put it before.

    Given the scattered streams you use to collect your feedback I accept losing some of that feedback happens. As is the nature of people, I also accept that lazy responses from Microsoft are will be matched by the equally lazy "you don't care" feedback from customers.

    But on a few occasions I have taken my time to fish through these streams, push back some of the less articulated diatribes that come your way, and fathom it into something more.

    My contribution to Microsoft, however much you hated it, was to find, distil, and answer, what "you don't care" really means, into 12 points of more detail that could be amounted to actionable items; one of which was about the message you send.

    Well that wasted my time didn't it! What did you do?

    Glad to see you didn't waste yours. Your contribution to me was just to convey an impression of summing my whole list up as an "innuendo filled, off topic rant", before you retreated back to happy river!

    If that's counts as business for you, carry on. It doesn't cut it with me. If I'm the only one that feels, I can eat my ^!

    If the only only highlight for you, from all those 12 points and more, was the bit of innuendo I put in to make what was otherwise a long read a bit less dry, then that's a real shame, to say the least.

    But given I took time to include the reasonable opinions of many other people who have also taken time out of their day to talk to Microsoft too, you summing up those people up as "TheAngered" and more off topic angry ranters too, well that leaves you up a certain river without a certain paddling implement.

    If that's a happy river for you, c'est la vie. Good luck with that! Don't say I didn't try.

    I acknowledge the VC11 comments from Herb. I'll reply to him shortly.

  • User profile image

    @Glen: I only stated that we need to remain calm and ask questions versus attack people. There's nothing wrong with that. I also stated that feedback is great. Keep it coming. As I said (and Herb said in this video) we're also angry about not getting enough in for VC11. It's a hard problem. Much harder than you're making it sound. 


  • User profile image


    The new VC11 comments are great, I believe you. I hear a "we're going to try to do better than what we initially said" vibe there; but I remain concerned about the *extent* and *time* of it.

    Because without that, it means I don't exactly know what I am believing; and put that way, it doesn't sound so good. That's why I encourage Microsoft to publish both tangibles soon, because without those, my view is they remain an unquantified commitment of time and extent from a company with a patchy past and a present people are clearly still working through.

    It also addresses the fear that some things might get left in the todo box by Microsoft ad ifinitum.

    Shame to not sound happier, I just see IBM and GCC leaving MS in the dust all the time and I find it hard to bite my lip listening to Microsoft talk up the almost impossibility of delivering whole or more of C++11 when those other companies actually achieved it, some with less resources that MS. It seems MS can't undersand the point of view of how things sound. It must be something you only experience as a Customer.

    About C++/CX:

    Can you explain the ^ situation re: language, library, existing WG21 std, future WG21 std, Metro, and Desktop. It's a surprisingly difficult topic to get traction with.

    I've discussed it with other people and get a lot of negativity about it. I had initial positivity to it, but I have to say others are winning the argument with me. So I look foward to more of your help and sale on it.

    What does ^ vs WRL buy me? Succinctness vs Verbosity? Anything more? It's available on Desktop and Metro, right?

    ^ As a language feature vs library feature, is it a better/easier optimisation story as a language feature or there nothing relevant there?

    ^ regarding weak refs. What's the angle on that vs language / library syntax.

    What does ^ and/or WRL mean regarding compiler vender lock in, and regarding platform / os lock in. If it is a lock in, how do you see that changing?

    How does ^ and WRL potentially relate or not relate to the existing std:: smart pointers. Can ^ replace any of the std::smart pointers in the current standard, or be added to in addition to a future WG21 standard, or is not relevant.

    If it makes sense, will MS propose this to WG21. If not, why not and would that be a technical or political reason?

    I'm sure you have talked this ^ /CX over with Bjarne, can you or does he publish his opinion?

    Ok, that's all my questions, thanks!

  • User profile image

    @Glen: I had a chance to ask Herb about that - Here is what he sent me:


    "First, we definitely provide two ways to access WinRT from VC++:


    ·         The C++/CX language extensions, which give arguably simpler syntax, and definitely give better optimization opportunities because the compiler is aware of more of what’s going on. The syntax is basically the same as C++/CLI which is already an Ecma standard (Ecma-372) produced mid last decade with the gracious help and input of a who’s-who of the ISO C++ committee, and that is already open so that any compiler vendor can freely implement it, and if ISO C++ or any other standard wants to incorporate any of it we are happy to support that – in fact, several features from C++/CLI and C++/CX, such as nullptr and enum class, have already been adopted into ISO C++ and are part of the new ISO C++11 standard.


    ·         The WRL template library provides a library style that also works if you prefer that.


    I would encourage you to try both, and see which you like best.


     We support both in our compiler wherever WinRT is available. For other questions about where WinRT is available (e.g., in Metro vs. desktop apps) you need to ask the Windows team since they own that – but wherever they make it available, our compiler will support it.


    As for the specific question about the C++CX model regarding why we chose ^ and ref new: Definitely please see section 3.3 of my paper A Design Rationale for C++/CLI. Many of the same considerations apply that I mentioned there, even though WinRT is definitely not .NET.


    For example:


    ·         Type system: It’s important to have clear and simple statements about the type system. Today in Standard C++, the type of a new-expression is a raw pointer (*). Likewise, it’s important to be able to say something like, “the type of a ref new-expression is a ^.”


    ·         Distinguishing different conceptual heaps: It’s nice to be able to distinguish the WinRT allocation from native allocation (i.e., ref new vs. new) as they are conceptually different heaps. The difference may not be as big as “CLR heap vs. native heap” but they are different.


    I’ve been asked several times, “why not just reuse ‘new T’ so that it returns a ^ if T is a WinRT type?” This has been tried; the original Managed Extensions binding C++ and .NET about 10 years ago did try to make “new T” simply do (and return) different things based on the kind of type T is. This turned out to be a bad idea for two main reasons:

    ·         It was the primary source of design problems: We realized that many of the problems were actually secondary problems stemming from one primary problem, namely that this design conflated two things that should be independent: a) the kind of type; and b) how it’s allocated.


    ·         It ran counter to Standard C++: Tying those two things together actually ran counter to today’s Standard C++, because Standard C++ already allows you to express different kinds of types (e.g., reference types having virtual functions, value types that are copyable, POD types which are bit-copyable) and makes it completely orthogonal where you can allocate them (e.g., any of them can be allocated on the stack, or as a directly embedded class member, or on the heap with new and managed with a raw pointer, or on the heap with make_shared and managed with a shared_ptr, and so forth). We felt it’s important to keep those things orthogonal.




    Tony Goodhew

    Microsoft Corp




  • User profile image


    This article is incredibly helpful.

    No wonder I have such a hard time coming to terms with this ^ thing. So does everyone else it seems.

    The article has two endings - perhaps prophetically - an unhappy one and a happy river one.

    Which one is right for you, you angry lot!? lol

    Is it:
    * Don't care for the component extensions?
    * Conclusion

    Could be time for a uservoice poll! Don't ask me to set it up. I've been around this loop! I'm not wasting anymore of my time! lol

    Good luck! I'm off to watch another episode of Family Guy!

  • User profile image


    Thanks Tony.

    Regarding Metro/WinRT policy, between your comments on Ramans Javascript blog and Herbs punt on policy here, I'd say that means that part remains itentionally under wraps still. Ok.

    Between Herbs comments on the technical side, and the article I found, I guess that means I have enough technical questions on /CX concluded for me now too.

    Thanks for asking asking Herb on that for me.

  • User profile image

    @Tony yes, definitely, let's shake hands and move on, that's the only way to go.



  • User profile image


    Thanks for the answers. That said, as you acknowledge, words are just that, words, they are not actions. The total fiasco that was the "C++ rennaisance" meme (which is bound to be remembered as an example of deceptive marketing talk for a long time, guaranteed) clearly shows that one should be vary of putting too much trust into words.

    So, with that:

    "We are currently investigating shipping the compiler and libraries at a faster cadence than VS - Is this going to happen? We don't know, we're just starting the work on it - Would this mean quicker delivery of additional language features? Yes - How much quicker? At this point we don't know."

    You want people to become "more constructive" (which really mostly means: stop flaming)? Fine, but do your part as well. Stop this elusive "we don't know" business. Commit to some features and dates. Hold whatever meetings you have to hold, make some decisions and relay them to us. Show us that you've got some skin in the game. If you aren't ready to do that, I am not ready to believe you are being serious with respect to C++11, not to mention listening to your customers. If you can't even so much as outline your current plans as regards what exact features of C++11 we are going to get and when (eg, Q1 2012), you don't care, plain and simple.

    You want people to stop flaming you? Make some commitments, in public.

    And if you really want to show that you care, make a personal commitment as well. Promise us you will come to vcblog, eg, a month from now, tell us what features you are planning to deliver and when, what is the current progress on each feature, then answer our comments. After all these years of us looking into your collective mouth only to be let down again and again and again ("yes, we hear you 'loud and clear' on bugs / performance / C++11 / whatever" with almost no results), you owe us this much, frankly.

  • User profile image

    Maybe an easier way is to license the C++11 compiler from GCC or IBM into the next Visual Studio, and build the metro stuffs around the licensed compiler in its un-modified form.
    MS will then have all the time they needed to build their own compiler and developers also will have a C++11 compliance compiler for their work.

  • User profile image

    > The 2 compilers you use are ours and gcc - There is a gap in conformance between the 2 - We're working to try and close that

    Are you? I still haven't found the time to watch this video, and I've made my dissatisfaction with VC11's C++11 feature list clear elsewhere, so I don't want to go into a big discussion here (and somehow, flaming people doesn't seem very constructive), but from where I'm standing, the gap is growing.

    When VC10 was released, there was a month or two when it was, more or less, on par with GCC in terms of C++11 support. You had lambdas before GCC did, and they had a few other things that VC10 didn't.
    GCC was probably an inch ahead even then, but it really wasn't a big deal.

    Now we know what C++11 features will be supporte by VC11 at launch, the gap has grown to be a mile wide. In the 2-3 years between the launch of VC10 and VC11, GCC has made huge strides in C++11 compliance. You've added strongly typed enums and fixed a bug in your lambda implementation.

    So if you intend to close the gap in the future, that's great, but it doesn't seem like what's happening today.

    On a brighter note, the combination of C++/CX and WRL makes a lot of sense (the language extensions definitely have their place, as long as you're still doing your best to cater to those who need to stick within ISO C++), and I wish you'd communicated this more clearly when you first announced WinRT. That would have avoided a big part of this shitstorm.

  • User profile image

    tgoodhew: From reading both your parts it's still unclear to me what problems you see with using C++ & WRL? I don't believe there is anything you can do with the component extensions that you can't do with WRL so I'm wondering why WRL isn't a suitable answer for you.

    I see two major problems with using WRL for WinRT programming:

    1) It's not easy to use at all. One has to write roughly 10x more code to do the same thing as C++/CX does. If you don't believe me look here: http://www.interact-sw.co.uk/iangblog/2011/09/25/native-winrt-inheritance. Things like emulated COM inheritance, COM static methods, HRESULTS and other stuff will start annoying you very quickly. Of course these things were never described in any videos here because people would laugh how complicated it is. But you *have to* deal with them if you want to approach WinRT through WRL. Even MFC here is more straightforward to use than WRL. What a shame!

    2) I expect all MS tools to generate C++/CX compatible code, not WRL. For example XAML designer - when you will want to create event handler I bet it will come with ^ parameter. But not using MS tools will make using WRL even harder. Ough!

    So despite to what MS says there is no clean alternative for C++ developer. WinRT in its current form is dead for me. But could it change? Yes it could. I see one relatively easy way how to make WinRT platform more attractive for C++ developers and I am surprised MS completely skipped this option. I am not COM expert but to consume WinRT components I am sure you can automatically generate C++ wrapper classes for your COM interfaces. All these COM dirty things like HRESULTS, interface inheritance and COM static methods would be hidden behind clean and easy to use C++ classes. Why we don't have this? I want somebody competent to comment on this.

  • User profile image

    I am not COM expert but to consume WinRT components I am sure you can automatically generate C++ wrapper classes for your COM interfaces. All these COM dirty things like HRESULTS, interface inheritance and COM static methods would be hidden behind clean and easy to use C++ classes. Why we don't have this? I want somebody competent to comment on this.

    The #import directive supported by MSVC compilers for well over a decade does exactly that for COM components. It generates a quite easy to use C++/COM binding for a COM component. It generates smart pointers for the interfaces (no more messing with AddRef/Release), throws exceptions on bad HRESULTs, makes accessing properties as easy as accessing member of a struct, and takes a way a lot of the pain of dealing with BSTRs and variants. It makes dealing with COM from a C++ programmer perspective quite natural and painless. I really wonder why Microsoft opted for creating yet another C++ dialect.


  • User profile image

    I've heard Herb Sutter say many times now of the veriadic template story. What irks me is he said "a senior developer", that's one person.
    Microsoft with it's C++ renascence hype committed one developer to the whole C++ core language development.

    How can Microsoft say they are a big supporter of C++ if they only commit one developer to all the C++ core language features ?
    Did they only commit one dev to WinRT, i think not.

    That's a dead give-away of lying. It's a big hint that Microsoft is in fact not a big supporter of C++ and prioritize microsoft owned lock-in products like WinRT *cough* Lite C++/CLI *cough* higher then the C++ language its self. A standard !  Scared

    1. Please explain in detail, after a few weeks of development in which by that time you should have realized that this feature will take very long to implement, why you did not commit more devs to the development of C++ ?
    2. You could have put those other devs to work on implementing other core features of C++11, why didn't you ?
    3. What made the core feature variatic template the stopper of all the other core features ? Many other the core features not implemented doesn't have anything to do with variatic template feature, i can't see any real reason for variatic template to be a feature stopper.

    ~09:00 "Post vs11"
    Of course we will assume 2 - 4 years after vs11 release because you do not release new compiler features in a service pack. You have said so many time. So we assume vs12 which in dev time is estimated to be around 2 to 4 years after vs11 have been released.

    Mr Sutter, are you saying you are have changed that policy ? Will you now release new compiler features in service packs for visual studio ?

  • User profile image


    I am with you. I thought about the topics you are bringing up for a long time now. Here's my take at what is going on:

    1. There is no 'C++ renaissance'. This is just a catchy phrase that some PM thought would be handy to throw around. No resources have been allocated and no actions undertaken to support the idea of this 'renaissance', it was the reverse - features that have already been half-written got marked with a flashy label.

    2. Nobody on the development team thought much of supporting C++11 completely. There was perhaps a general desire to do something in that area, but that was just another 'standard compliance' item in the bullet list - you work on this, of course, but not too hard, and never really strive for complete standard compliance until the entire world curses you for being slow. Remember IE? Same story here.

    3. There were several external initiatives that demanded attention. There was Windows 8 (resulting in C++/CX) and the pressure to support GPGPUs (resulting in C++ AMP). When you do things the Microsoft way, by writing language extensions - instead of writing a C++ library / COM import tool in case of C++/CX, and reusing OpenCL or CUDA in case of C++ AMP - both these things turn out to eat a lot of time. Somehow, the team overlooked the fact that neither of these features really add a lot of value for C++ developers (some value, yes, but not a lot of it, there's nothing really revolutionary here, nothing that you couldn't already do with existing technologies, with comparable difficulty), and convinced themselves that these two features are going to be enough for VS11.

    4. Last, and most important. Nobody is in charge of C++. There is no guy or gal on the Visual Studio team who thinks he should look out for the interests of C++ developers. Herb Sutter isn't in charge for sure, he either thinks it is OK to have exactly one developer working on the entire C++ core language development (watch the video) and one developer working on C++ libraries (look up what Stephan Lavavej said on vcblog), or he can't do anything about it. Same for Tony Goodhew and same for everyone else. Microsoft people do say that they care about the issues being raised, but they don't really do anything about them. Why? Simple, either they *don't* actually care, or they *do* care, but aren't in a position to do anything besides talking.

    My predictions: 6 months after VS11 we will get mostly working variadic templates. Guys from Channel 9 will shoot another video, perhaps with Herb Sutter, praising themselves for their hard work. This will be the end of it until VS12.

    In sum, those who'd like complete support for C++11 should look at other compilers. My team is already looking.

  • User profile image

    @PFYB do you remember that long time ago I've told you a story about manager, customers and MS attitude to C++ and what will happen w/r to C++ in next VS? Was I wrong in any of those points I mentioned?

  • User profile image

    @KMNY_a_ha: I remember. So far you appear to be right on point. :-(

  • User profile image

    XAML/C++/CX is great!!
    Will VC11 support WINPHONE7 or Windows Phone8 development?
    I don't want to use C# or VB, I hope I can use XAML/C++/CX to develop Windows Phone 7.5/8 application!!!

  • User profile image

    Who cares about VC11? VC11 is completely broken by design!

    see: https://connect.microsoft.com/VisualStudio/feedback/details/690617

    Until this BUG is fixed VC11 will be useless for most real world developers!

Add Your 2 Cents