Skip to content

Commit b05ec04

Browse files
author
Michael Blome
committed
versioning updates in progress
1 parent 8bc7134 commit b05ec04

13 files changed

+35
-28
lines changed

docs/build/reference/debug-generate-debug-info.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The linker puts the debugging information into a program database (PDB) file. It
2525

2626
An executable (.exe file or DLL) created for debugging contains the name and path of the corresponding PDB. The debugger reads the embedded name and uses the PDB when you debug the program. The linker uses the base name of the program and the extension .pdb to name the program database, and embeds the path where it was created. To override this default, set [/PDB](../../build/reference/pdb-use-program-database.md) and specify a different file name.
2727

28-
The **/DEBUG:FASTLINK** option leaves private symbol information in the individual compilation products used to build the executable. It generates a limited PDB that indexes into the debug information in the object files and libraries used to build the executable instead of making a full copy. This option can link from two to four times as fast as full PDB generation, and is recommended when you are debugging locally and have the build products available. This limited PDB can't be used for debugging when the required build products are not available, such as when the executable is deployed on another computer. In a developer command prompt, you can use the mspdbcmf.exe tool to generate a full PDB from this limited PDB. In Visual Studio, use the Project or Build menu items for generating a full PDB file to create a full PDB for the project or solution.
28+
The **/DEBUG:FASTLINK** option is available in Visual Studio 2017 and later. This option leaves private symbol information in the individual compilation products used to build the executable. It generates a limited PDB that indexes into the debug information in the object files and libraries used to build the executable instead of making a full copy. This option can link from two to four times as fast as full PDB generation, and is recommended when you are debugging locally and have the build products available. This limited PDB can't be used for debugging when the required build products are not available, such as when the executable is deployed on another computer. In a developer command prompt, you can use the mspdbcmf.exe tool to generate a full PDB from this limited PDB. In Visual Studio, use the Project or Build menu items for generating a full PDB file to create a full PDB for the project or solution.
2929

3030
The **/DEBUG:FULL** option moves all private symbol information from individual compilation products (object files and libraries) into a single PDB, and can be the most time-consuming part of the link. However, the full PDB can be used to debug the executable when no other build products are available, such as when the executable is deployed.
3131

docs/build/reference/permissive-standards-conformance.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ Specify standards conformance mode to the compiler. Use this option to help you
2121
2222
## Remarks
2323

24-
You can use the **/permissive-** compiler option in Visual Studio 2017 and later to specify standards-conforming compiler behavior. This option disables permissive behaviors, and sets the [/Zc](../../build/reference/zc-conformance.md) compiler options for strict conformance. In the IDE, this option also makes the IntelliSense engine underline non-conforming code.
24+
This option is supported in Visual Studio 2017 and later.
25+
26+
You can use the **/permissive-** compiler option to specify standards-conforming compiler behavior. This option disables permissive behaviors, and sets the [/Zc](../../build/reference/zc-conformance.md) compiler options for strict conformance. In the IDE, this option also makes the IntelliSense engine underline non-conforming code.
2527

2628
By default, the **/permissive-** option is set in new projects created by Visual Studio 2017 version 15.5 and later versions. It is not set by default in earlier versions. When the option is set, the compiler generates diagnostic errors or warnings when non-standard language constructs are detected in your code, including some common bugs in pre-C++11 code.
2729

docs/build/reference/qspectre.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Specifies compiler generation of instructions to mitigate certain Spectre varian
2121
2222
## Remarks
2323

