Visual C++ 2015运行库包括C运行时库(CRT),标准C + +和MFC,C + +,和OpenMP。开发的Visual C++应用程序使用动态链接到Visual Studio 2015和Visual C + +库。具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。
Visual C++
在该版本中,更新了 C++ 编译器和标准库,使其对 C++11 的支持得到增强并开始支持某些 C++14 功能。 还包括初步支持 C++17 标准版中预期的某些功能。
此外,该版本修复了 500 多个编译器 Bug,包括客户通过 Microsoft Connect 提交的许多 Bug,非常感谢!
语言功能
我们增加了以下新功能,以使编译器更靠近标准 C++:
可恢复函数 (resume/await)关键字 resume 和 await 为异步编程提供语言级的支持,并启用可恢复函数。 目前,此功能仅适用于 x64 目标。 对于 C+ +17 的建议 [N3858]
泛型(多态)Lambda 表达式现在 Lambda 函数参数类型可指定使用 auto;在此上下文中编译器将 auto 解释为此闭包的函数调用运算符是成员函数模板,在 Lambda 表达式中对 auto 的每次使用都对应着截然不同的模板类型参数。 C++14
通用的 Lambda 捕获表达式也称为初始化捕获。 现在,任意表达式的结果可分配给 Lambda 捕获子句中的变量。 这将使 move-only 类型被值捕获,并使 Lambda 表达式在其闭包对象中定义任意数据成员。 C++14
二进制文本现在支持二进制文本。 这些文本将以 0B 或 0b 作为前缀,且仅由数字 0 和 1 组成。 C++14
返回类型推断现在,可推断普通函数的返回类型,包括带有多条返回语句的函数以及递归函数。 这些函数定义前面可以添加 auto 关键字,和带有结尾返回类型的函数定义一样,只是省略了结尾返回类型。 C++14
decltype(auto) 使用 auto 关键字初始化表达式的类型推断将从表达式中去除 ref 限定符和顶层 cv 限定符。 decltype(auto) 将保留 ref 和 cv 限定符,且现在可在可以使用 auto 的任意位置使用,除非引入推断或结尾返回类型的函数。 C++14
隐式生成 Move 特殊成员函数现在,当条件允许时,将隐式生成 Move 构造函数和 Move 赋值运算符,从而使编译器与 C++11 rvalue 引用完全一致。 C+ +11
继承构造函数现在,派生的类可以通过在其定义中包含使用 Base::Base; 的语句来指定它将继承其基类 Base 的构造函数。 派生类只能继承其基类的所有构造函数,无法只继承特定的基础构造函数。 派生类无法从多个具有相同签名的构造函数的基类进行继承,也无法定义与其任何继承构造函数签名相同的构造函数。 C++11
对齐方式查询和控制变量的对齐方式可通过使用 alignof() 运算符进行查询,并使用 alignas() 说明符进行控制。 alignof() 返回必须分配类型实例的字节边界;对于引用,它返回引用类型的对齐方式;对于数组,它返回元素类型的对齐方式。 alignas() 控制变量的对齐方式;它使用常量或类型,其中类型是 alignas(alignof(type)) 的简写形式。 C++11
扩展的 sizeof 现在,通过使用 sizeof(),无需类或结构的实例,即可确定类或结构成员变量的大小。 C++11
constexpr 部分支持 C++11 constexpr。 C++11(部分支持)
用户定义的文本 (UDL) 现在,有意义的后缀可以附加到数字和字符串文本,以便赋予它们特定的语义。 编译器将后缀文本解释为调用相应的 UDL 运算符。 C++11
线程安全"神奇"静态现在可用线程安全的方式来初始化静态局部变量,而不必进行手动同步。 只有初始化是线程安全的,多线程使用静态局部变量仍必须手动同步。 通过使用 /Zc:threadSafeInit- 标记来避免依赖于 CRT,可以禁用线程安全静态功能。 C++11
线程本地存储使用 thread_local 关键字声明应为每个线程创建独立对象。 C++11
noexcept 现在,可以使用 noexcept 运算符来检查表达式是否可能引发异常。 现在,可以使用 noexcept 说明符来指定函数未引发异常。 C++11
内联命名空间现在可以将命名空间指定为内联式,以将其内容提升至封闭命名空间。 内联命名空间可用于创建带有版本的库,这些库默认提供其最新版本,同时仍显式提供 API 的较低版本。 C++11
无限制联合现在联合类型可包含使用重要的构造函数的类型。 必须定义这些联合的构造函数。 C++11
新字符类型和 Unicode 文本现在支持 UTF-8、UTF-16 和 UTF-32 格式的字符和字符串文本,并引入了新的字符类型 char16_t 和 char32_t。 字符文本可使用 u8 (UTF-8)、u (UTF-16) 或 U (UTF-32) 作为前缀(如 U'a'),而字符串文本还可使用原始字符串等效项 u8R (UTF-8 raw-string)、uR (UTF-16 raw-string) 或 UR (UTF-32 raw-string) 作为前缀。 通用字符名称可在 Unicode 文本(如 u'\u00EF'、u8"\u00EF is i" 和 u"\U000000ef is I")中自由使用。 C++11
__func__ 预定义的标识符 __func__ 显式定义为包含封闭函数的非限定和无修饰名称的字符串。 C++11
__restrict 现在 __restrict 可应用于引用。
类型名称关键字。 用户现在可以在模板参数中编写 typename 而不是 class 。C++14
全局 void operator delete(void *, std::size_t) noexcept 和 void operator delete[](void *, std::size_t) noexcept 现在可进行重载。 C++14
数字分隔符 现在,您可以使用单引号分隔数值文件,以使其更易于阅读。 例如, int x = 1’000’000;。 C++14
文字中的通用字符名 现在,您可以编写基本的字符,如"A"和换行字符,作为文字中的代码点。 例如, const char *s = "\u0041\u000A";。 C++11
Visual C++ 库功能
标准库类型的用户定义文本 (UDL) 为了方便起见,<chrono>, <string>和<complex> 标头现在提供 UDL 运算符。 例如,123ms 表示 std::chrono::milliseconds(123),"hello"s 表示 std::string("hello"),且 3.14i 表示 std::complex(0.0, 3.14)。
Null 前向迭代器现在标准库允许创建不引用容器实例的前向迭代器。 这些迭代器都进行了值初始化,且对于特定容器类型来说相等。 未定义值已初始化的迭代器与值未初始化的迭代器之间的比较。 C++14
quoted() 现在标准库支持 quoted() 函数以大大简化引用字符串值和 I/O 的使用。 通过 quoted() 将整个引用字符串看作是单个实体(如 I/O 流中的非空格字符字符串);此外,还将通过 I/O 操作保留转义序列。 C++14
异类关联查找现在标准库支持关联容器的异类查找函数。 只要类型相当于 key_type,此类函数就能按照类型而不是 key_type 进行查找。 C++14
编译时整数序列现在标准库支持表示整数值序列的 integer_sequence 类型,该序列可在编译时进行评估,以便使参数包的使用更为轻松,并简化某些模板编程模式。 C++14
exchange() 现在标准库支持 std::exchange() 实用工具函数将新值分配到对象并返回其旧值。 对于复杂类型,如果 Move 构造函数可用,则 exchange() 不必复制旧值,如果 Move 构造函数为临时或已移动,则 exchange() 不必复制新值,且将利用转换赋值运算符接受任何类型作为新值。 C++14
双范围 equal(), is_permutation(), mismatch() 现在标准库支持接受两个范围的 std::equal()、std::is_permutation() 和 std::mismatch() 的重载。 这些重载将检查两个序列是否具有相同长度,从而不再需要调用代码;对于不支持随机迭代器要求的序列,这些重载将在比较元素的同时检查长度,这种方式更为有效。 C++14
get<T>() 标准库现在支持 get<T>() 模板函数以允许元组元素按其类型进行寻址。 如果元组中包含属于同一类型 get<T>() 的两个或多个元素,则该元组将无法按该类型进行寻址,但其他唯一类型的元素仍可进行寻址。 C++14
tuple_element_t 标准库现在支持 tuple_element_t<I, T> 类型别名,这一别名是类型名称 tuple_element<I, T>::type 的别名。 这为模板程序员提供了一些便利,类似于<type_traits>. C++14
文件系统"V3"技术规范所包含的文件系统技术规范的实施已更新至规范版本 3。 [N3940]
最小的分配器现在标准库在整个库中支持最小分配器接口;重要修复包括 std::function、shared_ptr、allocate_shared() 和 basic_string。 C++11
<chrono> 已修复 chrono 类型 high_resolution_clock 和 steady_clock。 C++11
Visual c++ 2015软件功能特点
Visual C++2015建立在早期版本引入的惊人进步,提供了成熟的、支持大多数C++11特性以及C++ 2015子集的编译器。你或许会怀疑编译器支持的完整程度,公正地说,我认为他能支持大部分重要的语言特性,支持现代C++将会迎来windows 程序库开发一片新的天地。这才是关键。只要编译器支持一个高效优雅的库的开发环境,开发者就能构建伟大的app和组件。
Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。
它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著.