diff --git a/docs/assembler/masm/operator-bitwise-and.md b/docs/assembler/masm/operator-bitwise-and.md index 96562fa6a23..7b72004c778 100644 --- a/docs/assembler/masm/operator-bitwise-and.md +++ b/docs/assembler/masm/operator-bitwise-and.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: operator &" -title: "operator &" +description: "Learn more about: operator &" +title: "operator &" ms.date: "12/17/2019" f1_keywords: ["&", "operator &"] helpviewer_keywords: ["& operator, syntax", "AND operator", "& operator"] ms.assetid: f3c51a54-48ba-4b99-afed-5c45177bf694 --- -# operator & +# operator `&` Bitwise **AND**. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time. diff --git a/docs/assembler/masm/operator-logical-and-masm-run-time.md b/docs/assembler/masm/operator-logical-and-masm-run-time.md index 03dbeb11b79..9e196ac1917 100644 --- a/docs/assembler/masm/operator-logical-and-masm-run-time.md +++ b/docs/assembler/masm/operator-logical-and-masm-run-time.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: operator && (MASM Run Time)" -title: "operator && (MASM Run Time)" +description: "Learn more about: operator && (MASM Run Time)" +title: "operator && (MASM Run Time)" ms.date: "12/17/2019" f1_keywords: ["operator &&"] helpviewer_keywords: ["operator &&", "&& operator"] ms.assetid: 0a633a40-114c-48f5-88ff-09bc8d9b281a --- -# operator && (MASM Run Time) +# operator `&&` (MASM Run Time) Logical **AND**. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time. diff --git a/docs/atl/reference/cadapt-class.md b/docs/atl/reference/cadapt-class.md index ee866491380..2f29ae8e5f3 100644 --- a/docs/atl/reference/cadapt-class.md +++ b/docs/atl/reference/cadapt-class.md @@ -92,7 +92,7 @@ T m_T; This **`public`** data member can be accessed directly or indirectly with [operator const T&](#operator_const_t_amp) and [operator T&](#operator_t_amp). -## CAdapt::operator const T& +## CAdapt::operator const T& Returns a **`const`** reference to the [m_T](#m_t) member, allowing the adapter object to be treated as if it were an object of type *T*. @@ -104,7 +104,7 @@ operator const T&() const; A **`const`** reference to `m_T`. -## CAdapt::operator T& +## CAdapt::operator T& Returns a reference to the [m_T](#m_t) member, allowing the adapter object to be treated as if it were an object of type *T*. diff --git a/docs/atl/reference/ccomptrbase-class.md b/docs/atl/reference/ccomptrbase-class.md index 3ba4288403b..020318db19d 100644 --- a/docs/atl/reference/ccomptrbase-class.md +++ b/docs/atl/reference/ccomptrbase-class.md @@ -237,7 +237,7 @@ bool operator!() const throw(); Returns true if the `CComHeapPtr` pointer is equal to NULL, false otherwise. -## CComPtrBase::operator & +## CComPtrBase::operator & The & operator. diff --git a/docs/atl/reference/cheapptrbase-class.md b/docs/atl/reference/cheapptrbase-class.md index 5a99acaea54..41114bb8281 100644 --- a/docs/atl/reference/cheapptrbase-class.md +++ b/docs/atl/reference/cheapptrbase-class.md @@ -160,7 +160,7 @@ T* m_pData; This member variable holds the pointer information. -## CHeapPtrBase::operator & +## CHeapPtrBase::operator & The & operator. diff --git a/docs/atl/reference/cpatht-class.md b/docs/atl/reference/cpatht-class.md index 902d18e0afb..7710ee37f62 100644 --- a/docs/atl/reference/cpatht-class.md +++ b/docs/atl/reference/cpatht-class.md @@ -598,7 +598,7 @@ The string to append. Returns the updated path. -## CPathT::operator const StringType & +## CPathT::operator const StringType & This operator allows the object to be treated like a string. @@ -622,7 +622,7 @@ operator PCXSTR() const throw(); Returns a string representing the current path managed by this object. -## CPathT::operator StringType & +## CPathT::operator StringType & This operator allows the object to be treated like a string. diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 462eaf975a5..487054ae52c 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -50,6 +50,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/Fo`](fo-object-file-name.md) | Creates an object file. | | [`/fp`](fp-specify-floating-point-behavior.md) | Specify floating-point behavior. | | [`/Fp`](fp-name-dot-pch-file.md) | Specifies a precompiled header file name. | +| [`/fpcvt`](fpcvt.md) | Specify floating-point to unsigned integer conversion behavior. | | [`/FR`](fr-fr-create-dot-sbr-file.md)