24-
The **/Qspectre** option causes the compiler to insert instructions to mitigate certain [Spectre security vulnerabilities](https://spectreattack.com/spectre.pdf). These vulnerabilities, called *speculative execution side-channel attacks*, affect many operating systems and modern processors, including processors from Intel, AMD, and ARM.
24+
The **/Qspectre** option is available in Visual Studio 2017 version 15.7 and later. It causes the compiler to insert instructions to mitigate certain [Spectre security vulnerabilities](https://spectreattack.com/spectre.pdf). These vulnerabilities, called *speculative execution side-channel attacks*, affect many operating systems and modern processors, including processors from Intel, AMD, and ARM.
2525

2626
The **/Qspectre** option is off by default.
2727

docs/build/reference/std-specify-language-standard-version.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Enable supported C++ language features from the specified version of the C++ lan
2020
2121
## Remarks
2222

23-
The **/std** option is used to control the version-specific ISO C++ programming language standard features enabled during compilation of your code. This option allows you to disable support for certain new language and library features that may break your existing code that conforms to a particular version of the language standard. By default, **/std:c++14** is specified, which disables language and standard library features found in later versions of the C++ language standard. Use **/std:c++17** to enable C++17 standard-specific features and behavior. To explicitly enable the latest supported compiler and standard library features, use **/std:c++latest**.
23+
The **/std** option is is available in Visual Studio 2017 and later. It is used to control the version-specific ISO C++ programming language standard features enabled during compilation of your code. This option allows you to disable support for certain new language and library features that may break your existing code that conforms to a particular version of the language standard. By default, **/std:c++14** is specified, which disables language and standard library features found in later versions of the C++ language standard. Use **/std:c++17** to enable C++17 standard-specific features and behavior. To explicitly enable the latest supported compiler and standard library features, use **/std:c++latest**.
2424

2525
The default **/std:c++14** option enables the set of C++14 features implemented by the Visual C++ compiler. This option disables compiler and standard library support for features that are changed or new in more recent versions of the language standard, with the exception of some C++17 features already implemented in previous releases of the Visual C++ compiler. To avoid breaking changes for users who have already taken dependencies on the features available as of Visual Studio 2015 Update 2, these features remain enabled when the **/std:c++14** option is specified:
2626

docs/cpp-conformance-improvements-2017.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "C++ conformance improvements | Microsoft Docs"
33
ms.custom: ""
4-
ms.date: "03/11/2018"
4+
ms.date: "06/01/2018"
55
ms.technology: ["cpp-language"]
66
ms.topic: "conceptual"
77
ms.assetid: 8801dbdb-ca0b-491f-9e33-01618bff5ae9
@@ -47,31 +47,31 @@ Range-based for loops no longer require that begin() and end() return objects of
4747

4848
### constexpr lambdas
4949

50-
Lambda expressions may now be used in constant expressions. For more information, see [Constexpr Lambda](http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4487.pdf).
50+
Lambda expressions may now be used in constant expressions. For more information, see [constexpr lambda expressions in C++](cpp/lambda-expressions-constexpr.md).
5151

5252
### if constexpr in function templates
5353

54-
A function template may contain `if constexpr` statements to enable compile-time branching. For more information, see [if constexpr](http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0128r1.html).
54+
A function template may contain `if constexpr` statements to enable compile-time branching. For more information, see [if constexpr statements](cpp/if-else-statement-cpp.md#if_constexpr).
5555

5656
### Selection statements with initializers
5757

58-
An `if` statement may include an initializer that introduces a variable at block scope within the statement itself. For more information, see [Selection statements with initializer](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0305r1.html).
58+
An `if` statement may include an initializer that introduces a variable at block scope within the statement itself. For more information, see [if statements with initializer](cpp/if-else-statement-cpp.md#if_with_init).
5959

6060
### [[maybe_unused]] and [[nodiscard]] attributes
6161

62-
New attributes to silence warnings when an entity is not used, or to create a warning if the return value of a function call is discarded. For more information, see [Wording for maybe_unused attribute](http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0212r0.pdf) and [Proposal of unused,nodiscard and fallthrough attributes](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0068r0.pdf).
62+
New attributes to silence warnings when an entity is not used, or to create a warning if the return value of a function call is discarded. For more information, see [Attributes in C++](cpp/attributes.md).
6363

6464
### Using attribute namespaces without repetition
6565

6666
New syntax to enable only a single namespace identifier in an attribute list. For more information, see [Attributes in C++](cpp/attributes.md).
6767

6868
### Structured bindings
6969

70-
It is now possible in a single declaration to store a value with individual names for its components, when the value is an array, a std::tuple or std::pair, or has all public non-static data members. For more information, see [Structured Bindings](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf).
70+
It is now possible in a single declaration to store a value with individual names for its components, when the value is an array, a std::tuple or std::pair, or has all public non-static data members. For more information, see [Structured Bindings](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf) and [Returning multiple values from a function](cpp/functions-cpp.md#multi_val).
7171

7272
### Construction rules for enum class values
7373

74-
There is now an implicit/non-narrowing conversion from a scoped enumeration's underlying type to the enumeration itself, when its definition introduces no enumerator and the source uses a list-initialization syntax. For more information, see [Construction Rules for enum class Values](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0138r2.pdf).
74+
There is now an implicit/non-narrowing conversion from a scoped enumeration's underlying type to the enumeration itself, when its definition introduces no enumerator and the source uses a list-initialization syntax. For more information, see [Construction Rules for enum class Values](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0138r2.pdf) and [Enumerations](cpp/enumerations-cpp.md#no_enumerators).
7575

7676
### Capturing *this by value
7777

@@ -205,6 +205,8 @@ struct B : A {
205205
B b(42L); // now calls B(int)
206206
```
207207

208+
For more information, see [Constructors](cpp/constructors-cpp.md#inheriting_constructors).
209+
208210
### C++17 Extended aggregate initialization
209211

210212
[P0017R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0017r1.html)

docs/cpp/attributes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
title: "C++ Standard Attributes | Microsoft Docs"
2+
title: "Attributes in C++ | Microsoft Docs"
33
ms.custom: ""
4-
ms.date: "03/28/2017"
4+
ms.date: "06/01/2018"
55
ms.topic: "language-reference"
66
ms.assetid: 748340d9-8abf-4940-b0a0-91b6156a3ff8
77
---

docs/cpp/constructors-cpp.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ The object created by the constructors is fully initialized as soon as any const
607607
608608
## <a name="inheriting_constructors"></a> Inheriting constructors (C++11)
609609
610-
A derived class can inherit the constructors from a direct base class by using a using declaration as shown in the following example:
610+
A derived class can inherit the constructors from a direct base class by using a **using** declaration as shown in the following example:
611611
612612
```cpp
613613
#include <iostream>
@@ -657,7 +657,7 @@ Derived d4 calls: Base()*/
657657
658658
```
659659

660-
The using statement brings into scope all constructors from the base class except those that have an identical signature to constructors in the derived class. In general, it is best to use inheriting constructors when the derived class declares no new data members or constructors.
660+
**Visual Studio 2017 version 15.7 and later**: The **using** statement in **/std:C++17** mode brings into scope all constructors from the base class except those that have an identical signature to constructors in the derived class. In general, it is best to use inheriting constructors when the derived class declares no new data members or constructors. See also [Improvements in Visual Studio 2017 version 15.7](../cpp-conformance-improvements-2017.md#improvements_157).
661661

662662
A class template can inherit all the constructors from a type argument if that type specifies a base class:
663663

docs/cpp/enumerations-cpp.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Enumerations (C++) | Microsoft Docs"
33
ms.custom: ""
4-
ms.date: "11/04/2016"
4+
ms.date: "06/01/2018"
55
ms.technology: ["cpp-language"]
66
ms.topic: "language-reference"
77
f1_keywords: ["enum_cpp"]
@@ -137,7 +137,8 @@ namespace ScopedEnumConversions
137137

138138
Notice that the line `hand = account_num;` still causes the error that occurs with unscoped enums, as shown earlier. It is allowed with an explicit cast. However, with scoped enums, the attempted conversion in the next statement, `account_num = Suit::Hearts;`, is no longer allowed without an explicit cast.
139139

140-
## Enums with no enumerators
140+
## <a name="no_enumerators"></a> Enums with no enumerators
141+
141142
**Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): By defining an enum (regular or scoped) with an explicit underlying type and no enumerators, you can in effect introduce a new integral type that has no implicit conversion to any other type. By using this type instead of its built-in underlying type, you can eliminate the potential for subtle errors caused by inadvertent implicit conversions.
142143

143144

docs/cpp/functions-cpp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ template<typename F, typename Tuple = tuple<T...>,
293293
}
294294
```
295295
296-
## Returning multiple values from a function
296+
## <a name="multi_val"></a> Returning multiple values from a function
297297
298298
There are various ways to return more than one value from a function:
299299

docs/cpp/if-else-statement-cpp.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ int main()
104104
}
105105
}
106106
```
107-
## if statement with an initializer
107+
## <a name="if_with_init></a> if statement with an initializer
108+
108109
**Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): An **if** statement may also contain an expression that declares and initializes a named variable. Use this form of the if-statement when the variable is only needed within the scope of the if-block.
109110

110111
```cpp
@@ -157,8 +158,8 @@ int main()
157158

158159
The **else** clause of an `if...else` statement is associated with the closest previous **if** statement in the same scope that does not have a corresponding **else** statement.
159160

160-
## constexpr if statements
161-
**Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): In function templates, you can use a **constexpr if** statement to make compile-time branching decisions without having to resort to multiple function overloads. For example, you can write a single function that handles parameter unpacking (no zero-parameter overload is needed):
161+
## <a name="if_constexpr"> if constexpr statements
162+
**Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): In function templates, you can use an **if constexpr** statement to make compile-time branching decisions without having to resort to multiple function overloads. For example, you can write a single function that handles parameter unpacking (no zero-parameter overload is needed):
162163

163164
```cpp
164165
template <class T, class... Rest>
@@ -168,7 +169,7 @@ void f(T&& t, Rest&&... r)
168169
do_something(t);
169170

170171
// handle r conditionally
171-
constexpr if (sizeof...(r))
172+
if constexpr (sizeof...(r))
172173
{
173174

174175
f(r...);

0 commit comments

Comments
 (0)