Skip to content

Commit 41636b6

Browse files
author
mikeblome
committed
fixed links
1 parent dcf20b7 commit 41636b6

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

docs/overview/cpp-conformance-improvements.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ The non-standard headers \<stdexcpt.h> and \<typeinfo.h> have been removed. Code
459459
460460
### Better enforcement of two-phase name lookup for qualified-ids in /permissive-
461461
462-
Two-phase name lookup requires that non-dependent names used in template bodies must be visible to the template at definition time. Previously, such names may have been found when the template is instantiated. This change makes it easier to write portable, conformant code in MSVC under the [/permissive-](../build/permissive-standards-conformance.md) flag.
462+
Two-phase name lookup requires that non-dependent names used in template bodies must be visible to the template at definition time. Previously, such names may have been found when the template is instantiated. This change makes it easier to write portable, conformant code in MSVC under the [/permissive-](../build/reference/permissive-standards-conformance.md) flag.
463463
464464
In Visual Studio 2019 version 16.4, with the **/permissive-** flag set, the following example produces an error because `N::f` is not visible when the `f<T>` template is defined:
465465
@@ -515,7 +515,7 @@ int* f(bool* p) {
515515
516516
### Standard rules for types of integer literals
517517
518-
In conformance mode (enabled by [/permissive-](../build/permissive-standards-conformance.md)), MSVC uses the standard rules for types of integer literals. Previously, decimal literals too large to fit in a signed 'int' were given type 'unsigned int'. Now such literals are given the next largest signed integer type, 'long long'. Additionally, literals with the 'll' suffix which are too large to fit in a signed type are given type 'unsigned long long'.
518+
In conformance mode (enabled by [/permissive-](../build/reference/permissive-standards-conformance.md)), MSVC uses the standard rules for types of integer literals. Previously, decimal literals too large to fit in a signed 'int' were given type 'unsigned int'. Now such literals are given the next largest signed integer type, 'long long'. Additionally, literals with the 'll' suffix which are too large to fit in a signed type are given type 'unsigned long long'.
519519
520520
This can lead to different warning diagnostics being generated, and behavior differences for arithmetic operations performed on literals.
521521
@@ -567,7 +567,7 @@ void f(T (&buffer)[Size], int& size_read)
567567
568568
### User-provided specializations of type traits
569569
570-
In compliance with the [meta.rqmts]() subclause of the Standard, the MSVC compiler now raises an error when it encounters a user-defined specialization of one of the specified type_traits templates in the `std` namespace. Unless otherwise specified, such specializations result in undefined behavior. The following example has undefined behavior because it violates the rule, and the `static_assert` fails with error **C2338**.
570+
In compliance with the *meta.rqmts* subclause of the Standard, the MSVC compiler now raises an error when it encounters a user-defined specialization of one of the specified type_traits templates in the `std` namespace. Unless otherwise specified, such specializations result in undefined behavior. The following example has undefined behavior because it violates the rule, and the `static_assert` fails with error **C2338**.
571571
572572
```cpp
573573
#include <type_traits>
@@ -597,7 +597,7 @@ static_assert(my_is_fundamental<S>::value, "fail");
597597
598598
### Expressions with operator==
599599
600-
In compliance with [over.match]/9 the compiler will no longer rewrite expressions with `operator==` if they involve a return type that is not a **bool**. The following code now produces *error C2088: '!=': illegal for struct*:
600+
In compliance with *over.match/9* the compiler will no longer rewrite expressions with `operator==` if they involve a return type that is not a **bool**. The following code now produces *error C2088: '!=': illegal for struct*:
601601
602602
```cpp
603603
struct U {
@@ -632,7 +632,7 @@ bool neq(const S& lhs, const S& rhs) {
632632
633633
### Defaulted comparison operator in union-like classes
634634
635-
In compliance with [class.compare.default]/2 the compiler will no longer define a defaulted comparison operator if it is a member of a union-like class. The following example now produces *C2120: 'void' illegal with all types*:
635+
In compliance with *class.compare.default/2* the compiler will no longer define a defaulted comparison operator if it is a member of a union-like class. The following example now produces *C2120: 'void' illegal with all types*:
636636
637637
```cpp
638638
#include <compare>
@@ -666,7 +666,7 @@ bool lt(const S& lhs, const S& rhs) {
666666
667667
### Defaulted comparison operator for classes with a reference member
668668
669-
In compliance with [class.compare.default]/2 the compiler will no longer define a defaulted comparison operator if the class contains a reference member. The following code now produces *error C2120: 'void' illegal with all types*:
669+
In compliance with *class.compare.default/2* the compiler will no longer define a defaulted comparison operator if the class contains a reference member. The following code now produces *error C2120: 'void' illegal with all types*:
670670
671671
```cpp
672672
#include <compare>

0 commit comments

Comments
 (0)