this document introduces the new and enhanced functions in Visual C++ in Visual Studio 213.
for information about other additional content in Visual Studio 213, please see what's new in Visual Studio 213.
the improved ISO C/C++ standard supports
the compiler
supports the following ISO C++11 language functions:
default template parameters of function templates.
delegate constructor
explicitly converts operators.
list of initializers and unified initialization.
original string text.
variable parameter template.
alias template.
deleted function.
non-static data member initializer (NSDMI).
the default function. *
supports the following ISO C99 language functions:
_Bool
compound text.
the specified initializer.
combine declarations with codes.
the conversion of string text to modifiable values can be disabled by using the new compiler option /Zc:strictStrings. In C++98, conversion from string text to char * (and conversion from wide string text to wchar_t *) has been deprecated. In C++11, the transformation has been completely removed. Although the compiler can strictly follow this standard, it provides the /Zc:strictStrings option so that you can control the conversion. By default, this option is off. Note that STL will not compile when you use this option in debug mode.
rvalue/lvalue reference conversion. Through the reference of rvalue, C++11 can clearly distinguish between lvalue and rvalue. In the past, the Visual C++ compiler did not provide this function in certain cast scenarios. A new compiler option (/Zc:rvalueCast) has been added to make the compiler conform to the working file of C++ language (see section 5.4, [expr.cast]/1).
when no option is specified, the default behavior is the same as in Visual Studio 212.
Description
* By default, it is not supported to use =default to request members to move constructors and move assignment operators one by one.
C99 library
added declarations and implementations for functions that are missing in the following headers: math.h, ctype.h, wctype.h, stdio.h, stdlib.h and wchar.h Also added are the new headers complex.h, stdbool.h, fenv.h and inttypes.h, and the realization of all the functions declared in these new headers. There are also new C++ wrapper headers (ccomplex, cfenv, cinttypes, ctgmath), and many other contents have been updated (ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar and cwctype). For more information, see C99 library support in Visual Studio 213.
the standard template library
supports C++11 explicit conversion operators, initializer lists, range enumerations and variadic templates.
now all containers support the element requirements of C++11 refinement.
these C++14 functions are supported:
transparent operator functor less <; > 、greater< > 、plus< > 、multiplies< > Wait.
make_unique< T> (args ...) and make _ unique < T[]> (n)
cbegin()/cend (), rbegin()/rend () and crbegin()/crend () non-member functions.
< atomic> Receive multiple performance enhancements.
< type_traits> Receive major stability and code fixes.
significant changes
improved support for the ISO C/C++ standard may require changes to the existing code to conform to C++11 and compile correctly in Visual C++ in Visual Studio 213. For more information, see Major Changes in Visual C++.
for details about the new C++11/14 language and STL functions, please refer to C++11 functions (modern C++) and C++11/14 STL functions, fixes and major changes in Visual Studio 213
Visual C++ library enhancements
C++ REST SDK has been added. It has a modern C++ implementation of REST service. For more information, see C++ REST SDK.
C++ AMP texture support has been improved. Now includes support for mipmap and new sampling mode.
PPL tasks support multiple planning techniques and asynchronous debugging. With the new API, you can create PPL tasks for general results and abnormal conditions.
C++ application performance
automatic vectorization can now identify and optimize more C++ patterns and speed up your code.
code quality enhancement functions of p>ARM platform and Atom micro-architecture.
__vectorcall calling convention has been added. Use __vectorcall calling convention to pass vector type parameters, thus using vector registers.
new linker options. Use the /Gw (compiler) and /Gy (assembly) switches to optimize the linker to generate compact binary files.
C++ AMP *** enjoys memory support, which can reduce or eliminate data duplication between CPU and GPU.
optimization by configuration option (PGO) enhancement:
by using PGO, the working set of optimized applications can be reduced, thus improving performance.
a new PGO for Windows store application development.
application development support in the p>Windows Store
supports the packing type in the value structure. You can now use fields that can be empty (for example, with ibox <: int> Relative int) to define the value type. This means that the field can have a value or be equal to nullptr.
richer exception information. C++/CX supports a new Windows error model that can acquire and disseminate all kinds of abnormal information in the whole application binary interface (ABI). This includes call stacks and custom message strings.
Object::ToString () is now virtual. You can now override ToString in a user-defined Windows runtime reference type.
supports deprecated APIs. The public *** Windows runtime API can now be marked as deprecated and a custom message can be received, which is displayed to generate a warning and provide a migration guide.
debugger improvement. Support native /JavaScript interoperability debugging, windows runtime exception diagnosis and asynchronous code debugging (Windows runtime and PPL).
Description
In addition to the C++ specific features and enhancements described in this section, other enhancements in Visual Studio can also help you write better Windows App Store applications. For more information about these features, see the Windows 8.1 feature guide. For more information about new application templates, see C#, VB and C++ project templates for Windows Store applications. For a list of new platform features, see Windows 8.1 Preview: New APIs and Features.
diagnostic enhancements
debugger improvements. Support asynchronous debugging and "just my code" debugging.
code analysis category. Now you can look at the classified output of the code analyzer to help you find and fix code defects.