Microsoft’s Herb Sutter spoke at Microsoft Build in San Francisco on the future of C++.
Microsoft has been criticised for being slow to implement all the features of ISO C++ 11. Sutter says most features are now included in the public preview of Visual Studio 2013 – which has a “Go Live” license so you can use it in production – including the oft-requested variadic templates. The full list:
- Explicit conversion operators
- Raw string literals
- Function template default arguments
- Delegating constructors
- Uniform int and initializer_lists
- Variadic templates
More features are coming in the RTM (final release) of Visual Studio 2013 later this year:
- Non-static member initializers
- ‘using’ aliases
A technical preview will then follow and Sutter listed possible features of which there will be a subset. Full conformance will follow at an unspecified time.
Microsoft is also promising a full implementation of C++ 14, the next update to the standard, even though the exact specification is not yet fully agreed. Some C++ 14 features will be implemented ahead of C++ 11 features, if they are considered to add high value.
Two other points of interest.
Async/await (familiar to C# developers) will be implemented in the post-RTM CTP because it is such a useful feature for Windows Runtime app developers, even though it is not part of the ISO standard.
Finally, Microsoft will also several C99 features in the RTM of Visual Studio 2013:
- Variable decls
- compound literals
- designated initializers
The reason for implementing these is that they are needed to compile popular open source libraries like FFmpeg.
I asked Sutter why Microsoft is not planning full conformance to C99. He said it was a matter of priorities and that work on C++ 11 and C++ 14 was more important. If there are particular additional features of C99 developers would like to see implemented, contacting Sutter with requests and rationale might eventually yield results.