[`/Fr`](fr-fr-create-dot-sbr-file.md) | Generates browser files. **`/Fr`** is deprecated. | | [`/FS`](fs-force-synchronous-pdb-writes.md) | Forces serialization of all writes to the program database (PDB) file through MSPDBSRV.EXE. | | [`/fsanitize`](fsanitize.md) | Enables compilation of sanitizer instrumentation such as AddressSanitizer. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 8ff74ddebca..6ed523785e8 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -33,6 +33,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/clr`](clr-common-language-runtime-compilation.md) | Produces an output file to run on the common language runtime. | | [`/EH`](eh-exception-handling-model.md) | Specifies the model of exception handling. | | [`/fp`](fp-specify-floating-point-behavior.md) | Specifies floating-point behavior. | +| [`/fpcvt`](fpcvt.md) | Specify floating-point to unsigned integer conversion behavior. | | [`/GA`](ga-optimize-for-windows-application.md) | Optimizes for Windows applications. | | [`/Gd`](gd-gr-gv-gz-calling-convention.md) | Uses the **`__cdecl`** calling convention. (x86 only) | | [`/Ge`](ge-enable-stack-probes.md) | Deprecated. Activates stack probes. | diff --git a/docs/build/reference/fp-specify-floating-point-behavior.md b/docs/build/reference/fp-specify-floating-point-behavior.md index 88998e35cd1..47f650de280 100644 --- a/docs/build/reference/fp-specify-floating-point-behavior.md +++ b/docs/build/reference/fp-specify-floating-point-behavior.md @@ -6,13 +6,13 @@ f1_keywords: ["VC.Project.VCCLCompilerTool.floatingPointModel", "VC.Project.VCCL helpviewer_keywords: ["-fp compiler option [C++]", "/fp compiler option [C++]"] ms.assetid: 10469d6b-e68b-4268-8075-d073f4f5d57e --- -# /fp (Specify floating-point behavior) +# `/fp` (Specify floating-point behavior) -Specifies how the compiler treats floating-point expressions, optimizations, and exceptions. The **/fp** options specify whether the generated code allows floating-point environment changes to the rounding mode, exception masks, and subnormal behavior, and whether floating-point status checks return current, accurate results. It controls whether the compiler generates code that maintains source operation and expression ordering and conforms to the standard for NaN propagation, or if it instead generates more efficient code that may reorder or combine operations and use simplifying algebraic transformations that aren't allowed by the standard. +Specifies how the compiler treats floating-point expressions, optimizations, and exceptions. The **`/fp`** options specify whether the generated code allows floating-point environment changes to the rounding mode, exception masks, and subnormal behavior, and whether floating-point status checks return current, accurate results. It controls whether the compiler generates code that maintains source operation and expression order, and conforms to the standard for NaN propagation. Or, if it instead generates more efficient code that may reorder or combine operations and use simplifying algebraic transformations that aren't allowed by the IEEE-754 standard. ## Syntax -::: moniker range=">msvc-160" +::: moniker range=">=msvc-170" **`/fp:contract`**\ **`/fp:except`**\[**`-`**]\ @@ -21,6 +21,7 @@ Specifies how the compiler treats floating-point expressions, optimizations, and **`/fp:strict`** ::: moniker-end + ::: moniker range="<=msvc-160" **`/fp:except`**\[**`-`**]\ @@ -32,7 +33,7 @@ Specifies how the compiler treats floating-point expressions, optimizations, and ### Arguments -::: moniker range=">msvc-160" +::: moniker range=">=msvc-170" #### `/fp:contract` @@ -50,7 +51,7 @@ By default, the compiler uses **`/fp:precise`** behavior. Under **`/fp:precise`**, the compiler preserves the source expression ordering and rounding properties of floating-point code when it generates and optimizes object code for the target machine. The compiler rounds to source code precision at four specific points during expression evaluation: at assignments, typecasts, when floating-point arguments get passed to a function call, and when a function call returns a floating-point value. Intermediate computations may be performed at machine precision. Typecasts can be used to explicitly round intermediate computations. -::: moniker range=">msvc-160" +::: moniker range=">=msvc-170" The compiler doesn't perform algebraic transformations on floating-point expressions, such as reassociation or distribution, unless it can guarantee the transformation produces a bitwise identical result. Expressions that involve special values (NaN, +infinity, -infinity, -0.0) are processed according to IEEE-754 specifications. For example, `x != x` evaluates to **`true`** if `x` is NaN. Floating-point contractions aren't generated by default under **`/fp:precise`**. This behavior is new in Visual Studio 2022. Previous compiler versions could generate contractions by default under **`/fp:precise`**. @@ -61,7 +62,7 @@ The compiler doesn't perform algebraic transformations on floating-point express ::: moniker-end -The compiler generates code intended to run in the [default floating-point environment](#the-default-floating-point-environment). It also assumes the floating-point environment isn't accessed or modified at runtime. That is, it assumes the code doesn't unmask floating-point exceptions, read or write floating-point status registers, or change rounding modes. +The compiler generates code intended to run in the [default floating-point environment](#the-default-floating-point-environment). It also assumes the floating-point environment isn't accessed or modified at runtime. That is, it assumes the code: leaves floating-point exceptions masked, doesn't read or write floating-point status registers, and doesn't change rounding modes. If your floating-point code doesn't depend on the order of operations and expressions in your floating-point statements (for example, if you don't care whether `a * b + a * c` is computed as `(b + c) * a` or `2 * a` as `a + a`), consider the [`/fp:fast`](#fast) option, which can produce faster, more efficient code. If your code both depends on the order of operations and expressions, and accesses or alters the floating-point environment (for example, to change rounding modes or to trap floating-point exceptions), use [`/fp:strict`](#strict). @@ -77,9 +78,9 @@ Under **`/fp:strict`**, the compiler generates code that allows the program to s The **`/fp:fast`** option allows the compiler to reorder, combine, or simplify floating-point operations to optimize floating-point code for speed and space. The compiler may omit rounding at assignment statements, typecasts, or function calls. It may reorder operations or make algebraic transforms, for example, by use of associative and distributive laws. It may reorder code even if such transformations result in observably different rounding behavior. Because of this enhanced optimization, the result of some floating-point computations may differ from the ones produced by other **`/fp`** options. Special values (NaN, +infinity, -infinity, -0.0) may not be propagated or behave strictly according to the IEEE-754 standard. Floating-point contractions may be generated under **`/fp:fast`**. The compiler is still bound by the underlying architecture under **`/fp:fast`**, and more optimizations may be available through use of the [`/arch`](arch-minimum-cpu-architecture.md) option. -Under **`/fp:fast`**, the compiler generates code intended to run in the default floating-point environment and assumes the floating-point environment isn't accessed or modified at runtime. That is, it assumes the code doesn't unmask floating-point exceptions, read or write floating-point status registers, or change rounding modes. +Under **`/fp:fast`**, the compiler generates code intended to run in the default floating-point environment and assumes the floating-point environment isn't accessed or modified at runtime. That is, it assumes the code: leaves floating-point exceptions masked, doesn't read or write floating-point status registers, and doesn't change rounding modes. -`/fp:fast` is intended for programs that don't require strict source code ordering and rounding of floating-point expressions, and don't rely on the standard rules for handling special values such as NaN. If your floating-point code requires preservation of source code ordering and rounding, or relies on standard behavior of special values, use [`/fp:precise`](#precise). If your code accesses or modifies the floating-point environment to change rounding modes, unmask floating-point exceptions, or check floating-point status, use [`/fp:strict`](#strict). +**`/fp:fast`** is intended for programs that don't require strict source code ordering and rounding of floating-point expressions, and don't rely on the standard rules for handling special values such as `NaN`. If your floating-point code requires preservation of source code ordering and rounding, or relies on standard behavior of special values, use [`/fp:precise`](#precise). If your code accesses or modifies the floating-point environment to change rounding modes, unmask floating-point exceptions, or check floating-point status, use [`/fp:strict`](#strict). #### `/fp:except` @@ -97,24 +98,26 @@ The [`/Za`](za-ze-disable-language-extensions.md) (ANSI compatibility) option is The compiler provides three pragma directives to override the floating-point behavior specified on the command line: [`float_control`](../../preprocessor/float-control.md), [`fenv_access`](../../preprocessor/fenv-access.md), and [`fp_contract`](../../preprocessor/fp-contract.md). You can use these directives to control floating-point behavior at function-level, not within a function. These directives don't correspond directly to the **`/fp`** options. This table shows how the **`/fp`** options and pragma directives map to each other. For more information, see the documentation for the individual options and pragma directives. -::: moniker range=">msvc-160" +::: moniker range=">=msvc-170" | Option | `float_control(precise, *)` | `float_control(except, *)` | `fenv_access(*)` | `fp_contract(*)` | |--|--|--|--|--| -| `/fp:fast` | `off` | `off` | `off` | `on` | -| `/fp:precise` | `on` | `off` | `off` | `off`\* | -| `/fp:strict` | `on` | `on` | `on` | `off` | +| **`/fp:fast`** | `off` | `off` | `off` | `on` | +| **`/fp:precise`** | `on` | `off` | `off` | `off`\* | +| **`/fp:strict`** | `on` | `on` | `on` | `off` | \* In versions of Visual Studio before Visual Studio 2022, the **`/fp:precise`** behavior defaulted to `fp_contract(on)`. ::: moniker-end -::: moniker range=">msvc-160" +::: moniker range="<=msvc-160" | Option | `float_control(precise, *)` | `float_control(except, *)` | `fenv_access(*)` | `fp_contract(*)` | |--|--|--|--|--| -| `/fp:fast` | `off` | `off` | `off` | `on` | -| `/fp:precise` | `on` | `off` | `off` | `on` | -| `/fp:strict` | `on` | `on` | `on` | `off` | +| **`/fp:fast`** | `off` | `off` | `off` | `on` | +| **`/fp:precise`** | `on` | `off` | `off` | `on`\* | +| **`/fp:strict`** | `on` | `on` | `on` | `off` | + +\* In versions of Visual Studio starting with Visual Studio 2022, the **`/fp:precise`** behavior defaults to `fp_contract(off)`. ::: moniker-end diff --git a/docs/build/reference/fpcvt.md b/docs/build/reference/fpcvt.md new file mode 100644 index 00000000000..16cfc9a5d91 --- /dev/null +++ b/docs/build/reference/fpcvt.md @@ -0,0 +1,65 @@ +--- +description: "Learn more about: /fpcvt (Floating-point to integer conversion compatibility)" +title: "/fpcvt (Floating-point to unsigned integer conversion compatibility)" +ms.date: 11/03/2021 +f1_keywords: ["/fpcvt", "-fpcvt"] +helpviewer_keywords: ["-fpcvt compiler option [C++]", "/fpcvt compiler option [C++]"] +--- +# `/fpcvt` (Floating-point to integer conversion compatibility) + +Specifies how the compiler treats floating-point conversions to integer types. + +## Syntax + +> **`/fpcvt:IA`**\ +> **`/fpcvt:BC`** + +### Arguments + +#### `/fpcvt:IA` + +The **`/fpcvt:IA`** option tells the compiler to convert floating point values to integers so the results are compatible with the Intel AVX-512 conversion instructions. This behavior is the usual behavior in Visual Studio 2019 for x86 targets. + +#### `/fpcvt:BC` + +The **`/fpcvt:BC`** option tells the compiler to convert floating point values to unsigned integers so the results are compatible with the Visual Studio 2017 and earlier compilers. This behavior is the default in Visual Studio 2022. + +## Remarks + +In Visual Studio 2019 version 16.8 and later versions, the **`/fpcvt`** compiler option can be used to control the results of floating-point to integer conversions. The **`/fpcvt:BC`** option specifies the default behavior of Visual Studio 2022, which is the same as the behavior of Visual Studio 2017 and earlier versions. The **`/fpcvt:IA`** option specifies behavior compatible with Intel Architecture (IA) AVX-512 conversion instruction behavior. This option can be used with either 32-bit x86 or 64-bit x64 targets, and it applies whether [`/arch:AVX512`](arch-x86.md) is specified or not. + +For Visual Studio 2019, the default behavior for x64 targets is consistent with **`/fpcvt:BC`** unless **`/arch:AVX512`** is specified. Usually, the behavior for x86 targets is consistent with **`/fpcvt:IA`**, except under **`/arch:IA32`**, **`/arch:SSE`**, or sometimes where the result of a function call is directly converted to an unsigned integer. Use of **`/fpcvt`** overrides the default, so all conversions are handled consistently on either target. The behavior of conversions for ARM and ARM64 targets isn't consistent with either **`/fpcvt:BC`** or **`/fpcvt:IA`**. + +Standard C++ specifies that if a floating-point value can be exactly represented in an integer type, conversion from floating-point to that integer type must return that value. Otherwise, any behavior at all is allowed. Both **`/fpcvt`** options conform with Standard C++. The only difference is in what values are returned for invalid source values. + +The **`/fpcvt:IA`** option causes any invalid conversion to return a single *sentinel* value, which is the destination value farthest from zero. For conversion to signed types, the sentinel is the minimum value for that type. Unsigned types use the maximum value. Floating-point operations may return a Not-a-Number (NaN) value to indicate an invalid operation. That's not an option for conversion to integer types, which don't have NaN values. The sentinel is used as a proxy for a NaN value, although it can also be the result of a valid conversion. + +The **`/fpcvt:BC`** option also makes conversion to signed types return the minimum possible value when the source is invalid. However, conversion to unsigned integer types is based on conversion to **`long long`**. To convert a value to **`unsigned int`**, the compiler first converts it to type **`long long`**. The compiler then truncates the result to 32 bits. To convert a value to **`unsigned long long`**, valid source values that are too high for a **`long long`** are handled as a special case. All other values are first converted to **`long long`** and then recast to **`unsigned long long`**. + +The **`/fpcvt`** options are new in Visual Studio 2019 version 16.8. If you specify more than one **`/fpcvt`** option on the command line, the later option takes precedence and the compiler generates a warning. + +### Intrinsic functions for conversions + +You can specify the behavior of a specific conversion independently of the **`/fpcvt `** option, which applies globally. The compiler provides intrinsic sentinel conversion functions for conversions compatible with **`/fpcvt:IA`**. For more information, see [Sentinel conversion functions](../../intrinsics/sentinel-conversion-functions.md). The compiler also provides saturation conversion functions compatible with conversions on ARM or ARM64 target architectures. For more information, see [Saturation conversion functions](../../intrinsics/saturation-conversion-functions.md). + +The compiler also supports intrinsic conversion functions that execute as quickly as possible for valid conversions. These functions may generate any value or throw an exception for an invalid conversion. The results depend on the target platform, compiler options, and context. They're useful for handling values that have already been range-checked, or values generated in a way that can't cause an invalid conversion. For more information, see [Fast conversion functions](../../intrinsics/fast-conversion-functions.md). + +### To set this compiler option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). + +1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. + +1. Modify the **Additional Options** property to add **`/fpcvt:IA`** or **`/fpcvt:BC`**. Choose **OK** to save your changes. + +### To set this compiler option programmatically + +- See . + +## See also + +[MSVC compiler options](compiler-options.md)\ +[MSVC compiler command-line syntax](compiler-command-line-syntax.md)\ +[Fast conversion functions](../../intrinsics/fast-conversion-functions.md)\ +[Saturation conversion functions](../../intrinsics/saturation-conversion-functions.md)\ +[Sentinel conversion functions](../../intrinsics/sentinel-conversion-functions.md) diff --git a/docs/build/reference/nmake-function-abspath.md b/docs/build/reference/nmake-function-abspath.md index b6d17f691af..73efeb8193e 100644 --- a/docs/build/reference/nmake-function-abspath.md +++ b/docs/build/reference/nmake-function-abspath.md @@ -28,6 +28,8 @@ A [list](using-an-nmake-macro.md#function-list-syntax) with each of the items fr `abspath` supports extended-length paths, either by using the `\\?\` prefix, or when long paths are enabled. For more information about long paths, see [Maximum Path Length Limitation](/windows/win32/fileio/maximum-file-path-limitation). +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-basename.md b/docs/build/reference/nmake-function-basename.md index bff99855039..1289f9f7d97 100644 --- a/docs/build/reference/nmake-function-basename.md +++ b/docs/build/reference/nmake-function-basename.md @@ -30,6 +30,8 @@ A [list](using-an-nmake-macro.md#function-list-syntax) with each of the items fr The `basename` function is equivalent to using the [`R` modifier in a filename macro](special-nmake-macros.md#filename-macros). +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-filter.md b/docs/build/reference/nmake-function-filter.md index 650253faf3f..1dd25e3aaf6 100644 --- a/docs/build/reference/nmake-function-filter.md +++ b/docs/build/reference/nmake-function-filter.md @@ -32,6 +32,8 @@ A list of all of the items in *`input`* that match at least one pattern in *`fil `filteri` is the case-insensitive version of `filter`. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-filterout.md b/docs/build/reference/nmake-function-filterout.md index a75f270b4ab..930c08280bf 100644 --- a/docs/build/reference/nmake-function-filterout.md +++ b/docs/build/reference/nmake-function-filterout.md @@ -32,6 +32,8 @@ A [list](using-an-nmake-macro.md#function-list-syntax) of all of the items in *` `filterouti` is the case-insensitive version of `filterout`. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-findstring.md b/docs/build/reference/nmake-function-findstring.md index 49a28d0073d..7e083730852 100644 --- a/docs/build/reference/nmake-function-findstring.md +++ b/docs/build/reference/nmake-function-findstring.md @@ -32,6 +32,8 @@ If *`searchFor`* is found within *`input`*, then the function returns *`searchFo `findstringi` is the case-insensitive version of `findstring`. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-patsubst.md b/docs/build/reference/nmake-function-patsubst.md index 5c969da56a2..32d9205f6a4 100644 --- a/docs/build/reference/nmake-function-patsubst.md +++ b/docs/build/reference/nmake-function-patsubst.md @@ -35,6 +35,8 @@ Returns *`input`*, but each item that matches *`pattern`* is replaced by *`repla `patsubsti` is the case-insensitive version of `patsubst`. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-strip.md b/docs/build/reference/nmake-function-strip.md index 37da18de714..b5ea7247dd3 100644 --- a/docs/build/reference/nmake-function-strip.md +++ b/docs/build/reference/nmake-function-strip.md @@ -28,6 +28,8 @@ A [list](using-an-nmake-macro.md#function-list-syntax) of the exact same items a NMAKE outputs a [list](using-an-nmake-macro.md#function-list-syntax) that has a single space between each item and no leading or trailing whitespace. `strip` doesn't change any item within a list, but it does ensure that the returned list is in this canonical form. The canonical form can be useful for later operations that operate on strings instead of lists. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/reference/nmake-function-subst.md b/docs/build/reference/nmake-function-subst.md index 08165e5a3c0..90fb0f506d2 100644 --- a/docs/build/reference/nmake-function-subst.md +++ b/docs/build/reference/nmake-function-subst.md @@ -35,6 +35,8 @@ Returns *`input`*, but all instances of *`oldString`* are replaced by *`newStrin `substi` is the case-insensitive version of `subst`. +This macro function is available starting in Visual Studio 2022, in NMAKE version 14.30 or later. + ## Example ```makefile diff --git a/docs/build/toc.yml b/docs/build/toc.yml index fa8a3b66cbb..73d1dcc1b95 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -561,6 +561,8 @@ items: href: ../build/reference/fc-full-path-of-source-code-file-in-diagnostics.md - name: /fp (Specify floating-point behavior) href: ../build/reference/fp-specify-floating-point-behavior.md + - name: /fpcvt (Floating-point to unsigned integer conversion behavior) + href: ../build/reference/fpcvt.md - name: /FS (Force synchronous PDB writes) href: ../build/reference/fs-force-synchronous-pdb-writes.md - name: /fsanitize (Enable sanitizers) diff --git a/docs/code-quality/c26820.md b/docs/code-quality/c26820.md index 34726c2a46a..865640ad169 100644 --- a/docs/code-quality/c26820.md +++ b/docs/code-quality/c26820.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C26820"] --- # C26820 -> Assigning by value when a const-reference would suffice, use const auto& instead (p.9). +> Assigning by value when a const-reference would suffice, use const auto& instead (p.9). For more information, see [P.9: Don't waste time or space](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#p9-dont-waste-time-or-space) in the C++ Core Guidelines. diff --git a/docs/cpp/address-of-operator-amp.md b/docs/cpp/address-of-operator-amp.md index 7a9c13d2a6d..94aac88a3bb 100644 --- a/docs/cpp/address-of-operator-amp.md +++ b/docs/cpp/address-of-operator-amp.md @@ -1,12 +1,12 @@ --- -title: "Address-of Operator: &" +title: "Address-of Operator: &" description: "The address-of operator in the C++ language." ms.date: 10/02/2020 f1_keywords: ["&"] helpviewer_keywords: ["address-of operator (&)", "& operator", "& operator [C++], address-of operator"] ms.assetid: 2828221a-15f6-4acc-87fe-25e34feebb88 --- -# Address-of Operator: & +# Address-of Operator: `&` ## Syntax diff --git a/docs/cpp/bitwise-and-operator-amp.md b/docs/cpp/bitwise-and-operator-amp.md index cab27351c0a..e0fadaea1b2 100644 --- a/docs/cpp/bitwise-and-operator-amp.md +++ b/docs/cpp/bitwise-and-operator-amp.md @@ -1,12 +1,12 @@ --- -title: "Bitwise AND operator: &" +title: "Bitwise AND operator: &" description: "The C++ standard language bitwise AND operator syntax and use." ms.date: 07/23/2020 f1_keywords: ["bitand_cpp"] helpviewer_keywords: ["AND operator", "bitwise operators [C++], AND operator", "& operator [C++], bitwise operators"] ms.assetid: 76f40de3-c417-47b9-8a77-532f3fc990a5 --- -# Bitwise AND operator: & +# Bitwise AND operator: `&` ## Syntax diff --git a/docs/cpp/logical-and-operator-amp-amp.md b/docs/cpp/logical-and-operator-amp-amp.md index 74160b340a0..a0572816c3a 100644 --- a/docs/cpp/logical-and-operator-amp-amp.md +++ b/docs/cpp/logical-and-operator-amp-amp.md @@ -1,12 +1,12 @@ --- -title: "Logical AND Operator: &&" +title: "Logical AND Operator: &&" description: "The C++ standard language logical AND operator syntax and use." ms.date: 07/23/2020 f1_keywords: ["&&", "and_cpp"] helpviewer_keywords: ["logical AND operator", "AND operator", "&& operator"] ms.assetid: 50cfa664-a8c4-4b31-9bab-2f80d7cd2d1f --- -# Logical AND operator: && +# Logical AND operator: `&&` ## Syntax diff --git a/docs/cpp/lvalue-reference-declarator-amp.md b/docs/cpp/lvalue-reference-declarator-amp.md index ab85baf89d8..5b1da6e037b 100644 --- a/docs/cpp/lvalue-reference-declarator-amp.md +++ b/docs/cpp/lvalue-reference-declarator-amp.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: Lvalue Reference Declarator: &" -title: "Lvalue Reference Declarator: &" +description: "Learn more about: Lvalue Reference Declarator: &" +title: "Lvalue Reference Declarator: &" ms.date: "11/04/2016" f1_keywords: ["&"] helpviewer_keywords: ["reference operator", "& operator [C++], reference operator"] ms.assetid: edf0513d-3dcc-4663-b276-1269795dda51 --- -# Lvalue Reference Declarator: & +# Lvalue Reference Declarator: `&` Holds the address of an object but behaves syntactically like an object. diff --git a/docs/cppcx/wrl/comptr-class.md b/docs/cppcx/wrl/comptr-class.md index 5f64d6a2308..d693e8986f9 100644 --- a/docs/cppcx/wrl/comptr-class.md +++ b/docs/cppcx/wrl/comptr-class.md @@ -357,7 +357,7 @@ unsigned long InternalRelease(); This method is protected. -## ComPtr::operator& +## ComPtr::operator& Releases the interface associated with this `ComPtr` object and then retrieves the address of the `ComPtr` object. diff --git a/docs/cppcx/wrl/weakref-class.md b/docs/cppcx/wrl/weakref-class.md index 15f8499d5d7..f9101ddb2c0 100644 --- a/docs/cppcx/wrl/weakref-class.md +++ b/docs/cppcx/wrl/weakref-class.md @@ -46,7 +46,7 @@ A `WeakRef` object maintains a *strong reference*, which is associated with an o A `WeakRef` object is typically used to represent an object whose existence is controlled by an external thread or application. For example, construct a `WeakRef` object from a reference to a file object. While the file is open, the strong reference is valid. But if the file is closed, the strong reference becomes invalid. -Note that there is a behavior change in the [As](#as), [AsIID](#asiid) and [CopyTo](#copyto) methods in the Windows SDK. Previously, after calling any of these methods, you could check the `WeakRef` for **`nullptr`** to determine if a strong reference was successfully obtained, as in the following code: +There's a behavior change in the [`As`](#as), [`AsIID`](#asiid), and [`CopyTo`](#copyto) methods in the Windows SDK. Previously, after calling any of these methods, you could check the `WeakRef` for **`nullptr`** to determine if a strong reference was successfully obtained, as in the following code: ```cpp WeakRef wr; @@ -210,7 +210,7 @@ A return value of S_OK means that this operation succeeded, but doesn't indicate Starting in the Windows 10 SDK, this method does not set the `WeakRef` instance to **`nullptr`** if the weak reference could not be obtained, so you should avoid error checking code that checks the `WeakRef` for **`nullptr`**. Instead, check *ptr* for **`nullptr`**. -## WeakRef::operator& Operator +## WeakRef::operator& Operator Returns a `ComPtrRef` object that represents the current `WeakRef` object. diff --git a/docs/data/oledb/cdataconnection-class.md b/docs/data/oledb/cdataconnection-class.md index 1641ef21441..a852fec8b24 100644 --- a/docs/data/oledb/cdataconnection-class.md +++ b/docs/data/oledb/cdataconnection-class.md @@ -160,7 +160,7 @@ operator bool() throw(); Returns a **`bool`** (C++ data type) value. **`true`** means the current session is open; **`false`** means the current session is closed. -## CDataConnection::operator CDataSource& +## CDataConnection::operator CDataSource& Returns a reference to the contained `CDataSource` object. @@ -198,7 +198,7 @@ This operator returns a pointer to the contained `CDataSource` object, allowing See [operator CDataSource&](#op_cdata_amp) for a usage example. -## CDataConnection::operator CSession& +## CDataConnection::operator CSession& Returns a reference to the contained `CSession` object. diff --git a/docs/intrinsics/alphabetical-listing-of-intrinsic-functions.md b/docs/intrinsics/alphabetical-listing-of-intrinsic-functions.md index cca60d427b6..cf4ffa03934 100644 --- a/docs/intrinsics/alphabetical-listing-of-intrinsic-functions.md +++ b/docs/intrinsics/alphabetical-listing-of-intrinsic-functions.md @@ -1,269 +1,275 @@ --- description: "Learn more about: Alphabetical listing of intrinsic functions" title: "Alphabetical listing of intrinsic functions" -ms.date: "11/04/2016" +ms.date: 11/18/2021 helpviewer_keywords: ["cl.exe compiler intrinsics", "intrinsics, alphabetical list", "intrinsics"] ms.assetid: 178f88a2-7e8e-43ac-b55e-ef3298bef895 --- # Alphabetical listing of intrinsic functions -The following sections describe the Microsoft-specific intrinsic functions available on some or all architectures. Other supported intrinsics are documented by processor manufacturers, either in the header files or on their websites. See the [ARM intrinsics](../intrinsics/arm-intrinsics.md), [ARM64 intrinsics](../intrinsics/arm64-intrinsics.md), [x86 intrinsics](../intrinsics/x86-intrinsics-list.md), and [x64 intrinsics](../intrinsics/x64-amd64-intrinsics-list.md) sections for links to manufacturer documentation. C Run-time Library (CRT) functions that have intrinsics implemented for them are not documented here; these functions are documented in the [C Run-Time Library Reference](../c-runtime-library/c-run-time-library-reference.md). +The following sections describe the Microsoft-specific intrinsic functions available on some or all architectures. Other supported intrinsics are documented by processor manufacturers, either in the header files or on their websites. For more information, and links to manufacturer documentation, see these articles: [ARM intrinsics](../intrinsics/arm-intrinsics.md), [ARM64 intrinsics](../intrinsics/arm64-intrinsics.md), [x86 intrinsics](../intrinsics/x86-intrinsics-list.md), and [x64 intrinsics](../intrinsics/x64-amd64-intrinsics-list.md). C Runtime Library (CRT) functions implemented as intrinsics aren't documented here. CRT intrinsic functions are documented in the [C Runtime Library Reference](../c-runtime-library/c-run-time-library-reference.md). -[__addfsbyte, \__addfsword, \__addfsdword](../intrinsics/addfsbyte-addfsword-addfsdword.md) +[`__addfsbyte`, `__addfsword`, `__addfsdword`](../intrinsics/addfsbyte-addfsword-addfsdword.md) -[__addgsbyte, \__addgsword, \__addgsdword, \__addgsqword](../intrinsics/addgsbyte-addgsword-addgsdword-addgsqword.md) +[`__addgsbyte`, `__addgsword`, `__addgsdword`, `__addgsqword`](../intrinsics/addgsbyte-addgsword-addgsdword-addgsqword.md) -[_AddressOfReturnAddress](../intrinsics/addressofreturnaddress.md) +[`_AddressOfReturnAddress`](../intrinsics/addressofreturnaddress.md) -[__assume](../intrinsics/assume.md) +[`__assume`](../intrinsics/assume.md) -[_BitScanForward, _BitScanForward64](../intrinsics/bitscanforward-bitscanforward64.md) +[`_BitScanForward`, `_BitScanForward64`](../intrinsics/bitscanforward-bitscanforward64.md) -[_BitScanReverse, _BitScanReverse64](../intrinsics/bitscanreverse-bitscanreverse64.md) +[`_BitScanReverse`, `_BitScanReverse64`](../intrinsics/bitscanreverse-bitscanreverse64.md) -[_bittest, _bittest64](../intrinsics/bittest-bittest64.md) +[`_bittest`, `_bittest64`](../intrinsics/bittest-bittest64.md) -[_bittestandcomplement, _bittestandcomplement64](../intrinsics/bittestandcomplement-bittestandcomplement64.md) +[`_bittestandcomplement`, `_bittestandcomplement64`](../intrinsics/bittestandcomplement-bittestandcomplement64.md) -[_bittestandreset, _bittestandreset64](../intrinsics/bittestandreset-bittestandreset64.md) +[`_bittestandreset`, `_bittestandreset64`](../intrinsics/bittestandreset-bittestandreset64.md) -[_bittestandset, _bittestandset64](../intrinsics/bittestandset-bittestandset64.md) +[`_bittestandset`, `_bittestandset64`](../intrinsics/bittestandset-bittestandset64.md) -[__cpuid, \__cpuidex](../intrinsics/cpuid-cpuidex.md) +[`__cpuid`, `__cpuidex`](../intrinsics/cpuid-cpuidex.md) -[__debugbreak](../intrinsics/debugbreak.md) +[`_cvt_ftoi_fast`, `_cvt_ftoll_fast`, `_cvt_ftoui_fast`, `_cvt_ftoull_fast`, `_cvt_dtoi_fast`, `_cvt_dtoll_fast`, `_cvt_dtoui_fast`, `_cvt_dtoull_fast`](../intrinsics/fast-conversion-functions.md) -[_disable](../intrinsics/disable.md) +[`_cvt_ftoi_sat`, `_cvt_ftoll_sat`, `_cvt_ftoui_sat`, `_cvt_ftoull_sat`, `_cvt_dtoi_sat`, `_cvt_dtoll_sat`, `_cvt_dtoui_sat`, `_cvt_dtoull_sat`](../intrinsics/saturation-conversion-functions.md) -[__emul, \__emulu](../intrinsics/emul-emulu.md) +[`_cvt_ftoi_sent`, `_cvt_ftoll_sent`, `_cvt_ftoui_sent`, `_cvt_ftoull_sent`, `_cvt_dtoi_sent`, `_cvt_dtoll_sent`, `_cvt_dtoui_sent`, `_cvt_dtoull_sent`](../intrinsics/sentinel-conversion-functions.md) -[_enable](../intrinsics/enable.md) +[`__debugbreak`](../intrinsics/debugbreak.md) -[__fastfail](../intrinsics/fastfail.md) +[`_disable`](../intrinsics/disable.md) -[__faststorefence](../intrinsics/faststorefence.md) +[`__emul`, `__emulu`](../intrinsics/emul-emulu.md) -[__getcallerseflags](../intrinsics/getcallerseflags.md) +[`_enable`](../intrinsics/enable.md) -[__halt](../intrinsics/halt.md) +[`__fastfail`](../intrinsics/fastfail.md) -[__inbyte](../intrinsics/inbyte.md) +[`__faststorefence`](../intrinsics/faststorefence.md) -[__inbytestring](../intrinsics/inbytestring.md) +[`__getcallerseflags`](../intrinsics/getcallerseflags.md) -[__incfsbyte, \__incfsword, \__incfsdword](../intrinsics/incfsbyte-incfsword-incfsdword.md) +[`__halt`](../intrinsics/halt.md) -[__incgsbyte, \__incgsword, \__incgsdword, \__incgsqword](../intrinsics/incgsbyte-incgsword-incgsdword-incgsqword.md) +[`__inbyte`](../intrinsics/inbyte.md) -[__indword](../intrinsics/indword.md) +[`__inbytestring`](../intrinsics/inbytestring.md) -[__indwordstring](../intrinsics/indwordstring.md) +[`__incfsbyte`, `__incfsword`, `__incfsdword`](../intrinsics/incfsbyte-incfsword-incfsdword.md) -[__int2c](../intrinsics/int2c.md) +[`__incgsbyte`, `__incgsword`, `__incgsdword`, `__incgsqword`](../intrinsics/incgsbyte-incgsword-incgsdword-incgsqword.md) -[_InterlockedAdd intrinsic functions](../intrinsics/interlockedadd-intrinsic-functions.md) +[`__indword`](../intrinsics/indword.md) -[_InterlockedAddLargeStatistic](../intrinsics/interlockedaddlargestatistic.md) +[`__indwordstring`](../intrinsics/indwordstring.md) -[_InterlockedAnd intrinsic functions](../intrinsics/interlockedand-intrinsic-functions.md) +[`__int2c`](../intrinsics/int2c.md) -[_interlockedbittestandreset intrinsic functions](../intrinsics/interlockedbittestandreset-intrinsic-functions.md) +[`_InterlockedAdd` intrinsic functions](../intrinsics/interlockedadd-intrinsic-functions.md) -[_interlockedbittestandset intrinsic functions](../intrinsics/interlockedbittestandset-intrinsic-functions.md) +[`_InterlockedAddLargeStatistic`](../intrinsics/interlockedaddlargestatistic.md) -[_InterlockedCompareExchange intrinsic functions](../intrinsics/interlockedcompareexchange-intrinsic-functions.md) +[`_InterlockedAnd` intrinsic functions](../intrinsics/interlockedand-intrinsic-functions.md) -[_InterlockedCompareExchange128](../intrinsics/interlockedcompareexchange128.md) +[`_interlockedbittestandreset` intrinsic functions](../intrinsics/interlockedbittestandreset-intrinsic-functions.md) -[_InterlockedCompareExchangePointer intrinsic functions](../intrinsics/interlockedcompareexchangepointer-intrinsic-functions.md) +[`_interlockedbittestandset` intrinsic functions](../intrinsics/interlockedbittestandset-intrinsic-functions.md) -[_InterlockedDecrement intrinsic functions](../intrinsics/interlockeddecrement-intrinsic-functions.md) +[`_InterlockedCompareExchange` intrinsic functions](../intrinsics/interlockedcompareexchange-intrinsic-functions.md) -[_InterlockedExchange intrinsic functions](../intrinsics/interlockedexchange-intrinsic-functions.md) +[`_InterlockedCompareExchange128`](../intrinsics/interlockedcompareexchange128.md) -[_InterlockedExchangeAdd intrinsic functions](../intrinsics/interlockedexchangeadd-intrinsic-functions.md) +[`_InterlockedCompareExchangePointer` intrinsic functions](../intrinsics/interlockedcompareexchangepointer-intrinsic-functions.md) -[_InterlockedExchangePointer intrinsic functions](../intrinsics/interlockedexchangepointer-intrinsic-functions.md) +[`_InterlockedDecrement` intrinsic functions](../intrinsics/interlockeddecrement-intrinsic-functions.md) -[_InterlockedIncrement intrinsic functions](../intrinsics/interlockedincrement-intrinsic-functions.md) +[`_InterlockedExchange` intrinsic functions](../intrinsics/interlockedexchange-intrinsic-functions.md) -[_InterlockedOr intrinsic functions](../intrinsics/interlockedor-intrinsic-functions.md) +[`_InterlockedExchangeAdd` intrinsic functions](../intrinsics/interlockedexchangeadd-intrinsic-functions.md) -[_InterlockedXor intrinsic functions](../intrinsics/interlockedxor-intrinsic-functions.md) +[`_InterlockedExchangePointer` intrinsic functions](../intrinsics/interlockedexchangepointer-intrinsic-functions.md) -[__invlpg](../intrinsics/invlpg.md) +[`_InterlockedIncrement` intrinsic functions](../intrinsics/interlockedincrement-intrinsic-functions.md) -[__inword](../intrinsics/inword.md) +[`_InterlockedOr` intrinsic functions](../intrinsics/interlockedor-intrinsic-functions.md) -[__inwordstring](../intrinsics/inwordstring.md) +[`_InterlockedXor` intrinsic functions](../intrinsics/interlockedxor-intrinsic-functions.md) -[__lidt](../intrinsics/lidt.md) +[`__invlpg`](../intrinsics/invlpg.md) -[__ll_lshift](../intrinsics/ll-lshift.md) +[`__inword`](../intrinsics/inword.md) -[__ll_rshift](../intrinsics/ll-rshift.md) +[`__inwordstring`](../intrinsics/inwordstring.md) -[__lzcnt16, \__lzcnt, \__lzcnt64](../intrinsics/lzcnt16-lzcnt-lzcnt64.md) +[`__lidt`](../intrinsics/lidt.md) -[_mm_cvtsi64x_ss](../intrinsics/mm-cvtsi64x-ss.md) +[`__ll_lshift`](../intrinsics/ll-lshift.md) -[_mm_cvtss_si64x](../intrinsics/mm-cvtss-si64x.md) +[`__ll_rshift`](../intrinsics/ll-rshift.md) -[_mm_cvttss_si64x](../intrinsics/mm-cvttss-si64x.md) +[`__lzcnt16`, `__lzcnt`, `__lzcnt64`](../intrinsics/lzcnt16-lzcnt-lzcnt64.md) -[_mm_extract_si64, _mm_extracti_si64](../intrinsics/mm-extract-si64-mm-extracti-si64.md) +[`_mm_cvtsi64x_ss`](../intrinsics/mm-cvtsi64x-ss.md) -[_mm_insert_si64, _mm_inserti_si64](../intrinsics/mm-insert-si64-mm-inserti-si64.md) +[`_mm_cvtss_si64x`](../intrinsics/mm-cvtss-si64x.md) -[_mm_stream_sd](../intrinsics/mm-stream-sd.md) +[`_mm_cvttss_si64x`](../intrinsics/mm-cvttss-si64x.md) -[_mm_stream_si64x](../intrinsics/mm-stream-si64x.md) +[`_mm_extract_si64`, `_mm_extracti_si64`](../intrinsics/mm-extract-si64-mm-extracti-si64.md) -[_mm_stream_ss](../intrinsics/mm-stream-ss.md) +[`_mm_insert_si64`, `_mm_inserti_si64`](../intrinsics/mm-insert-si64-mm-inserti-si64.md) -[__movsb](../intrinsics/movsb.md) +[`_mm_stream_sd`](../intrinsics/mm-stream-sd.md) -[__movsd](../intrinsics/movsd.md) +[`_mm_stream_si64x`](../intrinsics/mm-stream-si64x.md) -[__movsq](../intrinsics/movsq.md) +[`_mm_stream_ss`](../intrinsics/mm-stream-ss.md) -[__movsw](../intrinsics/movsw.md) +[`__movsb`](../intrinsics/movsb.md) -[__mul128](../intrinsics/mul128.md) +[`__movsd`](../intrinsics/movsd.md) -[__mulh](../intrinsics/mulh.md) +[`__movsq`](../intrinsics/movsq.md) -[__noop](../intrinsics/noop.md) +[`__movsw`](../intrinsics/movsw.md) -[__nop](../intrinsics/nop.md) +[`__mul128`](../intrinsics/mul128.md) -[__outbyte](../intrinsics/outbyte.md) +[`__mulh`](../intrinsics/mulh.md) -[__outbytestring](../intrinsics/outbytestring.md) +[`__noop`](../intrinsics/noop.md) -[__outdword](../intrinsics/outdword.md) +[`__nop`](../intrinsics/nop.md) -[__outdwordstring](../intrinsics/outdwordstring.md) +[`__outbyte`](../intrinsics/outbyte.md) -[__outword](../intrinsics/outword.md) +[`__outbytestring`](../intrinsics/outbytestring.md) -[__outwordstring](../intrinsics/outwordstring.md) +[`__outdword`](../intrinsics/outdword.md) -[__popcnt16, \__popcnt, \__popcnt64](../intrinsics/popcnt16-popcnt-popcnt64.md) +[`__outdwordstring`](../intrinsics/outdwordstring.md) -[__rdtsc](../intrinsics/rdtsc.md) +[`__outword`](../intrinsics/outword.md) -[__rdtscp](../intrinsics/rdtscp.md) +[`__outwordstring`](../intrinsics/outwordstring.md) -[_ReadBarrier](../intrinsics/readbarrier.md) +[`__popcnt16`, `__popcnt`, `__popcnt64`](../intrinsics/popcnt16-popcnt-popcnt64.md) -[__readcr0](../intrinsics/readcr0.md) +[`__rdtsc`](../intrinsics/rdtsc.md) -[__readcr2](../intrinsics/readcr2.md) +[`__rdtscp`](../intrinsics/rdtscp.md) -[__readcr3](../intrinsics/readcr3.md) +[`_ReadBarrier`](../intrinsics/readbarrier.md) -[__readcr4](../intrinsics/readcr4.md) +[`__readcr0`](../intrinsics/readcr0.md) -[__readcr8](../intrinsics/readcr8.md) +[`__readcr2`](../intrinsics/readcr2.md) -[__readdr](../intrinsics/readdr.md) +[`__readcr3`](../intrinsics/readcr3.md) -[__readeflags](../intrinsics/readeflags.md) +[`__readcr4`](../intrinsics/readcr4.md) -[__readfsbyte, \__readfsdword, \__readfsqword, \__readfsword](../intrinsics/readfsbyte-readfsdword-readfsqword-readfsword.md) +[`__readcr8`](../intrinsics/readcr8.md) -[__readgsbyte, \__readgsdword, \__readgsqword, \__readgsword](../intrinsics/readgsbyte-readgsdword-readgsqword-readgsword.md) +[`__readdr`](../intrinsics/readdr.md) -[__readmsr](../intrinsics/readmsr.md) +[`__readeflags`](../intrinsics/readeflags.md) -[__readpmc](../intrinsics/readpmc.md) +[`__readfsbyte`, `__readfsdword`, `__readfsqword`, `__readfsword`](../intrinsics/readfsbyte-readfsdword-readfsqword-readfsword.md) -[_ReadWriteBarrier](../intrinsics/readwritebarrier.md) +[`__readgsbyte`, `__readgsdword`, `__readgsqword`, `__readgsword`](../intrinsics/readgsbyte-readgsdword-readgsqword-readgsword.md) -[_ReturnAddress](../intrinsics/returnaddress.md) +[`__readmsr`](../intrinsics/readmsr.md) -[_rotl8, _rotl16](../intrinsics/rotl8-rotl16.md) +[`__readpmc`](../intrinsics/readpmc.md) -[_rotr8, _rotr16](../intrinsics/rotr8-rotr16.md) +[`_ReadWriteBarrier`](../intrinsics/readwritebarrier.md) -[__segmentlimit](../intrinsics/segmentlimit.md) +[`_ReturnAddress`](../intrinsics/returnaddress.md) -[__shiftleft128](../intrinsics/shiftleft128.md) +[`_rotl8`, `_rotl16`](../intrinsics/rotl8-rotl16.md) -[__shiftright128](../intrinsics/shiftright128.md) +[`_rotr8`, `_rotr16`](../intrinsics/rotr8-rotr16.md) -[__sidt](../intrinsics/sidt.md) +[`__segmentlimit`](../intrinsics/segmentlimit.md) -[__stosb](../intrinsics/stosb.md) +[`__shiftleft128`](../intrinsics/shiftleft128.md) -[__stosd](../intrinsics/stosd.md) +[`__shiftright128`](../intrinsics/shiftright128.md) -[__stosq](../intrinsics/stosq.md) +[`__sidt`](../intrinsics/sidt.md) -[__stosw](../intrinsics/stosw.md) +[`__stosb`](../intrinsics/stosb.md) -[__svm_clgi](../intrinsics/svm-clgi.md) +[`__stosd`](../intrinsics/stosd.md) -[__svm_invlpga](../intrinsics/svm-invlpga.md) +[`__stosq`](../intrinsics/stosq.md) -[__svm_skinit](../intrinsics/svm-skinit.md) +[`__stosw`](../intrinsics/stosw.md) -[__svm_stgi](../intrinsics/svm-stgi.md) +[`__svm_clgi`](../intrinsics/svm-clgi.md) -[__svm_vmload](../intrinsics/svm-vmload.md) +[`__svm_invlpga`](../intrinsics/svm-invlpga.md) -[__svm_vmrun](../intrinsics/svm-vmrun.md) +[`__svm_skinit`](../intrinsics/svm-skinit.md) -[__svm_vmsave](../intrinsics/svm-vmsave.md) +[`__svm_stgi`](../intrinsics/svm-stgi.md) -[__ud2](../intrinsics/ud2.md) +[`__svm_vmload`](../intrinsics/svm-vmload.md) -[__ull_rshift](../intrinsics/ull-rshift.md) +[`__svm_vmrun`](../intrinsics/svm-vmrun.md) -[_umul128](../intrinsics/umul128.md) +[`__svm_vmsave`](../intrinsics/svm-vmsave.md) -[__umulh](../intrinsics/umulh.md) +[`__ud2`](../intrinsics/ud2.md) -[__vmx_off](../intrinsics/vmx-off.md) +[`__ull_rshift`](../intrinsics/ull-rshift.md) -[__vmx_on](../intrinsics/vmx-on.md) +[`_umul128`](../intrinsics/umul128.md) -[__vmx_vmclear](../intrinsics/vmx-vmclear.md) +[`__umulh`](../intrinsics/umulh.md) -[__vmx_vmlaunch](../intrinsics/vmx-vmlaunch.md) +[`__vmx_off`](../intrinsics/vmx-off.md) -[__vmx_vmptrld](../intrinsics/vmx-vmptrld.md) +[`__vmx_on`](../intrinsics/vmx-on.md) -[__vmx_vmptrst](../intrinsics/vmx-vmptrst.md) +[`__vmx_vmclear`](../intrinsics/vmx-vmclear.md) -[__vmx_vmread](../intrinsics/vmx-vmread.md) +[`__vmx_vmlaunch`](../intrinsics/vmx-vmlaunch.md) -[__vmx_vmresume](../intrinsics/vmx-vmresume.md) +[`__vmx_vmptrld`](../intrinsics/vmx-vmptrld.md) -[__vmx_vmwrite](../intrinsics/vmx-vmwrite.md) +[`__vmx_vmptrst`](../intrinsics/vmx-vmptrst.md) -[__wbinvd](../intrinsics/wbinvd.md) +[`__vmx_vmread`](../intrinsics/vmx-vmread.md) -[_WriteBarrier](../intrinsics/writebarrier.md) +[`__vmx_vmresume`](../intrinsics/vmx-vmresume.md) -[__writecr0](../intrinsics/writecr0.md) +[`__vmx_vmwrite`](../intrinsics/vmx-vmwrite.md) -[__writecr3](../intrinsics/writecr3.md) +[`__wbinvd`](../intrinsics/wbinvd.md) -[__writecr4](../intrinsics/writecr4.md) +[`_WriteBarrier`](../intrinsics/writebarrier.md) -[__writecr8](../intrinsics/writecr8.md) +[`__writecr0`](../intrinsics/writecr0.md) -[__writedr](../intrinsics/writedr.md) +[`__writecr3`](../intrinsics/writecr3.md) -[__writeeflags](../intrinsics/writeeflags.md) +[`__writecr4`](../intrinsics/writecr4.md) -[__writefsbyte, \__writefsdword, \__writefsqword, \__writefsword](../intrinsics/writefsbyte-writefsdword-writefsqword-writefsword.md) +[`__writecr8`](../intrinsics/writecr8.md) -[__writegsbyte, \__writegsdword, \__writegsqword, \__writegsword](../intrinsics/writegsbyte-writegsdword-writegsqword-writegsword.md) +[`__writedr`](../intrinsics/writedr.md) -[__writemsr](../intrinsics/writemsr.md) +[`__writeeflags`](../intrinsics/writeeflags.md) + +[`__writefsbyte`, `__writefsdword`, `__writefsqword`, `__writefsword`](../intrinsics/writefsbyte-writefsdword-writefsqword-writefsword.md) + +[`__writegsbyte`, `__writegsdword`, `__writegsqword`, `__writegsword`](../intrinsics/writegsbyte-writegsdword-writegsqword-writegsword.md) + +[`__writemsr`](../intrinsics/writemsr.md) ## See also diff --git a/docs/intrinsics/fast-conversion-functions.md b/docs/intrinsics/fast-conversion-functions.md new file mode 100644 index 00000000000..50ee8907395 --- /dev/null +++ b/docs/intrinsics/fast-conversion-functions.md @@ -0,0 +1,54 @@ +--- +description: "Learn more about: Fast floating-point conversion functions" +title: "Fast conversion functions" +ms.date: 11/18/2021 +f1_keywords: ["intrin/_cvt_dtoi_fast", "intrin/_cvt_dtoll_fast", "intrin/_cvt_dtoui_fast", "intrin/_cvt_dtoull_fast", "intrin/_cvt_ftoi_fast", "intrin/_cvt_ftoll_fast", "intrin/_cvt_ftoui_fast", "intrin/_cvt_ftoull_fast"] +helpviewer_keywords: ["_cvt_dtoi_fast", "_cvt_dtoll_fast", "_cvt_dtoui_fast", "_cvt_dtoull_fast", "_cvt_ftoi_fast", "_cvt_ftoll_fast", "_cvt_ftoui_fast", "_cvt_ftoull_fast"] +--- +# Fast floating-point conversion functions + +**Microsoft Specific** + +Fast conversion functions between floating-point types and integral types. + +## Syntax + +```C +int _cvt_ftoi_fast(float value); +long long _cvt_ftoll_fast(float value); +unsigned _cvt_ftoui_fast(float value); +unsigned long long _cvt_ftoull_fast(float value); +int _cvt_dtoi_fast(double value); +long long _cvt_dtoll_fast(double value); +unsigned _cvt_dtoui_fast(double value); +unsigned long long _cvt_dtoull_fast(double value); +``` + +### Parameters + +*`value`*\ +[in] A floating-point value to convert. + +## Return value + +The integer-typed result of the conversion. + +## Requirements + +**Header**: \ + +**Architecture**: x86, x64 + +## Remarks + +These intrinsics are fast conversion functions that execute as quickly as possible for valid conversions. As in Standard C++, fast conversions aren't fully defined. They may generate different values or exceptions for invalid conversions. The results depend on the target platform, compiler options, and context. These functions can be useful for handling values that have already been range-checked. Or, for values generated in a way that can never cause an invalid conversion. + +The fast conversion intrinsics are available starting in Visual Studio 2022. + +**END Microsoft Specific** + +## See also + +[Compiler intrinsics](../intrinsics/compiler-intrinsics.md)\ +[Saturation floating-point conversion functions](saturation-conversion-functions.md)\ +[Sentinel floating-point conversion functions](sentinel-conversion-functions.md) diff --git a/docs/intrinsics/saturation-conversion-functions.md b/docs/intrinsics/saturation-conversion-functions.md new file mode 100644 index 00000000000..3cf5b5b818a --- /dev/null +++ b/docs/intrinsics/saturation-conversion-functions.md @@ -0,0 +1,54 @@ +--- +description: "Learn more about: Saturation floating-point conversion functions" +title: "Saturation conversion functions" +ms.date: 11/18/2021 +f1_keywords: ["intrin/_cvt_dtoi_sat", "intrin/_cvt_dtoll_sat", "intrin/_cvt_dtoui_sat", "intrin/_cvt_dtoull_sat", "intrin/_cvt_ftoi_sat", "intrin/_cvt_ftoll_sat", "intrin/_cvt_ftoui_sat", "intrin/_cvt_ftoull_sat"] +helpviewer_keywords: ["_cvt_dtoi_sat", "_cvt_dtoll_sat", "_cvt_dtoui_sat", "_cvt_dtoull_sat", "_cvt_ftoi_sat", "_cvt_ftoll_sat", "_cvt_ftoui_sat", "_cvt_ftoull_sat"] +--- +# Saturation floating-point conversion functions + +**Microsoft Specific** + +Conversion functions between floating-point types and integral types that use an ARM processor-compatible saturation strategy. + +## Syntax + +```C +int _cvt_ftoi_sat(float value); +long long _cvt_ftoll_sat(float value); +unsigned _cvt_ftoui_sat(float value); +unsigned long long _cvt_ftoull_sat(float value); +int _cvt_dtoi_sat(double value); +long long _cvt_dtoll_sat(double value); +unsigned _cvt_dtoui_sat(double value); +unsigned long long _cvt_dtoull_sat(double value); +``` + +### Parameters + +*`value`*\ +[in] A floating-point value to convert. + +## Return value + +The integer-typed result of the conversion. + +## Requirements + +**Header**: \ + +**Architecture**: x86, x64 + +## Remarks + +These intrinsics are floating-point to integral type conversion functions that use a *saturation* strategy: Any floating-point value too high to fit in the destination type is mapped to the highest possible destination value. Any value too low to fit maps to the lowest possible value. And if the source value is NaN, zero is returned for the result. + +The saturation conversion intrinsics are available starting in Visual Studio 2019 version 16.10. + +**END Microsoft Specific** + +## See also + +[Compiler intrinsics](../intrinsics/compiler-intrinsics.md)\ +[Fast floating-point conversion functions](fast-conversion-functions.md)\ +[Sentinel floating-point conversion functions](sentinel-conversion-functions.md) diff --git a/docs/intrinsics/sentinel-conversion-functions.md b/docs/intrinsics/sentinel-conversion-functions.md new file mode 100644 index 00000000000..fda826a7a04 --- /dev/null +++ b/docs/intrinsics/sentinel-conversion-functions.md @@ -0,0 +1,61 @@ +--- +description: "Learn more about: Sentinel floating-point conversion functions" +title: "Sentinel conversion functions" +ms.date: 11/18/2021 +f1_keywords: ["intrin/_cvt_dtoi_sent", "intrin/_cvt_dtoll_sent", "intrin/_cvt_dtoui_sent", "intrin/_cvt_dtoull_sent", "intrin/_cvt_ftoi_sent", "intrin/_cvt_ftoll_sent", "intrin/_cvt_ftoui_sent", "intrin/_cvt_ftoull_sent"] +helpviewer_keywords: ["_cvt_dtoi_sent", "_cvt_dtoll_sent", "_cvt_dtoui_sent", "_cvt_dtoull_sent", "_cvt_ftoi_sent", "_cvt_ftoll_sent", "_cvt_ftoui_sent", "_cvt_ftoull_sent"] +--- +# Sentinel floating-point conversion functions + +**Microsoft Specific** + +Conversion functions between floating-point types and integral types that use an Intel Architecture (IA) AVX-512 compatible sentinel strategy. + +## Syntax + +```C +int _cvt_ftoi_sent(float value); +long long _cvt_ftoll_sent(float value); +unsigned _cvt_ftoui_sent(float value); +unsigned long long _cvt_ftoull_sent(float value); +int _cvt_dtoi_sent(double value); +long long _cvt_dtoll_sent(double value); +unsigned _cvt_dtoui_sent(double value); +unsigned long long _cvt_dtoull_sent(double value); +``` + +### Parameters + +*`value`*\ +[in] A floating-point value to convert. + +## Return value + +The integer-typed result of the conversion. + +## Requirements + +**Header**: \ + +**Architecture**: x86, x64 + +## Remarks + +These intrinsics are floating-point to integral type conversion functions that use a *sentinel* strategy: They return the result value farthest from zero as a proxy sentinel value for NaN. Any invalid conversion returns this sentinel value. The specific sentinel value returned depends on the result type. + +| Result type | Sentinel | *``* constant | +|--|--| +| `int` | -2147483648 (0xFFFFFFFF) | `INT_MIN` | +| `unsigned int` | 4294967295 (0xFFFFFFFF) | `UINT_MAX` | +| `long long` | -9223372036854775808 (0xFFFFFFFF'FFFFFFFF) | `LLONG_MIN` | +| `unsigned long long` | 18446744073709551615 (0xFFFFFFFF'FFFFFFFF) | `ULLONG_MAX` | + +The sentinel conversion intrinsics are available starting in Visual Studio 2019 version 16.10. + +**END Microsoft Specific** + +## See also + +[Compiler intrinsics](../intrinsics/compiler-intrinsics.md)\ +[Fast floating-point conversion functions](fast-conversion-functions.md)\ +[Saturation floating-point conversion functions](saturation-conversion-functions.md) diff --git a/docs/intrinsics/toc.yml b/docs/intrinsics/toc.yml index a6a4865d218..cfbc51772b9 100644 --- a/docs/intrinsics/toc.yml +++ b/docs/intrinsics/toc.yml @@ -57,6 +57,12 @@ items: href: ../intrinsics/fastfail.md - name: __faststorefence href: ../intrinsics/faststorefence.md + - name: Floating-point fast conversion functions + href: ../intrinsics/fast-conversion-functions.md + - name: Floating-point saturation conversion functions + href: ../intrinsics/saturation-conversion-functions.md + - name: Floating-point sentinel conversion functions + href: ../intrinsics/sentinel-conversion-functions.md - name: __getcallerseflags href: ../intrinsics/getcallerseflags.md - name: __halt diff --git a/docs/parallel/concrt/reference/concurrency-namespace-operators.md b/docs/parallel/concrt/reference/concurrency-namespace-operators.md index 1a92bfb4a4f..4e80dd0749c 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-operators.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-operators.md @@ -2,7 +2,7 @@ description: "Learn more about: concurrency namespace Operators" title: "concurrency namespace Operators" ms.date: "11/04/2016" -f1_keywords: ["concrt/concurrency::operator!=", "concrt/concurrency:[operator&&"] +f1_keywords: ["concrt/concurrency::operator!=", "concrt/concurrency::operator&&"] ms.assetid: 8e373f23-fc8e-49f7-82e6-ba0c57b822f8 --- # concurrency namespace Operators @@ -70,7 +70,7 @@ A task that completes successfully when either of the input tasks has completed If both of the tasks are canceled or throw exceptions, the returned task will complete in the canceled state, and one of the exceptions, if any are encountered, will be thrown when you call `get()` or `wait()` on that task. -## operator&& Operator +## operator&& Operator Creates a task that will complete successfully when both of the tasks supplied as arguments complete successfully. diff --git a/docs/standard-library/bitset-operators.md b/docs/standard-library/bitset-operators.md index 85cf508cfe5..13d370d3dfc 100644 --- a/docs/standard-library/bitset-operators.md +++ b/docs/standard-library/bitset-operators.md @@ -2,13 +2,13 @@ description: "Learn more about: <bitset> operators" title: "<bitset> operators" ms.date: "11/04/2016" -f1_keywords: ["bitset/std::operator&", "bitset/std::operator>>", "bitset/std::operator<<", "bitset/std::operator^", "bitset/std::operator|"] +f1_keywords: ["bitset/std::operator&", "bitset/std::operator>>", "bitset/std::operator<<", "bitset/std::operator^", "bitset/std::operator|"] ms.assetid: 84fe6a13-6f6e-4cdc-bf8f-6f65ab1134d4 -helpviewer_keywords: ["std::operator& (bitset)", "std::operator>> (bitset)", "std::operator<< (bitset)"] +helpviewer_keywords: ["std::operator& (bitset)", "std::operator>> (bitset)", "std::operator<< (bitset)"] --- # <bitset> operators -## operator& +## operator& Performs a bitwise `AND` between two bitsets. diff --git a/docs/standard-library/iomanip-functions.md b/docs/standard-library/iomanip-functions.md index 37085d9fefa..3c821d8b77a 100644 --- a/docs/standard-library/iomanip-functions.md +++ b/docs/standard-library/iomanip-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: <iomanip> functions" -title: "<iomanip> functions" -ms.date: "11/04/2016" +description: "Learn more about: functions" +title: " functions" +ms.date: 11/19/2021 f1_keywords: ["iomanip/std::get_money", "iomanip/std::get_time", "iomanip/std::put_money", "iomanip/std::put_time", "iomanip/std::quoted", "iomanip/std::resetiosflags", "iomanip/std::setbase", "iomanip/std::setfill", "iomanip/std::setiosflags", "iomanip/std::setprecision", "iomanip/std::setw"] -ms.assetid: 3ddde610-70cc-4cfa-8a89-3e83d1d356a8 helpviewer_keywords: ["std::get_money [C++]", "std::get_time [C++]", "std::put_money [C++]", "std::put_time [C++]", "std::quoted [C++]", "std::resetiosflags [C++]", "std::setbase [C++]", "std::setfill [C++]", "std::setiosflags [C++]", "std::setprecision [C++]", "std::setw [C++]"] --- # `` functions @@ -22,7 +21,7 @@ helpviewer_keywords: ["std::get_money [C++]", "std::get_time [C++]", "std::put_m ## `get_money` -Extracts a monetary value from a stream using the desired format, and returns the value in a parameter. +Extracts a monetary value from a stream using the specified format, and returns the value in a parameter. ```cpp template @@ -45,11 +44,11 @@ The manipulator returns an object that, when extracted from the stream `str`, be ## `get_time` -Extracts a time value from a stream using a desired format. Returns the value in a parameter as a time structure. +Extracts a time value from a stream using the specified format. Returns the value in a parameter as a time structure. ```cpp template -T10 put_time(struct tm *time_ptr, const Elem *time_format); +T10 get_time(struct tm *time_ptr, const Elem *time_format); ``` ### Parameters @@ -58,15 +57,36 @@ T10 put_time(struct tm *time_ptr, const Elem *time_format); The time in the form of a time structure. *`time_format`*\ -The desired format to use to obtain the time value. +The format to use to get the time value. ### Remarks The manipulator returns an object that, when extracted from the stream `str`, behaves as a `formatted input function` that calls the member function `get` for the locale facet `time_get` associated with `str`, using `tptr` to indicate the time structure and `fmt` to indicate the beginning of a null-terminated format string. If successful, the call stores in the time structure the values associated with any extracted time fields. The manipulator then returns `str`. +### Example + +```cpp +#include +#include +#include + +int main() +{ + std::cout << "Enter a time, for example 15:24 for 3:24pm: "; + struct std::tm when; + std::cin >> std::get_time(&when, "%R"); + if (!std::cin.fail()) + { + std::cout << "Entered: " << when.tm_hour << " hours, " << when.tm_min << " minutes\n"; + } + + return (int)std::cin.fail(); +} +``` + ## `put_money` -Inserts a monetary amount using the desired format into a stream. +Inserts a monetary amount using the specified format into a stream. ```cpp template @@ -79,7 +99,7 @@ T8 put_money(const Money& amount, bool use_intl); The monetary amount to insert into the stream. *`use_intl`*\ -Set to **`true`** if manipulator should use international format, **`false`** if it should not. +Set to **`true`** if manipulator should use international format, **`false`** if it shouldn't. ### Return Value @@ -106,7 +126,7 @@ T10 put_time(struct tm* time_ptr, const Elem* time_format); The time value to write to the stream, provided in a time structure. *`time_format`*\ -The desired format to write the time value. +The format to write the time value. ### Remarks @@ -114,7 +134,7 @@ The manipulator returns an object that, when inserted into the stream `str`, beh ## `quoted` -**(New in C++14)** An iostream manipulator that enables convenient round-tripping of strings into and out of streams using the `>>` and `<<` operators. +**(New in C++14)** An `iostream` manipulator that enables convenient round-tripping of strings into and out of streams using the `>>` and `<<` operators. ```cpp quoted(std::string str) // or wstring @@ -126,7 +146,7 @@ quoted(const char* str, char delimiter, char escape) // or wide versions ### Parameters *`str`*\ -A std::string, char\*, string literal or raw string literal, or a wide version of any of these (e.g. std::wstring, wchar_t\*). +A `std::string`, `char*`, string literal or raw string literal, or a wide version of any of these (for example, `std::wstring`, `wchar_t*`). *`delimiter`*\ A user-specified character, or wide character, to use as the delimiter for the beginning and end of the string. @@ -520,7 +540,6 @@ int main( int argc, char* argv[] ) ``` ```Output - default display d1 = 1.23457 d2 = 12.3457 @@ -629,4 +648,4 @@ l5 = 65536 ## See also -[``](../standard-library/iomanip.md) +[``](../standard-library/iomanip.md) \ No newline at end of file diff --git a/docs/standard-library/reference-wrapper-class.md b/docs/standard-library/reference-wrapper-class.md index cc8a6047f8a..3c864dbd272 100644 --- a/docs/standard-library/reference-wrapper-class.md +++ b/docs/standard-library/reference-wrapper-class.md @@ -61,7 +61,7 @@ The helper functions [std::ref](functional-functions.md#ref) and [std::cref](fun |Name|Description| |-|-| -|[operator Ty&](#op_ty_amp)|Gets a pointer to the wrapped reference.| +|[`operator Ty&`](#op_ty_amp)|Gets a pointer to the wrapped reference.| |[operator()](#op_call)|Calls the wrapped reference.| ## get @@ -103,7 +103,7 @@ rwi = 1 i = -1 ``` -## operator Ty& +## operator Ty& Gets the wrapped reference. diff --git a/docs/standard-library/valarray-class.md b/docs/standard-library/valarray-class.md index 6d47e97ee3c..f336a47c1f9 100644 --- a/docs/standard-library/valarray-class.md +++ b/docs/standard-library/valarray-class.md @@ -480,7 +480,7 @@ The remainders from the element-by-element division is the valarray: ( 0 -3 4 -7 1 -3 ). ``` -## operator&= +## operator&= Obtains the bitwise **AND** of elements in an array either with the corresponding elements in a specified valarray or with a value of the element type. diff --git a/docs/standard-library/valarray-operators.md b/docs/standard-library/valarray-operators.md index ee4cf5aef40..296ad897937 100644 --- a/docs/standard-library/valarray-operators.md +++ b/docs/standard-library/valarray-operators.md @@ -2,9 +2,9 @@ description: "Learn more about: <valarray> operators" title: "<valarray> operators" ms.date: "03/27/2019" -f1_keywords: ["valarray/std::operator!=", "valarray/std::operator%", "valarray/std::operator&", "valarray/std::operator&&", "valarray/std::operator>", "valarray/std::operator>>", "valarray/std::operator>=", "valarray/std::operator<", "valarray/std::operator<<", "valarray/std::operator<=", "valarray/std::operator*", "valarray/std::operator+", "valarray/std::operator-", "valarray/std::operator/", "valarray/std::operator==", "valarray/std::operator^", "valarray/std::operator|", "valarray/std::operator||"] +f1_keywords: ["valarray/std::operator!=", "valarray/std::operator%", "valarray/std::operator&", "valarray/std::operator&&", "valarray/std::operator>", "valarray/std::operator>>", "valarray/std::operator>=", "valarray/std::operator<", "valarray/std::operator<<", "valarray/std::operator<=", "valarray/std::operator*", "valarray/std::operator+", "valarray/std::operator-", "valarray/std::operator/", "valarray/std::operator==", "valarray/std::operator^", "valarray/std::operator|", "valarray/std::operator||"] ms.assetid: 8a53562c-90ab-4eb3-85d3-ada5259d90b0 -helpviewer_keywords: ["std::operator!= (valarray), std::operator& (valarray)", "std::operator&& (valarray)", "std::operator> (valarray)", "std::operator>> (valarray)", "std::operator>= (valarray)", "std::operator< (valarray)", "std::operator<< (valarray)", "std::operator<= (valarray), std::operator== (valarray)"] +helpviewer_keywords: ["std::operator!= (valarray), std::operator& (valarray)", "std::operator&& (valarray)", "std::operator> (valarray)", "std::operator>> (valarray)", "std::operator>= (valarray)", "std::operator< (valarray)", "std::operator<< (valarray)", "std::operator<= (valarray), std::operator== (valarray)"] --- # <valarray> operators @@ -190,7 +190,7 @@ The remainders from the element-by-element division is the valarray: ( 0 -3 4 -7 1 -3 ). ``` -## operator& +## operator& Obtains the bitwise **AND** between corresponding elements of two equally sized valarrays or between a valarray and a specified value of the element type. @@ -281,7 +281,7 @@ The element-by-element result of the bitwise operator & is the valarray: ( 0 0 0 0 0 4 0 0 0 8 ). ``` -## operator&& +## operator&& Obtains the logical **AND** between corresponding elements of two equally sized valarrays or between a valarray and a specified value of the valarray's element type.