We are happy to announce that Visual Studio 2013 is now available.
And now—in no particular order—here are the top reasons why C++ developers want Visual Studio 2013:
Better C++ language conformance. Support for C++11 began in Visual Studio 2010, which included auto and lambda functions. In Visual Studio 2012, we implemented more of the standard—for example, range-based for loops, standard threads, and futures. Visual Studio 2013 provides even more—variadic templates, delegating constructors, non-static data member initializers, uniform initialization, 'using' aliases, and other features. For more information, see the C++ Conformance Roadmap on Soma's blog, and learn about the Future of C++ from Herb Sutter.
Editor, editor, editor! We're introducing new editor features that boost productivity, save time, and provide better context. We added over 40 settings to help you control C/C++ code formatting. Brace completion automatically closes braces (and other characters that typically come in pairs). Parameter Help tooltips now automatically switch to the best matching overload, based on the number of parameters you've typed. The Enhanced Vertical Scrollbar provides visual cues about your file. You can use Peek Definition to view definitions in line instead of opening a new document tab. (To see it in action, put the cursor on a symbol and press Alt+F12.) Navigate To uses smart semantic search to help you find symbol definitions or files. For a list of editor and productivity improvements, see C++ IDE Improvements in Visual Studio 2013 and Visual Studio 2013 New Editor Features.
Better performance and improved code quality. We've improved the Visual C++ compiler so that it generates faster code, even from existing sources. We added an optimization that changes the order of certain, nested loops to reduce stalls on memory access. We also made the auto-vectorizer smarter by enabling the compiler to now vectorize a larger number of loops—including loops that perform pointer manipulation, which is a common pattern for libraries like STL (for example, transform). We're also introducing Profile Guided Optimization (PGO) for Windows Store apps, vector calling convention for x86/x64 platforms, and other improvements.
Connected Windows 8.1 apps. Use the new Add Push Notification wizard to register your app with the Windows Store, configure your mobile service to enable push notifications, and add code to your app to register a device channel (for example, see Connecting to Windows Azure Mobile Services on MSDN). Also included: The new C++ library for Azure mobile services and the C++ REST Extension SDK provide connectivity. (An open-source version of the C++ REST Extension SDK is available on CodePlex.) The DirectX Templates DirectX App and DirectX App (XAML) have also been improved and structured similarly, making it easier to transition from one model to another after creation. The new templates also take advantage of Windows 8.1 features.
Enhanced C++ AMP. C++ AMP is an open specification for harnessing the processing resources of modern graphics cards from C++ code. In Visual Studio 2013, C++ AMP gets better debugger and profiler support so that you can examine operations being performed on the GPU. We added a bunch of features to enhance support for textures and side-by-side CPU/GPU debugging (mixed-mode debugging is available on Windows 8.1 for the WARP accelerator). See What's New for C++ AMP in Visual Studio 2013.
Improved graphics debugging. In Visual Studio 2012, you could debug DirectX apps on your development machine or on a simulator. In Visual Studio 2013, we've added support for debugging apps on remote machines or devices (x86, x64, ARM) so that you can better identify hardware-specific issues. You can capture frames on a target device and then analyze the log file on your dev machine. Visual Studio 2013 also supports the debugging of apps that use Deferred Context or Compute Shader written in HLSL. Usability of the tools has also been improved, through better organization of more detailed information about DirectX objects—device state, shader, buffer.
Thanks! We couldn't have made these improvements without the overwhelming support of our customers and community, and the great feedback you provide through Connect, the forums, this blog, and other channels. Thanks also to our mighty MVPs, who never hold back their true feelings J
my_class(my_class&&) = default;
"= delete" works but "= default" doesn't. I'm testing with 12.0.21005.1 REL. Could we get an update of what's going on?
@Jesse: That's correct, I described this on Slide 19 of my Build talk channel9.msdn.com/.../2-306 -- move construction/assignment is the one use of =default that is not yet supported in VS2013 because it is part of a different feature, namely implicit generation of move functions. Since =default is asking for the version the compiler would implicitly generate, and we don't yet implicitly generate move functions, we don't allow =default for that case. Once we add implicit move generation, which is planned for the CTP coming this quarter, we will also enable =default for that case, and that should complete full conforming move semantics support.
Your comment has been flagged as spam! The blog administrator has been notified.
For the new strictStrings conformance setting ( msdn.microsoft.com/.../dn449508.aspx ):
1) I'm presuming that the standard C++ library will eventually work with it in debug builds.
2) Is the Platform SDK "team" going to try to work to ensure it compiles cleanly under strictStrings? I'm currently having issues with sapi53.h, wbemdisp.h, and msxml6.h (all COM headers). If not, is it feasible to temporarily change the setting with a pragma, like with the C4867 (bad pointer-to-member) error? (Probably not that exact mechanism, though, since it's a re-used error number).
Michael> I'm presuming that the standard C++ library will eventually work with it [/Zc:strictStrings] in debug builds.
Yes, I've already fixed that for the next major version. (The timing was unfortunate - I was the original submitter of the bug asking the compiler team to remove the conversion from string literal to modifiable char *, but months later when the switch was implemented, the libraries had already been locked down for release.) Same for /Gv (the new "use __vectorcall by default" switch).
> Is the Platform SDK "team" going to try to work to ensure it compiles cleanly under strictStrings?
Please file bugs against VS through MS Connect, with self-contained repros, and we'll send them over to the Windows team.
1) Thanks for fixing it and thanks for reporting it as a bug :)
2) Will do, once I find everything that's failing for me (and fix all our own issues). Lots of projects to check! Is one "big" bug better than a bunch of tiny ones? Is reporting Platform SDK bugs through Connect the right way? There's at least one (minor) issue I've let languish for apparently six years now because I didn't know where the right place to report it. It felt weird because it's not really a Visual Studio / .NET Framework thing...
boost 1.54 compiles fine for me with Visual Studio 2013, even with the XP targetting (blogs.msdn.com/.../10357555.aspx):
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
bjam toolset=msvc-12.0 --build-type=complete --with-thread --with-date_time --with-chrono
"Improved graphics debugging"
Where is the OpenGL and OpenCL support?!
Monopoly and anti-competitive tactics. Yet again like adding new features to and for .NET before global standards like C++.
EU have been notified again.
So, you added some c++ features and a lot of stupid bugs or what? Project settings dialog gets messed up quite easily.. bunch of compiler bugs that are reported way back and still not fixed and then some. Makes you wonder, how many hidden fatal bugs there are.
Having trouble using boost::split from boost-trunk.. bunch of errors.
Intellisense whines about "reinterpret_cast<void*>(nullptr);".. "Error: invalid type conversion" but it compiles just fine.
I installed Premium and Ultimate on two different machines.
I built a new simple Win32 application and if i try to display the properties page for a dialog (let's say IDD_ABOUTBOX) I can't see the control events - same for dialog messages.
Same problem with Premium and Ultimate on two different computers.
If I open the solution with VS 2012 then everything is OK.
Please add peek definition in express edition
Michael> Is one "big" bug better than a bunch of tiny ones?
For Platform SDK headers not compiling under /Zc:strictStrings, yes. If you encounter problems with other compiler options, those should be separate bugs.
> Is reporting Platform SDK bugs through Connect the right way?
Bob> Intellisense whines about "reinterpret_cast<void*>(nullptr);".. "Error: invalid type conversion" but it compiles just fine.
Intellisense (powered by the EDG compiler front-end) is correct, while the C1XX compiler front-end used for actual compilation is wrong. This code is forbidden by N3797 5.2.10 [expr.reinterpret.cast]/9: "Note: A null pointer constant of type std::nullptr_t cannot be converted to a pointer type".
I've filed this as DevDiv#810625 "reinterpret_cast<int *>(nullptr) should be rejected". You should use static_cast instead of reinterpret_cast.
Wow, thanks for "Go to definition" for auto specifier. Didn't even expected such a convenience from VS.
Big problem > Win32 Appliaction > Properties page for a dialog resource : can't see the control events - same for dialog messages.
I built a basic MFC application => curiously, no problem... at least MFC apps have been tested ;o)
I tried VC++ 2013 on a third machine (Windows 7) => same problem !!!
I decided to uninstall VS 2013 and not to use it until I'm sure this problem is solved !
I am still using RC, not sure if this has been fixed in RTM. The automatic code formatting is just so annoying.
I type this:
And I get this:
std::map < uint32_t, std::vector < uint32_t >> ::const_iterator