-
December 9th, 2008, 10:22 PM
#1
C++0x language feature checklist
Hi Microsoft!
I use vc9 every day and I love it. I'm looking forward to vc10 and I hope it will support many more C++0x features than the four announced so far.
I admit I haven't read the C++0x draft spec in detail, but this wikipedia article (http://en.wikipedia.org/wiki/C%2B%2B0x) has a decent summary of its new features.
Below is a list of C++0x language features culled from the aforementioned wikipedia summary as well as what I've heard so far as to their support in vc10. Would you folks care to let us know as to which of the other features might make it in for the release version of vc10?
vc10 C++0x LANGUAGE FEATURE
-----------------------------------------------------------------------
YES - Rvalue reference and move semantics
? - Generalized constant expressions
? - Modification to the definition of plain old data
? - Extern template
? - Initializer lists
? - Uniform initialization
YES - auto / Type determination
? - Range-based for-loop
YES - Lambda functions and expressions
? - Alternate function syntax
? - Concepts
? - Object construction improvement
? - nullptr
? - Strongly typed enumerations
? - Angle bracket fix
? - Explicit conversion operators
? - Template typedefs
? - Transparent garbage collection
? - Unrestricted unions
NO - Variadic templates
? - New string literals
? - User-defined literals
? - Multitasking memory model
? - Thread-local storage
? - Defaulting/deleting of standard functions on C++ objects
? - Type long long int
YES - Static assertions
? - sizeof on members without explicit object
Thanks!
-
December 10th, 2008, 12:07 PM
#2
Re: C++0x language feature checklist
And conversely, could you also please comment on which features will NOT be in the release version of vc10?
I understand that concepts is a NO, any others?
-
December 10th, 2008, 01:11 PM
#3
Re: C++0x language feature checklist
Here's my answer:
YES - Rvalue reference and move semantics
No - Generalized constant expressions
No - Modification to the definition of plain old data
YES- Extern template (note: we have supported this since at least Visual C++ 4.0)
No - Initializer lists
No - Uniform initialization
YES - auto / Type determination
No - Range-based for-loop (require concepts)
YES - Lambda functions and expressions
? - Alternate function syntax - what is this?
No - Concepts
No - Object construction improvement
No - nullptr
No - Strongly typed enumerations
YES - Angle bracket fix (this is in Visual C++ 2008)
No - Explicit conversion operators
No - Template typedefs
No - Transparent garbage collection
No - Unrestricted unions
No - Variadic templates
No - New string literals
No - User-defined literals
Probably - Multitasking memory model
YES - Thread-local storage (but still using the Microsoft extension)
No - Defaulting/deleting of standard functions on C++ objects
YES - Type long long int
YES - Static assertions
No - sizeof on members without explicit object
Jonathan Caves
Visual C++ Compiler Team
-
December 10th, 2008, 02:14 PM
#4
Re: C++0x language feature checklist
Thanks for the clarifications, very helpful!
re: Alternate function syntax, see:
http://en.wikipedia.org/wiki/C%2B%2B...unction_syntax
for explanation.
BTW, kudos to MS for adding C++0x features. IMHO you've made good choices of prioritizing based on spec stability and user needs.
-
December 10th, 2008, 03:30 PM
#5
Re: C++0x language feature checklist
Ah: this feature is officially known as "late specified return type" and it will be supported in Dev10. What I understand by "alternate function syntax" was a proposal to unify the syntax used for lambdas and functions into one form. Something like:
Code:
[] f(int) -> int
{
return 42;
}
This proposal was rejected at the last C++ Committe meeting though I suspect it might re-appear.
Jonathan Caves
Visual C++ Compiler Team
-
December 10th, 2008, 08:12 PM
#6
Re: C++0x language feature checklist
![Quote](images/misc/quote_icon.png) Originally Posted by joncaves
Here's my answer:
No - Initializer lists
No - Uniform initialization
No initializer lists or uniform initialization? Boo, those were my personal pet features I would've liked to see, I find the C++ initialization bugaboos they fix annoying. Oh well I've waited this long, what's a few more years....
-
December 10th, 2008, 09:24 PM
#7
Re: C++0x language feature checklist
I was looking forward to strongly typed enums and template typedefs and maybe unrestricted unions though cant remember the last time I used a union but thats maybe because as they are they are not particularly useful except for the alignment trick annotated in Modern C++ Design.
Get Microsoft Visual C++ Express here or CodeBlocks here.
Get STLFilt here to radically improve error messages when using the STL.
Get these two can't live without C++ libraries, BOOST here and Loki here.
Check your code with the Comeau Compiler and FlexeLint for standards compliance and some subtle errors.
Always use [code] code tags [/code] to make code legible and preserve indentation.
Do not ask for help writing destructive software such as viruses, gamehacks, keyloggers and the suchlike.
-
December 11th, 2008, 04:39 AM
#8
Re: C++0x language feature checklist
I’m surprised not to see strongly typed enums as I thought they were based on managed C++ enums.
Also, what is the timescale for a future release with the rest of C++0x?
-
December 11th, 2008, 11:19 AM
#9
Re: C++0x language feature checklist
Can we expect more c++0x goodies coming in service packs or will they be for bugfixes alone and have to wait for msvc11 for more c++0x goodies?
Get Microsoft Visual C++ Express here or CodeBlocks here.
Get STLFilt here to radically improve error messages when using the STL.
Get these two can't live without C++ libraries, BOOST here and Loki here.
Check your code with the Comeau Compiler and FlexeLint for standards compliance and some subtle errors.
Always use [code] code tags [/code] to make code legible and preserve indentation.
Do not ask for help writing destructive software such as viruses, gamehacks, keyloggers and the suchlike.
-
December 11th, 2008, 08:55 PM
#10
Re: C++0x language feature checklist
Hello
I would not “expect” C++0x goodies to arrive in Service Packs (I know TR1 did arrive in a Service Pack - so it can happen - but I would not want this to be any type of expectation.)
Thanks
Damien
Last edited by Damien Watkins; December 12th, 2008 at 02:14 PM.
-
December 12th, 2008, 01:09 AM
#11
Re: C++0x language feature checklist
I'd like to know what kind of C++0x support you're aiming for in the long term. Browsing through the minutes of the C++ committee meetings, it looks like Microsoft has attempted to veto a handful of proposals, with varying success. In particular, it looks like MS refused to ever implement the new attributes, even though they were accepted into the standard in the end. Is that decision final? We're never going to see a compliant implementation of C++0x from you?
As for your prioritization for VC10, I think you've made some sensible choices. Shame so many features had to be left out, but given that you're targeting essentially the same launch window as the new standard itself, I can't blame you.
-
December 12th, 2008, 11:02 AM
#12
Re: C++0x language feature checklist
@jalf, could you please post some links to the "new attributes" discussion you mention? I'd like to read up on this.
-
December 12th, 2008, 11:55 AM
#13
Re: C++0x language feature checklist
Sorry to say this, but how can you say no to template typedefs?
Do i really need to make wrapper classes to do this simple typedef thing?
Another thing is when all template parameters are default you must type <> after the typename.
Its annoying..
-
December 12th, 2008, 01:48 PM
#14
Re: C++0x language feature checklist
Some comments on the previous posts - mostly in reverse order
template typedefs - while this is relatively simple to implement we felt that it just didn't provide as much value as the features we did choose implement: and as you state there is a simple work-around.
Not requiring the "<>" when all the template parameters are defaulted - this is not possible in C++ (even in C++-0x). You must let the compiler know that this is a specialization of a class template otherwise parsing will fail.
I still think that the proposal to add attributes to C++ is misguided and over simplistic: also Visual C++ users already have 3 ways to add meta-information to a program (declspec, pragma, attributes) - they don't need a fourth way. I am not saying we'll never support this feature - but it will always be somewhere near the bottom of the stack.
We will add more C++-0x features in the future - but what and when is currently unknown: it all depends on user feedback.
Jonathan Caves
Visual C++ Compiler Team
-
December 12th, 2008, 02:02 PM
#15
Re: C++0x language feature checklist
Regarding "new attributes", I believe @jalf is referring to these meeting minutes:
http://www.open-std.org/jtc1/sc22/wg...008/n2784.html
which reference this proposal:
http://www.open-std.org/jtc1/sc22/wg...2008/n2761.pdf
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|