diff --git a/.acrolinx-config.edn b/.acrolinx-config.edn
index f6076b5196..78cdd0e4df 100644
--- a/.acrolinx-config.edn
+++ b/.acrolinx-config.edn
@@ -21,7 +21,7 @@
 "
 **More info about Acrolinx**
 
-- [Install Acrolinx locally for VSCode](https://review.docs.microsoft.com/en-us/help/contribute/contribute-acrolinx-vscode)
+- [Install Acrolinx locally for VS Code](https://review.docs.microsoft.com/en-us/help/contribute/contribute-acrolinx-vscode)
 - [Report false positives or issues](https://aka.ms/acrolinxbug)
 
 "}
diff --git a/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md b/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md
deleted file mode 100644
index d6a22e7b7e..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-name: 'New C++ 2017 STL library documentation topic'
-about: Create a C++ 2017 doc tracking work item
-title: ''
-labels: C++17, STL doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a feature area in the ISO C++17 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.}
-
-ISO paper or location in the standard for this feature: {insert link or section here}
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md b/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md
deleted file mode 100644
index 189349bd9a..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-name: 'New C++ 2020 STL library documentation topic'
-about: Create a C++ 2020 doc tracking work item
-title: ''
-labels: C++20, STL doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a feature area in the ISO C++20 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.}
-
-ISO paper or location in the standard for this feature: {insert link or section here}
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md b/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md
deleted file mode 100644
index 7231cf6266..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-name: 'New C++ 2023 STL library documentation topic'
-about: Create an issue to track C++ 2023 STL doc work
-title: ''
-labels: C++23, STL doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a feature area proposed for the ISO C++23 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.}
-
-ISO paper or location in the standard for this feature: {insert link or section here}
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md b/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md
deleted file mode 100644
index 35de11091d..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-name: 'New C++ STL library documentation topic'
-about: Create a C++ doc tracking work item
-title: ''
-labels: STL doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a feature area in the ISO C++ standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the tracking issue or PR in the [Microsoft/STL](https://github.com/microsoft/STL/pulls) repo that implements the feature area. If relevant, include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.}
-
-[Microsoft/STL](https://github.com/microsoft/STL/pulls) PR, ISO paper or location in the standard for this feature: {insert link or section here}
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md b/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md
deleted file mode 100644
index b27ff51d56..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-name: 'New C++20 compiler documentation topic'
-about: Create a C++ doc tracking work item
-title: ''
-labels: C++20, Standard doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a compiler feature area in the ISO C++20 standard. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.}
-
-ISO paper or location in the standard for this feature: {insert link or section here}
-
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md b/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md
deleted file mode 100644
index 7f86f82da5..0000000000
--- a/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-name: 'New C++23 compiler documentation topic'
-about: Create a C++ doc tracking work item
-title: ''
-labels: C++23, Standard doc work
-assignees: ''
----
-{Use this template to request **new** documentation to cover a compiler feature area in the ISO C++23 standard. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use.
-
-If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.}
-
-ISO paper or location in the standard for this feature: {insert link or section here}
-
-First implemented in: {VS 20YY major.minor}
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 0000000000..75dc5da1e0
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,118 @@
+When writing documentation, follow these guidelines:
+
+## General style tips
+
+* Get to the point fast. Be concise and clear.
+* Talk like a person.
+* Simpler is better.
+* Be brief. Give customers just enough information to make decisions confidently. Prune excess words.
+* Break up long sentences.
+* Follow the style of the [Microsoft Writing Style Guide](https://learn.microsoft.com/style-guide/welcome/). If there's a conflict between the following guidelines and the Microsoft Writing Style Guide, ask how to resolve it.
+
+## Grammar
+
+* Use present tense verbs (is, open) instead of past tense (was, opened). For example, "The method returns a value" instead of "The method will return a value."
+* Write factual statements and direct commands. Avoid hypotheticals.
+* Use active voice where the subject performs the action.
+* Write in second person (you) to speak directly to readers.
+* Use gender-neutral language.
+* Avoid multiple -ing words that could create ambiguity.
+* Keep prepositional phrases simple and clear.
+* Place modifiers close to what they modify.
+* Use a conversational tone with contractions.
+* Don't use "we" or "our" to refer to the authors of the documentation.
+* Use the imperative mood for instructions. For example, "Call the method" instead of "You should call the method."
+* Use "might" instead of "may" to indicate possibility. For example, "This method might throw an exception" instead of "This method may throw an exception."
+* Use the Oxford comma in lists of three or more items.
+
+## Capitalization
+
+* Use sentence-style capitalization for everything except proper nouns.
+* Always capitalize proper nouns.
+* Don’t capitalize the spelled-out form of an acronym unless it's a proper noun.
+* Use title-style capitalization for product and service names.
+* Don't use all uppercase for emphasis.
+
+## Numbers
+
+* Spell out numbers for zero through nine, unless space is limited. Use numerals for 10 and above.
+* Spell out numbers at the beginning of a sentence.
+* Spell out ordinal numbers such as first, second, and third. Don't add -ly to form adverbs from ordinal numbers.
+* Number ordered list items all as "1." instead of "1.", "2.", etc. Use bullets for unordered lists.
+
+## Punctuation
+
+* Use short, simple sentences.
+* End all sentences with a period.
+* Use one space after punctuation marks.
+* After a colon, capitalize only proper nouns.
+* Avoid semicolons - use separate sentences instead.
+* Use question marks sparingly.
+* Don't use slashes (/) - use "or" instead.
+
+## Text formatting
+
+* UI elements, like menu items, dialog names, and names of text boxes, should be in **bold** text.
+* Use `code style` for:
+    * Code elements, like method names, property names, and language keywords.
+    * SQL commands.
+    * NuGet package names.
+    * Command-line commands.
+    * Database table and column names.
+    * Resource names (like virtual machine names) that shouldn't be localized.
+    * URLs that you don't want to be selectable.
+    * File names and folders, custom types, and other text that should never be localized.
+* For code placeholders, if you want users to replace part of an input string with their own values, use angle brackets (less than < and greater than > characters) on that placeholder text.
+
+## Headings
+
+* Headings should be in sentence case, not title case. Don't use gerunds in titles.
+* Don't apply an inline style like italic, or bold to headings. But do use inline code style for headings that are code elements, like method names or property names.
+
+## Alerts
+
+* Alerts are a Markdown extension to create block quotes that render with colors and icons that indicate the significance of the content. The following alert types are supported:
+
+    * `[!NOTE]` Information the user should notice even if skimming.
+    * `[!TIP]` Optional information to help a user be more successful.
+    * `[!IMPORTANT]` Essential information required for user success.
+    * `[!CAUTION]` Negative potential consequences of an action.
+    * `[!WARNING]` Dangerous certain consequences of an action.
+
+## Adding links
+
+* Add links to related topics and resources where appropriate. 
+* Links to other documentation articles should be relative, not absolute. Start relative links with `/docs/` and include the `.md` suffix. If you add a link to another page on learn.microsoft.com that's not in this repo, remove https://learn.microsoft.com/en-us from the link.
+* Links to bookmarks within the same article should be relative and start with `#`.
+* Link descriptions should be descriptive and make sense on their own. Don't use "click here" or "this link" or "here".
+* When you are going to refer to another file or an article on the web, use this format: "For more information, see [descriptive name of link](link path)." The exception to this is the See Also links at the end of an article. Those should be markdown links and contain the title of the article you link to as the descriptive portion of the link.
+
+## Adding new files
+
+* If you add a new Markdown file, it should be named in all lowercase with hyphens separating words. Also, omit any filler words such as "the" or "a" from the file name.
+* If you're adding a new Markdown file, the following indicates where it should go the folder structure. If you aren't sure, ask.
+    If the new file is about Linux, put it in the docs/linux folder.
+    If the new file is about the C++ Standard Template Library (STL), put it in the docs/standard-library folder.
+    If the new file is about the C runtime, put it in the docs/c-runtime-library folder.
+    If the new file is about the C++ language, put it in the docs/cpp folder.
+    If the new file is about a C++ feature specific to the Visual Studio IDE, put it in the docs/ide folder.
+    If the new file is about the build process or modules, put it in the docs/build\reference folder.
+    If the new file is about Build Insights, put it in the docs/build-insights folder.
+
+## Images
+
+* Use images only when they add value.
+* Images have a descriptive and meaningful alt text that starts with "Screenshot showing" and ends with ".".
+* Videos have a descriptive and meaningful alt text or title that starts with "Video showing" and ends with ".".
+
+## Numbered steps
+
+* Write complete sentences with capitalization and periods
+* Use imperative verbs
+* Clearly indicate where actions take place (UI location)
+* For single steps, use a bullet instead of a number
+* When allowed, use angle brackets for menu sequences (File > Open)
+
+## Terminology
+
+* Use "Select" instead of "Click" for UI elements like buttons, menu items, links, dropdowns, and checkboxes.
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 50628e8f13..10b0192bf5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@ _themes.MSDN.Modern/
 _themes.VS.Modern/
 
 # Ignore local configuration changes
-.github/
+#.github/
 .openpublishing.buildcore.ps1
 .vscode/
 
diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json
index 5d83ccf79d..296bfe4f38 100644
--- a/.openpublishing.publish.config.json
+++ b/.openpublishing.publish.config.json
@@ -25,14 +25,11 @@
     }
   ],
   "notification_subscribers": [],
-  "sync_notification_subscribers": null,
+  "sync_notification_subscribers": [],
   "branches_to_filter": [],
   "git_repository_url_open_to_public_contributors": "https://github.com/MicrosoftDocs/cpp-docs",
   "git_repository_branch_open_to_public_contributors": "main",
-  "skip_source_output_uploading": false,
   "need_preview_pull_request": true,
-  "enable_incremental_build": true,
-  "contribution_branch_mappings": null,
   "dependent_repositories": [
     {
       "path_to_root": "_themes",
@@ -57,15 +54,16 @@
       "Pdf"
     ]
   },
-  "need_generate_pdf_url_template": true,
   "targets": {
     "Pdf": {
       "template_folder": "_themes.pdf"
     }
   },
+  "docs_build_engine": {},
+  "skip_source_output_uploading": false,
+  "enable_incremental_build": true,
+  "contribution_branch_mappings": null,
+  "need_generate_pdf_url_template": true,
   "need_generate_pdf": false,
-  "need_generate_intellisense": false,
-  "docs_build_engine": {
-    "name": "docfx_v3"
-  }
-}
+  "need_generate_intellisense": false
+}
\ No newline at end of file
diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json
index 5080a1951e..dc66331425 100644
--- a/.openpublishing.redirection.json
+++ b/.openpublishing.redirection.json
@@ -21,7 +21,7 @@
       "redirect_document_id": true
     },
     {
-      "source_path": "docs/supported-platforms-visual-cpp.md.md",
+      "source_path": "docs/supported-platforms-visual-cpp.md",
       "redirect_url": "/cpp/overview/supported-platforms-visual-cpp",
       "redirect_document_id": true
     },
@@ -7436,7 +7436,7 @@
       "redirect_document_id": false
     },
     {
-      "source_path": "docs/dotnet/how-to-enumerate-data-types-in-assemblies-using-reflection-cpp-cli.md.md",
+      "source_path": "docs/dotnet/how-to-enumerate-data-types-in-assemblies-using-reflection-cpp-cli.md",
       "redirect_url": "/cpp/dotnet/reflection-cpp-cli#enumerate",
       "redirect_document_id": false
     },
@@ -13752,13 +13752,18 @@
     },
     {
       "source_path": "docs/c-runtime-library/operator-delete-crt.md",
-      "redirect_url": "docs/c-runtime-library/delete-operator-crt",
+      "redirect_url": "/cpp/c-runtime-library/delete-operator-crt",
       "redirect_document_id": false
     },
     {
       "source_path": "docs/c-runtime-library/operator-new-crt.md",
-      "redirect_url": "docs/c-runtime-library/new-operator-crt",
+      "redirect_url": "/cpp/c-runtime-library/new-operator-crt",
+      "redirect_document_id": false
+    },
+    {
+      "source_path": "docs/overview/whats-new-cpp-docs.md",
+      "redirect_url": "../../cpp/overview/what-s-new-for-visual-cpp-in-visual-studio",
       "redirect_document_id": false
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index e2a4e7c444..816a2293bf 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
-# Visual Studio documentation for Microsoft C++
+# Microsoft C++, C, and Assembler documentation
 
-Welcome! This repository contains source files for the work-in-progress Microsoft C++ (MSVC or Visual C++) technical documentation. The articles are published on the [C++ in Visual Studio documentation site](https://learn.microsoft.com/cpp).
+Welcome! This repository contains source files for the technical documentation published on [https://learn.microsoft.com/cpp](https://learn.microsoft.com/cpp).
 
-The documentation for Visual Basic and Visual C# are located in a separate repository at [https://github.com/dotnet/core-docs](https://github.com/dotnet/core-docs), and the Visual Studio documentation is located in the repository located at [https://github.com/Microsoft/visualstudio-docs](https://github.com/Microsoft/visualstudio-docs).
+The documentation for [.NET](https://github.com/dotnet/docs) and [Visual Studio](https://github.com/MicrosoftDocs/visualstudio-docs) are located in separate repositories.
 
 ## Contributing to the documentation
 
 We welcome your contributions to help us improve the MSVC docs. For a comprehensive guide to contributing, see the [Microsoft Docs contributor guide](https://learn.microsoft.com/contribute). For details on how to make a contribution to the MSVC documentation, see our [Contributing guidance](CONTRIBUTING.md).
 
-Several feature areas of MSVC have their own folders in this repository, such as `standard-library` for articles on the C++ Standard Library, `ide` for C++-specific articles on the Visual Studio interactive development environment (IDE), and so forth. The `/media` subfolder in each folder contains art files for the articles. The [Contributing guide](CONTRIBUTING.md) has more information.
+Several feature areas of MSVC have their own folders in this repository, such as `standard-library` for articles on the C++ Standard Library, `ide` for C++-specific articles on the Visual Studio integrated development environment (IDE), and so forth. The `/media` subfolder in each folder contains art files for the articles. The [Contributing guide](CONTRIBUTING.md) has more information.
 
 ## Microsoft Open Source Code of Conduct
 
diff --git a/docs/assembler/inline/accessing-c-or-cpp-data-in-asm-blocks.md b/docs/assembler/inline/accessing-c-or-cpp-data-in-asm-blocks.md
index c2018570a2..8dab8e0883 100644
--- a/docs/assembler/inline/accessing-c-or-cpp-data-in-asm-blocks.md
+++ b/docs/assembler/inline/accessing-c-or-cpp-data-in-asm-blocks.md
@@ -4,6 +4,7 @@ title: "Accessing C or C++ Data in __asm Blocks"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["data members [C++], in __asm blocks", "data access [C++], in __asm blocks", "__asm keyword [C++], data members", "structure types in __asm blocks"]
 ms.assetid: e99f5a28-0381-4090-8ece-6af8f2436a49
+ms.topic: concept-article
 ---
 # Accessing C or C++ Data in __asm Blocks
 
diff --git a/docs/assembler/inline/asm.md b/docs/assembler/inline/asm.md
index 0aa4253ef7..0ad5df365a 100644
--- a/docs/assembler/inline/asm.md
+++ b/docs/assembler/inline/asm.md
@@ -5,6 +5,7 @@ ms.date: "10/09/2018"
 f1_keywords: ["__asm", "_asm", "__asm_cpp"]
 helpviewer_keywords: ["__asm keyword [C++], vs. asm blocks", "__asm keyword [C++]"]
 ms.assetid: 77ff3bc9-a492-4b5e-85e1-fa4e414e79cd
+ms.topic: reference
 ---
 # `__asm`
 
diff --git a/docs/assembler/inline/calling-c-functions-in-inline-assembly.md b/docs/assembler/inline/calling-c-functions-in-inline-assembly.md
index 151a29d5a5..74bf5c40de 100644
--- a/docs/assembler/inline/calling-c-functions-in-inline-assembly.md
+++ b/docs/assembler/inline/calling-c-functions-in-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Calling C Functions in Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["function calls, C functions", "function calls, in inline assembly", "functions [C], calling in inline assembly", "Visual C, functions", "inline assembly, calling functions", "__asm keyword [C++], calling functions"]
 ms.assetid: f8a8d568-d175-4e23-9b24-36ef60a4cab3
+ms.topic: concept-article
 ---
 # Calling C Functions in Inline Assembly
 
diff --git a/docs/assembler/inline/calling-cpp-functions-in-inline-assembly.md b/docs/assembler/inline/calling-cpp-functions-in-inline-assembly.md
index 4189da24ae..11c2763e43 100644
--- a/docs/assembler/inline/calling-cpp-functions-in-inline-assembly.md
+++ b/docs/assembler/inline/calling-cpp-functions-in-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Calling C++ Functions in Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["functions [C++], calling in inline assembly", "function calls, C++ functions", "function calls, in inline assembly", "Visual C++, functions", "inline assembly, calling functions", "__asm keyword [C++], calling functions"]
 ms.assetid: 1f0d1eb3-54cf-45d5-838d-958188616b38
+ms.topic: concept-article
 ---
 # Calling C++ Functions in Inline Assembly
 
diff --git a/docs/assembler/inline/debugging-and-listings-for-inline-assembly.md b/docs/assembler/inline/debugging-and-listings-for-inline-assembly.md
index 5ad6409390..dbe6f30b37 100644
--- a/docs/assembler/inline/debugging-and-listings-for-inline-assembly.md
+++ b/docs/assembler/inline/debugging-and-listings-for-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Debugging and Listings for Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["source level debugger", "__asm keyword [C++], debugging", "inline assembly, listings", "bugs, __asm blocks", "debugging [C++], inline assembly code", "inline assembly, debugging"]
 ms.assetid: 69266930-6f9a-433d-b704-f4f44e7b2583
+ms.topic: concept-article
 ---
 # Debugging and Listings for Inline Assembly
 
diff --git a/docs/assembler/inline/defining-asm-blocks-as-c-macros.md b/docs/assembler/inline/defining-asm-blocks-as-c-macros.md
index 0a5d4df127..ebea4aa8da 100644
--- a/docs/assembler/inline/defining-asm-blocks-as-c-macros.md
+++ b/docs/assembler/inline/defining-asm-blocks-as-c-macros.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Defining __asm Blocks as C Macros"
 title: "Defining __asm Blocks as C Macros"
-ms.date: "08/30/2018"
+description: "Learn more about: Defining __asm Blocks as C Macros"
+ms.date: 08/30/2018
 helpviewer_keywords: ["macros, __asm blocks", "Visual C, macros", "__asm keyword [C++], as C macros"]
-ms.assetid: 677ba11c-21c8-4609-bba7-cd47312243b0
+ms.topic: concept-article
 ---
 # Defining __asm Blocks as C Macros
 
@@ -15,7 +15,7 @@ C macros offer a convenient way to insert assembly code into your source code, b
 
 - Put the **`__asm`** keyword in front of each assembly instruction.
 
-- Use old-style C comments ( `/* comment */`) instead of assembly-style comments ( `; comment`) or single-line C comments ( `// comment`).
+- Use old-style C comments (`/* comment */`) instead of assembly-style comments (`; comment`) or single-line C comments (`// comment`).
 
 To illustrate, the following example defines a simple macro:
 
@@ -39,7 +39,7 @@ The third and fourth **`__asm`** keywords are needed as statement separators. Th
 
 The braces are essential as well. If you omit them, the compiler can be confused by C or C++ statements on the same line to the right of the macro invocation. Without the closing brace, the compiler cannot tell where assembly code stops, and it sees C or C++ statements after the **`__asm`** block as assembly instructions.
 
-Assembly-style comments that start with a semicolon (**;**) continue to the end of the line. This causes problems in macros because the compiler ignores everything after the comment, all the way to the end of the logical line. The same is true of single-line C or C++ comments ( `// comment`). To prevent errors, use old-style C comments ( `/* comment */`) in **`__asm`** blocks defined as macros.
+Assembly-style comments that start with a semicolon (**;**) continue to the end of the line. This causes problems in macros because the compiler ignores everything after the comment, all the way to the end of the logical line. The same is true of single-line C or C++ comments (`// comment`). To prevent errors, use old-style C comments (`/* comment */`) in **`__asm`** blocks defined as macros.
 
 An **`__asm`** block written as a C macro can take arguments. Unlike an ordinary C macro, however, an **`__asm`** macro cannot return a value. So you cannot use such macros in C or C++ expressions.
 
diff --git a/docs/assembler/inline/emit-pseudoinstruction.md b/docs/assembler/inline/emit-pseudoinstruction.md
index 201c775fd0..b736701ca0 100644
--- a/docs/assembler/inline/emit-pseudoinstruction.md
+++ b/docs/assembler/inline/emit-pseudoinstruction.md
@@ -5,6 +5,7 @@ ms.date: "08/30/2018"
 f1_keywords: ["_emit"]
 helpviewer_keywords: ["byte defining (inline assembly)", "_emit pseudoinstruction"]
 ms.assetid: 004c48f3-364c-4e82-9a51-e326f9cc7b2b
+ms.topic: reference
 ---
 # _emit Pseudoinstruction
 
diff --git a/docs/assembler/inline/inline-assembler-overview.md b/docs/assembler/inline/inline-assembler-overview.md
index 2514176148..3b97cd7043 100644
--- a/docs/assembler/inline/inline-assembler-overview.md
+++ b/docs/assembler/inline/inline-assembler-overview.md
@@ -4,6 +4,7 @@ title: "Inline Assembler Overview"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["inline assembler", "__asm keyword [C++], invoking inline assembler", "invoking inline assembler", "inline assembly, inline assembler"]
 ms.assetid: d990331a-0e33-4760-8d7a-b720b0288335
+ms.topic: concept-article
 ---
 # Inline Assembler Overview
 
diff --git a/docs/assembler/inline/jumping-to-labels-in-inline-assembly.md b/docs/assembler/inline/jumping-to-labels-in-inline-assembly.md
index 0146414b36..6952971966 100644
--- a/docs/assembler/inline/jumping-to-labels-in-inline-assembly.md
+++ b/docs/assembler/inline/jumping-to-labels-in-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Jumping to Labels in Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["inline assembly, jumping to labels", "labels, in inline assembly", "__asm keyword [C++], labels", "case sensitivity, labels in inline assembly", "labels, in __asm blocks", "jumping to labels in inline assembly"]
 ms.assetid: 36c18b97-8981-4631-9dfd-af6c14a04297
+ms.topic: concept-article
 ---
 # Jumping to Labels in Inline Assembly
 
diff --git a/docs/assembler/inline/optimizing-inline-assembly.md b/docs/assembler/inline/optimizing-inline-assembly.md
index 726c242a52..7330cf7156 100644
--- a/docs/assembler/inline/optimizing-inline-assembly.md
+++ b/docs/assembler/inline/optimizing-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Optimizing Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["storage, optimizing in inline assembly", "optimization, inline assembly", "inline assembly, optimizing", "optimizing performance, inline assembly", "__asm keyword [C++], optimizing"]
 ms.assetid: 52a7ec83-9782-4d96-94c1-53bb2ac9e8c8
+ms.topic: concept-article
 ---
 # Optimizing Inline Assembly
 
diff --git a/docs/assembler/inline/using-and-preserving-registers-in-inline-assembly.md b/docs/assembler/inline/using-and-preserving-registers-in-inline-assembly.md
index 30dae26e22..b488b9fc60 100644
--- a/docs/assembler/inline/using-and-preserving-registers-in-inline-assembly.md
+++ b/docs/assembler/inline/using-and-preserving-registers-in-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Using and Preserving Registers in Inline Assembly"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["__asm keyword [C++], register values", "inline assembly, registers", "registers, inline assembly", "preserving registers"]
 ms.assetid: dbcd7360-6f3e-4b22-9ee2-9f65ca6f2543
+ms.topic: concept-article
 ---
 # Using and Preserving Registers in Inline Assembly
 
diff --git a/docs/assembler/inline/using-assembly-language-in-asm-blocks.md b/docs/assembler/inline/using-assembly-language-in-asm-blocks.md
index 2e80f37951..c2a33f53b5 100644
--- a/docs/assembler/inline/using-assembly-language-in-asm-blocks.md
+++ b/docs/assembler/inline/using-assembly-language-in-asm-blocks.md
@@ -4,6 +4,7 @@ title: "Using Assembly Language in __asm Blocks"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["assembly language [C++], features", "assembly language [C++]", "__asm keyword [C++], assembly language in"]
 ms.assetid: ad699356-1d16-4984-871f-c5fd7797c1fb
+ms.topic: concept-article
 ---
 # Using Assembly Language in __asm Blocks
 
diff --git a/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md b/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
index 60fbff3548..0a56b28c8f 100644
--- a/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
+++ b/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
@@ -4,6 +4,7 @@ title: "Using C or C++ in __asm Blocks"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["inline assembly, mixing instructions with C/C++ statements", "symbols, in __asm blocks", "macros, __asm blocks", "preprocessor directives, used in __asm blocks", "type names, used in __asm blocks", "preprocessor directives", "preprocessor, directives", "constants, in __asm blocks", "comments, in __asm blocks", "typedef names, used in __asm blocks", "__asm keyword [C++], C/C++ elements in"]
 ms.assetid: ae8b2b52-6b75-42e3-ac0c-ad02d922ed97
+ms.topic: concept-article
 ---
 # Using C or C++ in __asm Blocks
 
diff --git a/docs/assembler/inline/using-c-or-cpp-symbols-in-asm-blocks.md b/docs/assembler/inline/using-c-or-cpp-symbols-in-asm-blocks.md
index 7b4602352c..8dc38e5868 100644
--- a/docs/assembler/inline/using-c-or-cpp-symbols-in-asm-blocks.md
+++ b/docs/assembler/inline/using-c-or-cpp-symbols-in-asm-blocks.md
@@ -4,6 +4,7 @@ title: "Using C or C++ Symbols in __asm Blocks"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["__asm keyword [C++], syntax", "symbols, in __asm blocks", "Visual C, symbols in __asm blocks", "__asm keyword [C++], C/C++ elements in", "Visual C++, in __asm blocks"]
 ms.assetid: 0758ffdc-dfe9-41c8-a5e1-fd395bcac328
+ms.topic: concept-article
 ---
 # Using C or C++ Symbols in __asm Blocks
 
diff --git a/docs/assembler/inline/using-operators-in-asm-blocks.md b/docs/assembler/inline/using-operators-in-asm-blocks.md
index dbda9a8fd3..b629032f99 100644
--- a/docs/assembler/inline/using-operators-in-asm-blocks.md
+++ b/docs/assembler/inline/using-operators-in-asm-blocks.md
@@ -4,6 +4,7 @@ title: "Using Operators in __asm Blocks"
 ms.date: "08/30/2018"
 helpviewer_keywords: ["brackets [ ]", "brackets [ ], __asm blocks", "__asm keyword [C++], operators", "square brackets [ ], __asm blocks", "operators [C++], using in __asm blocks", "square brackets [ ]"]
 ms.assetid: a26ccfd4-40ae-4a61-952f-c417982aa8dd
+ms.topic: concept-article
 ---
 # Using Operators in __asm Blocks
 
diff --git a/docs/assembler/inline/writing-functions-with-inline-assembly.md b/docs/assembler/inline/writing-functions-with-inline-assembly.md
index 65e852819f..d1082cff37 100644
--- a/docs/assembler/inline/writing-functions-with-inline-assembly.md
+++ b/docs/assembler/inline/writing-functions-with-inline-assembly.md
@@ -4,6 +4,7 @@ title: "Writing functions with inline assembly"
 ms.date: 02/11/2022
 helpviewer_keywords: ["functions [C++], inline assembly", "inline assembly [C++], writing functions", "assembler [C++], writing functions", "__asm keyword [C++], in functions"]
 ms.assetid: b5df8a04-fdc7-4622-8c9e-e4b618927497
+ms.topic: concept-article
 ---
 # Writing functions with inline assembly
 
diff --git a/docs/assembler/masm/dot-code.md b/docs/assembler/masm/dot-code.md
index 0a87ecdd4c..9bf447e91b 100644
--- a/docs/assembler/masm/dot-code.md
+++ b/docs/assembler/masm/dot-code.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: .CODE"
 title: ".CODE"
+description: "Learn more about: .CODE"
 ms.date: "12/17/2019"
 f1_keywords: [".CODE"]
 helpviewer_keywords: [".CODE directive"]
-ms.assetid: 2b8c882c-c0d2-4fa3-8335-e6b12717a4f4
 ---
 # .CODE
 
@@ -16,7 +15,7 @@ When using 32-bit MASM, this should be used along with [.MODEL](dot-model.md).
 
 > **.CODE** ⟦*name*⟧\
 > ⟦ *segmentItem* ⟧...\
-> ⟦ *codesegmentnameId* **ENDS**;;⟧\
+> ⟦ *codesegmentnameId* **ENDS**;;⟧
 
 ### Parameters
 
diff --git a/docs/assembler/masm/dot-fpo.md b/docs/assembler/masm/dot-fpo.md
index 0e523fb9bf..7c70aab623 100644
--- a/docs/assembler/masm/dot-fpo.md
+++ b/docs/assembler/masm/dot-fpo.md
@@ -4,35 +4,34 @@ title: ".FPO"
 ms.date: "11/05/2019"
 f1_keywords: [".FPO"]
 helpviewer_keywords: [".FPO directive"]
-ms.assetid: 35f4cd61-32f9-4262-b657-73f04f775d09
 ---
 # .FPO (32-bit MASM)
 
-The **.FPO** directive controls the emission of debug records to the .debug$F segment or section. (32-bit MASM only.)
+The `.FPO` directive controls the emission of debug records to the `.debug$F` segment or section. Use this directive with 32-bit MASM only.
 
 ## Syntax
 
-> **.FPO** (*cdwLocals*, *cdwParams*, *cbProlog*, *cbRegs*, *fUseBP*, *cbFrame*)
+> `.FPO` (*`cdwLocals`*, *`cdwParams`*, *`cbProlog`*, *`cbRegs`*, *`fUseBP`*, *`cbFrame`*)
 
 ### Parameters
 
-*cdwLocals*\
-Number of local variables, an unsigned 32 bit value.
+*`cdwLocals`*\
+Number of local variables, an unsigned 32-bit value.
 
-*cdwParams*\
-Size of the parameters in DWORDS, an unsigned 16 bit value.
+*`cdwParams`*\
+Size of the parameters in DWORDS, an unsigned 16-bit value.
 
-*cbProlog*\
-Number of bytes in the function prolog code, an unsigned 8 bit value.
+*`cbProlog`*\
+Number of bytes in the function prolog code, an unsigned 8-bit value.
 
-*cbRegs*\
+*`cbRegs`*\
 Number registers saved.
 
-*fUseBP*\
-Indicates whether the EBP register has been allocated. either 0 or 1.
+*`fUseBP`*\
+Indicates whether the EBP register is allocated. Use either 0 or 1.
 
-*cbFrame*\
-Indicates the frame type.  See [FPO_DATA](/windows/win32/api/winnt/ns-winnt-fpo_data) for more information.
+*`cbFrame`*\
+Indicates the frame type. For more information, see [`FPO_DATA`](/windows/win32/api/winnt/ns-winnt-fpo_data).
 
 ## See also
 
diff --git a/docs/assembler/masm/dot-nolistif.md b/docs/assembler/masm/dot-nolistif.md
index bb4996f2ad..37703a53fb 100644
--- a/docs/assembler/masm/dot-nolistif.md
+++ b/docs/assembler/masm/dot-nolistif.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: .NOLISTIF"
 title: ".NOLISTIF"
+description: "Learn more about: .NOLISTIF"
 ms.date: "12/16/2019"
 f1_keywords: [".NOLISTIF"]
 helpviewer_keywords: [".NOLISTIF directive"]
-ms.assetid: 9243af7a-7221-4531-bbc3-281b6b292bfd
 ---
 # .NOLISTIF
 
@@ -20,5 +19,5 @@ This is the default. Same as [.SFCOND](dot-sfcond.md).
 
 ## See also
 
-[Directives reference](directives-reference.md)
+[Directives reference](directives-reference.md)\
 [MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/extern-masm.md b/docs/assembler/masm/extern-masm.md
index 910e02df03..d261390d68 100644
--- a/docs/assembler/masm/extern-masm.md
+++ b/docs/assembler/masm/extern-masm.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: EXTERN"
+description: "Learn more about the MASM directive: EXTERN"
 title: "EXTERN (MASM)"
-ms.date: "12/06/2019"
+ms.date: 1/10/2025
 helpviewer_keywords: ["EXTERN directive"]
-ms.assetid: 667d703d-3aaf-4139-a586-29bc5dab1aff
 ---
 # EXTERN
 
@@ -17,9 +16,9 @@ Defines one or more external variables, labels, or symbols called *name* whose t
 
 The *language-type* argument is valid in 32-bit MASM only.
 
-The *type* can be [ABS](operator-abs.md), which imports *name* as a constant. Same as [EXTRN](extrn.md).
+The *type* can be [`ABS`](operator-abs.md), which imports *name* as a constant. Same as [`EXTRN`](extrn.md).
 
-The *type* can also be PROC, in which case *name* is treated as an external procedure.
+The *type* can also be [`PROC`](proc.md), in which case *name* is treated as an external procedure.
 
 ## See also
 
diff --git a/docs/assembler/masm/masm-for-x64-ml64-exe.md b/docs/assembler/masm/masm-for-x64-ml64-exe.md
index 95c7e53149..840b002083 100644
--- a/docs/assembler/masm/masm-for-x64-ml64-exe.md
+++ b/docs/assembler/masm/masm-for-x64-ml64-exe.md
@@ -3,11 +3,10 @@ description: "Learn more about: Microsoft Macro Assembler (MASM) for x64 (ml64.e
 title: "MASM for x64 (ml64.exe)"
 ms.date: 09/21/2021
 helpviewer_keywords: ["ml64", "ml64.exe", "masm for x64"]
-ms.assetid: 89059103-f372-4968-80ea-0c7f90bb9c91
 ---
 # MASM for x64 (ml64.exe)
 
-Visual Studio includes both 32-bit and 64-bit hosted versions of MASM (the Microsoft Macro Assembler) to target x64 code. Named ml64.exe, it's the assembler that accepts x64 assembler language. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. The MASM tools aren't available as a separate download. For instructions on how to download and install a copy of Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). If you only want the command-line tools, not the full IDE, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).
+Visual Studio includes both 32-bit and 64-bit hosted versions of MASM (the Microsoft Macro Assembler) to target x64 code. Named ml64.exe, it's the assembler that accepts x64 assembly language. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. The MASM tools aren't available as a separate download. For instructions on how to download and install a copy of Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). If you only want the command-line tools, not the full IDE, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).
 
 To use ml64.exe on the command line, start a developer command prompt for x64 targets. A developer command prompt sets the required path and other environment variables. For information on how to start a developer command prompt, see [Build C/C++ code on the command line](../../build/building-on-the-command-line.md).
 
diff --git a/docs/assembler/masm/mmword.md b/docs/assembler/masm/mmword.md
index 563ae8e444..98ca862949 100644
--- a/docs/assembler/masm/mmword.md
+++ b/docs/assembler/masm/mmword.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: MMWORD"
 title: "MMWORD"
-ms.date: "12/17/2019"
+description: "Learn more about: MMWORD"
+ms.date: 12/17/2019
 f1_keywords: ["MMWORD"]
 helpviewer_keywords: ["MMWORD directive"]
-ms.assetid: b4c5a104-9078-4fb4-afc3-d1e63abe562a
 ---
 # MMWORD
 
@@ -32,6 +31,6 @@ While both instructions work on 64-bit operands, **QWORD** is the type for 64-bi
     movq     mm0, mmword ptr [ebx]
 ```
 
-## See Also
+## See also
 
 [MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/option-avxencoding-masm.md b/docs/assembler/masm/option-avxencoding-masm.md
index c019dc5f8c..806b205a3b 100644
--- a/docs/assembler/masm/option-avxencoding-masm.md
+++ b/docs/assembler/masm/option-avxencoding-masm.md
@@ -1,9 +1,9 @@
 ---
 title: "OPTION AVXENCODING"
+description: Describes how to select the preferred encoding of AVX instructions when more than one possibility will work
 ms.date: "10/06/2020"
 f1_keywords: ["avxencoding"]
 helpviewer_keywords: ["OPTION AVXENCODING directive"]
-description: Describes how to select the preferred encoding of AVX instructions when more than one possibility will work
 ---
 # OPTION AVXENCODING
 
@@ -47,7 +47,7 @@ The **`OPTION AVXENCODING`** directive is available in Visual Studio 2019 versio
 
 ### Example
 
-This example uses `VPDPBUSD` and `VPMADDWD` instructions to illustrate how the **`AVXENCODING`** option works. `VPDPBUSD` was first defined to be encoded only with `EVEX`, and was later extended with a VEX-encoded form for platforms without AVX-512 support, while `VPMADDWD` was AVX and extended to AVX-512. The listing output from assembling the example shows how changing the **`AVXENCODING`** mode affects the object code generated for each instruction. The prefix for each instruction ends at the '/".
+This example uses `VPDPBUSD` and `VPMADDWD` instructions to illustrate how the **`AVXENCODING`** option works. `VPDPBUSD` was first defined to be encoded only with `EVEX`, and was later extended with a VEX-encoded form for platforms without AVX-512 support, while `VPMADDWD` was AVX and extended to AVX-512. The listing output from assembling the example shows how changing the **`AVXENCODING`** mode affects the object code generated for each instruction. The prefix for each instruction ends at the "/".
 
 ```asm
  00000000  62 F2 6D 08/ 50        vpdpbusd xmm1, xmm2, xmm3
diff --git a/docs/assembler/masm/purge.md b/docs/assembler/masm/purge.md
index 2e19584edd..9051b7fae9 100644
--- a/docs/assembler/masm/purge.md
+++ b/docs/assembler/masm/purge.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: PURGE"
 title: "PURGE"
+description: "Learn more about: PURGE"
 ms.date: "12/16/2019"
 f1_keywords: ["PURGE"]
 helpviewer_keywords: ["PURGE directive"]
-ms.assetid: 1e7ec2bf-f123-4ff9-97de-28b512ade2f9
 ---
 # PURGE
 
@@ -16,5 +15,5 @@ Deletes the specified macros from memory.
 
 ## See also
 
-[Directives reference](directives-reference.md)
+[Directives reference](directives-reference.md)\
 [MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/subttl.md b/docs/assembler/masm/subttl.md
index b59e41f224..a119b8eb14 100644
--- a/docs/assembler/masm/subttl.md
+++ b/docs/assembler/masm/subttl.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: SUBTTL"
 title: "SUBTTL"
+description: "Learn more about: SUBTTL"
 ms.date: "12/16/2019"
 f1_keywords: ["SUBTTL"]
 helpviewer_keywords: ["SUBTTL directive"]
-ms.assetid: 927efadd-ec99-4de9-b64d-229bb2df3bf4
 ---
 # SUBTTL
 
@@ -16,5 +15,5 @@ See [SUBTITLE](subtitle.md).
 
 ## See also
 
-[Directives reference](directives-reference.md)
+[Directives reference](directives-reference.md)\
 [MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/xmmword.md b/docs/assembler/masm/xmmword.md
index 3722fd23f4..9e4ef7c064 100644
--- a/docs/assembler/masm/xmmword.md
+++ b/docs/assembler/masm/xmmword.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: XMMWORD"
 title: "XMMWORD"
-ms.date: "12/17/2019"
+description: "Learn more about: XMMWORD"
+ms.date: 12/17/2019
 f1_keywords: ["XMMWORD"]
 helpviewer_keywords: ["XMMWORD directive"]
-ms.assetid: 18026d32-5cab-403e-ad7e-382fb41aa9b8
 ---
 # XMMWORD
 
@@ -24,6 +23,6 @@ Used for 128-bit multimedia operands with MMX and SSE (XMM) instructions.
     movdqa   xmm0, xmmword ptr [ebx]
 ```
 
-## See Also
+## See also
 
 [MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/atl-mfc-shared/atl-mfc-shared-classes.md b/docs/atl-mfc-shared/atl-mfc-shared-classes.md
index 4a0a3edbac..564d03df38 100644
--- a/docs/atl-mfc-shared/atl-mfc-shared-classes.md
+++ b/docs/atl-mfc-shared/atl-mfc-shared-classes.md
@@ -3,7 +3,7 @@ description: "Learn more about: ATL/MFC Shared Classes"
 title: "ATL-MFC Shared Classes"
 ms.custom: "index-page"
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["vc.classes.shared"]
 helpviewer_keywords: ["CPoint class, shared class", "CFileTimeSpan class, shared class", "COleDateTime class, shared class", "CFixedStringT class, shared class", "CStrBufT class, shared class", "CFileTime class, shared class", "CRect class, shared class", "CSimpleStringT class, shared class", "CStringT class, shared class", "CSize class, shared class", "CStringData class, shared class", "IAtlStringMgr class, shared class", "shared classes, MFC and ATL", "COleDateTimeSpan class, shared class", "CString objects, shared class", "shared classes"]
 ms.assetid: e13aaac3-21ec-4f4d-8834-432b40fde544
diff --git a/docs/atl-mfc-shared/basic-cstring-operations.md b/docs/atl-mfc-shared/basic-cstring-operations.md
index 41926fe05b..047bd978b2 100644
--- a/docs/atl-mfc-shared/basic-cstring-operations.md
+++ b/docs/atl-mfc-shared/basic-cstring-operations.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Basic CString Operations"
 title: "Basic CString Operations"
-ms.date: "11/04/2016"
+description: "Learn more about: Basic CString Operations"
+ms.date: 11/04/2016
 helpviewer_keywords: ["CString objects, basic operations", "string literals, CString operations", "literal strings, CString operations", "CString objects", "string comparison, CString operations", "characters, accessing in CStrings"]
-ms.assetid: 41db66b2-9427-4bb3-845a-9b6869159a6c
 ---
 # Basic CString Operations
 
@@ -19,7 +18,7 @@ This topic explains the following basic [CString](../atl-mfc-shared/reference/cs
 
 - [Converting CString objects](#_core_converting_cstring_objects)
 
-`Class CString` is based on class template [CStringT Class](../atl-mfc-shared/reference/cstringt-class.md). `CString` is a **`typedef`** of `CStringT`. More exactly, `CString` is a **`typedef`** of an *explicit specialization* of `CStringT`, which is a common way to use a class template to define a class. Similarly defined classes are `CStringA` and `CStringW`.
+`Class CString` is based on class template [`CStringT`](../atl-mfc-shared/reference/cstringt-class.md). `CString` is a **`typedef`** of `CStringT`. More exactly, `CString` is a **`typedef`** of an *explicit specialization* of `CStringT`, which is a common way to use a class template to define a class. Similarly defined classes are `CStringA` and `CStringW`.
 
 `CString`, `CStringA`, and `CStringW` are defined in atlstr.h. `CStringT` is defined in cstringt.h.
 
diff --git a/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_39.cpp b/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_39.cpp
index d2b2eb6cf3..8886e69d9f 100644
--- a/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_39.cpp
+++ b/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_39.cpp
@@ -8,4 +8,4 @@
    {
       _tprintf_s(_T("Resulting token: %s\n"), resToken);
       resToken = str.Tokenize(_T("% #"), curPos);
-   };   
\ No newline at end of file
+   }
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/reference/cimage-class.md b/docs/atl-mfc-shared/reference/cimage-class.md
index 0dd7899250..d355d0f27a 100644
--- a/docs/atl-mfc-shared/reference/cimage-class.md
+++ b/docs/atl-mfc-shared/reference/cimage-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CImage Class"
 title: "CImage Class"
-ms.date: "08/19/2019"
+description: "Learn more about: CImage Class"
+ms.date: 08/19/2019
 f1_keywords: ["CImage", "ATLIMAGE/ATL::CImage", "ATLIMAGE/ATL::CImage::CImage", "ATLIMAGE/ATL::CImage::AlphaBlend", "ATLIMAGE/ATL::CImage::Attach", "ATLIMAGE/ATL::CImage::BitBlt", "ATLIMAGE/ATL::CImage::Create", "ATLIMAGE/ATL::CImage::CreateEx", "ATLIMAGE/ATL::CImage::Destroy", "ATLIMAGE/ATL::CImage::Detach", "ATLIMAGE/ATL::CImage::Draw", "ATLIMAGE/ATL::CImage::GetBits", "ATLIMAGE/ATL::CImage::GetBPP", "ATLIMAGE/ATL::CImage::GetColorTable", "ATLIMAGE/ATL::CImage::GetDC", "ATLIMAGE/ATL::CImage::GetExporterFilterString", "ATLIMAGE/ATL::CImage::GetHeight", "ATLIMAGE/ATL::CImage::GetImporterFilterString", "ATLIMAGE/ATL::CImage::GetMaxColorTableEntries", "ATLIMAGE/ATL::CImage::GetPitch", "ATLIMAGE/ATL::CImage::GetPixel", "ATLIMAGE/ATL::CImage::GetPixelAddress", "ATLIMAGE/ATL::CImage::GetTransparentColor", "ATLIMAGE/ATL::CImage::GetWidth", "ATLIMAGE/ATL::CImage::IsDIBSection", "ATLIMAGE/ATL::CImage::IsIndexed", "ATLIMAGE/ATL::CImage::IsNull", "ATLIMAGE/ATL::CImage::IsTransparencySupported", "ATLIMAGE/ATL::CImage::Load", "ATLIMAGE/ATL::CImage::LoadFromResource", "ATLIMAGE/ATL::CImage::MaskBlt", "ATLIMAGE/ATL::CImage::PlgBlt", "ATLIMAGE/ATL::CImage::ReleaseDC", "ATLIMAGE/ATL::CImage::ReleaseGDIPlus", "ATLIMAGE/ATL::CImage::Save", "ATLIMAGE/ATL::CImage::SetColorTable", "ATLIMAGE/ATL::CImage::SetPixel", "ATLIMAGE/ATL::CImage::SetPixelIndexed", "ATLIMAGE/ATL::CImage::SetPixelRGB", "ATLIMAGE/ATL::CImage::SetTransparentColor", "ATLIMAGE/ATL::CImage::StretchBlt", "ATLIMAGE/ATL::CImage::TransparentBlt"]
 helpviewer_keywords: ["jpeg files", "bitmaps [C++], ATL and MFC support for", "images [C++], ATL and MFC support for", "gif files, ATL and MFC support", ".gif files, ATL and MFC support", "PNG files, ATL and MFC support", "CImage class", "transparent color"]
-ms.assetid: 52861e3d-bf7e-481f-a240-90e88f76c490
 ---
 # `CImage` Class
 
@@ -745,7 +744,7 @@ static HRESULT GetImporterFilterString(
 A reference to a `CSimpleString` object. See **Remarks** for more information.
 
 *`aguidFileTypes`*<br/>
-An array of GUIDs, with each element corresponding to one of the file types in the string. In the example in *`pszAllFilesDescription`* below, *`aguidFileTypes[0]*` is `GUID_NULL` with the remaining array values are the image file formats supported by the current operating system.
+An array of GUIDs, with each element corresponding to one of the file types in the string. In the example in *`pszAllFilesDescription`* below, *`aguidFileTypes[0]`* is `GUID_NULL` with the remaining array values are the image file formats supported by the current operating system.
 
 > [!NOTE]
 > For a complete list of constants, see **Image File Format Constants** in the Windows SDK.
diff --git a/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp b/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp
index 69b8fc155d..9c7f028ed7 100644
--- a/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp
+++ b/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp
@@ -1,7 +1,7 @@
 void CMyClass::OnFileOpen()
 {
    // szFilters is a text string that includes two file name filters:
-   // "*.my" for "MyType Files" and "*.*' for "All Files."
+   // "*.my" for "MyType Files" and "*.*" for "All Files."
    TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");
 
    // Create an Open dialog; the default file name extension is ".my".
diff --git a/docs/atl-mfc-shared/reference/coledatetime-class.md b/docs/atl-mfc-shared/reference/coledatetime-class.md
index b92a1c4353..5da193d9b9 100644
--- a/docs/atl-mfc-shared/reference/coledatetime-class.md
+++ b/docs/atl-mfc-shared/reference/coledatetime-class.md
@@ -1,10 +1,9 @@
 ---
 title: "COleDateTime Class"
 description: "API reference for the MFC COleDateTime class which Encapsulates the `DATE` data type used in OLE automation."
-ms.date: "08/27/2020"
+ms.date: 08/27/2020
 f1_keywords: ["COleDateTime", "ATLCOMTIME/ATL::COleDateTime", "ATLCOMTIME/ATL::COleDateTime::COleDateTime", "ATLCOMTIME/ATL::COleDateTime::Format", "ATLCOMTIME/ATL::COleDateTime::GetAsDBTIMESTAMP", "ATLCOMTIME/ATL::COleDateTime::GetAsSystemTime", "ATLCOMTIME/ATL::COleDateTime::GetAsUDATE", "ATLCOMTIME/ATL::COleDateTime::GetCurrentTime", "ATLCOMTIME/ATL::COleDateTime::GetDay", "ATLCOMTIME/ATL::COleDateTime::GetDayOfWeek", "ATLCOMTIME/ATL::COleDateTime::GetDayOfYear", "ATLCOMTIME/ATL::COleDateTime::GetHour", "ATLCOMTIME/ATL::COleDateTime::GetMinute", "ATLCOMTIME/ATL::COleDateTime::GetMonth", "ATLCOMTIME/ATL::COleDateTime::GetSecond", "ATLCOMTIME/ATL::COleDateTime::GetStatus", "ATLCOMTIME/ATL::COleDateTime::GetYear", "ATLCOMTIME/ATL::COleDateTime::ParseDateTime", "ATLCOMTIME/ATL::COleDateTime::SetDate", "ATLCOMTIME/ATL::COleDateTime::SetDateTime", "ATLCOMTIME/ATL::COleDateTime::SetStatus", "ATLCOMTIME/ATL::COleDateTime::SetTime", "ATLCOMTIME/ATL::COleDateTime::m_dt", "ATLCOMTIME/ATL::COleDateTime::m_status"]
 helpviewer_keywords: ["shared classes, COleDateTime", "time-only values", "Date data type, MFC encapsulation of", "COleDateTime class", "dates, handling in MFC", "time, handling in MFC"]
-ms.assetid: e718f294-16ec-4649-88b6-a4dbae5178fb
 ---
 # COleDateTime Class
 
@@ -211,7 +210,7 @@ Following is a brief description of each constructor:
 
 - `COleDateTime(` `dateSrc` **)** Constructs a `COleDateTime` object from an existing `COleDateTime` object.
 
-- `COleDateTime(` *varSrc* **)** Constructs a `COleDateTime` object. Attempts to convert a `VARIANT` structure or [COleVariant](../../mfc/reference/colevariant-class.md) object to a date/time ( `VT_DATE`) value. If this conversion is successful, the converted value is copied into the new `COleDateTime` object. If it is not, the value of the `COleDateTime` object is set to 0 (midnight, 30 December 1899) and its status to invalid.
+- `COleDateTime(` *varSrc* **)** Constructs a `COleDateTime` object. Attempts to convert a `VARIANT` structure or [COleVariant](../../mfc/reference/colevariant-class.md) object to a date/time (`VT_DATE`) value. If this conversion is successful, the converted value is copied into the new `COleDateTime` object. If it is not, the value of the `COleDateTime` object is set to 0 (midnight, 30 December 1899) and its status to invalid.
 
 - `COleDateTime(` `dtSrc` **)** Constructs a `COleDateTime` object from a `DATE` value.
 
@@ -263,7 +262,7 @@ Indicates one of the following locale flags:
 Indicates locale ID to use for the conversion. For more information about language identifiers, see [Language Identifiers](/windows/win32/Intl/language-identifiers).
 
 *lpszFormat*<br/>
-A formatting string similar to the `printf` formatting string. Each formatting code, preceded by a percent ( `%`) sign, is replaced by the corresponding `COleDateTime` component. Other characters in the formatting string are copied unchanged to the returned string. For more information, see the run-time function [strftime](../../c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md). The value and meaning of the formatting codes for `Format` are:
+A formatting string similar to the `printf` formatting string. Each formatting code, preceded by a percent (`%`) sign, is replaced by the corresponding `COleDateTime` component. Other characters in the formatting string are copied unchanged to the returned string. For more information, see the run-time function [strftime](../../c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md). The value and meaning of the formatting codes for `Format` are:
 
 - `%H` Hours in the current day
 
diff --git a/docs/atl-mfc-shared/reference/crect-class.md b/docs/atl-mfc-shared/reference/crect-class.md
index d05e09be56..a213a9fcb6 100644
--- a/docs/atl-mfc-shared/reference/crect-class.md
+++ b/docs/atl-mfc-shared/reference/crect-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CRect Class"
 title: "CRect Class"
-ms.date: "11/06/2018"
+description: "Learn more about: CRect Class"
+ms.date: 11/06/2018
 f1_keywords: ["CRect", "ATLTYPES/ATL::CRect", "ATLTYPES/ATL::CRect::CRect", "ATLTYPES/ATL::CRect::BottomRight", "ATLTYPES/ATL::CRect::CenterPoint", "ATLTYPES/ATL::CRect::CopyRect", "ATLTYPES/ATL::CRect::DeflateRect", "ATLTYPES/ATL::CRect::EqualRect", "ATLTYPES/ATL::CRect::Height", "ATLTYPES/ATL::CRect::InflateRect", "ATLTYPES/ATL::CRect::IntersectRect", "ATLTYPES/ATL::CRect::IsRectEmpty", "ATLTYPES/ATL::CRect::IsRectNull", "ATLTYPES/ATL::CRect::MoveToX", "ATLTYPES/ATL::CRect::MoveToXY", "ATLTYPES/ATL::CRect::MoveToY", "ATLTYPES/ATL::CRect::NormalizeRect", "ATLTYPES/ATL::CRect::OffsetRect", "ATLTYPES/ATL::CRect::PtInRect", "ATLTYPES/ATL::CRect::SetRect", "ATLTYPES/ATL::CRect::SetRectEmpty", "ATLTYPES/ATL::CRect::Size", "ATLTYPES/ATL::CRect::SubtractRect", "ATLTYPES/ATL::CRect::TopLeft", "ATLTYPES/ATL::CRect::UnionRect", "ATLTYPES/ATL::CRect::Width"]
 helpviewer_keywords: ["LPCRECT data type", "CRect class", "LPRECT operator", "RECT structure"]
-ms.assetid: dee4e752-15d6-4db4-b68f-1ad65b2ed6ca
 ---
 # `CRect` Class
 
@@ -745,7 +744,9 @@ rect.OffsetRect(230, 230);
 ASSERT(rect == CRect(230, 230, 265, 265));
 ```
 
-## <a name="operator_lpcrect"></a> `CRect::operator LPCRECT` Converts a `CRect` to an [`LPCRECT`](../../mfc/reference/data-types-mfc.md).
+## <a name="operator_lpcrect"></a> `CRect::operator LPCRECT`
+
+Converts a `CRect` to an [`LPCRECT`](../../mfc/reference/data-types-mfc.md).
 
 ```cpp
 operator LPCRECT() const throw();
diff --git a/docs/atl-mfc-shared/reference/csimplestringt-class.md b/docs/atl-mfc-shared/reference/csimplestringt-class.md
index 6681333410..b62a850efa 100644
--- a/docs/atl-mfc-shared/reference/csimplestringt-class.md
+++ b/docs/atl-mfc-shared/reference/csimplestringt-class.md
@@ -716,28 +716,6 @@ CSimpleString s(_T("abc"), pMgr);
 ASSERT(s[1] == _T('b'));
 ```
 
-## <a name="operator_at"></a> `CSimpleStringT::operator []`
-
-Call this function to access a single character of the character array.
-
-### Syntax
-
-```cpp
-XCHAR operator[](int iChar) const;
-```
-
-### Parameters
-
-*`iChar`*<br/>
-Zero-based index of a character in the string.
-
-### Remarks
-
-The overloaded subscript (**`[]`**) operator returns a single character specified by the zero-based index in *`iChar`*. This operator is a convenient substitute for the [`GetAt`](#getat) member function.
-
-> [!NOTE]
-> You can use the subscript (**`[]`**) operator to get the value of a character in a `CSimpleStringT`, but you cannot use it to change the value of a character in a `CSimpleStringT`.
-
 ## <a name="operator_add_eq"></a> `CSimpleStringT::operator +=`
 
 Joins a new string or character to the end of an existing string.
diff --git a/docs/atl-mfc-shared/reference/csize-class.md b/docs/atl-mfc-shared/reference/csize-class.md
index c6fc7033fd..f398b5055d 100644
--- a/docs/atl-mfc-shared/reference/csize-class.md
+++ b/docs/atl-mfc-shared/reference/csize-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CSize Class"
 title: "CSize Class"
-ms.date: "10/18/2018"
+description: "Learn more about: CSize Class"
+ms.date: 10/18/2018
 f1_keywords: ["CSize", "ATLTYPES/ATL::CSize", "ATLTYPES/ATL::CSize::CSize"]
 helpviewer_keywords: ["SIZE", "dimensions, MFC", "dimensions", "CSize class"]
-ms.assetid: fb2cf85a-0bc1-46f8-892b-309c108b52ae
 ---
 # CSize Class
 
@@ -101,7 +100,7 @@ BOOL operator==(SIZE size) const throw();
 
 ### Remarks
 
-Returns nonzero if the sizes are equal, otherwize 0.
+Returns nonzero if the sizes are equal, otherwise 0.
 
 ### Example
 
diff --git a/docs/atl-mfc-shared/reference/cstringt-class.md b/docs/atl-mfc-shared/reference/cstringt-class.md
index ffff1211a4..a47c9ad9a6 100644
--- a/docs/atl-mfc-shared/reference/cstringt-class.md
+++ b/docs/atl-mfc-shared/reference/cstringt-class.md
@@ -486,11 +486,11 @@ A handle for a **`CStringT`** object.
 
 Because the constructors copy the input data into new allocated storage, memory exceptions may result. Some of these constructors act as conversion functions. This allows you to substitute, for example, an **`LPTSTR`** where a **`CStringT`** object is expected.
 
-- **`CStringT`**( `LPCSTR` `lpsz` ): Constructs a Unicode **`CStringT`** from an ANSI string. You can also use this constructor to load a string resource as shown in the example below.
+- **`CStringT`**(`LPCSTR` `lpsz`): Constructs a Unicode **`CStringT`** from an ANSI string. You can also use this constructor to load a string resource as shown in the example below.
 
-- `CStringT(` `LPCWSTR` `lpsz` ): Constructs a **`CStringT`** from a Unicode string.
+- **`CStringT`**(`LPCWSTR` `lpsz`): Constructs a **`CStringT`** from a Unicode string.
 
-- **`CStringT`**( `const unsigned char*` `psz` ): Allows you to construct a **`CStringT`** from a pointer to **`unsigned char`**.
+- **`CStringT`**(`const unsigned char*` `psz`): Allows you to construct a **`CStringT`** from a pointer to **`unsigned char`**.
 
 > [!NOTE]
 > Define the `_CSTRING_DISABLE_NARROW_WIDE_CONVERSION` macro to turn off implicit string conversion between ANSI and Unicode strings. The macro excludes from compilation constructors that support conversion.
@@ -998,11 +998,11 @@ Concatenates two strings or a character and a string.
 ```cpp
 friend CStringT operator+(const CStringT& str1, const CStringT& str2);
 friend CStringT operator+(const CStringT& str1, PCXSTR psz2);
-friend CStringT operator+(PCXSTR psz1, const CStringT& str2,);
-friend CStringT operator+(char ch1, const CStringT& str2,);
+friend CStringT operator+(PCXSTR psz1, const CStringT& str2);
+friend CStringT operator+(char ch1, const CStringT& str2);
 friend CStringT operator+(const CStringT& str1, char ch2);
 friend CStringT operator+(const CStringT& str1, wchar_t ch2);
-friend CStringT operator+(wchar_t ch1, const CStringT& str2,);
+friend CStringT operator+(wchar_t ch1, const CStringT& str2);
 ```
 
 ### Parameters
@@ -1102,8 +1102,8 @@ friend bool operator==(const CStringT& str1, PCXSTR psz2) throw();
 friend bool operator==(const CStringT& str1, PCYSTR psz2) throw();
 friend bool operator==(const CStringT& str1, XCHAR ch2) throw();
 friend bool operator==(PCXSTR psz1, const CStringT& str2) throw();
-friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw();
-friend bool operator==(XCHAR ch1, const CStringT& str2,) throw();
+friend bool operator==(PCYSTR psz1, const CStringT& str2) throw();
+friend bool operator==(XCHAR ch1, const CStringT& str2) throw();
 ```
 
 ### Parameters
@@ -1144,8 +1144,8 @@ friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw();
 friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw();
 friend bool operator!=(const CStringT& str1, XCHAR ch2) throw();
 friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw();
-friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw();
-friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw();
+friend bool operator!=(PCYSTR psz1, const CStringT& str2) throw();
+friend bool operator!=(XCHAR ch1, const CStringT& str2) throw();
 ```
 
 ### Parameters
diff --git a/docs/atl/active-template-library-atl-concepts.md b/docs/atl/active-template-library-atl-concepts.md
index bf9f677b9a..cda405159a 100644
--- a/docs/atl/active-template-library-atl-concepts.md
+++ b/docs/atl/active-template-library-atl-concepts.md
@@ -4,6 +4,7 @@ title: "Active Template Library (ATL) Concepts"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["ATL, about ATL"]
 ms.assetid: a3960991-4d76-4da5-9568-3fa7fde53ff4
+ms.topic: concept-article
 ---
 # Active Template Library (ATL) Concepts
 
diff --git a/docs/atl/active-template-library-atl-tutorial.md b/docs/atl/active-template-library-atl-tutorial.md
index 52c536ff96..2a9841ea00 100644
--- a/docs/atl/active-template-library-atl-tutorial.md
+++ b/docs/atl/active-template-library-atl-tutorial.md
@@ -5,6 +5,7 @@ ms.custom: "get-started-article"
 ms.date: "05/03/2019"
 helpviewer_keywords: ["ATL projects, tutorials", "controls [ATL], tutorials", "ATL tutorial", "tutorials [ATL]", "ATL, tutorials"]
 ms.assetid: f921a121-09c8-4812-9317-e15b2f1471fa
+ms.topic: tutorial
 ---
 # Active Template Library (ATL) Tutorial
 
diff --git a/docs/atl/adding-a-control-atl-tutorial-part-2.md b/docs/atl/adding-a-control-atl-tutorial-part-2.md
index 64913399d1..668cb2039f 100644
--- a/docs/atl/adding-a-control-atl-tutorial-part-2.md
+++ b/docs/atl/adding-a-control-atl-tutorial-part-2.md
@@ -4,6 +4,7 @@ title: "Adding a Control (ATL Tutorial, Part 2)"
 ms.custom: "get-started-article"
 ms.date: "08/19/2019"
 ms.assetid: c9575a75-1064-41f1-9697-7aada560c669
+ms.topic: tutorial
 ---
 # Adding a Control (ATL Tutorial, Part 2)
 
diff --git a/docs/atl/adding-a-property-page-atl-tutorial-part-6.md b/docs/atl/adding-a-property-page-atl-tutorial-part-6.md
index 77ab6f873a..394d9aff8d 100644
--- a/docs/atl/adding-a-property-page-atl-tutorial-part-6.md
+++ b/docs/atl/adding-a-property-page-atl-tutorial-part-6.md
@@ -4,6 +4,7 @@ title: "Adding a Property Page (ATL Tutorial, Part 6)"
 ms.custom: "get-started-article"
 ms.date: "09/27/2018"
 ms.assetid: df80d255-e7ea-49d9-b940-3f012e90cf9b
+ms.topic: tutorial
 ---
 # Adding a Property Page (ATL Tutorial, Part 6)
 
diff --git a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
index eae5f195dd..839a2653ed 100644
--- a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
+++ b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
@@ -4,6 +4,7 @@ title: "Adding a Property to the Control (ATL Tutorial, Part 3)"
 ms.custom: "get-started-article"
 ms.date: "09/26/2018"
 ms.assetid: f775fe34-103b-4f07-9999-400e987ee030
+ms.topic: tutorial
 ---
 # Adding a Property to the Control (ATL Tutorial, Part 3)
 
diff --git a/docs/atl/adding-an-atl-message-handler.md b/docs/atl/adding-an-atl-message-handler.md
index e7dd253299..ee2243126a 100644
--- a/docs/atl/adding-an-atl-message-handler.md
+++ b/docs/atl/adding-an-atl-message-handler.md
@@ -4,6 +4,7 @@ title: "Adding an ATL Message Handler"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["message handlers [C++]", "ATL, windows", "message handling [C++], ATL message handler", "windows [C++], ATL", "ATL, message handlers"]
 ms.assetid: cdea38a1-0d9b-4f8d-bbd5-b4f063fb3eeb
+ms.topic: concept-article
 ---
 # Adding an ATL Message Handler
 
diff --git a/docs/atl/adding-an-event-atl-tutorial-part-5.md b/docs/atl/adding-an-event-atl-tutorial-part-5.md
index 18306b8df0..48d9ef8f01 100644
--- a/docs/atl/adding-an-event-atl-tutorial-part-5.md
+++ b/docs/atl/adding-an-event-atl-tutorial-part-5.md
@@ -4,6 +4,7 @@ title: "Adding an Event (ATL Tutorial, Part 5)"
 ms.custom: "get-started-article"
 ms.date: "09/27/2018"
 ms.assetid: 2de12022-3148-4ce3-8606-8a9d4274f0e9
+ms.topic: tutorial
 ---
 # Adding an Event (ATL Tutorial, Part 5)
 
diff --git a/docs/atl/adding-connection-points-to-an-object.md b/docs/atl/adding-connection-points-to-an-object.md
index 671460f394..d2564c44cd 100644
--- a/docs/atl/adding-connection-points-to-an-object.md
+++ b/docs/atl/adding-connection-points-to-an-object.md
@@ -1,58 +1,55 @@
 ---
-description: "Learn more about: Adding Connection Points to an Object"
 title: "Adding Connection Points to an Object"
-ms.date: "11/04/2016"
+description: "Learn more about: Adding Connection Points to an Object"
+ms.date: 11/04/2016
 helpviewer_keywords: ["connection points [C++], adding to ATL objects", "Implement Connection Point ATL wizard"]
-ms.assetid: 843531be-4a36-4db0-9d54-e029b1a72a8b
+ms.topic: how-to
 ---
 # Adding Connection Points to an Object
 
-The [ATL Tutorial](../atl/active-template-library-atl-tutorial.md) demonstrates how to create a control with support for connection points, how to add events, and then how to implement the connection point. ATL implements connection points with the [IConnectionPointImpl](../atl/reference/iconnectionpointimpl-class.md) class.
+The [ATL Tutorial](active-template-library-atl-tutorial.md) demonstrates how to create a control with support for connection points, how to add events, and then how to implement the connection point. ATL implements connection points with the [`IConnectionPointImpl`](reference/iconnectionpointimpl-class.md) class.
 
 To implement a connection point, you have two choices:
 
 - Implement your own outgoing event source, by adding a connection point to the control or object.
-
 - Reuse a connection point interface defined in another type library.
 
-In either case, the Implement Connection Point Wizard uses a type library to do its work.
+In either case, the **Implement Connection Point Wizard** uses a type library to do its work.
 
-### To add a connection point to a control or object
+### Add a connection point to a control or object
 
-1. Define a dispinterface in the library block of the .idl file. If you enabled support for connection points when you created the control with the ATL Control Wizard, the dispinterface will already be created. If you did not enable support for connection points when you created the control, you must manually add a dispinterface to the .idl file. The following is an example of a dispinterface. Outgoing interfaces are not required to be dispatch interfaces but many scripting languages such as VBScript and JScript require this, so this example uses two dispinterfaces:
+1. Define a dispinterface in the library block of the `.idl` file. If you enabled support for connection points when you created the control with the **ATL Control Wizard**, the dispinterface will already be created. If you did not enable support for connection points when you created the control, you must manually add a dispinterface to the `.idl` file. The following is an example of a dispinterface. Outgoing interfaces are not required to be dispatch interfaces but many scripting languages such as VBScript and JScript require this, so this example uses two dispinterfaces:
 
-   [!code-cpp[NVC_ATL_Windowing#81](../atl/codesnippet/cpp/adding-connection-points-to-an-object_1.idl)]
+   [!code-cpp[NVC_ATL_Windowing#81](codesnippet/cpp/adding-connection-points-to-an-object_1.idl)]
 
-   Use either the uuidgen.exe or guidgen.exe utility to generate a GUID.
+   Use either the `uuidgen.exe` or `guidgen.exe` utility to generate a GUID.
 
-2. Add the dispinterface as the `[default,source]` interface in the coclass for the object in the project's .idl file. Again, if you enabled support for connection points when you created the control, the ATL Control Wizard will create the `[default,source`] entry. To manually add this entry, add the line in bold:
+2. Add the dispinterface as the `[default,source]` interface in the coclass for the object in the project's `.idl` file. Again, if you enabled support for connection points when you created the control, the ATL Control Wizard will create the `[default,source]` entry. To manually add this entry, add the line in bold:
 
-   [!code-cpp[NVC_ATL_Windowing#82](../atl/codesnippet/cpp/adding-connection-points-to-an-object_2.idl)]
+   [!code-cpp[NVC_ATL_Windowing#82](codesnippet/cpp/adding-connection-points-to-an-object_2.idl)]
 
-   See the .idl file in the [Circ](../overview/visual-cpp-samples.md) ATL sample for an example.
+   See the `.idl` file in the [Circ](../overview/visual-cpp-samples.md) ATL sample for an example.
 
-3. Use Class View to add methods and properties to the event interface. Right-click the class in Class View, point to **Add** on the shortcut menu, and click **Add Connection Point**.
+3. Use **Class View** to add methods and properties to the event interface. Right-click the class in **Class View**, point to **Add** on the shortcut menu, and select **Add Connection Point**.
 
-4. In the **Source Interfaces** list box of the Implement Connection Point Wizard, select **Project's interfaces**. If you choose an interface for your control and press **OK**, you will:
+4. In the **Source Interfaces** list box of the **Implement Connection Point Wizard**, select **Project's interfaces**. If you choose an interface for your control and select **OK**, you:
 
    - Generate a header file with an event proxy class that implements the code that will make the outgoing calls for the event.
-
    - Add an entry to the connection point map.
 
-   You will also see a list of all of the type libraries on your computer. You should only use one of these other type libraries to define your connection point if you want to implement the exact same outgoing interface found in another type library.
-
-### To reuse a connection point interface defined in another type library
+   You also see a list of all of the type libraries on your computer. Only use one of these other type libraries to define your connection point if you want to implement the exact same outgoing interface found in another type library.
 
-1. In Class View, right-click a class that implements a **BEGIN_COM_MAP** macro, point to **Add** on the shortcut menu, and click **Add Connection Point**.
+### Reuse a connection point interface defined in another type library
 
-2. In the Implement Connection Point Wizard, select a type library and an interface in the type library and click **Add**.
+1. In **Class View**, right-click a class that implements a `BEGIN_COM_MAP` macro, point at **Add** on the shortcut menu, and select **Add Connection Point**.
 
-3. Edit the .idl file to either:
+2. In the **Implement Connection Point Wizard**, select a type library and an interface in the type library and select **Add**.
 
-   - Copy the dispinterface from the .idl file for the object whose event-source is being used.
+3. Edit the `.idl` file to either:
 
+   - Copy the dispinterface from the `.idl` file for the object whose event-source is being used.
    - Use the **importlib** instruction on that type library.
 
 ## See also
 
-[Connection Point](../atl/atl-connection-points.md)
+[Connection Point](atl-connection-points.md)
diff --git a/docs/atl/adding-functionality-to-the-composite-control.md b/docs/atl/adding-functionality-to-the-composite-control.md
index 77ef261e3b..3576620945 100644
--- a/docs/atl/adding-functionality-to-the-composite-control.md
+++ b/docs/atl/adding-functionality-to-the-composite-control.md
@@ -4,6 +4,7 @@ title: "Adding Functionality to the Composite Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["event handlers [C++], ActiveX controls", "composite controls, handling events", "ActiveX controls [C++], events"]
 ms.assetid: 98f85681-9564-480d-af38-03f9733fe58b
+ms.topic: concept-article
 ---
 # Adding Functionality to the Composite Control
 
diff --git a/docs/atl/atl-class-overview.md b/docs/atl/atl-class-overview.md
index 5b02811805..98846a0de5 100644
--- a/docs/atl/atl-class-overview.md
+++ b/docs/atl/atl-class-overview.md
@@ -4,6 +4,7 @@ title: "ATL class overview"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["classes [C++], ATL", "ATL, class reference"]
 ms.assetid: c38ac93d-c3a2-4ce7-8153-f1d34c0f0fa6
+ms.topic: concept-article
 ---
 # ATL class overview
 
diff --git a/docs/atl/atl-collection-classes.md b/docs/atl/atl-collection-classes.md
index 7545e6d690..db96014d6f 100644
--- a/docs/atl/atl-collection-classes.md
+++ b/docs/atl/atl-collection-classes.md
@@ -4,6 +4,7 @@ title: "ATL collection class overview"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["DestructElements function", "collection classes, choosing", "ConstructElements function", "SerializeElements function", "traits classes", "collection classes, about collection classes", "CTraits classes", "collection classes"]
 ms.assetid: 4d619d46-5b4e-41dd-b9fd-e86b1fbc00b5
+ms.topic: concept-article
 ---
 # ATL Collection Classes
 
diff --git a/docs/atl/atl-utilities-reference.md b/docs/atl/atl-utilities-reference.md
index 1fe2da4303..d903e4dbab 100644
--- a/docs/atl/atl-utilities-reference.md
+++ b/docs/atl/atl-utilities-reference.md
@@ -1,8 +1,7 @@
 ---
-description: "Learn more about: ATL utilities reference"
 title: "ATL utilities reference"
-ms.date: "11/04/2016"
-ms.assetid: dd8a2888-34f4-461e-9bf4-834218f9b95b
+description: "Learn more about: ATL utilities reference"
+ms.date: 11/04/2016
 ---
 # ATL utilities reference
 
@@ -10,7 +9,7 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl
 
 ## Classes
 
-| &nbsp; | &nbsp; |
+| Name | Description |
 |--|--|
 | [CPathT class](../atl/reference/cpatht-class.md) | This class represents a path. |
 | [CDebugReportHook class](../atl/reference/cdebugreporthook-class.md) | Use this class to send debug reports to a named pipe. |
@@ -22,7 +21,7 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl
 
 ## Typedefs
 
-| &emsp; | &emsp; |
+| Name | Description |
 |--|--|
 | [CPath](../atl/reference/atl-typedefs.md#cpath) | A specialization of [CPathT](../atl/reference/cpatht-class.md) using `CString`. |
 | [CPathA](../atl/reference/atl-typedefs.md#cpatha) | A specialization of [CPathT](../atl/reference/cpatht-class.md) using `CStringA`. |
@@ -31,13 +30,13 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl
 
 ## Enums
 
-| &emsp; | &emsp; |
+| Name | Description |
 |--|--|
 | [ATL_URL_SCHEME](../atl/reference/atl-url-scheme-enum.md) | The members of this enumeration provide constants for the schemes understood by [CUrl](../atl/reference/curl-class.md). |
 
 ## Functions
 
-| &emsp; | &emsp; |
+| Name | Description |
 |--|--|
 | [AtlCanonicalizeUrl](../atl/reference/atl-http-utility-functions.md#atlcanonicalizeurl) | Call this function to canonicalize a URL, which includes converting unsafe characters and spaces into escape sequences. |
 | [AtlCombineUrl](../atl/reference/atl-http-utility-functions.md#atlcombineurl) | Call this function to combine a base URL and a relative URL into a single, canonical URL. |
@@ -47,8 +46,7 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl
 | [AtlIsUnsafeUrlChar](../atl/reference/atl-http-utility-functions.md#atlisunsafeurlchar) | Call this function to find out whether a character is safe for use in a URL. |
 | [AtlUnescapeUrl](../atl/reference/atl-http-utility-functions.md#atlunescapeurl) | Call this function to convert escaped characters back to their original values. |
 | [SystemTimeToHttpDate](../atl/reference/atl-http-utility-functions.md#systemtimetohttpdate) | Call this function to convert a system time to a string in a format suitable for using in HTTP headers. |
-| [ATLPath::AddBackslash](../atl/reference/atl-path-functions.md#addbackslash) | This function is an overloaded wrapper for [PathAddBackslash](/windows/desktop/api/shlwapi/nf-shlwapi-pathaddbackslasha |
-| ). |
+| [ATLPath::AddBackslash](../atl/reference/atl-path-functions.md#addbackslash) | This function is an overloaded wrapper for [PathAddBackslash](/windows/win32/api/shlwapi/nf-shlwapi-pathaddbackslasha). |
 | [ATLPath::AddExtension](../atl/reference/atl-path-functions.md#addextension) | This function is an overloaded wrapper for [PathAddExtension](/windows/win32/api/shlwapi/nf-shlwapi-pathaddextensionw). |
 | [ATLPath::Append](../atl/reference/atl-path-functions.md#append) | This function is an overloaded wrapper for [PathAppend](/windows/win32/api/shlwapi/nf-shlwapi-pathappendw). |
 | [ATLPath::BuildRoot](../atl/reference/atl-path-functions.md#buildroot) | This function is an overloaded wrapper for [PathBuildRoot](/windows/win32/api/shlwapi/nf-shlwapi-pathbuildrootw). |
@@ -87,5 +85,5 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl
 
 ## See also
 
-[Concepts](../atl/active-template-library-atl-concepts.md)<br/>
+[Concepts](../atl/active-template-library-atl-concepts.md)\
 [ATL COM desktop components](../atl/atl-com-desktop-components.md)
diff --git a/docs/atl/building-and-testing-the-atl-project.md b/docs/atl/building-and-testing-the-atl-project.md
index 9a5c30dd38..d5920c6e59 100644
--- a/docs/atl/building-and-testing-the-atl-project.md
+++ b/docs/atl/building-and-testing-the-atl-project.md
@@ -4,6 +4,7 @@ title: "Building and Testing the ATL Project"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["composite controls, building and testing the project", "composite controls, containers for"]
 ms.assetid: 5c1541f8-f6cb-4c22-bd22-c66bcfbaa077
+ms.topic: concept-article
 ---
 # Building and Testing the ATL Project
 
diff --git a/docs/atl/calling-cpp-code-from-dhtml.md b/docs/atl/calling-cpp-code-from-dhtml.md
index 64b57d32b4..a5d05fe09e 100644
--- a/docs/atl/calling-cpp-code-from-dhtml.md
+++ b/docs/atl/calling-cpp-code-from-dhtml.md
@@ -4,6 +4,7 @@ title: "Calling C++ Code from DHTML"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DHTML, calling C++ code from"]
 ms.assetid: 37329acd-4c22-40ca-a85a-b7480748f75f
+ms.topic: concept-article
 ---
 # Calling C++ Code from DHTML
 
diff --git a/docs/atl/changing-the-default-class-factory-and-aggregation-model.md b/docs/atl/changing-the-default-class-factory-and-aggregation-model.md
index 5cc79f13e5..78b9ca1c8a 100644
--- a/docs/atl/changing-the-default-class-factory-and-aggregation-model.md
+++ b/docs/atl/changing-the-default-class-factory-and-aggregation-model.md
@@ -4,6 +4,7 @@ title: "Changing the Default Class Factory and Aggregation Model"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CComClassFactory class, making the default", "aggregation [C++], using ATL", "aggregation [C++], aggregation models", "defaults [C++], aggregation model in ATL", "default class factory", "class factories, changing default", "CComCoClass class, default class factory and aggregation model", "default class factory, ATL", "defaults [C++], class factory"]
 ms.assetid: 6e040e95-0f38-4839-8a8b-c9800dd47e8c
+ms.topic: concept-article
 ---
 # Changing the Default Class Factory and Aggregation Model
 
diff --git a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
index ae8149664e..2ed4a960e6 100644
--- a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
+++ b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
@@ -5,6 +5,7 @@ ms.custom: "get-started-article"
 ms.date: "09/26/2018"
 helpviewer_keywords: ["_ATL_MIN_CRT macro"]
 ms.assetid: 08ff14e8-aa49-4139-a110-5d071939cf1e
+ms.topic: tutorial
 ---
 # Changing the Drawing Code (ATL Tutorial, Part 4)
 
diff --git a/docs/atl/codesnippet/CPP/atl-collection-classes_1.cpp b/docs/atl/codesnippet/CPP/atl-collection-classes_1.cpp
index 876ad2f58c..baa1deb220 100644
--- a/docs/atl/codesnippet/CPP/atl-collection-classes_1.cpp
+++ b/docs/atl/codesnippet/CPP/atl-collection-classes_1.cpp
@@ -29,7 +29,7 @@ class MyTraits : public CElementTraits< MyData >
          return true;
       else
          return false;
-   };
+   }
 };
 
 void DoAtlCustomTraitsList()
diff --git a/docs/atl/creating-an-aggregated-object.md b/docs/atl/creating-an-aggregated-object.md
index ea3e0cb8d6..f0bc8d88b2 100644
--- a/docs/atl/creating-an-aggregated-object.md
+++ b/docs/atl/creating-an-aggregated-object.md
@@ -4,6 +4,7 @@ title: "Creating an Aggregated Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["aggregation [C++], creating aggregated objects", "aggregate objects [C++], creating"]
 ms.assetid: fc29d7aa-fd53-4276-9c2f-37379f71b179
+ms.topic: how-to
 ---
 # Creating an Aggregated Object
 
diff --git a/docs/atl/creating-an-atl-dhtml-control.md b/docs/atl/creating-an-atl-dhtml-control.md
index 8a6d94f04e..1831d58d0b 100644
--- a/docs/atl/creating-an-atl-dhtml-control.md
+++ b/docs/atl/creating-an-atl-dhtml-control.md
@@ -4,6 +4,7 @@ title: "Creating an ATL DHTML Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HTML controls, creating", "DHTML controls", "DHTML controls, creating"]
 ms.assetid: 1d8f0ede-7d8b-4959-976e-b4d0e2a87f5a
+ms.topic: how-to
 ---
 # Creating an ATL DHTML Control
 
diff --git a/docs/atl/creating-registrar-scripts.md b/docs/atl/creating-registrar-scripts.md
index e4a6c99618..d9d281b53a 100644
--- a/docs/atl/creating-registrar-scripts.md
+++ b/docs/atl/creating-registrar-scripts.md
@@ -4,6 +4,7 @@ title: "Creating scripts for ATL Registrar"
 ms.date: "05/14/2014"
 helpviewer_keywords: ["scripting, registry scripting", "ATL, registry", "registrar scripts [ATL]", "scripts, Registrar scripts", "scripts, creating"]
 ms.assetid: cbd5024b-8061-4a71-be65-7fee90374a35
+ms.topic: concept-article
 ---
 # Creating Registrar scripts
 
diff --git a/docs/atl/creating-the-project-atl-tutorial-part-1.md b/docs/atl/creating-the-project-atl-tutorial-part-1.md
index 9326e91f39..b8a01fd225 100644
--- a/docs/atl/creating-the-project-atl-tutorial-part-1.md
+++ b/docs/atl/creating-the-project-atl-tutorial-part-1.md
@@ -4,6 +4,7 @@ title: "Creating the Project (ATL Tutorial, Part 1)"
 ms.custom: "get-started-article"
 ms.date: "08/19/2019"
 ms.assetid: f6b727d1-390a-4b27-b82f-daadcd9fc059
+ms.topic: tutorial
 ---
 # Creating the Project (ATL Tutorial, Part 1)
 
diff --git a/docs/atl/debugging-tips.md b/docs/atl/debugging-tips.md
index 986845b319..5fcdee636d 100644
--- a/docs/atl/debugging-tips.md
+++ b/docs/atl/debugging-tips.md
@@ -4,6 +4,7 @@ title: "Debugging Tips (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, debugging", "services, debugging"]
 ms.assetid: 48c60244-d0ce-4466-85fa-6fa65fcfe86c
+ms.topic: concept-article
 ---
 # Debugging Tips
 
diff --git a/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md b/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md
index 84783f4e5a..e75179b64e 100644
--- a/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md
+++ b/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md
@@ -4,6 +4,7 @@ title: "Designing Collection and Enumerator Interfaces (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["enumerator interfaces", "collection interfaces"]
 ms.assetid: ea19a39e-6333-41a1-be62-5435c236640e
+ms.topic: concept-article
 ---
 # Design Principles for Collection and Enumerator Interfaces
 
diff --git a/docs/atl/displaying-assertions.md b/docs/atl/displaying-assertions.md
index 8f1863b371..8587c3eb40 100644
--- a/docs/atl/displaying-assertions.md
+++ b/docs/atl/displaying-assertions.md
@@ -4,6 +4,7 @@ title: "Displaying Assertions"
 ms.date: "05/05/2019"
 helpviewer_keywords: ["debugging [ATL], displaying assertions", "assertions, displaying", "debugging assertions", "assertions, debugging"]
 ms.assetid: fa353fe8-4656-4384-a5d2-8866bc977f06
+ms.topic: concept-article
 ---
 # Displaying Assertions
 
diff --git a/docs/atl/example-implementing-a-property-page.md b/docs/atl/example-implementing-a-property-page.md
index c6e44f85f6..6e7ee66751 100644
--- a/docs/atl/example-implementing-a-property-page.md
+++ b/docs/atl/example-implementing-a-property-page.md
@@ -4,6 +4,7 @@ title: "Implementing a Property Page (ATL)"
 ms.date: "05/09/2019"
 helpviewer_keywords: ["property pages, implementing"]
 ms.assetid: c30b67fe-ce08-4249-ae29-f3060fa8d61e
+ms.topic: how-to
 ---
 # Example: Implementing a Property Page
 
diff --git a/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md b/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md
index dcf9ebc388..7ac825b837 100644
--- a/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md
+++ b/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md
@@ -4,6 +4,7 @@ title: "Identifying the Elements of the DHTML Control Project"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["HTML controls, ATL support", "DHTML controls, ATL support"]
 ms.assetid: b627547a-3768-4346-9900-4b7a21fb8e27
+ms.topic: concept-article
 ---
 # Identifying the Elements of the DHTML Control Project
 
diff --git a/docs/atl/implementing-a-dialog-box.md b/docs/atl/implementing-a-dialog-box.md
index b07f0570b5..c84428bea5 100644
--- a/docs/atl/implementing-a-dialog-box.md
+++ b/docs/atl/implementing-a-dialog-box.md
@@ -4,6 +4,7 @@ title: "Implementing a Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CSimpleDialog class, implementing dialog boxes in ATL", "dialog boxes, ATL", "CAxDialogImpl class, implementing dialog boxes in ATL", "ATL, dialog boxes"]
 ms.assetid: 478525f2-aa6a-435a-b162-68fc8aa98a8e
+ms.topic: how-to
 ---
 # Implementing a Dialog Box
 
diff --git a/docs/atl/implementing-a-dual-interface.md b/docs/atl/implementing-a-dual-interface.md
index 0dd114236c..6abd84d51b 100644
--- a/docs/atl/implementing-a-dual-interface.md
+++ b/docs/atl/implementing-a-dual-interface.md
@@ -4,6 +4,7 @@ title: "Implementing a Dual Interface (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["IDispatchImpl class, implementing dual interfaces", "dual interfaces, implementing"]
 ms.assetid: d1da3633-b445-4dcd-8a0a-3efdafada3ea
+ms.topic: concept-article
 ---
 # Implementing a Dual Interface
 
diff --git a/docs/atl/implementing-a-window-with-cwindowimpl.md b/docs/atl/implementing-a-window-with-cwindowimpl.md
index ec6725d6e0..be0f590b83 100644
--- a/docs/atl/implementing-a-window-with-cwindowimpl.md
+++ b/docs/atl/implementing-a-window-with-cwindowimpl.md
@@ -4,6 +4,7 @@ title: "Implementing a Window with CWindowImpl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, windows", "windows [C++], subclassing", "windows [C++], superclassing", "windows [C++], ATL", "subclassing ATL window classes", "superclassing, ATL"]
 ms.assetid: 3fc40550-f1d6-4702-8b7c-4cf682b6a855
+ms.topic: how-to
 ---
 # Implementing a Window with CWindowImpl
 
diff --git a/docs/atl/implementing-a-window.md b/docs/atl/implementing-a-window.md
index 6f4137ced3..dbe42c3fbc 100644
--- a/docs/atl/implementing-a-window.md
+++ b/docs/atl/implementing-a-window.md
@@ -4,6 +4,7 @@ title: "Implementing a Window (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, windows", "CWindowImpl class, using", "windows [C++], implementing in ATL"]
 ms.assetid: eb1ce8d6-72f9-4894-aae7-e60a61665628
+ms.topic: concept-article
 ---
 # Implementing a Window
 
diff --git a/docs/atl/implementing-an-stl-based-collection.md b/docs/atl/implementing-an-stl-based-collection.md
index a01de0c2ba..761ef740d1 100644
--- a/docs/atl/implementing-an-stl-based-collection.md
+++ b/docs/atl/implementing-an-stl-based-collection.md
@@ -4,6 +4,7 @@ title: "Implementing a C++ Standard Library-Based Collection"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ICollectionOnSTLImpl interface"]
 ms.assetid: 6d49f819-1957-4813-b074-3f12c494d8ca
+ms.topic: how-to
 ---
 # Implementing a C++ Standard Library-Based Collection
 
diff --git a/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md b/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md
index c3016ec9b8..e7a6428fba 100644
--- a/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md
+++ b/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md
@@ -4,6 +4,7 @@ title: "Implementing CComObject, CComAggObject, and CComPolyObject"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CComPolyObject class, implementing", "CreateInstance method", "CComAggObject class", "CComObject class, implementing"]
 ms.assetid: 5aabe938-104d-492e-9c41-9f7fb1c62098
+ms.topic: concept-article
 ---
 # Implementing CComObject, CComAggObject, and CComPolyObject
 
diff --git a/docs/atl/implementing-ccomobjectrootex.md b/docs/atl/implementing-ccomobjectrootex.md
index 1c4395557b..5dc0fc19ca 100644
--- a/docs/atl/implementing-ccomobjectrootex.md
+++ b/docs/atl/implementing-ccomobjectrootex.md
@@ -4,6 +4,7 @@ title: "Implementing CComObjectRootEx"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CComObjectRoot class, implementing", "CComObjectRootEx class"]
 ms.assetid: 79630c44-f2df-4e9e-b730-400a0ebfbd2b
+ms.topic: concept-article
 ---
 # Implementing CComObjectRootEx
 
diff --git a/docs/atl/implementing-property-pages.md b/docs/atl/implementing-property-pages.md
index 3dcdced9d0..d9e3b0942c 100644
--- a/docs/atl/implementing-property-pages.md
+++ b/docs/atl/implementing-property-pages.md
@@ -4,6 +4,7 @@ title: "Implementing Property Pages"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["IPropertyPage2 class", "IPropertyPage class", "property pages, implementing"]
 ms.assetid: 62f29440-33a7-40eb-a1ef-3634c95f640c
+ms.topic: how-to
 ---
 # Implementing Property Pages
 
diff --git a/docs/atl/implementing-the-event-handling-interface.md b/docs/atl/implementing-the-event-handling-interface.md
index 2be79a7b89..3442039a73 100644
--- a/docs/atl/implementing-the-event-handling-interface.md
+++ b/docs/atl/implementing-the-event-handling-interface.md
@@ -4,6 +4,7 @@ title: "Implementing the Event Handling Interface"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, event handling", "event handling, ATL", "interfaces, event and event sink"]
 ms.assetid: eb2a5b33-88dc-4ce3-bee0-c5c38ea050d7
+ms.topic: concept-article
 ---
 # Implementing the Event Handling Interface
 
diff --git a/docs/atl/inserting-a-composite-control.md b/docs/atl/inserting-a-composite-control.md
index 2a3375c05a..ad1f4f6dc2 100644
--- a/docs/atl/inserting-a-composite-control.md
+++ b/docs/atl/inserting-a-composite-control.md
@@ -4,6 +4,7 @@ title: "Inserting a Composite Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["composite controls, inserting with ATL Object Wizard", "composite controls", "ATL Control Wizard"]
 ms.assetid: f10b1927-9fc6-40a7-ac29-efdac70584fe
+ms.topic: how-to
 ---
 # Inserting a Composite Control
 
diff --git a/docs/atl/introduction-to-atl-window-classes.md b/docs/atl/introduction-to-atl-window-classes.md
index a4593ae915..5ae3fc8c8a 100644
--- a/docs/atl/introduction-to-atl-window-classes.md
+++ b/docs/atl/introduction-to-atl-window-classes.md
@@ -4,6 +4,7 @@ title: "Introduction to ATL Window Classes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["window classes"]
 ms.assetid: 503efc2c-a269-495d-97cf-3fb300d52f3d
+ms.topic: concept-article
 ---
 # Introduction to ATL Window Classes
 
diff --git a/docs/atl/introduction-to-atl.md b/docs/atl/introduction-to-atl.md
index 104ef1d274..cccfc97391 100644
--- a/docs/atl/introduction-to-atl.md
+++ b/docs/atl/introduction-to-atl.md
@@ -5,6 +5,7 @@ ms.custom: "index-page"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["COM objects, creating in ATL", "ATL"]
 ms.assetid: 77f565e8-c4ec-4a80-af4b-7278fcfe5c98
+ms.topic: concept-article
 ---
 # Introduction to ATL
 
diff --git a/docs/atl/introduction-to-com-and-atl.md b/docs/atl/introduction-to-com-and-atl.md
index 8cb151d30a..57e25904bc 100644
--- a/docs/atl/introduction-to-com-and-atl.md
+++ b/docs/atl/introduction-to-com-and-atl.md
@@ -5,6 +5,7 @@ ms.custom: "index-page"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["COM, and ATL", "ATL, COM", "COM objects, ATL"]
 ms.assetid: 35d6ae9c-abbb-42f0-9344-33f3c19ac3ce
+ms.topic: concept-article
 ---
 # Introduction to COM and ATL
 
diff --git a/docs/atl/introduction-to-com.md b/docs/atl/introduction-to-com.md
index c90f0c03ce..c44fc4f065 100644
--- a/docs/atl/introduction-to-com.md
+++ b/docs/atl/introduction-to-com.md
@@ -5,6 +5,7 @@ ms.custom: "index-page"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["COM"]
 ms.assetid: 120735d9-db71-4ad3-a730-ce576ea2354e
+ms.topic: concept-article
 ---
 # Introduction to COM
 
diff --git a/docs/atl/invoking-scripts.md b/docs/atl/invoking-scripts.md
index 459197b82d..2d33947181 100644
--- a/docs/atl/invoking-scripts.md
+++ b/docs/atl/invoking-scripts.md
@@ -4,6 +4,7 @@ title: "Invoking Scripts (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["StringRegister method", "scripts, invoking registry in ATL"]
 ms.assetid: eabd41ee-586b-4266-9e92-5aaad04b73a4
+ms.topic: concept-article
 ---
 # Invoking Scripts
 
diff --git a/docs/atl/linking-to-the-crt-in-your-atl-project.md b/docs/atl/linking-to-the-crt-in-your-atl-project.md
index d67da0b10b..430134baa4 100644
--- a/docs/atl/linking-to-the-crt-in-your-atl-project.md
+++ b/docs/atl/linking-to-the-crt-in-your-atl-project.md
@@ -4,6 +4,7 @@ title: "Linking to the CRT in Your ATL Project"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CRT, linking with ATL", "WinMainCRTStartup method", "DllMainCRTStartup method", "wWinMainCRTStartup method", "ATL, C Run-Time library (CRT)"]
 ms.assetid: 650957ae-362c-4ecf-8b03-5d49138e8b5b
+ms.topic: concept-article
 ---
 # Linking to the CRT in Your ATL Project
 
diff --git a/docs/atl/marshaling.md b/docs/atl/marshaling.md
index 03501d803f..1f5c52b2be 100644
--- a/docs/atl/marshaling.md
+++ b/docs/atl/marshaling.md
@@ -4,6 +4,7 @@ title: "Marshaling"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["marshaling, COM interop", "marshaling", "COM interfaces, marshaling"]
 ms.assetid: 40644b0a-1106-4fc8-9dfb-9bee9915d825
+ms.topic: concept-article
 ---
 # Marshaling
 
diff --git a/docs/atl/modifying-the-atl-dhtml-control.md b/docs/atl/modifying-the-atl-dhtml-control.md
index 559c547037..3e77a536a1 100644
--- a/docs/atl/modifying-the-atl-dhtml-control.md
+++ b/docs/atl/modifying-the-atl-dhtml-control.md
@@ -4,6 +4,7 @@ title: "Modifying the ATL DHTML Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HTML controls, modifying", "DHTML controls", "DHTML controls, modifying"]
 ms.assetid: c053f35f-8629-4600-9595-721f5956777a
+ms.topic: how-to
 ---
 # Modifying the ATL DHTML Control
 
diff --git a/docs/atl/modifying-the-atl-project.md b/docs/atl/modifying-the-atl-project.md
index b2a4b44bc8..d9211d9776 100644
--- a/docs/atl/modifying-the-atl-project.md
+++ b/docs/atl/modifying-the-atl-project.md
@@ -4,6 +4,7 @@ title: "Modifying the ATL Project"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [ATL], adding to composite controls", "Dialog editor, working with composite controls", "composite controls, adding controls"]
 ms.assetid: 59984518-748f-4b8b-875f-3e97d22d0b0f
+ms.topic: concept-article
 ---
 # Modifying the ATL Project
 
diff --git a/docs/atl/programming-with-atl-and-c-run-time-code.md b/docs/atl/programming-with-atl-and-c-run-time-code.md
index 697a3c6750..66c4ade4f2 100644
--- a/docs/atl/programming-with-atl-and-c-run-time-code.md
+++ b/docs/atl/programming-with-atl-and-c-run-time-code.md
@@ -4,6 +4,7 @@ title: "Programming with ATL and C Run-Time Code"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL_MIN_CRT macro", "CRT, using with ATL", "_ATL_MIN_CRT macro", "ATL, C Run-Time library (CRT)"]
 ms.assetid: 20f03b66-1eb7-4add-84a2-6047db0911eb
+ms.topic: concept-article
 ---
 # Programming with ATL and C Run-Time Code
 
diff --git a/docs/atl/programming-with-ccombstr-atl.md b/docs/atl/programming-with-ccombstr-atl.md
index 74c5c54465..31f7ee2d37 100644
--- a/docs/atl/programming-with-ccombstr-atl.md
+++ b/docs/atl/programming-with-ccombstr-atl.md
@@ -4,6 +4,7 @@ title: "Programming with CComBSTR (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CComBSTR class, programming with", "Unicode, using CComBSTR [ATL]"]
 ms.assetid: d3bd0851-d132-4be9-9c4c-6ccba17acb2b
+ms.topic: concept-article
 ---
 # Programming with CComBSTR (ATL)
 
diff --git a/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md b/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md
index 14db4bbf4c..faf66529f1 100644
--- a/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md
+++ b/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md
@@ -4,6 +4,7 @@ title: "Putting the Control on a Web Page (ATL Tutorial, Part 7)"
 ms.custom: "get-started-article"
 ms.date: "05/06/2019"
 ms.assetid: 50dc4c95-c95b-4006-b88a-9826f7bdb222
+ms.topic: tutorial
 ---
 # Putting the Control on a Web Page (ATL Tutorial, Part 7)
 
diff --git a/docs/atl/reference/catltemporaryfile-class.md b/docs/atl/reference/catltemporaryfile-class.md
index ac4ae6210e..9878d4a0d9 100644
--- a/docs/atl/reference/catltemporaryfile-class.md
+++ b/docs/atl/reference/catltemporaryfile-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CAtlTemporaryFile Class"
 title: "CAtlTemporaryFile Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CAtlTemporaryFile Class"
+ms.date: 11/04/2016
 f1_keywords: ["CAtlTemporaryFile", "ATLFILE/ATL::CAtlTemporaryFile", "ATLFILE/ATL::CAtlTemporaryFile::CAtlTemporaryFile", "ATLFILE/ATL::CAtlTemporaryFile::Close", "ATLFILE/ATL::CAtlTemporaryFile::Create", "ATLFILE/ATL::CAtlTemporaryFile::Flush", "ATLFILE/ATL::CAtlTemporaryFile::GetPosition", "ATLFILE/ATL::CAtlTemporaryFile::GetSize", "ATLFILE/ATL::CAtlTemporaryFile::HandsOff", "ATLFILE/ATL::CAtlTemporaryFile::HandsOn", "ATLFILE/ATL::CAtlTemporaryFile::LockRange", "ATLFILE/ATL::CAtlTemporaryFile::Read", "ATLFILE/ATL::CAtlTemporaryFile::Seek", "ATLFILE/ATL::CAtlTemporaryFile::SetSize", "ATLFILE/ATL::CAtlTemporaryFile::TempFileName", "ATLFILE/ATL::CAtlTemporaryFile::UnlockRange", "ATLFILE/ATL::CAtlTemporaryFile::Write"]
 helpviewer_keywords: ["CAtlTemporaryFile class"]
-ms.assetid: 05f0f2a5-94f6-4594-8dae-b114292ff5f9
 ---
 # CAtlTemporaryFile Class
 
@@ -357,7 +356,7 @@ Returns the LPCTSTR pointing to the file name.
 
 ### Remarks
 
-The file name is generated in [CAtlTemporaryFile::CAtlTemporaryFile](#catltemporaryfile) with a call to the [GetTempFile](/windows/win32/api/fileapi/nf-fileapi-gettempfilenamew)Windows SDK function. The file extension will always be "TFR" for the temporary file.
+The file name is generated in [CAtlTemporaryFile::CAtlTemporaryFile](#catltemporaryfile) with a call to the [GetTempFile](/windows/win32/api/fileapi/nf-fileapi-gettempfilenamew) Windows SDK function. The file extension will always be "TFR" for the temporary file.
 
 ## <a name="unlockrange"></a> CAtlTemporaryFile::UnlockRange
 
diff --git a/docs/atl/reference/catltransactionmanager-class.md b/docs/atl/reference/catltransactionmanager-class.md
index 3b7a42f274..4c4430bf45 100644
--- a/docs/atl/reference/catltransactionmanager-class.md
+++ b/docs/atl/reference/catltransactionmanager-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CAtlTransactionManager Class"
 title: "CAtlTransactionManager Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CAtlTransactionManager Class"
+ms.date: 11/04/2016
 f1_keywords: ["CAtlTransactionManager", "ATLTRANSACTIONMANAGER/ATL::CAtlTransactionManager", "ATLTRANSACTIONMANAGER/ATL::Close", "ATLTRANSACTIONMANAGER/ATL::Commit", "ATLTRANSACTIONMANAGER/ATL::Create", "ATLTRANSACTIONMANAGER/ATL::CreateFile", "ATLTRANSACTIONMANAGER/ATL::DeleteFile", "ATLTRANSACTIONMANAGER/ATL::FindFirstFile", "ATLTRANSACTIONMANAGER/ATL::GetFileAttributes", "ATLTRANSACTIONMANAGER/ATL::GetFileAttributesEx", "ATLTRANSACTIONMANAGER/ATL::GetHandle", "ATLTRANSACTIONMANAGER/ATL::IsFallback", "ATLTRANSACTIONMANAGER/ATL::MoveFile", "ATLTRANSACTIONMANAGER/ATL::RegCreateKeyEx", "ATLTRANSACTIONMANAGER/ATL::RegDeleteKey", "ATLTRANSACTIONMANAGER/ATL::RegOpenKeyEx", "ATLTRANSACTIONMANAGER/ATL::Rollback", "ATLTRANSACTIONMANAGER/ATL::SetFileAttributes", "ATLTRANSACTIONMANAGER/ATL::m_bFallback", "ATLTRANSACTIONMANAGER/ATL::m_hTransaction"]
 helpviewer_keywords: ["CAtlTransactionManager class"]
-ms.assetid: b01732dc-1d16-4b42-bfac-b137fca2b740
 ---
 # CAtlTransactionManager Class
 
@@ -66,7 +65,7 @@ class CAtlTransactionManager;
 
 **Header:** atltransactionmanager.h
 
-## <a name="dtor"></a>  ~CAtlTransactionManager
+## <a name="dtor"></a> ~CAtlTransactionManager
 
 CAtlTransactionManager destructor.
 
diff --git a/docs/atl/reference/ccomcoclass-class.md b/docs/atl/reference/ccomcoclass-class.md
index 58e766c120..2101a31f89 100644
--- a/docs/atl/reference/ccomcoclass-class.md
+++ b/docs/atl/reference/ccomcoclass-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CComCoClass Class"
 title: "CComCoClass Class"
+description: "Learn more about: CComCoClass Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CComCoClass", "ATLCOM/ATL::CComCoClass", "ATLCOM/ATL::CComCoClass::CreateInstance", "ATLCOM/ATL::CComCoClass::Error", "ATLCOM/ATL::CComCoClass::GetObjectCLSID", "ATLCOM/ATL::CComCoClass::GetObjectDescription"]
 helpviewer_keywords: ["CComCoClass class", "aggregation [C++], aggregation models"]
-ms.assetid: 67cfefa4-8df9-47fa-ad58-2d1a1ae25762
 ---
 # CComCoClass Class
 
@@ -12,29 +11,29 @@ This class provides methods for creating instances of a class, and obtaining its
 
 ## Syntax
 
-```
+```cpp
 template <class T, const CLSID* pclsid = &CLSID_NULL>
 class CComCoClass
 ```
 
 #### Parameters
 
-*T*<br/>
+*T*\
 Your class, derived from `CComCoClass`.
 
-*pclsid*<br/>
+*pclsid*\
 A pointer to the CLSID of the object.
 
 ## Members
 
 ### Public Methods
 
-|Name|Description|
-|----------|-----------------|
-|[CComCoClass::CreateInstance](#createinstance)|(Static) Creates an instance of the class and queries for an interface.|
-|[CComCoClass::Error](#error)|(Static) Returns rich error information to the client.|
-|[CComCoClass::GetObjectCLSID](#getobjectclsid)|(Static) Returns the object's class identifier.|
-|[CComCoClass::GetObjectDescription](#getobjectdescription)|(Static) Override to return the object's description.|
+| Name                                                       | Description                                                             |
+| ---------------------------------------------------------- | ----------------------------------------------------------------------- |
+| [CComCoClass::CreateInstance](#createinstance)             | (Static) Creates an instance of the class and queries for an interface. |
+| [CComCoClass::Error](#error)                               | (Static) Returns rich error information to the client.                  |
+| [CComCoClass::GetObjectCLSID](#getobjectclsid)             | (Static) Returns the object's class identifier.                         |
+| [CComCoClass::GetObjectDescription](#getobjectdescription) | (Static) Override to return the object's description.                   |
 
 ## Remarks
 
@@ -58,23 +57,23 @@ You can override either of these defaults by specifying another macro in your cl
 
 Use these `CreateInstance` functions to create an instance of a COM object and retrieve an interface pointer without using the COM API.
 
-```
-template <class  Q>
-static HRESULT CreateInstance( Q** pp);
+```cpp
+template <class Q>
+static HRESULT CreateInstance(Q** pp);
 
-template <class  Q>
+template <class Q>
 static HRESULT CreateInstance(IUnknown* punkOuter, Q** pp);
 ```
 
 ### Parameters
 
-*Q*<br/>
+*Q*\
 The COM interface that should be returned via *pp*.
 
-*punkOuter*<br/>
+*punkOuter*\
 [in] The outer unknown or controlling unknown of the aggregate.
 
-*pp*<br/>
+*pp*\
 [out] The address of a pointer variable that receives the requested interface pointer if creation succeeds.
 
 ### Return Value
@@ -101,7 +100,7 @@ In the following example, `CDocument` is a wizard-generated ATL class derived fr
 
 This static function sets up the `IErrorInfo` interface to provide error information to the client.
 
-```
+```cpp
 static HRESULT WINAPI Error(
     LPCOLESTR lpszDesc,
     const IID& iid = GUID_NULL,
@@ -130,7 +129,7 @@ static HRESULT WINAPI Error(
     UINT nID,
     const IID& iid = GUID_NULL,
     HRESULT hRes = 0,
-    HINSTANCE hInst = _AtlBaseModule.GetResourceInstance ());
+    HINSTANCE hInst = _AtlBaseModule.GetResourceInstance());
 
 static HRESULT Error(
     UINT nID,
@@ -143,25 +142,25 @@ static HRESULT Error(
 
 ### Parameters
 
-*lpszDesc*<br/>
+*lpszDesc*\
 [in] The string describing the error. The Unicode version of `Error` specifies that *lpszDesc* is of type LPCOLESTR; the ANSI version specifies a type of LPCSTR.
 
-*iid*<br/>
+*iid*\
 [in] The IID of the interface defining the error or GUID_NULL (the default value) if the error is defined by the operating system.
 
-*hRes*<br/>
+*hRes*\
 [in] The HRESULT you want returned to the caller. The default value is 0. For more details about *hRes*, see Remarks.
 
-*nID*<br/>
+*nID*\
 [in] The resource identifier where the error description string is stored. This value should lie between 0x0200 and 0xFFFF, inclusively. In debug builds, an **ASSERT** will result if *nID* does not index a valid string. In release builds, the error description string will be set to "Unknown Error."
 
-*dwHelpID*<br/>
+*dwHelpID*\
 [in] The help context identifier for the error.
 
-*lpszHelpFile*<br/>
+*lpszHelpFile*\
 [in] The path and name of the help file describing the error.
 
-*hInst*<br/>
+*hInst*\
 [in] The handle to the resource. By default, this parameter is `_AtlModule::GetResourceInstance`, where `_AtlModule` is the global instance of [CAtlModule](../../atl/reference/catlmodule-class.md).
 
 ### Return Value
@@ -178,7 +177,7 @@ If the *hRes* parameter is nonzero, then `Error` returns the value of *hRes*. If
 
 Provides a consistent way of retrieving the object's CLSID.
 
-```
+```cpp
 static const CLSID& WINAPI GetObjectCLSID();
 ```
 
@@ -190,7 +189,7 @@ The object's class identifier.
 
 This static function retrieves the text description for your class object.
 
-```
+```cpp
 static LPCTSTR WINAPI GetObjectDescription();
 ```
 
diff --git a/docs/atl/reference/ccomcurrency-class.md b/docs/atl/reference/ccomcurrency-class.md
index b51cb2e04a..cee7bfd016 100644
--- a/docs/atl/reference/ccomcurrency-class.md
+++ b/docs/atl/reference/ccomcurrency-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CComCurrency Class"
 title: "CComCurrency Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CComCurrency Class"
+ms.date: 11/04/2016
 f1_keywords: ["CComCurrency", "ATLCUR/ATL::CComCurrency", "ATLCUR/ATL::CComCurrency::CComCurrency", "ATLCUR/ATL::CComCurrency::GetCurrencyPtr", "ATLCUR/ATL::CComCurrency::GetFraction", "ATLCUR/ATL::CComCurrency::GetInteger", "ATLCUR/ATL::CComCurrency::Round", "ATLCUR/ATL::CComCurrency::SetFraction", "ATLCUR/ATL::CComCurrency::SetInteger", "ATLCUR/ATL::CComCurrency::m_currency"]
 helpviewer_keywords: ["CComCurrency class"]
-ms.assetid: a1c3d10a-bba6-40cc-8bcf-aed9023c8a9e
 ---
 # `CComCurrency` Class
 
@@ -563,7 +562,7 @@ Returns a reference to a `CURRENCY` object.
 Call this method to round the currency to a specified number of decimal places.
 
 ```cpp
-HRESULT Roundint nDecimals);
+HRESULT Round(int nDecimals);
 ```
 
 ### Parameters
diff --git a/docs/atl/reference/ccomdynamicunkarray-class.md b/docs/atl/reference/ccomdynamicunkarray-class.md
index 0c0f142ee6..682edba816 100644
--- a/docs/atl/reference/ccomdynamicunkarray-class.md
+++ b/docs/atl/reference/ccomdynamicunkarray-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CComDynamicUnkArray Class"
 title: "CComDynamicUnkArray Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CComDynamicUnkArray Class"
+ms.date: 11/04/2016
 f1_keywords: ["CComDynamicUnkArray", "ATLCOM/ATL::CComDynamicUnkArray", "ATLCOM/ATL::CComDynamicUnkArray::CComDynamicUnkArray", "ATLCOM/ATL::CComDynamicUnkArray::Add", "ATLCOM/ATL::CComDynamicUnkArray::begin", "ATLCOM/ATL::CComDynamicUnkArray::clear", "ATLCOM/ATL::CComDynamicUnkArray::end", "ATLCOM/ATL::CComDynamicUnkArray::GetAt", "ATLCOM/ATL::CComDynamicUnkArray::GetCookie", "ATLCOM/ATL::CComDynamicUnkArray::GetSize", "ATLCOM/ATL::CComDynamicUnkArray::GetUnknown", "ATLCOM/ATL::CComDynamicUnkArray::Remove"]
 helpviewer_keywords: ["connection points [C++], managing", "CComDynamicUnkArray class"]
-ms.assetid: 202470d7-9a1b-498f-b96d-659d681acd65
 ---
 # CComDynamicUnkArray Class
 
@@ -194,7 +193,7 @@ int GetSize() const;
 
 The number of elements the array can store. `GetSize() == end() - begin()`.
 
-##  <a name="getunknown"></a> CComDynamicUnkArray::GetUnknown
+## <a name="getunknown"></a> CComDynamicUnkArray::GetUnknown
 
 Call this method to get the `IUnknown` pointer associated with a given cookie.
 
diff --git a/docs/atl/reference/ccommultithreadmodel-class.md b/docs/atl/reference/ccommultithreadmodel-class.md
index 167fe9c3c7..651aa91f66 100644
--- a/docs/atl/reference/ccommultithreadmodel-class.md
+++ b/docs/atl/reference/ccommultithreadmodel-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CComMultiThreadModel Class"
 title: "CComMultiThreadModel Class"
+description: "Learn more about: CComMultiThreadModel Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CComMultiThreadModel", "ATLBASE/ATL::CComMultiThreadModel", "ATLBASE/ATL::CComMultiThreadModel::AutoCriticalSection", "ATLBASE/ATL::CComMultiThreadModel::CriticalSection", "ATLBASE/ATL::CComMultiThreadModel::ThreadModelNoCS", "ATLBASE/ATL::CComMultiThreadModel::Decrement", "ATLBASE/ATL::CComMultiThreadModel::Increment"]
 helpviewer_keywords: ["ATL, multithreading", "CComMultiThreadModel class", "threading [ATL]"]
-ms.assetid: db8f1662-2f7a-44b3-b341-ffbfb6e422a3
 ---
 # CComMultiThreadModel Class
 
@@ -12,7 +11,7 @@ ms.assetid: db8f1662-2f7a-44b3-b341-ffbfb6e422a3
 
 ## Syntax
 
-```
+```cpp
 class CComMultiThreadModel
 ```
 
@@ -35,7 +34,7 @@ class CComMultiThreadModel
 
 ## Remarks
 
-Typically, you use `CComMultiThreadModel` through one of two **`typedef`** names, either [CComObjectThreadModel](atl-typedefs.md#ccomobjectthreadmodel or [CComGlobalsThreadModel](atl-typedefs.md#ccomglobalsthreadmodel. The class referenced by each **`typedef`** depends on the threading model used, as shown in the following table:
+Typically, you use `CComMultiThreadModel` through one of two **`typedef`** names, either [CComObjectThreadModel](atl-typedefs.md#ccomobjectthreadmodel) or [CComGlobalsThreadModel](atl-typedefs.md#ccomglobalsthreadmodel). The class referenced by each **`typedef`** depends on the threading model used, as shown in the following table:
 
 |typedef|Single threading|Apartment threading|Free threading|
 |-------------|----------------------|-------------------------|--------------------|
@@ -54,7 +53,7 @@ S= `CComSingleThreadModel`; M= `CComMultiThreadModel`
 
 When using `CComMultiThreadModel`, the **`typedef`** name `AutoCriticalSection` references class [CComAutoCriticalSection](ccomautocriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object.
 
-```
+```cpp
 typedef CComAutoCriticalSection AutoCriticalSection;
 ```
 
@@ -120,7 +119,7 @@ The following tables show the results of the `InternalAddRef` and `Lock` methods
 
 When using `CComMultiThreadModel`, the **`typedef`** name `CriticalSection` references class [CComCriticalSection](ccomcriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object.
 
-```
+```cpp
 typedef CComCriticalSection CriticalSection;
 ```
 
@@ -144,13 +143,13 @@ See [CComMultiThreadModel::AutoCriticalSection](#autocriticalsection).
 
 This static function calls the Win32 function [InterlockedDecrement](/windows/win32/api/winnt/nf-winnt-interlockeddecrement), which decrements the value of the variable pointed to by *p*.
 
-```
+```cpp
 static ULONG WINAPI Decrement(LPLONG p) throw ();
 ```
 
 ### Parameters
 
-*p*<br/>
+*p*\
 [in] Pointer to the variable to be decremented.
 
 ### Return Value
@@ -165,13 +164,13 @@ If the result of the decrement is 0, then `Decrement` returns 0. If the result o
 
 This static function calls the Win32 function [InterlockedIncrement](/windows/win32/api/winnt/nf-winnt-interlockedincrement), which increments the value of the variable pointed to by *p*.
 
-```
+```cpp
 static ULONG WINAPI Increment(LPLONG p) throw ();
 ```
 
 ### Parameters
 
-*p*<br/>
+*p*\
 [in] Pointer to the variable to be incremented.
 
 ### Return Value
@@ -186,7 +185,7 @@ If the result of the increment is 0, then `Increment` returns 0. If the result o
 
 When using `CComMultiThreadModel`, the **`typedef`** name `ThreadModelNoCS` references class [CComMultiThreadModelNoCS](ccommultithreadmodelnocs-class.md).
 
-```
+```cpp
 typedef CComMultiThreadModelNoCS ThreadModelNoCS;
 ```
 
@@ -208,7 +207,7 @@ See [CComMultiThreadModel::AutoCriticalSection](#autocriticalsection).
 
 ## See also
 
-[CComSingleThreadModel Class](ccomsinglethreadmodel-class.md)<br/>
-[CComAutoCriticalSection Class](ccomautocriticalsection-class.md)<br/>
-[CComCriticalSection Class](ccomcriticalsection-class.md)<br/>
+[CComSingleThreadModel Class](ccomsinglethreadmodel-class.md)\
+[CComAutoCriticalSection Class](ccomautocriticalsection-class.md)\
+[CComCriticalSection Class](ccomcriticalsection-class.md)\
 [Class Overview](../atl-class-overview.md)
diff --git a/docs/atl/reference/cstockpropimpl-class.md b/docs/atl/reference/cstockpropimpl-class.md
index 29b1619156..1f4959941f 100644
--- a/docs/atl/reference/cstockpropimpl-class.md
+++ b/docs/atl/reference/cstockpropimpl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CStockPropImpl Class"
 title: "CStockPropImpl Class"
+description: "Learn more about: CStockPropImpl Class"
 ms.date: "05/06/2019"
 f1_keywords: ["CStockPropImpl", "ATLCTL/ATL::CStockPropImpl", "ATLCTL/ATL::get_Appearance", "ATLCTL/ATL::get_AutoSize", "ATLCTL/ATL::get_BackColor", "ATLCTL/ATL::get_BackStyle", "ATLCTL/ATL::get_BorderColor", "ATLCTL/ATL::get_BorderStyle", "ATLCTL/ATL::get_BorderVisible", "ATLCTL/ATL::get_BorderWidth", "ATLCTL/ATL::get_Caption", "ATLCTL/ATL::get_DrawMode", "ATLCTL/ATL::get_DrawStyle", "ATLCTL/ATL::get_DrawWidth", "ATLCTL/ATL::get_Enabled", "ATLCTL/ATL::get_FillColor", "ATLCTL/ATL::get_FillStyle", "ATLCTL/ATL::get_Font", "ATLCTL/ATL::get_ForeColor", "ATLCTL/ATL::get_HWND", "ATLCTL/ATL::get_MouseIcon", "ATLCTL/ATL::get_MousePointer", "ATLCTL/ATL::get_Picture", "ATLCTL/ATL::get_ReadyState", "ATLCTL/ATL::get_TabStop", "ATLCTL/ATL::get_Text", "ATLCTL/ATL::getvalid", "ATLCTL/ATL::get_Window", "ATLCTL/ATL::put_Appearance", "ATLCTL/ATL::put_AutoSize", "ATLCTL/ATL::put_BackColor", "ATLCTL/ATL::put_BackStyle", "ATLCTL/ATL::put_BorderColor", "ATLCTL/ATL::put_BorderStyle", "ATLCTL/ATL::put_BorderVisible", "ATLCTL/ATL::put_BorderWidth", "ATLCTL/ATL::put_Caption", "ATLCTL/ATL::put_DrawMode", "ATLCTL/ATL::put_DrawStyle", "ATLCTL/ATL::put_DrawWidth", "ATLCTL/ATL::put_Enabled", "ATLCTL/ATL::put_FillColor", "ATLCTL/ATL::put_FillStyle", "ATLCTL/ATL::put_Font", "ATLCTL/ATL::put_ForeColor", "ATLCTL/ATL::put_HWND", "ATLCTL/ATL::put_MouseIcon", "ATLCTL/ATL::put_MousePointer", "ATLCTL/ATL::put_Picture", "ATLCTL/ATL::put_ReadyState", "ATLCTL/ATL::put_TabStop", "ATLCTL/ATL::put_Text", "ATLCTL/ATL::putvalid", "ATLCTL/ATL::put_Window", "ATLCTL/ATL::putref_Font", "ATLCTL/ATL::putref_MouseIcon", "ATLCTL/ATL::putref_Picture"]
 helpviewer_keywords: ["CStockPropImpl class", "controls [ATL], stock properties", "stock properties, ATL controls"]
-ms.assetid: 45f11d7d-6580-4a0e-872d-3bc8b836cfda
 ---
 # CStockPropImpl Class
 
@@ -607,7 +606,7 @@ Returns S_OK on success, or an error HRESULT on failure.
 Call this method to set the value of flag that indicates if the control cannot be any other size.
 
 ```
-HRESULT STDMETHODCALLTYPE put_AutoSize(VARIANT_BOOL bAutoSize,);
+HRESULT STDMETHODCALLTYPE put_AutoSize(VARIANT_BOOL bAutoSize);
 ```
 
 ### Parameters
@@ -1100,5 +1099,5 @@ The same as [CStockPropImpl::put_Picture](#put_picture), but with a reference co
 
 ## See also
 
-[Class Overview](../../atl/atl-class-overview.md)<br/>
+[Class Overview](../../atl/atl-class-overview.md)\
 [IDispatchImpl Class](../../atl/reference/idispatchimpl-class.md)
diff --git a/docs/atl/reference/cthreadpool-class.md b/docs/atl/reference/cthreadpool-class.md
index e5834d8409..0cca6b473f 100644
--- a/docs/atl/reference/cthreadpool-class.md
+++ b/docs/atl/reference/cthreadpool-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CThreadPool Class"
 title: "CThreadPool Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CThreadPool Class"
+ms.date: 11/04/2016
 f1_keywords: ["CThreadPool", "ATLUTIL/ATL::CThreadPool", "ATLUTIL/ATL::CThreadPool::CThreadPool", "ATLUTIL/ATL::CThreadPool::AddRef", "ATLUTIL/ATL::CThreadPool::GetNumThreads", "ATLUTIL/ATL::CThreadPool::GetQueueHandle", "ATLUTIL/ATL::CThreadPool::GetSize", "ATLUTIL/ATL::CThreadPool::GetTimeout", "ATLUTIL/ATL::CThreadPool::Initialize", "ATLUTIL/ATL::CThreadPool::QueryInterface", "ATLUTIL/ATL::CThreadPool::QueueRequest", "ATLUTIL/ATL::CThreadPool::Release", "ATLUTIL/ATL::CThreadPool::SetSize", "ATLUTIL/ATL::CThreadPool::SetTimeout", "ATLUTIL/ATL::CThreadPool::Shutdown"]
 helpviewer_keywords: ["CThreadPool class"]
-ms.assetid: 06683718-01b9-413c-9481-2dc1734ec70f
 ---
 # CThreadPool Class
 
@@ -265,7 +264,7 @@ This class does not implement lifetime control using reference counting.
 Call this method to set the number of threads in the pool.
 
 ```
-HRESULT STDMETHODCALLTYPE SetSizeint nNumThreads) throw();
+HRESULT STDMETHODCALLTYPE SetSize(int nNumThreads) throw();
 ```
 
 ### Parameters
diff --git a/docs/atl/reference/cw2wex-class.md b/docs/atl/reference/cw2wex-class.md
index 3c0cfb0946..d5c15f69f2 100644
--- a/docs/atl/reference/cw2wex-class.md
+++ b/docs/atl/reference/cw2wex-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CW2WEX Class"
 title: "CW2WEX Class"
+description: "Learn more about: CW2WEX Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CW2WEX", "ATLCONV/ATL::CW2WEX", "ATLCONV/ATL::CW2WEX::CW2WEX", "ATLCONV/ATL::CW2WEX::m_psz", "ATLCONV/ATL::CW2WEX::m_szBuffer"]
 helpviewer_keywords: ["CW2WEX class"]
-ms.assetid: 46262e56-e0d2-41fe-855b-0b67ecc8fcd7
 ---
 # CW2WEX Class
 
@@ -100,7 +99,7 @@ Creates the buffer required for the translation.
 
 ## <a name="dtor"></a> CW2WEX::~CW2WEX
 
-The destructor..
+The destructor.
 
 ```
 ~CW2WEX() throw();
@@ -140,9 +139,9 @@ Returns the text string as type LPWSTR.
 
 ## See also
 
-[CA2AEX Class](../../atl/reference/ca2aex-class.md)<br/>
-[CA2CAEX Class](../../atl/reference/ca2caex-class.md)<br/>
-[CA2WEX Class](../../atl/reference/ca2wex-class.md)<br/>
-[CW2AEX Class](../../atl/reference/cw2aex-class.md)<br/>
-[CW2CWEX Class](../../atl/reference/cw2cwex-class.md)<br/>
+[CA2AEX Class](../../atl/reference/ca2aex-class.md)\
+[CA2CAEX Class](../../atl/reference/ca2caex-class.md)\
+[CA2WEX Class](../../atl/reference/ca2wex-class.md)\
+[CW2AEX Class](../../atl/reference/cw2aex-class.md)\
+[CW2CWEX Class](../../atl/reference/cw2cwex-class.md)\
 [Class Overview](../../atl/atl-class-overview.md)
diff --git a/docs/atl/reference/idispeventimpl-class.md b/docs/atl/reference/idispeventimpl-class.md
index 74fd3e72c2..ef54c3c7b5 100644
--- a/docs/atl/reference/idispeventimpl-class.md
+++ b/docs/atl/reference/idispeventimpl-class.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: IDispEventImpl Class"
 title: "IDispEventImpl Class"
-ms.date: "11/04/2016"
+description: "Learn more about: IDispEventImpl Class"
+ms.date: 11/04/2016
 f1_keywords: ["IDispEventImpl", "ATLCOM/ATL::IDispEventImpl", "ATLCOM/ATL::IDispEventImpl::IDispEventImpl", "ATLCOM/ATL::IDispEventImpl::GetFuncInfoFromId", "ATLCOM/ATL::IDispEventImpl::GetIDsOfNames", "ATLCOM/ATL::IDispEventImpl::GetTypeInfo", "ATLCOM/ATL::IDispEventImpl::GetTypeInfoCount", "ATLCOM/ATL::IDispEventImpl::GetUserDefinedType"]
 helpviewer_keywords: ["IDispEventImpl class"]
-ms.assetid: a64b5288-35cb-4638-aad6-2d15b1c7cf7b
 ---
-# IDispEventImpl Class
+# `IDispEventImpl` Class
 
 This class provides implementations of the `IDispatch` methods.
 
@@ -15,7 +14,7 @@ This class provides implementations of the `IDispatch` methods.
 
 ## Syntax
 
-```
+```cpp
 template <UINT nID, class T,
     const IID* pdiid = &IID_NULL,
     const GUID* plibid = &GUID_NULL,
@@ -27,26 +26,26 @@ class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>
 
 #### Parameters
 
-*nID*<br/>
+*`nID`*\
 A unique identifier for the source object. When `IDispEventImpl` is the base class for a composite control, use the resource ID of the desired contained control for this parameter. In other cases, use an arbitrary positive integer.
 
-*T*<br/>
+*`T`*\
 The user's class, which is derived from `IDispEventImpl`.
 
-*pdiid*<br/>
-The pointer to the IID of the event dispinterface implemented by this class. This interface must be defined in the type library denoted by *plibid*, *wMajor*, and *wMinor*.
+*`pdiid`*\
+The pointer to the IID of the event dispinterface implemented by this class. This interface must be defined in the type library denoted by *`plibid`*, *`wMajor`*, and *`wMinor`*.
 
-*plibid*<br/>
-A pointer to the type library that defines the dispatch interface pointed to by *pdiid*. If **&GUID_NULL**, the type library will be loaded from the object sourcing the events.
+*`plibid`*\
+A pointer to the type library that defines the dispatch interface pointed to by *`pdiid`*. If **`&GUID_NULL`**, the type library will be loaded from the object sourcing the events.
 
-*wMajor*<br/>
+*`wMajor`*\
 The major version of the type library. The default value is 0.
 
-*wMinor*<br/>
+*`wMinor`*\
 The minor version of the type library. The default value is 0.
 
-*tihclass*<br/>
-The class used to manage the type information for *T*. The default value is a class of type `CComTypeInfoHolder`; however, you can override this template parameter by providing a class of a type other than `CComTypeInfoHolder`.
+*`tihclass`*\
+The class used to manage the type information for *`T`*. The default value is a class of type `CComTypeInfoHolder`; however, you can override this template parameter by providing a class of a type other than `CComTypeInfoHolder`.
 
 ## Members
 
@@ -54,23 +53,23 @@ The class used to manage the type information for *T*. The default value is a cl
 
 |Name|Description|
 |----------|-----------------|
-|[IDispEventImpl::_tihclass](../../atl/reference/idispeventimpl-class.md)|The class used to manage the type information. By default, `CComTypeInfoHolder`.|
+|[`IDispEventImpl::_tihclass`](#_tihclass)|The class used to manage the type information. By default, `CComTypeInfoHolder`.|
 
 ### Public Constructors
 
 |Name|Description|
 |----------|-----------------|
-|[IDispEventImpl::IDispEventImpl](#idispeventimpl)|The constructor.|
+|[`IDispEventImpl::IDispEventImpl`](#idispeventimpl)|The constructor.|
 
 ### Public Methods
 
 |Name|Description|
 |----------|-----------------|
-|[IDispEventImpl::GetFuncInfoFromId](#getfuncinfofromid)|Locates the function index for the specified dispatch identifier.|
-|[IDispEventImpl::GetIDsOfNames](#getidsofnames)|Maps a single member and an optional set of argument names to a corresponding set of integer DISPIDs.|
-|[IDispEventImpl::GetTypeInfo](#gettypeinfo)|Retrieves the type information for an object.|
-|[IDispEventImpl::GetTypeInfoCount](#gettypeinfocount)|Retrieves the number of type information interfaces.|
-|[IDispEventImpl::GetUserDefinedType](#getuserdefinedtype)|Retrieves the basic type of a user-defined type.|
+|[`IDispEventImpl::GetFuncInfoFromId`](#getfuncinfofromid)|Locates the function index for the specified dispatch identifier.|
+|[`IDispEventImpl::GetIDsOfNames`](#getidsofnames)|Maps a single member and an optional set of argument names to a corresponding set of integer `DISPID`s.|
+|[`IDispEventImpl::GetTypeInfo`](#gettypeinfo)|Retrieves the type information for an object.|
+|[`IDispEventImpl::GetTypeInfoCount`](#gettypeinfocount)|Retrieves the number of type information interfaces.|
+|[`IDispEventImpl::GetUserDefinedType`](#getuserdefinedtype)|Retrieves the basic type of a user-defined type.|
 
 ## Remarks
 
@@ -78,18 +77,18 @@ The class used to manage the type information for *T*. The default value is a cl
 
 `IDispEventImpl` works in conjunction with the event sink map in your class to route events to the appropriate handler function. To use this class:
 
-Add a [SINK_ENTRY](composite-control-macros.md#sink_entry) or [SINK_ENTRY_EX](composite-control-macros.md#sink_entry_ex) macro to the event sink map for each event on each object that you want to handle. When using `IDispEventImpl` as a base class of a composite control, you can call [AtlAdviseSinkMap](connection-point-global-functions.md#atladvisesinkmap) to establish and break the connection with the event sources for all entries in the event sink map. In other cases, or for greater control, call [DispEventAdvise](idispeventsimpleimpl-class.md#dispeventadvise) to establish the connection between the source object and the base class. Call [DispEventUnadvise](idispeventsimpleimpl-class.md#dispeventunadvise) to break the connection.
+Add a [`SINK_ENTRY`](composite-control-macros.md#sink_entry) or [`SINK_ENTRY_EX`](composite-control-macros.md#sink_entry_ex) macro to the event sink map for each event on each object that you want to handle. When using `IDispEventImpl` as a base class of a composite control, you can call [`AtlAdviseSinkMap`](connection-point-global-functions.md#atladvisesinkmap) to establish and break the connection with the event sources for all entries in the event sink map. In other cases, or for greater control, call [`DispEventAdvise`](idispeventsimpleimpl-class.md#dispeventadvise) to establish the connection between the source object and the base class. Call [`DispEventUnadvise`](idispeventsimpleimpl-class.md#dispeventunadvise) to break the connection.
 
-You must derive from `IDispEventImpl` (using a unique value for *nID*) for each object for which you need to handle events. You can reuse the base class by unadvising against one source object then advising against a different source object, but the maximum number of source objects that can be handled by a single object at one time is limited by the number of `IDispEventImpl` base classes.
+You must derive from `IDispEventImpl` (using a unique value for *`nID`*) for each object for which you need to handle events. You can reuse the base class by unadvising against one source object then advising against a different source object, but the maximum number of source objects that can be handled by a single object at one time is limited by the number of `IDispEventImpl` base classes.
 
-`IDispEventImpl` provides the same functionality as [IDispEventSimpleImpl](../../atl/reference/idispeventsimpleimpl-class.md), except it gets type information about the interface from a type library rather than having it supplied as a pointer to an [_ATL_FUNC_INFO](../../atl/reference/atl-func-info-structure.md) structure. Use `IDispEventSimpleImpl` when you do not have a type library describing the event interface or want to avoid the overhead associated with using the type library.
+`IDispEventImpl` provides the same functionality as [`IDispEventSimpleImpl`](idispeventsimpleimpl-class.md), except it gets type information about the interface from a type library rather than having it supplied as a pointer to an [`_ATL_FUNC_INFO`](atl-func-info-structure.md) structure. Use `IDispEventSimpleImpl` when you do not have a type library describing the event interface or want to avoid the overhead associated with using the type library.
 
 > [!NOTE]
 > `IDispEventImpl` and `IDispEventSimpleImpl` provide their own implementation of `IUnknown::QueryInterface` enabling each `IDispEventImpl` and `IDispEventSimpleImpl` base class to act as a separate COM identity while still allowing direct access to class members in your main COM object.
 
-CE ATL implementation of ActiveX event sinks only supports return values of type HRESULT or void from your event handler methods; any other return value is unsupported and its behavior is undefined.
+CE ATL implementation of ActiveX event sinks only supports return values of type `HRESULT` or `void` from your event handler methods; any other return value is unsupported and its behavior is undefined.
 
-For more information, see [Supporting IDispEventImpl](../../atl/supporting-idispeventimpl.md).
+For more information, see [Supporting `IDispEventImpl`](../supporting-idispeventimpl.md).
 
 ## Inheritance Hierarchy
 
@@ -97,19 +96,19 @@ For more information, see [Supporting IDispEventImpl](../../atl/supporting-idisp
 
 `_IDispEventLocator`
 
-[IDispEventSimpleImpl](../../atl/reference/idispeventsimpleimpl-class.md)
+[`IDispEventSimpleImpl`](idispeventsimpleimpl-class.md)
 
 `IDispEventImpl`
 
 ## Requirements
 
-**Header:** atlcom.h
+**Header:** `atlcom.h`
 
-## <a name="getfuncinfofromid"></a> IDispEventImpl::GetFuncInfoFromId
+## <a name="getfuncinfofromid"></a> `IDispEventImpl::GetFuncInfoFromId`
 
 Locates the function index for the specified dispatch identifier.
 
-```
+```cpp
 HRESULT GetFuncInfoFromId(
     const IID& iid,
     DISPID dispidMember,
@@ -119,27 +118,27 @@ HRESULT GetFuncInfoFromId(
 
 ### Parameters
 
-*iid*<br/>
+*`iid`*\
 [in] A reference to the ID of the function.
 
-*dispidMember*<br/>
+*`dispidMember`*\
 [in] The dispatch ID of the function.
 
-*lcid*<br/>
+*`lcid`*\
 [in] The locale context of the function ID.
 
-*info*<br/>
+*`info`*\
 [in] The structure indicating how the function is called.
 
 ### Return Value
 
-A standard HRESULT value.
+A standard `HRESULT` value.
 
-## <a name="getidsofnames"></a> IDispEventImpl::GetIDsOfNames
+## <a name="getidsofnames"></a> `IDispEventImpl::GetIDsOfNames`
 
-Maps a single member and an optional set of argument names to a corresponding set of integer DISPIDs, which can be used on subsequent calls to [IDispatch::Invoke](/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke).
+Maps a single member and an optional set of argument names to a corresponding set of integer `DISPID`s, which can be used on subsequent calls to [`IDispatch::Invoke`](/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke).
 
-```
+```cpp
 STDMETHOD(GetIDsOfNames)(
     REFIID riid,
     LPOLESTR* rgszNames,
@@ -150,38 +149,36 @@ STDMETHOD(GetIDsOfNames)(
 
 ### Remarks
 
-See [IDispatch::GetIDsOfNames](/windows/win32/api/oaidl/nf-oaidl-idispatch-getidsofnames) in the Windows SDK.
+See [`IDispatch::GetIDsOfNames`](/windows/win32/api/oaidl/nf-oaidl-idispatch-getidsofnames) in the Windows SDK.
 
-## <a name="gettypeinfo"></a> IDispEventImpl::GetTypeInfo
+## <a name="gettypeinfo"></a> `IDispEventImpl::GetTypeInfo`
 
 Retrieves the type information for an object, which can then be used to get the type information for an interface.
 
-```
+```cpp
 STDMETHOD(GetTypeInfo)(
     UINT itinfo,
     LCID lcid,
     ITypeInfo** pptinfo);
 ```
 
-### Remarks
-
-## <a name="gettypeinfocount"></a> IDispEventImpl::GetTypeInfoCount
+## <a name="gettypeinfocount"></a> `IDispEventImpl::GetTypeInfoCount`
 
 Retrieves the number of type information interfaces that an object provides (either 0 or 1).
 
-```
+```cpp
 STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
 ```
 
 ### Remarks
 
-See [IDispatch::GetTypeInfoCount](/windows/win32/api/oaidl/nf-oaidl-idispatch-gettypeinfocount) in the Windows SDK.
+See [`IDispatch::GetTypeInfoCount`](/windows/win32/api/oaidl/nf-oaidl-idispatch-gettypeinfocount) in the Windows SDK.
 
-## <a name="getuserdefinedtype"></a> IDispEventImpl::GetUserDefinedType
+## <a name="getuserdefinedtype"></a> `IDispEventImpl::GetUserDefinedType`
 
 Retrieves the basic type of a user-defined type.
 
-```
+```cpp
 VARTYPE GetUserDefinedType(
     ITypeInfo* pTI,
     HREFTYPE hrt);
@@ -189,10 +186,10 @@ VARTYPE GetUserDefinedType(
 
 ### Parameters
 
-*pTI*<br/>
-[in] A pointer to the [ITypeInfo](/windows/win32/api/oaidl/nn-oaidl-itypeinfo) interface containing the user-defined type.
+*`pTI`*\
+[in] A pointer to the [`ITypeInfo`](/windows/win32/api/oaidl/nn-oaidl-itypeinfo) interface containing the user-defined type.
 
-*hrt*<br/>
+*`hrt`*\
 [in] A handle to the type description to be retrieved.
 
 ### Return Value
@@ -201,21 +198,21 @@ The type of variant.
 
 ### Remarks
 
-See [ITypeInfo::GetRefTypeInfo](/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getreftypeinfo).
+See [`ITypeInfo::GetRefTypeInfo`](/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getreftypeinfo).
 
-## <a name="idispeventimpl"></a> IDispEventImpl::IDispEventImpl
+## <a name="idispeventimpl"></a> `IDispEventImpl::IDispEventImpl`
 
-The constructor. Stores the values of the class template parameters *plibid*, *pdiid*, *wMajor*, and *wMinor*.
+The constructor. Stores the values of the class template parameters *`plibid`*, *`pdiid`*, *`wMajor`*, and *`wMinor`*.
 
-```
+```cpp
 IDispEventImpl();
 ```
 
-## <a name="tihclass"></a> IDispEventImpl::tihclass
+## <a name="_tihclass"></a> `IDispEventImpl::_tihclass`
 
-This typedef is an instance of the class template parameter *tihclass*.
+This typedef is an instance of the class template parameter *`tihclass`*.
 
-```
+```cpp
 typedef tihclass _tihclass;
 ```
 
@@ -225,10 +222,10 @@ By default, the class is `CComTypeInfoHolder`. `CComTypeInfoHolder` manages the
 
 ## See also
 
-[_ATL_FUNC_INFO Structure](../../atl/reference/atl-func-info-structure.md)<br/>
-[IDispatchImpl Class](../../atl/reference/idispatchimpl-class.md)<br/>
-[IDispEventSimpleImpl Class](../../atl/reference/idispeventsimpleimpl-class.md)<br/>
-[SINK_ENTRY](composite-control-macros.md#sink_entry)<br/>
-[SINK_ENTRY_EX](composite-control-macros.md#sink_entry_ex)<br/>
-[SINK_ENTRY_INFO](composite-control-macros.md#sink_entry_info)<br/>
-[Class Overview](../../atl/atl-class-overview.md)
+[`_ATL_FUNC_INFO` Structure](atl-func-info-structure.md)\
+[`IDispatchImpl` Class](idispatchimpl-class.md)\
+[`IDispEventSimpleImpl` Class](idispeventsimpleimpl-class.md)\
+[`SINK_ENTRY`](composite-control-macros.md#sink_entry)\
+[`SINK_ENTRY_EX`](composite-control-macros.md#sink_entry_ex)\
+[`SINK_ENTRY_INFO`](composite-control-macros.md#sink_entry_info)\
+[Class Overview](../atl-class-overview.md)
diff --git a/docs/atl/reference/iolecontrolimpl-class.md b/docs/atl/reference/iolecontrolimpl-class.md
index 6dc7d0f8a8..6c3430e9ce 100644
--- a/docs/atl/reference/iolecontrolimpl-class.md
+++ b/docs/atl/reference/iolecontrolimpl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: IOleControlImpl Class"
 title: "IOleControlImpl Class"
+description: "Learn more about: IOleControlImpl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["IOleControlImpl", "ATLCTL/ATL::IOleControlImpl", "ATLCTL/ATL::IOleControlImpl::FreezeEvents", "ATLCTL/ATL::IOleControlImpl::GetControlInfo", "ATLCTL/ATL::IOleControlImpl::OnAmbientPropertyChange", "ATLCTL/ATL::IOleControlImpl::OnMnemonic"]
 helpviewer_keywords: ["IOleControlImpl class"]
-ms.assetid: 5a4255ad-ede4-49ca-ba9a-07c2e919fa85
 ---
 # IOleControlImpl Class
 
@@ -22,7 +21,7 @@ class IOleControlImpl
 
 #### Parameters
 
-*T*<br/>
+*T*\
 Your class, derived from `IOleControlImpl`.
 
 ## Members
@@ -76,7 +75,7 @@ HRESULT GetControlInfo(LPCONTROLINFO pCI);
 
 ### Remarks
 
-See [IOleControl:GetControlInfo](/windows/win32/api/ocidl/nf-ocidl-iolecontrol-getcontrolinfo) in the Windows SDK.
+See [IOleControl::GetControlInfo](/windows/win32/api/ocidl/nf-ocidl-iolecontrol-getcontrolinfo) in the Windows SDK.
 
 ### Return Value
 
@@ -116,6 +115,6 @@ See [IOleControl::OnMnemonic](/windows/win32/api/ocidl/nf-ocidl-iolecontrol-onmn
 
 ## See also
 
-[IOleObjectImpl Class](../../atl/reference/ioleobjectimpl-class.md)<br/>
-[ActiveX Controls Interfaces](/windows/win32/com/activex-controls-interfaces)<br/>
+[IOleObjectImpl Class](../../atl/reference/ioleobjectimpl-class.md)\
+[ActiveX Controls Interfaces](/windows/win32/com/activex-controls-interfaces)\
 [Class Overview](../../atl/atl-class-overview.md)
diff --git a/docs/atl/reference/ipersiststorageimpl-class.md b/docs/atl/reference/ipersiststorageimpl-class.md
index 9b8e3de985..a5396bee53 100644
--- a/docs/atl/reference/ipersiststorageimpl-class.md
+++ b/docs/atl/reference/ipersiststorageimpl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: IPersistStorageImpl Class"
 title: "IPersistStorageImpl Class"
+description: "Learn more about: IPersistStorageImpl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["IPersistStorageImpl", "ATLCOM/ATL::IPersistStorageImpl", "ATLCOM/ATL::IPersistStorageImpl::GetClassID", "ATLCOM/ATL::IPersistStorageImpl::HandsOffStorage", "ATLCOM/ATL::IPersistStorageImpl::InitNew", "ATLCOM/ATL::IPersistStorageImpl::IsDirty", "ATLCOM/ATL::IPersistStorageImpl::Load", "ATLCOM/ATL::IPersistStorageImpl::Save", "ATLCOM/ATL::IPersistStorageImpl::SaveCompleted"]
 helpviewer_keywords: ["storage, ATL", "IPersistStorageImpl class"]
-ms.assetid: d652f02c-239c-47c7-9a50-3e9fc3014fff
 ---
 # IPersistStorageImpl Class
 
@@ -22,7 +21,7 @@ class ATL_NO_VTABLE IPersistStorageImpl : public IPersistStorage
 
 #### Parameters
 
-*T*<br/>
+*T*\
 Your class, derived from `IPersistStorageImpl`.
 
 ## Members
@@ -97,7 +96,7 @@ STDMETHOD(InitNew)(IStorage*);
 
 The ATL implementation delegates to the [IPersistStreamInit](/windows/win32/api/ocidl/nn-ocidl-ipersiststreaminit) interface.
 
-See [IPersistStorage:InitNew](/windows/win32/api/objidl/nf-objidl-ipersiststorage-initnew) in the Windows SDK.
+See [IPersistStorage::InitNew](/windows/win32/api/objidl/nf-objidl-ipersiststorage-initnew) in the Windows SDK.
 
 ## <a name="isdirty"></a> IPersistStorageImpl::IsDirty
 
@@ -111,7 +110,7 @@ STDMETHOD(IsDirty)(void);
 
 The ATL implementation delegates to the [IPersistStreamInit](/windows/win32/api/ocidl/nn-ocidl-ipersiststreaminit) interface.
 
-See [IPersistStorage:IsDirty](/windows/win32/api/objidl/nf-objidl-ipersiststorage-isdirty) in the Windows SDK.
+See [IPersistStorage::IsDirty](/windows/win32/api/objidl/nf-objidl-ipersiststorage-isdirty) in the Windows SDK.
 
 ## <a name="load"></a> IPersistStorageImpl::Load
 
@@ -125,7 +124,7 @@ STDMETHOD(Load)(IStorage* pStorage);
 
 The ATL implementation delegates to the [IPersistStreamInit](/windows/win32/api/ocidl/nn-ocidl-ipersiststreaminit) interface. `Load` uses a stream named "Contents" to retrieve the object's data. The [Save](#save) method originally creates this stream.
 
-See [IPersistStorage:Load](/windows/win32/api/objidl/nf-objidl-ipersiststorage-load) in the Windows SDK.
+See [IPersistStorage::Load](/windows/win32/api/objidl/nf-objidl-ipersiststorage-load) in the Windows SDK.
 
 ## <a name="save"></a> IPersistStorageImpl::Save
 
@@ -139,7 +138,7 @@ STDMETHOD(Save)(IStorage* pStorage, BOOL fSameAsLoad);
 
 The ATL implementation delegates to the [IPersistStreamInit](/windows/win32/api/ocidl/nn-ocidl-ipersiststreaminit) interface. When `Save` is first called, it creates a stream named "Contents" on the specified storage. This stream is then used in later calls to `Save` and in calls to [Load](#load).
 
-See [IPersistStorage:Save](/windows/win32/api/objidl/nf-objidl-ipersiststorage-save) in the Windows SDK.
+See [IPersistStorage::Save](/windows/win32/api/objidl/nf-objidl-ipersiststorage-save) in the Windows SDK.
 
 ## <a name="savecompleted"></a> IPersistStorageImpl::SaveCompleted
 
@@ -155,11 +154,11 @@ Returns S_OK.
 
 ### Remarks
 
-See [IPersistStorage:SaveCompleted](/windows/win32/api/objidl/nf-objidl-ipersiststorage-savecompleted) in the Windows SDK.
+See [IPersistStorage::SaveCompleted](/windows/win32/api/objidl/nf-objidl-ipersiststorage-savecompleted) in the Windows SDK.
 
 ## See also
 
-[Storages and Streams](/windows/win32/Stg/storages-and-streams)<br/>
-[IPersistStreamInitImpl Class](../../atl/reference/ipersiststreaminitimpl-class.md)<br/>
-[IPersistPropertyBagImpl Class](../../atl/reference/ipersistpropertybagimpl-class.md)<br/>
+[Storages and Streams](/windows/win32/Stg/storages-and-streams)\
+[IPersistStreamInitImpl Class](../../atl/reference/ipersiststreaminitimpl-class.md)\
+[IPersistPropertyBagImpl Class](../../atl/reference/ipersistpropertybagimpl-class.md)\
 [Class Overview](../../atl/atl-class-overview.md)
diff --git a/docs/atl/running-the-program-as-a-local-server.md b/docs/atl/running-the-program-as-a-local-server.md
index 5c063f7098..647555b455 100644
--- a/docs/atl/running-the-program-as-a-local-server.md
+++ b/docs/atl/running-the-program-as-a-local-server.md
@@ -4,6 +4,7 @@ title: "Running the Program as a Local Server"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["debugging [ATL], running services as local server", "ATL services, running as local servers"]
 ms.assetid: eb9701e6-e2a8-4666-897f-0c893aec8ac7
+ms.topic: concept-article
 ---
 # Running the Program as a Local Server
 
diff --git a/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md b/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md
index ef4dd01f18..e5797ef152 100644
--- a/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md
+++ b/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md
@@ -4,6 +4,7 @@ description: "How to statically link C++ code to the ATL Registrar code."
 ms.date: 09/03/2020
 helpviewer_keywords: ["statically linking to ATL Registrar code", "linking [C++], to ATL Registrar code"]
 ms.assetid: 835f5885-87a6-48fa-91e6-60988ee65538
+ms.topic: how-to
 ---
 # Setting up a static link to the Registrar code (C++ Only)
 
diff --git a/docs/atl/specifying-property-pages.md b/docs/atl/specifying-property-pages.md
index 25dd74d4e2..0213211d07 100644
--- a/docs/atl/specifying-property-pages.md
+++ b/docs/atl/specifying-property-pages.md
@@ -4,6 +4,7 @@ title: "Specifying Property Pages (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ISpecifyPropertyPages method", "property pages, specifying"]
 ms.assetid: ee8678cf-c708-49ab-b0ad-fc2db31f1ac3
+ms.topic: how-to
 ---
 # Specifying Property Pages
 
diff --git a/docs/atl/specifying-the-threading-model-for-a-project-atl.md b/docs/atl/specifying-the-threading-model-for-a-project-atl.md
index 70c3d124dd..f9d9ebeb3a 100644
--- a/docs/atl/specifying-the-threading-model-for-a-project-atl.md
+++ b/docs/atl/specifying-the-threading-model-for-a-project-atl.md
@@ -4,6 +4,7 @@ title: "Specifying the Threading Model for a Project (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["_ATL_FREE_THREADED macro", "_ATL_APARTMENT_THREADED macro", "ATL, multithreading", "threading [ATL], models", "_ATL_SINGLE_THREADED macro"]
 ms.assetid: 6b571078-521c-4f3e-9f08-482aa235a822
+ms.topic: concept-article
 ---
 # Specifying the Threading Model for a Project (ATL)
 
diff --git a/docs/atl/supporting-idispatch-and-ierrorinfo.md b/docs/atl/supporting-idispatch-and-ierrorinfo.md
index 7d0c89d28e..97c4908435 100644
--- a/docs/atl/supporting-idispatch-and-ierrorinfo.md
+++ b/docs/atl/supporting-idispatch-and-ierrorinfo.md
@@ -4,6 +4,7 @@ title: "Supporting IDispatch and IErrorInfo"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ISupportErrorInfoImpl method", "IErrorInfo class suppor in ATL", "IDispatchImpl class", "IDispatch class support in ATL"]
 ms.assetid: 7db2220f-319d-4ce9-9382-d340019f14f7
+ms.topic: concept-article
 ---
 # Supporting IDispatch and IErrorInfo
 
diff --git a/docs/atl/supporting-idispeventimpl.md b/docs/atl/supporting-idispeventimpl.md
index 008def002d..261ffa445c 100644
--- a/docs/atl/supporting-idispeventimpl.md
+++ b/docs/atl/supporting-idispeventimpl.md
@@ -4,6 +4,7 @@ title: "Supporting IDispEventImpl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["event sink maps, declaring", "IDispEventImpl class, advising and unadvising", "SINK_ENTRY macro", "type libraries, importing", "ATL, IDispEventImpl support in COM objects", "BEGIN_SINK_MAP macro", "IDispEventImpl class, declaring"]
 ms.assetid: b957f930-6a5b-4598-8e4d-8027759957e7
+ms.topic: concept-article
 ---
 # Supporting IDispEventImpl
 
diff --git a/docs/atl/testing-the-atl-dhtml-control.md b/docs/atl/testing-the-atl-dhtml-control.md
index f148c3fe6d..1d223e24d1 100644
--- a/docs/atl/testing-the-atl-dhtml-control.md
+++ b/docs/atl/testing-the-atl-dhtml-control.md
@@ -4,6 +4,7 @@ title: "Testing the ATL DHTML Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HTML controls, testing", "testing controls", "DHTML controls", "DHTML controls, testing"]
 ms.assetid: 0e4b4358-80ce-4505-8b06-ef4f30b1d1f0
+ms.topic: how-to
 ---
 # Testing the ATL DHTML Control
 
diff --git a/docs/atl/testing-the-modified-atl-dhtml-control.md b/docs/atl/testing-the-modified-atl-dhtml-control.md
index 71a65367b2..fe0809b88b 100644
--- a/docs/atl/testing-the-modified-atl-dhtml-control.md
+++ b/docs/atl/testing-the-modified-atl-dhtml-control.md
@@ -4,6 +4,7 @@ title: "Testing the Modified ATL DHTML Control"
 ms.date: "11/06/2018"
 helpviewer_keywords: ["HTML controls, testing", "testing controls", "DHTML controls, testing"]
 ms.assetid: 42316118-9433-410f-9d8a-0efcc1eff824
+ms.topic: how-to
 ---
 # Testing the Modified ATL DHTML Control
 
diff --git a/docs/atl/threading-models-and-critical-sections-classes.md b/docs/atl/threading-models-and-critical-sections-classes.md
index cd8a516c14..1bc26034ca 100644
--- a/docs/atl/threading-models-and-critical-sections-classes.md
+++ b/docs/atl/threading-models-and-critical-sections-classes.md
@@ -4,6 +4,7 @@ title: "Threading Models and Critical Sections Classes (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, critical sections", "ATL, multithreading", "threading [ATL], models", "critical sections"]
 ms.assetid: 759f05ef-6285-4be6-a2cc-78572dd75146
+ms.topic: concept-article
 ---
 # Threading Models and Critical Sections Classes
 
diff --git a/docs/atl/understanding-backus-naur-form-bnf-syntax.md b/docs/atl/understanding-backus-naur-form-bnf-syntax.md
index 1422e4379c..7e5295bf9e 100644
--- a/docs/atl/understanding-backus-naur-form-bnf-syntax.md
+++ b/docs/atl/understanding-backus-naur-form-bnf-syntax.md
@@ -4,6 +4,7 @@ title: "ATL Registrar and Backus-Naur form (BNF) syntax"
 ms.date: "05/14/2019"
 helpviewer_keywords: ["BNF notation", "Backus-Naur form (BNF) syntax"]
 ms.assetid: 994bbef0-9077-4aa8-bdfe-b7e830af9acc
+ms.topic: concept-article
 ---
 # Understanding Backus-Naur form (BNF) syntax
 
diff --git a/docs/atl/understanding-parse-trees.md b/docs/atl/understanding-parse-trees.md
index 3f10cd3fbc..a0eea7d823 100644
--- a/docs/atl/understanding-parse-trees.md
+++ b/docs/atl/understanding-parse-trees.md
@@ -3,6 +3,7 @@ description: "Learn more about: Understanding parse trees"
 title: "ATL Registrar and Parse Trees"
 ms.date: 04/15/2021
 helpviewer_keywords: ["parse trees"]
+ms.topic: concept-article
 ---
 # Understanding parse trees
 
diff --git a/docs/atl/understanding-window-traits.md b/docs/atl/understanding-window-traits.md
index 25564c04ec..df7884f862 100644
--- a/docs/atl/understanding-window-traits.md
+++ b/docs/atl/understanding-window-traits.md
@@ -4,6 +4,7 @@ title: "ATL Window Traits"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["window traits"]
 ms.assetid: c90cf850-9e91-49da-9cf3-ad4efb30347d
+ms.topic: concept-article
 ---
 # Understanding Window Traits
 
diff --git a/docs/atl/using-a-template-library.md b/docs/atl/using-a-template-library.md
index 36b56c57a1..11bd456ff9 100644
--- a/docs/atl/using-a-template-library.md
+++ b/docs/atl/using-a-template-library.md
@@ -4,6 +4,7 @@ title: "Using a Template Library (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["template libraries"]
 ms.assetid: 5e80ec6e-a61c-41ce-b34b-9a6252c46265
+ms.topic: concept-article
 ---
 # Using a Template Library
 
diff --git a/docs/atl/using-a-window.md b/docs/atl/using-a-window.md
index f79ec47eb9..69488133ae 100644
--- a/docs/atl/using-a-window.md
+++ b/docs/atl/using-a-window.md
@@ -4,6 +4,7 @@ title: "Using a Window (ATL)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, windows", "CWindow class, about CWindow class", "windows [C++], ATL"]
 ms.assetid: b3b9cc8e-4287-486b-b080-38852bc2943a
+ms.topic: concept-article
 ---
 # Using a Window
 
diff --git a/docs/atl/using-contained-windows.md b/docs/atl/using-contained-windows.md
index 6245184927..82894f8eea 100644
--- a/docs/atl/using-contained-windows.md
+++ b/docs/atl/using-contained-windows.md
@@ -4,6 +4,7 @@ title: "Using Contained Windows"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, windows", "windows [C++], ATL", "contained windows in ATL"]
 ms.assetid: 7b3d79e5-b569-413f-9b98-df4f14efbe2b
+ms.topic: concept-article
 ---
 # Using Contained Windows
 
diff --git a/docs/atl/using-idispeventimpl.md b/docs/atl/using-idispeventimpl.md
index d15678d3b6..9e9c1537f2 100644
--- a/docs/atl/using-idispeventimpl.md
+++ b/docs/atl/using-idispeventimpl.md
@@ -4,6 +4,7 @@ title: "Using IDispEventImpl (ATL)"
 ms.date: "08/19/2019"
 helpviewer_keywords: ["IDispEventImpl class, using"]
 ms.assetid: 82d53b61-9d0d-45c5-aff9-2fafa468a9ca
+ms.topic: how-to
 ---
 # Using IDispEventImpl
 
diff --git a/docs/atl/using-idispeventsimpleimpl.md b/docs/atl/using-idispeventsimpleimpl.md
index 2c0ee8349f..3f50230f72 100644
--- a/docs/atl/using-idispeventsimpleimpl.md
+++ b/docs/atl/using-idispeventsimpleimpl.md
@@ -4,6 +4,7 @@ title: "Using IDispEventSimpleImpl (ATL)"
 ms.date: "08/19/2019"
 helpviewer_keywords: ["IDispEventSimpleImpl class, using"]
 ms.assetid: 8640ad1a-4bd0-40a5-b5e4-7322685d7aab
+ms.topic: concept-article
 ---
 # Using IDispEventSimpleImpl
 
diff --git a/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md b/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md
index 1b9ef3d2d4..5541235e12 100644
--- a/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md
+++ b/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md
@@ -4,6 +4,7 @@ title: "Using Replaceable Parameters (ATL Registrar)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["%MODULE%"]
 ms.assetid: 0b376994-84a6-4967-8d97-8c01dfc94efe
+ms.topic: concept-article
 ---
 # Using Replaceable Parameters (The Registrar's Preprocessor)
 
diff --git a/docs/atl/using-task-manager.md b/docs/atl/using-task-manager.md
index 626e552599..31747f6282 100644
--- a/docs/atl/using-task-manager.md
+++ b/docs/atl/using-task-manager.md
@@ -4,6 +4,7 @@ title: "Using Task Manager"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Task Manager", "breakpoints, Task Manager", "debugging [ATL], using Task Manager"]
 ms.assetid: 773fccd5-308d-42c2-a17f-60ae94989062
+ms.topic: how-to
 ---
 # Using Task Manager
 
diff --git a/docs/build-insights/get-started-with-cpp-build-insights.md b/docs/build-insights/get-started-with-cpp-build-insights.md
index 0ee6e8c583..fccaa5d7f9 100644
--- a/docs/build-insights/get-started-with-cpp-build-insights.md
+++ b/docs/build-insights/get-started-with-cpp-build-insights.md
@@ -4,6 +4,7 @@ description: "A high-level overview of C++ Build Insights."
 ms.date: "11/03/2019"
 helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
 ms.custom: intro-get-started
+ms.topic: how-to
 ---
 # Get started with C++ Build Insights
 
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md b/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md
index 7265d140e1..133484cb32 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md
@@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl
 
 ### Functions
 
-[Name](#name)
+[Name](#name)\
 [Value](#value)
 
 ## <a name="environment-variable"></a> EnvironmentVariable
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md
index 0329689f4c..6eeabda6f4 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md
@@ -42,11 +42,11 @@ The activity type contained in the group.
 
 ### Functions
 
-[Back](#back)
-[begin](#begin)
-[end](#end)
-[Front](#front)
-[operator[]](#subscript-operator)
+[Back](#back)\
+[begin](#begin)\
+[end](#end)\
+[Front](#front)\
+[operator[]](#subscript-operator)\
 [Size](#size)
 
 ## <a name="back"></a> Back
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md
index 7b64275549..e206d537cf 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md
@@ -37,8 +37,8 @@ public:
 
 ### Functions
 
-[Back](#back)
-[operator[]](#subscript-operator)
+[Back](#back)\
+[operator[]](#subscript-operator)\
 [Size](#size)
 
 ## <a name="back"></a> Back
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event.md
index f8f8926917..e4518cef9e 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/event.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event.md
@@ -43,7 +43,7 @@ public:
 
 ### Functions
 
-[Data](#data)
+[Data](#data)\
 [EventId](#event-id)\
 [EventInstanceId](#event-instance-id)\
 [EventName](#event-name)\
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md b/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md
index 74ba8fc4ce..1607802410 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md
@@ -48,7 +48,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl
 
 ### Functions
 
-[Path](#path)
+[Path](#path)\
 [Type](#type)
 
 ## <a name="file-input"></a> FileInput
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md b/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md
index 6772fe813e..f339588c6e 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md
@@ -48,7 +48,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl
 
 ### Functions
 
-[Path](#path)
+[Path](#path)\
 [Type](#type)
 
 ## <a name="file-output"></a> FileOutput
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md b/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md
index edd2ae4ddf..ee9bac8bc6 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md
@@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl
 
 ### Functions
 
-[Name](#name)
+[Name](#name)\
 [Size](#size)
 
 ## <a name="force-inlinee"></a> ForceInlinee
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md b/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md
index 0006c06a83..3dc40659f7 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md
@@ -50,10 +50,10 @@ Along with the inherited members from its [Activity](activity.md) base class, th
 
 ### Functions
 
-[ToolPath](#tool-path)
-[ToolVersion](#tool-version)
-[ToolVersionString](#tool-version-string)
-[Type](#type)
+[ToolPath](#tool-path)\
+[ToolVersion](#tool-version)\
+[ToolVersionString](#tool-version-string)\
+[Type](#type)\
 [WorkingDirectory](#working-directory)
 
 ## <a name="invocation"></a> Invocation
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md b/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md
index 2d767ed280..ef78df1ffc 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md
@@ -67,8 +67,8 @@ If you don't want to convert ticks yourself, the `RawEvent` class provides membe
 [CPUTime](#cpu-time)\
 [Data](#data)\
 [Duration](#duration)\
-[EventId](#event-id)
-[EventInstanceId](#event-instance-id)
+[EventId](#event-id)\
+[EventInstanceId](#event-instance-id)\
 [EventName](#event-name)\
 [EventWideName](#event-wide-name)\
 [ExclusiveCPUTicks](#exclusive-cpu-ticks)\
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md b/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md
index 98b10ece5b..a172bccaea 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md
@@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl
 
 ### Functions
 
-[Key](#key)
+[Key](#key)\
 [Name](#name)
 
 ## <a name="key"></a> Key
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md b/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md
index 3729c2bebd..b73bc7f4fb 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md
@@ -48,8 +48,8 @@ Along with the inherited members from its [Activity](activity.md) base class, th
 
 ### Functions
 
-[Kind](#kind)
-[PrimaryTemplateSymbolKey](#primary-template-symbol-key)
+[Kind](#kind)\
+[PrimaryTemplateSymbolKey](#primary-template-symbol-key)\
 [SpecializationSymbolKey](#specialization-symbol-key)
 
 ## <a name="kind"></a> Kind
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/thread.md b/docs/build-insights/reference/sdk/cpp-event-data-types/thread.md
index 290d7e8275..1e850cafb6 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/thread.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/thread.md
@@ -3,6 +3,7 @@ title: "Thread class"
 description: "The C++ Build Insights SDK Thread class reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "Thread", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # Thread class
 
diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md b/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md
index 918f0ecba9..0d7d0284f4 100644
--- a/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md
+++ b/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md
@@ -47,10 +47,10 @@ If you don't want to convert ticks yourself, the `TraceInfo` class provides a me
 
 ### Functions
 
-[Duration](#duration)
-[LogicalProcessorCount](#logical-processor-count)
-[StartTimestamp](#start-timestamp)
-[StopTimestamp](#stop-timestamp)
+[Duration](#duration)\
+[LogicalProcessorCount](#logical-processor-count)\
+[StartTimestamp](#start-timestamp)\
+[StopTimestamp](#stop-timestamp)\
 [TickFrequency](#tick-frequency)
 
 ## <a name="duration"></a> Duration
diff --git a/docs/build-insights/reference/sdk/functions/relog-a.md b/docs/build-insights/reference/sdk/functions/relog-a.md
index ca57d0fdb6..36ec0048ec 100644
--- a/docs/build-insights/reference/sdk/functions/relog-a.md
+++ b/docs/build-insights/reference/sdk/functions/relog-a.md
@@ -1,10 +1,10 @@
 ---
 title: "RelogA"
 description: "The C++ Build Insights SDK RelogA function reference."
-ms.date: "02/12/2020"
+ms.date: 02/12/2020
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RelogA", "throughput analysis", "build time analysis", "vcperf.exe"]
 ---
-# RelogA
+# `RelogA`
 
 ::: moniker range="<=msvc-140"
 
@@ -26,17 +26,17 @@ enum RESULT_CODE RelogA(
 
 ### Parameters
 
-*inputLogFile*\
+*`inputLogFile`*\
 The input ETW trace that you wish to read events from.
 
-*outputLogFile*\
+*`outputLogFile`*\
 The file in which to write the new events.
 
-*relogDescriptor*\
-Pointer to a [RELOG_DESCRIPTOR](../other-types/relog-descriptor-struct.md) object. Use this object to configure the relogging session.
+*`relogDescriptor`*\
+Pointer to a [`RELOG_DESCRIPTOR`](../other-types/relog-descriptor-struct.md) object. Use this object to configure the relogging session.
 
 ### Return Value
 
-A result code from the [RESULT_CODE](../other-types/result-code-enum.md) enum.
+A result code from the [`RESULT_CODE`](../other-types/result-code-enum.md) enum.
 
 ::: moniker-end
diff --git a/docs/build-insights/reference/sdk/functions/relog-w.md b/docs/build-insights/reference/sdk/functions/relog-w.md
index c4ed0ad3d9..d042d6ce85 100644
--- a/docs/build-insights/reference/sdk/functions/relog-w.md
+++ b/docs/build-insights/reference/sdk/functions/relog-w.md
@@ -1,10 +1,10 @@
 ---
 title: "RelogW"
 description: "The C++ Build Insights SDK RelogW function reference."
-ms.date: "02/12/2020"
+ms.date: 02/12/2020
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RelogW", "throughput analysis", "build time analysis", "vcperf.exe"]
 ---
-# RelogW
+# `RelogW`
 
 ::: moniker range="<=msvc-140"
 
@@ -26,17 +26,17 @@ enum RESULT_CODE RelogW(
 
 ### Parameters
 
-*inputLogFile*\
+*`inputLogFile`*\
 The input ETW trace that you wish to read events from.
 
-*outputLogFile*\
+*`outputLogFile`*\
 The file in which to write the new events.
 
-*relogDescriptor*\
-Pointer to a [RELOG_DESCRIPTOR](../other-types/relog-descriptor-struct.md) object. Use this object to configure the relogging session.
+*`relogDescriptor`*\
+Pointer to a [`RELOG_DESCRIPTOR`](../other-types/relog-descriptor-struct.md) object. Use this object to configure the relogging session.
 
 ### Return Value
 
-A result code from the [RESULT_CODE](../other-types/result-code-enum.md) enum.
+A result code from the [`RESULT_CODE`](../other-types/result-code-enum.md) enum.
 
 ::: moniker-end
diff --git a/docs/build-insights/reference/sdk/functions/relog.md b/docs/build-insights/reference/sdk/functions/relog.md
index 13259b2978..4bf0bb1dce 100644
--- a/docs/build-insights/reference/sdk/functions/relog.md
+++ b/docs/build-insights/reference/sdk/functions/relog.md
@@ -1,10 +1,10 @@
 ---
 title: "Relog"
 description: "The C++ Build Insights SDK Relog function reference."
-ms.date: "02/12/2020"
+ms.date: 02/12/2020
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "Relog", "throughput analysis", "build time analysis", "vcperf.exe"]
 ---
-# Relog
+# `Relog`
 
 ::: moniker range="<=msvc-140"
 
@@ -41,42 +41,44 @@ RESULT_CODE Relog(
     StaticReloggerGroup<TReloggerGroupMembers...> reloggerGroup);
 ```
 
-### Parameters
+### Template parameters
+
+*`TAnalyzerGroupMembers`*\
+This template parameter pack is always deduced.
 
-*TAnalyzerGroupMembers*\
-This parameter is always deduced.
+*`TReloggerGroupMembers`*\
+This template parameter pack is always deduced.
 
-*TReloggerGroupMembers*\
-This parameter is always deduced.
+### Parameters
 
-*inputLogFile*\
+*`inputLogFile`*\
 The input ETW trace that you wish to read events from.
 
-*outputLogFile*\
+*`outputLogFile`*\
 The file in which to write the new events.
 
-*numberOfAnalysisPasses*\
+*`numberOfAnalysisPasses`*\
 The number of analysis passes to run on the input trace. The trace gets passed through the provided analyzer group once per analysis pass.
 
-*systemEventsRetentionFlags*\
-A bitmask that specifies which system ETW events to keep in the relogged trace. For more information, see [RELOG_RETENTION_SYSTEM_EVENT_FLAGS](../other-types/relog-retention-system-event-flags-constants.md).
+*`systemEventsRetentionFlags`*\
+A bitmask that specifies which system ETW events to keep in the relogged trace. For more information, see [`RELOG_RETENTION_SYSTEM_EVENT_FLAGS`](../other-types/relog-retention-system-event-flags-constants.md).
 
-*analyzerGroup*\
-The analyzer group used for the analysis phase of the relogging session. Call [MakeStaticAnalyzerGroup](make-static-analyzer-group.md) to create an analyzer group. To use a dynamic analyzer group obtained from [MakeDynamicAnalyzerGroup](make-dynamic-analyzer-group.md), first encapsulate it inside a static analyzer group by passing its address to `MakeStaticAnalyzerGroup`.
+*`analyzerGroup`*\
+The analyzer group used for the analysis phase of the relogging session. Call [`MakeStaticAnalyzerGroup`](make-static-analyzer-group.md) to create an analyzer group. To use a dynamic analyzer group obtained from [`MakeDynamicAnalyzerGroup`](make-dynamic-analyzer-group.md), first encapsulate it inside a static analyzer group by passing its address to `MakeStaticAnalyzerGroup`.
 
-*reloggerGroup*\
-The relogger group that relogs events into the trace file specified in *outputLogFile*. Call [MakeStaticReloggerGroup](make-static-relogger-group.md) to create a relogger group. To use a dynamic relogger group obtained from [MakeDynamicReloggerGroup](make-dynamic-relogger-group.md), first encapsulate it inside a static relogger group by passing its address to `MakeStaticReloggerGroup`.
+*`reloggerGroup`*\
+The relogger group that relogs events into the trace file specified in *`outputLogFile`*. Call [`MakeStaticReloggerGroup`](make-static-relogger-group.md) to create a relogger group. To use a dynamic relogger group obtained from [`MakeDynamicReloggerGroup`](make-dynamic-relogger-group.md), first encapsulate it inside a static relogger group by passing its address to `MakeStaticReloggerGroup`.
 
 ### Return Value
 
-A result code from the [RESULT_CODE](../other-types/result-code-enum.md) enum.
+A result code from the [`RESULT_CODE`](../other-types/result-code-enum.md) enum.
 
-### Remark
+### Remarks
 
-The input trace is passed through the analyzer group *numberOfAnalysisPasses* times. There's no similar option for relogging passes. The trace is passed trough the relogger group only once, after all analysis passes are complete.
+The input trace is passed through the analyzer group *`numberOfAnalysisPasses`* times. There's no similar option for relogging passes. The trace is passed trough the relogger group only once, after all analysis passes are complete.
 
-The relogging of system events like CPU samples from within a relogger class isn't supported. Use the *systemEventsRetentionFlags* parameter to decide which system events to keep in the output trace.
+The relogging of system events like CPU samples from within a relogger class isn't supported. Use the *`systemEventsRetentionFlags`* parameter to decide which system events to keep in the output trace.
 
-The `relog` function depends on the COM API. You must call `CoInitialize` before you call `relog`. Call `CoUninitialize` once `relog` has finished. If you call `relog` without a call to `CoInitialize` first, you'll get error code 9 (`RESULT_CODE_FAILURE_START_RELOGGER`).
+The `relog` function depends on the COM API. You must call [`CoInitialize`](/windows/win32/api/objbase/nf-objbase-coinitialize) before you call `relog`. Call [`CoUninitialize`](/windows/win32/api/combaseapi/nf-combaseapi-couninitialize) once `relog` has finished. If you call `relog` without a call to `CoInitialize` first, you'll get error code 9 (`RESULT_CODE_FAILURE_START_RELOGGER`).
 
 ::: moniker-end
diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md
index 46dedc00da..39ac969bab 100644
--- a/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md
+++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md
@@ -13,7 +13,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s
 ::: moniker-end
 ::: moniker range=">=msvc-150"
 
-The `StopTracingSessionA` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionA` must have administrator privileges.
+The `StopTracingSessionA` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionA` must have administrator privileges.
 
 ## Syntax
 
diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md
index a050b60ed3..32e05f8ce8 100644
--- a/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md
+++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md
@@ -13,7 +13,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s
 ::: moniker-end
 ::: moniker range=">=msvc-150"
 
-The `StopTracingSessionW` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionW` must have administrator privileges.
+The `StopTracingSessionW` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionW` must have administrator privileges.
 
 ## Syntax
 
diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md
index ca9bea6c23..9e52425ed8 100644
--- a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md
+++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md
@@ -15,7 +15,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s
 ::: moniker-end
 ::: moniker range=">=msvc-150"
 
-The `StopTracingSession` function stops an ongoing tracing session and produces a raw trace file. You can pass raw trace files to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. You can pass raw trace files to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start a relogging session.
+The `StopTracingSession` function stops an ongoing tracing session and produces a raw trace file. You can pass raw trace files to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. You can pass raw trace files to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start a relogging session.
 
 The caller must have administrator permissions to use `StopTracingSession`.
 
@@ -28,7 +28,7 @@ inline RESULT_CODE StopTracingSession(
     TRACING_SESSION_STATISTICS* statistics);
 
 inline RESULT_CODE StopTracingSession(
-    const wchar_t*              sessionName
+    const wchar_t*              sessionName,
     const wchar_t*              outputLogFile,
     TRACING_SESSION_STATISTICS* statistics);
 ```
diff --git a/docs/build-insights/reference/sdk/other-types/analysis-callbacks-struct.md b/docs/build-insights/reference/sdk/other-types/analysis-callbacks-struct.md
index 2957df07f1..348969f6fd 100644
--- a/docs/build-insights/reference/sdk/other-types/analysis-callbacks-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/analysis-callbacks-struct.md
@@ -3,6 +3,7 @@ title: "ANALYSIS_CALLBACKS structure"
 description: "The C++ Build Insights SDK ANALYSIS_CALLBACKS structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "ANALYSIS_CALLBACKS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # ANALYSIS_CALLBACKS structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/analysis-descriptor-struct.md b/docs/build-insights/reference/sdk/other-types/analysis-descriptor-struct.md
index 73012b0d9a..d18e384ca2 100644
--- a/docs/build-insights/reference/sdk/other-types/analysis-descriptor-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/analysis-descriptor-struct.md
@@ -3,6 +3,7 @@ title: "ANALYSIS_DESCRIPTOR structure"
 description: "The C++ Build Insights SDK ANALYSIS_DESCRIPTOR structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "ANALYSIS_DESCRIPTOR", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # ANALYSIS_DESCRIPTOR structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/callback-code-enum.md b/docs/build-insights/reference/sdk/other-types/callback-code-enum.md
index 157b5e4534..85cbc687ae 100644
--- a/docs/build-insights/reference/sdk/other-types/callback-code-enum.md
+++ b/docs/build-insights/reference/sdk/other-types/callback-code-enum.md
@@ -3,6 +3,7 @@ title: "CALLBACK_CODE enum"
 description: "The C++ Build Insights SDK CALLBACK_CODE enum reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "CALLBACK_CODE", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # CALLBACK_CODE enum
 
diff --git a/docs/build-insights/reference/sdk/other-types/relog-callbacks-struct.md b/docs/build-insights/reference/sdk/other-types/relog-callbacks-struct.md
index 4232ac43f4..d3173d03ac 100644
--- a/docs/build-insights/reference/sdk/other-types/relog-callbacks-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/relog-callbacks-struct.md
@@ -3,6 +3,7 @@ title: "RELOG_CALLBACKS structure"
 description: "The C++ Build Insights SDK RELOG_CALLBACKS structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RELOG_CALLBACKS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # RELOG_CALLBACKS structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/relog-descriptor-struct.md b/docs/build-insights/reference/sdk/other-types/relog-descriptor-struct.md
index 756616dbbc..36fa65c767 100644
--- a/docs/build-insights/reference/sdk/other-types/relog-descriptor-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/relog-descriptor-struct.md
@@ -3,6 +3,7 @@ title: "RELOG_DESCRIPTOR structure"
 description: "The C++ Build Insights SDK RELOG_DESCRIPTOR structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RELOG_DESCRIPTOR", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # RELOG_DESCRIPTOR structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/relog-retention-system-event-flags-constants.md b/docs/build-insights/reference/sdk/other-types/relog-retention-system-event-flags-constants.md
index 103d7f456b..c82f194f46 100644
--- a/docs/build-insights/reference/sdk/other-types/relog-retention-system-event-flags-constants.md
+++ b/docs/build-insights/reference/sdk/other-types/relog-retention-system-event-flags-constants.md
@@ -3,6 +3,7 @@ title: "RELOG_RETENTION_SYSTEM_EVENT_FLAGS constants"
 description: "The C++ Build Insights SDK RELOG_RETENTION_SYSTEM_EVENT_FLAGS constants reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RELOG_RETENTION_SYSTEM_EVENT_FLAGS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # RELOG_RETENTION_SYSTEM_EVENT_FLAGS constants
 
diff --git a/docs/build-insights/reference/sdk/other-types/result-code-enum.md b/docs/build-insights/reference/sdk/other-types/result-code-enum.md
index 6cc9ba32d4..d6ac44cca2 100644
--- a/docs/build-insights/reference/sdk/other-types/result-code-enum.md
+++ b/docs/build-insights/reference/sdk/other-types/result-code-enum.md
@@ -3,6 +3,7 @@ title: "RESULT_CODE enum"
 description: "The C++ Build Insights SDK RESULT_CODE enum reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "RESULT_CODE", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # RESULT_CODE enum
 
diff --git a/docs/build-insights/reference/sdk/other-types/tracing-session-msvc-event-flags-constants.md b/docs/build-insights/reference/sdk/other-types/tracing-session-msvc-event-flags-constants.md
index f54881ad7f..5bc47f3b43 100644
--- a/docs/build-insights/reference/sdk/other-types/tracing-session-msvc-event-flags-constants.md
+++ b/docs/build-insights/reference/sdk/other-types/tracing-session-msvc-event-flags-constants.md
@@ -3,6 +3,7 @@ title: "TRACING_SESSION_MSVC_EVENT_FLAGS constants"
 description: "The C++ Build Insights SDK TRACING_SESSION_MSVC_EVENT_FLAGS constants reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "TRACING_SESSION_MSVC_EVENT_FLAGS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # TRACING_SESSION_MSVC_EVENT_FLAGS constants
 
diff --git a/docs/build-insights/reference/sdk/other-types/tracing-session-options-struct.md b/docs/build-insights/reference/sdk/other-types/tracing-session-options-struct.md
index 88116edfe1..f087e51bf3 100644
--- a/docs/build-insights/reference/sdk/other-types/tracing-session-options-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/tracing-session-options-struct.md
@@ -3,6 +3,7 @@ title: "TRACING_SESSION_OPTIONS structure"
 description: "Learn about the C++ Build Insights SDK TRACING_SESSION_OPTIONS structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "TRACING_SESSION_OPTIONS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # TRACING_SESSION_OPTIONS structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/tracing-session-statistics-struct.md b/docs/build-insights/reference/sdk/other-types/tracing-session-statistics-struct.md
index 67374d0acf..80b32daa9d 100644
--- a/docs/build-insights/reference/sdk/other-types/tracing-session-statistics-struct.md
+++ b/docs/build-insights/reference/sdk/other-types/tracing-session-statistics-struct.md
@@ -3,6 +3,7 @@ title: "TRACING_SESSION_STATISTICS structure"
 description: "Learn about the C++ Build Insights SDK TRACING_SESSION_STATISTICS structure reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "TRACING_SESSION_STATISTICS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # TRACING_SESSION_STATISTICS structure
 
diff --git a/docs/build-insights/reference/sdk/other-types/tracing-session-system-event-flags-constants.md b/docs/build-insights/reference/sdk/other-types/tracing-session-system-event-flags-constants.md
index 4e24aea5d9..129d27038f 100644
--- a/docs/build-insights/reference/sdk/other-types/tracing-session-system-event-flags-constants.md
+++ b/docs/build-insights/reference/sdk/other-types/tracing-session-system-event-flags-constants.md
@@ -3,6 +3,7 @@ title: "TRACING_SESSION_SYSTEM_EVENT_FLAGS constants"
 description: "The C++ Build Insights SDK TRACING_SESSION_SYSTEM_EVENT_FLAGS constants reference."
 ms.date: "02/12/2020"
 helpviewer_keywords: ["C++ Build Insights", "C++ Build Insights SDK", "TRACING_SESSION_SYSTEM_EVENT_FLAGS", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: reference
 ---
 # TRACING_SESSION_SYSTEM_EVENT_FLAGS constants
 
diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml
index 99cea23e5b..d5f07030b9 100644
--- a/docs/build-insights/toc.yml
+++ b/docs/build-insights/toc.yml
@@ -6,8 +6,10 @@ items:
 - name: "Tutorials"
   expanded: true
   items:
-    - name: "Troubleshoot function inlining on build time"
+    - name: "Troubleshoot function inlining impact on build time"
       href: ../build-insights/tutorials/build-insights-function-view.md
+    - name: "Troubleshoot template instantiation impact on build time"
+      href: ../build-insights/tutorials/build-insights-template-view.md
     - name: "Troubleshoot header file impact on build time"
       href: ../build-insights/tutorials/build-insights-included-files-view.md
     - name: "Build Insights tips and tricks"
diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md
index 3e311500dc..bd0ccd9e31 100644
--- a/docs/build-insights/tutorials/build-insights-function-view.md
+++ b/docs/build-insights/tutorials/build-insights-function-view.md
@@ -1,17 +1,18 @@
 ---
-title: "Troubleshoot function inlining on build time"
+title: "Troubleshoot function inlining impact on build time"
 description: "Tutorial for how to use Build Insights function view to troubleshoot the impact of function inlining on build time in your C++ projects."
 ms.date: 5/30/2024
 helpviewer_keywords: ["C++ Build Insights", "inline function analysis", "build time analysis", "__forceinline analysis", "inlines analysis"]
+ms.topic: troubleshooting-general
 ---
-# Troubleshoot function inlining on build time
+# Troubleshoot function inlining impact on build time
 
 Use Build Insights **Functions** view to troubleshoot the impact of function inlining on build time in your C++ projects.
 
 ## Prerequisites
 
 - Visual Studio 2022 17.8 or greater.
-- C++ Build insights is enabled by default if you install either the Desktop development with C++ workload or the Game development with C++ workload.
+- C++ Build Insights is enabled by default if you install either the Desktop development with C++ workload or the Game development with C++ workload.
 
 :::image type="complex" source="./media/installer-desktop-cpp-build-insights.png" alt-text="Screenshot of the Visual Studio Installer with the Desktop development with C++ workload selected.":::
 The list of installed components is shown. C++ Build Insights is highlighted and is selected which means it's installed.
@@ -60,13 +61,13 @@ When the build finishes, an Event Trace Log (ETL) file opens. It's saved in the
 
 ## Function view
 
-In the window for the ETL file, choose the **Functions** tab. It shows the functions that were compiled and the time it took to generate the code for each function. If the amount of code generated for a function is negligible, it won't appear in the list to avoid degrading build event collection performance.
+In the window for the ETL file, choose the **Functions** tab. It shows the functions that were compiled and the time it took to generate the code for each function. If the amount of code generated for a function is negligible, it doesn't appear in the list to avoid degrading build event collection performance.
 
 :::image type="complex" source="./media/functions-view-before-fix.png" alt-text="Screenshot of the Build Insights Functions view file.":::
-In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.:::
+In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.
 :::image-end:::
 
-The **Time [sec, %]** column shows how long it took to compile each function in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among functions based on their use of parallel compiler threads. For example, if two different threads are compiling two different functions simultaneously within a one-second period, each function’s WCTR is recorded as 0.5 seconds. This reflects each function’s proportional share of the total compilation time, taking into account the resources each consumed during parallel execution. Thus, WCTR provides a better measure of the impact each function has on the overall build time in environments where multiple compilation activities occur simultaneously.
+The **Time [sec, %]** column shows how long it took to compile each function in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among functions based on their use of parallel compiler threads. For example, if two different threads are compiling two different functions simultaneously within a one-second period, each function's WCTR is recorded as 0.5 seconds. This reflects each function's proportional share of the total compilation time, taking into account the resources each consumed during parallel execution. Thus, WCTR provides a better measure of the impact each function has on the overall build time in environments where multiple compilation activities occur simultaneously.
 
 The **Forceinline Size** column shows roughly how many instructions were generated for the function. Click the chevron before the function name to see the individual inlined functions that were expanded in that function how roughly how many instructions were generated for each.
 
@@ -82,7 +83,7 @@ In this example, the `performPhysicsCalculations` function is taking the most ti
 In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.
 :::image-end:::
 
-Investigating further, by selecting the chevron before that function, and then sorting the **Forceinline Size** column from highest to lowest, we see the biggest contributors to the problem.
+By selecting the chevron before that function, and then sorting the **Forceinline Size** column from highest to lowest, we see the biggest contributors to the problem.
 
 :::image type="complex" source="./media/functions-view-expanded.png" alt-text="Screenshot of the Build Insights Functions view with an expanded function.":::
 performPhysicsCalculations() is expanded and shows a long list of functions that were inlined inside it. There are multiple instances of functions such as complexOperation(), recursiveHelper(), and sin() shown. The Forceinline Size column shows that complexOperation() is the largest inlined function at 315 instructions. recursiveHelper() has 119 instructions. Sin() has 75 instructions, but there are many more instances of it than the other functions.
@@ -105,14 +106,14 @@ static __forceinline T factorial(int n)
 }
 ```
 
-Perhaps the overall cost of calling this function is insignificant compared to the cost of the function itself. Making a function inline is most beneficial when the time it takes to call the function (pushing arguments on the stack, jumping to the function, popping return arguments, and returning from the function) is roughly similar to the time it takes to execute the function, and when the function is called a lot. When that's not the case, there may be diminishing returns on making it inline. We can try removing the `__forceinline` directive from it to see if it helps the build time. The code for `power`, `sin()` and `cos()` is similar in that the code consists of a loop that will execute many times. We can try removing the `__forceinline` directive from those functions as well.
+Perhaps the overall cost of calling this function is insignificant compared to the cost of the function itself. Making a function inline is most beneficial when the time it takes to call the function (pushing arguments on the stack, jumping to the function, popping return arguments, and returning from the function) is roughly similar to the time it takes to execute the function, and when the function is called a lot. When that's not the case, there may be diminishing returns on making it inline. We can try removing the `__forceinline` directive from it to see if it helps the build time. The code for `power`, `sin()`, and `cos()` is similar in that the code consists of a loop that executes many times. We can try removing the `__forceinline` directive from those functions as well.
 
 We rerun Build Insights from the main menu by choosing **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. We choose **Rebuild** instead of **Build** to measure the build time for the entire project, as before, and not for just the few files may be dirty right now.
 
 The build time goes from 25.181 seconds to 13.376 seconds and the `performPhysicsCalculations` function doesn't show up anymore in the **Functions** view because it doesn't contribute enough to the build time to be counted.
 
 :::image type="complex" source="./media/functions-view-after-fix.png" alt-text="Screenshot of the 2D vector header file.":::
-In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.:::
+In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.
 :::image-end:::
 
 The Diagnostics Session time is the overall time it took do the build plus any overhead for gathering the Build Insights data.
@@ -127,8 +128,8 @@ Double-click, right-click, or press **Enter** while on a file in the **Functions
 
 ## Tips
 
-- You can **File** > **Save As** the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time.
-- If you inadvertently close the Build Insights window, reopen it by finding the `<dateandtime>.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder.
+- Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things.
+- If you close the Build Insights window, reopen it by finding the `<dateandtime>.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder.
 - To dig into the Build Insights data with Windows Performance Analyzer (WPA), click the **Open in WPA** button in the bottom right of the ETL window.
 - Drag columns to change the order of the columns. For instance, you may prefer moving the **Time** column to be the first column. You can hide columns by right-clicking on the column header and deselecting the columns you don't want to see.
 - The **Functions** view provides a filter box to find a function that you're interested in. It does partial matches on the name you provide.
diff --git a/docs/build-insights/tutorials/build-insights-included-files-view.md b/docs/build-insights/tutorials/build-insights-included-files-view.md
index 94dbf1ccde..0b68665351 100644
--- a/docs/build-insights/tutorials/build-insights-included-files-view.md
+++ b/docs/build-insights/tutorials/build-insights-included-files-view.md
@@ -3,6 +3,7 @@ title: "Troubleshoot header file impact on build time"
 description: "Tutorial on how to use Build Insights Includes Files and Includes Tree views to troubleshoot the impact of #include files on build time."
 ms.date: 5/30/2024
 helpviewer_keywords: ["C++ Build Insights", "header file build time", "included files view", "include tree view", "#include analysis", "build time analysis"]
+ms.topic: how-to
 ---
 # Troubleshoot header file impact on build time
 
@@ -171,7 +172,7 @@ Or, you can right-click a file in the **Include Tree** view to jump to it in the
 - The **Included Files** and **Include Tree** views provide a filter box to find a header file that you're interested in. It does partial matches on the name you provide.
 - Sometimes the parse time reported for a header file is different depending on which file includes it. This can be due to the interplay of different `#define`s that affect which parts of the header are expanded, file caching, and other system factors.
 - If you forget what the **Included Files** or **Include Tree** view is trying to show you, hover over the tab to see a tooltip that describes the view. For example, if you hover over the **Include Tree** tab, the tooltip says: "View that shows include statistics for every file where the children nodes are the files included by the parent node."
-- You may see cases (like `Windows.h`) where the aggregated duration of all the times for a header file is longer than the duration of the entire build. What’s happening is that headers are being parsed on multiple threads at the same time. If two threads simultaneously spend one second parsing a header file, that's 2 seconds of build time even though only one second of wall clock time has gone by. For more information, see [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism).
+- You may see cases (like `Windows.h`) where the aggregated duration of all the times for a header file is longer than the duration of the entire build. What's happening is that headers are being parsed on multiple threads at the same time. If two threads simultaneously spend one second parsing a header file, that's 2 seconds of build time even though only one second of wall clock time has gone by. For more information, see [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism).
 
 ## Troubleshooting
 
@@ -185,4 +186,4 @@ Or, you can right-click a file in the **Include Tree** view to jump to it in the
 [Build Insights in Visual Studio video - Pure Virtual C++ 2023](/events/pure-virtual-cpp-2023/build-insights-in-visual-studio)\
 [Faster C++ builds, simplified: a new metric for time](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time)\
 [Troubleshoot function inlining on build time](build-insights-function-view.md)\
-[vcperf and Windows Performance Analyzer](vcperf-and-wpa.md)
\ No newline at end of file
+[vcperf and Windows Performance Analyzer](vcperf-and-wpa.md)
diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md
new file mode 100644
index 0000000000..47382cff0b
--- /dev/null
+++ b/docs/build-insights/tutorials/build-insights-template-view.md
@@ -0,0 +1,235 @@
+---
+title: "Troubleshoot template instantiation impact on build time"
+description: "Tutorial for how to use Build Insights template view to analyze and optimize the impact of template instantiations on build time in your C++ projects."
+ms.date: 07/17/2025
+helpviewer_keywords: ["C++ Build Insights", "template instantiation analysis", "build time analysis"]
+ms.topic: troubleshooting-general
+ai-usage: ai-assisted
+---
+
+# Troubleshoot template instantiation impact on build time
+
+Use the Build Insights **Templates** view to see how template instantiation affects C++ build time. It's especially helpful for projects that use lots of templates, like those with template metaprogramming or large generic libraries.
+
+The **Templates** view works like the Build Insights [Functions view](build-insights-function-view.md).
+
+## Prerequisites
+
+- Visual Studio 2022 version 17.10 or later.
+- The **C++ Build Insights** component must be installed. Either the Desktop development with C++ workload or the Game development with C++ workload includes it. To check if it's installed, follow these steps:
+  1. Open the Visual Studio Installer.
+  1. Select **Modify** to change your Visual Studio installation.
+  1. On the **Individual components** tab, search for and select **C++ Build Insights**, then select **Close** to finish installing the component.
+  :::image type="content" source="./media/installer-build-insights.png" alt-text="Screenshot of the Visual Studio Installer. The search box contains C++ Build Insights. The item C++ Build Insights is visible and selected.":::
+
+## Overview
+
+Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as the **Templates** view, which shows the time it takes to instantiate each template and which template instantiations add the most to your build time.
+
+In general, C++ template instantiation happens quickly. In rare cases, some template instantiations can noticeably slow down your build.
+
+In this article, you create a project that shows how template instantiation affects build time, run Build Insights to analyze the impact, and use those insights to make the build faster.
+
+## Create a test project
+
+1. Open Visual Studio and create a new **C++ Console App** project. Name it `TemplateAnalysis`.
+1. Create a header file named `Templates.h`, then replace its contents with the following code:
+
+    ```cpp
+    #pragma once
+
+    #include <utility>
+    #include <vector>
+
+    template<size_t> struct S1 {};
+    template<int n> using type = std::vector<S1<n>>;
+
+    template<size_t...> struct S2 {};
+
+    template<typename> struct S3 {};
+
+    template<size_t... n>
+    struct S3<std::index_sequence<n...>>
+    {
+        using type = S2<sizeof(type<n>)...>;
+    };
+
+    inline size_t LargeValue()
+    {
+        return sizeof(S3<std::make_index_sequence<1000>>);
+    }
+
+    inline size_t SmallValue()
+    {
+        return sizeof(S1<5>);
+    }
+    ```
+
+1. Create a source file named `LargeValue.cpp`, then replace its contents with the following code:
+
+    ```cpp
+    #include "Templates.h"
+
+    size_t GetLargeValue()
+    {
+        return LargeValue();
+    }
+    ```
+
+1. Replace the contents of the `TemplateAnalysis.cpp` file with the following code:
+
+    ```cpp
+    #include "Templates.h"
+
+    extern size_t GetLargeValue();
+
+    size_t GetSmallValue()
+    {
+        return SmallValue();
+    }
+
+    int main()
+    {
+        size_t largeValue = GetLargeValue();
+        size_t smallValue = GetSmallValue();
+        return 0;
+    }
+    ```
+
+## Enable build time data collection
+
+Template instantiation time collection is off by default to minimize build overhead. To turn it on:
+
+1. In Visual Studio, go to **Tools** > **Options**.
+1. In the **Options** dialog, expand **Build Insights** in the left navigation.
+1. Select **Collect Template Instantiation**.
+1. To choose where to save the report, select **Store Build Insights reports in this directory** and enter a directory. By default, it's saved in the folder pointed to by the Windows `TEMP` environment variable.
+1. Select **OK**.
+
+:::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantiation checkbox is selected.":::
+
+> [!NOTE]
+> Collecting template instantiation times increases build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks.
+
+## Run Build Insights to get template instantiation data
+
+From the main menu, select **Build** > **Run Build Insights on Solution** > **Rebuild**. You can also right-click a project in Solution Explorer and select **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project.
+
+:::image type="content" source="./media/build-insights-rebuild-project.png" alt-text="Screenshot of the main menu with Run Build Insights on Selection > Rebuild selected.":::
+
+When the build finishes, an Event Trace Log (ETL) file opens. The file name is based on the collection time.
+
+## Use Templates view to optimize build time
+
+The **Templates** view lists the template instantiations that contributed significantly to build time. The columns provide information about:
+
+- **Time [sec, %]** shows how long it takes to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads.
+- **Specialization Name** shows each template instantiation, including the template arguments used. This helps you find which template specializations are most expensive.
+- **Translation Unit** shows the source files where each template instantiation happens. Different files can cause the same template instantiation if they include the same header with the template definition.
+- **Instantiation File Name** shows where the template is defined.
+
+:::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations." lightbox="./media/templates-view-before-fix.png":::
+The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and TemplateAnalysis.cpp are affected. The build time is 4.966 seconds.
+:::image-end:::
+
+- Sort by **Time** to find the templates that take the longest to instantiate.
+- Expand a template to see its instantiations and where they happened.
+- Use the search box to focus on specific templates.
+
+### Understanding Templates view results
+
+To interpret the **Templates** view results:
+
+- **Empty view**: If nothing shows up in the **Templates** view, template instantiations don't dominate your build time. That's good news because your templates aren't a build bottleneck.
+- **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, different source files are causing the same expensive instantiation. This is often the biggest optimization opportunity.
+- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold, so you can focus on the most impactful ones and avoid noise from trivial instantiations.
+- **Time aggregation**: The time shown is the total time spent on that specific template instantiation, including any nested instantiations.
+
+## Improve build time by optimizing template instantiations
+
+In the example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `LargeValue.cpp` and `TemplateAnalysis.cpp` cause this template instantiation.
+
+The **Instantiation File Name** and the **Specialization Name** are the same for both entries, which means one expensive template instantiation that affects both source files. That's why the time for each of the two template instantiations is roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build.
+
+From the **Specialization Name** column, the expensive instantiation is `S3<std::make_index_sequence<1000>>`, which is instantiated in this code in `Templates.h`:
+
+```cpp
+inline size_t LargeValue()
+{
+    return sizeof(S3<std::make_index_sequence<1000>>);
+}
+```
+
+There are three main ways to decrease the cost of template instantiations.
+
+### Remove unused templates
+
+Check if the expensive template is used. If it isn't, the easiest solution is to remove the function or template. In the example, `LargeValue()` is used in `LargeValue.cpp`, so you can't remove it.
+
+Consider removing include directives that bring in unnecessary template instantiations. It's easy to forget to remove header files when you aren't using them, and unused includes can significantly affect build time.
+
+### Move template instantiations to source files
+
+In this example, rely on the third approach: move the definition that causes the expensive template instantiation to a source file.
+
+Because `LargeValue.cpp` is the only source file that calls `LargeValue()`, move the definition to `LargeValue.cpp`. This change prevents the template instantiation from happening in every file that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration:
+
+```cpp
+size_t LargeValue();
+```
+
+Inside `LargeValue.cpp` add the definition:
+
+```cpp
+size_t LargeValue()
+{
+    return sizeof(S3<std::make_index_sequence<1000>>);
+}
+```
+
+Rebuild the project and run Build Insights again from the main menu. Select **Build** > **Run Build Insights on Selection** > **Rebuild**.
+
+The build time decreases. While the template instantiation of `S3` still contributes to the build time, including only necessary template instantiations cuts the build time nearly in half. The count of `S3` instantiations is now one instead of two.
+
+:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization. The view shows reduced template instantiation time." lightbox="./media/templates-view-after-fix.png":::
+The Templates view now shows only one instantiation of S3 instead of two, and the total build time is significantly less at 3.152 seconds.
+:::image-end:::
+
+This technique works well for larger projects. If multiple files include `Templates.h`, each file adds the instantiation time of `LargeValue()` to the total build time. By moving the definition of `LargeValue()` to a dedicated source file, you minimize build time.
+
+### Optimize the template implementation
+
+Other optimization techniques include:
+
+- Use simpler template patterns
+- Use `if constexpr` instead of Substitution Failure Is Not An Error (SFINAE) when possible
+- Avoid recursive template instantiation patterns that lead to exponential growth
+
+For more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/), which provides detailed examples of reducing template instantiation overhead.
+
+## Tips
+
+- Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things.
+- If you close the Build Insights window, reopen it by finding the *dateandtime*.etl file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder.
+- Drag columns to change the order of the columns. For example, you might want to move the **Wall Time Responsibility** column to the first column. You can add or hide columns by right-clicking the column header and selecting or deselecting the columns you want.
+- The **Templates** view has a filter box to help you find a specific template instantiation. It does partial matches on the name you provide.
+
+## Troubleshooting
+
+**Templates view is empty**: This can mean:
+
+- Your build time isn't dominated by template instantiations.
+- Template data collection isn't enabled. To turn it on, see [Enable build time data collection](#enable-build-time-data-collection).
+- Do a rebuild instead of a build. The Build Insights window doesn't appear if nothing builds, which can be the case if no files changed since the last build.
+- Make sure you're using Visual Studio 2022 17.10 or later, and that the C++ Build Insights component is installed.
+
+**Build is much slower with Templates view enabled:** This is expected because of the extra data collection. Turn off template instantiation collection when you don't need it. For more information, see [Enable build time data collection](#enable-build-time-data-collection).
+
+## See also
+
+- [Build Insights tips and tricks](build-insights-tips.md)
+- [#include cleanup in Visual Studio](https://devblogs.microsoft.com/cppblog/include-cleanup-in-visual-studio)
+- [Troubleshoot header file impact on build time](build-insights-included-files-view.md)
+- [Troubleshoot function inlining on build time](build-insights-function-view.md)
+- [Build Insights now available in Visual Studio 2022](https://devblogs.microsoft.com/cppblog/build-insights-now-available-in-visual-studio-2022)
+- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming)
diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md
index c46fd43833..d071aaddda 100644
--- a/docs/build-insights/tutorials/build-insights-tips.md
+++ b/docs/build-insights/tutorials/build-insights-tips.md
@@ -1,7 +1,7 @@
 ---
 title: "Build Insights tips and tricks"
 description: "Learn time-saving tips for using Build Insights."
-ms.date: 11/11/2024
+ms.date: 1/8/2025
 author: tylermsft
 ms.author: twhitney
 ms.topic: article
@@ -30,14 +30,14 @@ If you have a large solution with many projects, you can filter the Build Insigh
 To try it, click the filter button on the filter column header and select the projects you want to see results for:
 
   :::image type="complex" source="./media/build-insights-filter-by-project.png" alt-text="A screenshot of the Build Insights window with the Included Files tab open.":::
-  The filter button is selected and a list of projects appears. Checkboxes next to two projects are checked.":::
+  The filter button is selected and a list of projects appears. Checkboxes next to two projects are checked.
   :::image-end:::
 
-You can also use file wildcards to filter results. The search is case-insensitive:
+You can also use file wildcards to filter results. The search is case-insensitive and you should use forward slashes (`/`) as path separators:
 
   :::image type="content" source="./media/build-insights-glob-filter.png" alt-text="A screenshot of the build insights filter dialog. There's a files to include text box and a files to exclude text box.":::
 
-This allows you to exclude files from a specific folder or only include files from a specific folder. For example, if your source is located at `C:\src\`, you could include files only from the renderer directory and its subdirectories by putting `C:/src/dev/renderer/**` into the **files to include** text box.
+This allows you to exclude files from a specific folder or only include files from a specific folder. For example, if your source is located at `C:\src\`, you could include files only from the renderer directory and its subdirectories by putting `C:/src/dev/renderer/**` into the **files to include** text box. Use forward slashes (`/`) as path separators.
 
 Here are some other examples:
 
@@ -55,10 +55,10 @@ This feature requires Visual Studio 2022 17.12 or later.
 
 Now you can designate a folder to automatically save Build Insight reports to so you can easily access them.
 
-To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in the **Store Build Insights reports in this directory** field:
+To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in the **Store Build Insights reports in this directory** textbox:
 
   :::image type="complex" source="./media/build-insights-reports-directory.png" alt-text="A screenshot of the options window.":::
-  tools > Options. Build Insights > Trace Collection is selected in the left pane. Collection Settings appears on the right. The Store Build Insights reports in this directory checkbox is selected, and the text box contains the path c:\users\contoso\workspace as an example.":::
+  In the left pane, Build Insights > Trace Collection is selected. In the collection settings, the checkbox for Store Build Insights reports in this directory is selected, and the directory text box contains the path c:\users\contoso\workspace as an example.
   :::image-end:::
 
 Reports are automatically saved to this folder when you run Build Insights. If a path isn't set, the `TEMP` folder is used.
diff --git a/docs/build-insights/tutorials/media/build-insights-rebuild-project.png b/docs/build-insights/tutorials/media/build-insights-rebuild-project.png
index 63ceed7705..fcd96f050e 100644
Binary files a/docs/build-insights/tutorials/media/build-insights-rebuild-project.png and b/docs/build-insights/tutorials/media/build-insights-rebuild-project.png differ
diff --git a/docs/build-insights/tutorials/media/installer-build-insights.png b/docs/build-insights/tutorials/media/installer-build-insights.png
new file mode 100644
index 0000000000..55e1ec52cf
Binary files /dev/null and b/docs/build-insights/tutorials/media/installer-build-insights.png differ
diff --git a/docs/build-insights/tutorials/media/templates-view-after-fix.png b/docs/build-insights/tutorials/media/templates-view-after-fix.png
new file mode 100644
index 0000000000..7acc1cf276
Binary files /dev/null and b/docs/build-insights/tutorials/media/templates-view-after-fix.png differ
diff --git a/docs/build-insights/tutorials/media/templates-view-before-fix.png b/docs/build-insights/tutorials/media/templates-view-before-fix.png
new file mode 100644
index 0000000000..22bd3ba5fd
Binary files /dev/null and b/docs/build-insights/tutorials/media/templates-view-before-fix.png differ
diff --git a/docs/build-insights/tutorials/media/tools-options-build-insights.png b/docs/build-insights/tutorials/media/tools-options-build-insights.png
new file mode 100644
index 0000000000..b0317d247d
Binary files /dev/null and b/docs/build-insights/tutorials/media/tools-options-build-insights.png differ
diff --git a/docs/build-insights/tutorials/vcperf-and-wpa.md b/docs/build-insights/tutorials/vcperf-and-wpa.md
index e4bf41a1e1..0b8b278a8a 100644
--- a/docs/build-insights/tutorials/vcperf-and-wpa.md
+++ b/docs/build-insights/tutorials/vcperf-and-wpa.md
@@ -3,6 +3,7 @@ title: "Tutorial: vcperf and Windows Performance Analyzer"
 description: "Tutorial on how to use vcperf and WPA for analyzing C++ build traces."
 ms.date: "11/03/2019"
 helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: tutorial
 ---
 # Tutorial: vcperf and Windows Performance Analyzer
 
diff --git a/docs/build-insights/tutorials/wpa-basics.md b/docs/build-insights/tutorials/wpa-basics.md
index 9ac76d830c..35ad6fe727 100644
--- a/docs/build-insights/tutorials/wpa-basics.md
+++ b/docs/build-insights/tutorials/wpa-basics.md
@@ -3,6 +3,7 @@ title: "Tutorial: Windows Performance Analyzer basics"
 description: "Tutorial on how to complete basic operations in Windows Performance Analyzer."
 ms.date: "11/03/2019"
 helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+ms.topic: tutorial
 ---
 # Tutorial: Windows Performance Analyzer basics
 
diff --git a/docs/build/adding-references-in-visual-cpp-projects.md b/docs/build/adding-references-in-visual-cpp-projects.md
index 5d8a5208f7..41de401156 100644
--- a/docs/build/adding-references-in-visual-cpp-projects.md
+++ b/docs/build/adding-references-in-visual-cpp-projects.md
@@ -4,6 +4,7 @@ title: "Consuming libraries and components in C++ projects"
 ms.date: 12/18/2020
 f1_keywords: ["VC.Project.References"]
 helpviewer_keywords: ["Add References Dialog Box (C++)", ".NET Framework (C++), Add References Dialog Box"]
+ms.topic: how-to
 ---
 # Consuming libraries and components
 
@@ -21,13 +22,13 @@ To consume a library that you have downloaded by using the **vcpkg** package man
 
 If your static library project gets built in the same solution:
 
-1. #include the header file(s) for the static library using quotation marks. In a typical solution, the path starts with `../<library project name>`. IntelliSense will help you find it.
+1. `#include` the header file(s) for the static library using quotation marks. In a typical solution, the path starts with `../<library project name>`. IntelliSense will help you find it.
 2. Add a reference to the static library project. Right-click on **References** under the application project node in **Solution Explorer** and choose **Add Reference**.
 
 If the static library isn't part of the solution:
 
 1. Right-click on the application project node in **Solution Explorer** and then choose **Properties**.
-2. In the **VC++ Directories** property page, add the path to the directory that contains the LIB file to **Library Paths**. Then, add the path to the library header file(s) to **Include Directories**.  
+2. In the **VC++ Directories** property page, add the path to the directory that contains the LIB file to **Library Directories**. Then, add the path to the library header file(s) to **Include Directories**.  
 3. In the **Linker > Input** property page, add the name of the LIB file to **Additional Dependencies**.
 
 ## Dynamic link libraries
@@ -161,5 +162,5 @@ The following properties exist on COM and .NET assembly references, and aren't m
 
 ## See also
 
-[C++ project property page reference](reference/property-pages-visual-cpp.md)<br>
+[C++ project property page reference](reference/property-pages-visual-cpp.md)\
 [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md)
diff --git a/docs/build/arm-exception-handling.md b/docs/build/arm-exception-handling.md
index f2f9b9a13e..b7cc353313 100644
--- a/docs/build/arm-exception-handling.md
+++ b/docs/build/arm-exception-handling.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: ARM Exception Handling"
 title: "ARM Exception Handling"
+description: "Learn more about: ARM Exception Handling"
 ms.date: 12/15/2021
-ms.assetid: fe0e615f-c033-4ad5-97f4-ff96af45b201
+ms.topic: concept-article
 ---
 # ARM Exception Handling
 
@@ -166,7 +166,7 @@ When the packed unwind format is insufficient to describe the unwinding of a fun
    |0|20|*X* is a 1-bit field that indicates the presence (1) or absence (0) of exception data.|
    |0|21|*`E`* is a 1-bit field that indicates that information that describes a single epilogue is packed into the header (1) rather than requiring additional scope words later (0).|
    |0|22|*F* is a 1-bit field that indicates that this record describes a function fragment (1) or a full function (0). A fragment implies that there's no prologue and that all prologue processing should be ignored.|
-   |0|23-27|*Epilogue Count* is a 5-bit field that has two meanings, depending on the state of the *`E`* bit:<br /><br /> -   If *`E`* is 0, this field is a count of the total number of epilogue scopes described in section 2. If more than 31 scopes exist in the function, then this field and the *Code Words* field must both be set to 0 to indicate that an extension word is required.<br />-   If *`E`* is 1, this field specifies the index of the first unwind code that describes the only epilogue.|
+   |0|23-27|*Epilogue Count* is a 5-bit field that has two meanings, depending on the state of the *`E`* bit:<br /><br />- If *`E`* is 0, this field is a count of the total number of epilogue scopes described in section 2. If more than 31 scopes exist in the function, then this field and the *Code Words* field must both be set to 0 to indicate that an extension word is required.<br />- If *`E`* is 1, this field specifies the index of the first unwind code that describes the only epilogue.|
    |0|28-31|*Code Words* is a 4-bit field that specifies the number of 32-bit words required to contain all of the unwind codes in section 4. If more than 15 words are required for more than 63 unwind code bytes, this field and the *Epilogue Count* field must both be set to 0 to indicate that an extension word is required.|
    |1|0-15|*Extended Epilogue Count* is a 16-bit field that provides more space for encoding an unusually large number of epilogues. The extension word that contains this field is only present if the *Epilogue Count* and *Code Words* fields in the first header word are both set to 0.|
    |1|16-23|*Extended Code Words* is an 8-bit field that provides more space for encoding an unusually large number of unwind code words. The extension word that contains this field is only present if the *Epilogue Count* and *Code Words* fields in the first header word are both set to 0.|
diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md
index 0b2ebe6c68..9bad5d2883 100644
--- a/docs/build/arm64-exception-handling.md
+++ b/docs/build/arm64-exception-handling.md
@@ -299,14 +299,20 @@ The unwind codes are encoded according to the table below. All unwind codes are
 | `save_fregp_x` | 1101101x'xxzzzzzz: save pair `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
 | `save_freg` | 1101110x'xxzzzzzz: save reg `d(8+#X)` at `[sp+#Z*8]`, offset \<= 504 |
 | `save_freg_x` | 11011110'xxxzzzzz: save reg `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -256 |
+| `alloc_z` | 11011111'zzzzzzzz: allocate stack with size `z * SVE-VL` |
 | `alloc_l` | 11100000'xxxxxxxx'xxxxxxxx'xxxxxxxx: allocate large stack with size \< 256M (2^24 * 16) |
 | `set_fp` | 11100001: set up `x29` with `mov x29,sp` |
 | `add_fp` | 11100010'xxxxxxxx: set up `x29` with `add x29,sp,#x*8` |
 | `nop` | 11100011: no unwind operation is required. |
 | `end` | 11100100: end of unwind code. Implies `ret` in epilog. |
 | `end_c` | 11100101: end of unwind code in current chained scope. |
-| `save_next` | 11100110: save next non-volatile Int or FP register pair. |
-|  | 11100111: reserved |
+| `save_next` | 11100110: save next register pair. |
+| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: save register(s)<ul><li>`p`: 0/1 => single `X(#r)` vs pair `X(#r)` + `X(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8</li></ul>(Windows >= 11 required) |
+| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)<ul><li>`p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8</li></ul>(Windows >= 11 required) |
+| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)<ul><li>`p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16</li></ul>(Windows >= 11 required) |
+| `save_zreg` | 11100111'0oo0rrrr'11oooooo: save reg `Z(#r+8)` at `[sp + #o * VL]`, (`Z8` through `Z23`)
+| `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r)` at `[sp + #o * (VL / 8)]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved)
+|  | 11100111'1yyyyyyy': reserved |
 |  | 11101xxx: reserved for custom stack cases below only generated for asm routines |
 |  | 11101000: Custom stack for `MSFT_OP_TRAP_FRAME` |
 |  | 11101001: Custom stack for `MSFT_OP_MACHINE_FRAME` |
@@ -330,7 +336,7 @@ In instructions with large values covering multiple bytes, the most significant
 
 Post-indexed offset addressing isn't allowed in a prolog. All offset ranges (#Z) match the encoding of `stp`/`str` addressing except `save_r19r20_x`, in which 248 is sufficient for all save areas (10 Int registers + 8 FP registers + 8 input registers).
 
-`save_next` must follow a save for Int or FP volatile register pair: `save_regp`, `save_regp_x`, `save_fregp`, `save_fregp_x`, `save_r19r20_x`, or another `save_next`. It saves the next register pair at the next 16-byte slot in "growing up" order. A `save_next` refers to the first FP register pair when it follows the `save-next` that denotes the last Int register pair.
+`save_next` must follow a save for a register pair: `save_regp`, `save_regp_x`, `save_fregp`, `save_fregp_x`, `save_r19r20_x`, or another `save_next`. It can also be used in conjunction with `save_any_xreg`, `save_any_dreg` or `save_any_qreg` but only when `p = 1`. It saves the next register pair in numerically increasing order to the next stack space. `save_next` must not be used beyond the last register of the same kind.
 
 Since the sizes of regular return and jump instructions are the same, there's no need for a separated `end` unwind code in tail-call scenarios.
 
diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md
index 7d65ba7985..db01bfefe2 100644
--- a/docs/build/arm64-windows-abi-conventions.md
+++ b/docs/build/arm64-windows-abi-conventions.md
@@ -1,15 +1,15 @@
 ---
 description: "Learn more about: Overview of ARM64 ABI conventions"
 title: "Overview of ARM64 ABI conventions"
-ms.date: "03/27/2019"
+ms.date: 04/08/2025
 ---
 # Overview of ARM64 ABI conventions
 
-The basic application binary interface (ABI) for Windows when compiled and run on ARM processors in 64-bit mode (ARMv8 or later architectures), for the most part, follows ARM's standard AArch64 EABI. This article highlights some of the key assumptions and changes from what is documented in the EABI. For information about the 32-bit ABI, see [Overview of ARM ABI conventions](overview-of-arm-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](https://github.com/ARM-software/abi-aa) (external link).
+The basic application binary interface (ABI) for Windows when compiled and run on ARM processors in 64-bit mode (ARMv8 or later architectures), usually follows ARM's standard AArch64 EABI. This article highlights some of the key assumptions and changes from what is documented in the EABI. For information about the 32-bit ABI, see [Overview of ARM ABI conventions](overview-of-arm-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](https://github.com/ARM-software/abi-aa) (external link).
 
 ## Definitions
 
-With the introduction of 64-bit support, ARM has defined several terms:
+With the introduction of 64-bit support, ARM defined several terms:
 
 - **AArch32** – the legacy 32-bit instruction set architecture (ISA) defined by ARM, including Thumb mode execution.
 - **AArch64** – the new 64-bit instruction set architecture (ISA) defined by ARM.
@@ -19,8 +19,9 @@ With the introduction of 64-bit support, ARM has defined several terms:
 Windows also uses these terms:
 
 - **ARM** – refers to the 32-bit ARM architecture (AArch32), sometimes referred to as WoA (Windows on ARM).
-- **ARM32** – same as ARM, above; used in this document for clarity.
+- **ARM32** – same as **ARM**. Used in this document for clarity.
 - **ARM64** – refers to the 64-bit ARM architecture (AArch64). There's no such thing as WoA64.
+- **ARM64EC** - code built as ARM64EC can interoperate with x64 code running under emulation in the same process. The Arm64EC code in the process runs with native performance, while the x64 code runs using emulation.
 
 Finally, when referring to data types, the following definitions from ARM are referenced:
 
@@ -30,7 +31,7 @@ Finally, when referring to data types, the following definitions from ARM are re
 
 ## Base requirements
 
-The ARM64 version of Windows presupposes that it's running on an ARMv8 or later architecture at all times. Both floating-point and NEON support are presumed to be present in hardware.
+The ARM64 version of Windows always presupposes that it's running on an ARMv8 or later architecture. Both floating-point and NEON support are presumed to be present in hardware.
 
 The ARMv8 specification describes new optional crypto and CRC helper opcodes for both AArch32 and AArch64. Support for them is currently optional, but recommended. To take advantage of these opcodes, apps should first make runtime checks for their existence.
 
@@ -74,7 +75,7 @@ The AArch64 architecture supports 32 integer registers:
 | x18 | N/A | Reserved platform register: in kernel mode, points to KPCR for the current processor; In user mode, points to TEB |
 | x19-x28 | Non-volatile | Scratch registers |
 | x29/fp | Non-volatile | Frame pointer |
-| x30/lr | Both | Link Register: Callee function must preserve it for its own return, but caller's value will be lost. |
+| x30/lr | Both | Link Register: Callee function must preserve it for its own return, but caller's value is lost. |
 
 Each register may be accessed as a full 64-bit value (via x0-x30) or as a 32-bit value (via w0-w30). 32-bit operations zero-extend their results up to 64 bits.
 
@@ -86,7 +87,7 @@ The frame pointer (x29) is required for compatibility with fast stack walking us
 
 ## Floating-point/SIMD registers
 
-The AArch64 architecture also supports 32 floating-point/SIMD registers, summarized below:
+The AArch64 architecture also supports these 32 floating-point/SIMD registers:
 
 | Register | Volatility | Role |
 | - | - | - |
@@ -118,7 +119,11 @@ Like AArch32, the AArch64 specification provides three system-controlled "thread
 
 ## Floating-point exceptions
 
-Support for IEEE floating-point exceptions is optional on AArch64 systems. For processor variants that do have hardware floating-point exceptions, the Windows kernel silently catches the exceptions and implicitly disables them in the FPCR register. This trap ensures normalized behavior across processor variants. Otherwise, code developed on a platform without exception support may find itself taking unexpected exceptions when running on a platform with support.
+To determine if an ARM CPU supports exceptions, write a value that enables exceptions to the FPCR register and then read it back. If the CPU supports floating-point exceptions, the bits corresponding to supported exceptions remain set, while the CPU resets the bits for unsupported exceptions.
+
+On ARM64, Windows delivers exceptions for processors that support hardware floating-point exceptions.
+
+The [`_set_controlfp`](/cpp/c-runtime-library/reference/controlfp-s) function on ARM platforms correctly changes the FPCR register when unmasking floating-point exceptions. However, instead of raising an unmasked exception, Windows resets the FPCR register to its defaults every time an FP exception is about to be raised.
 
 ## Parameter passing
 
@@ -148,7 +153,7 @@ For each argument in the list, the first matching rule from the following list i
 
 ### Stage C – Assignment of arguments to registers and stack
 
-For each argument in the list, the following rules are applied in turn until the argument has been allocated. When an argument is assigned to a register, any unused bits in the register have unspecified value. If an argument is assigned to a stack slot, any unused padding bytes have unspecified value.
+For each argument in the list, the following rules are applied in turn until the argument is allocated. When an argument is assigned to a register, any unused bits in the register have unspecified value. If an argument is assigned to a stack slot, any unused padding bytes have unspecified value.
 
 1. If the argument is a Half-, Single-, Double- or Quad-precision Floating-point or Short Vector Type, and the NSRN is less than 8, then the argument is allocated to the least significant bits of register v\[NSRN]. The NSRN is incremented by one. The argument has now been allocated.
 
@@ -158,7 +163,7 @@ For each argument in the list, the following rules are applied in turn until the
 
 1. If the argument is an HFA, an HVA, a Quad-precision Floating-point or Short Vector Type, then the NSAA is rounded up to the larger of 8 or the Natural Alignment of the argument's type.
 
-1. If the argument is a Half- or Single-precision Floating Point type, then the size of the argument is set to 8 bytes. The effect is as if the argument had been copied to the least significant bits of a 64-bit register, and the remaining bits filled with unspecified values.
+1. If the argument is a Half- or Single-precision Floating Point type, then the size of the argument is set to 8 bytes. The effect is as if the argument were copied to the least significant bits of a 64-bit register, and the remaining bits filled with unspecified values.
 
 1. If the argument is an HFA, an HVA, a Half-, Single-, Double-, or Quad-precision Floating-point or Short Vector Type, then the argument is copied to memory at the adjusted NSAA. The NSAA is incremented by the size of the argument. The argument has now been allocated.
 
@@ -199,7 +204,7 @@ Floating-point values are returned in s0, d0, or v0, as appropriate.
 A type is considered to be an HFA or HVA if all of the following hold:
 
 - It's non-empty,
-- It doesn't have any non-trivial default or copy constructors, destructors, or assignment operators,
+- It doesn't have any nontrivial default or copy constructors, destructors, or assignment operators,
 - All of its members have the same HFA or HVA type, or are float, double, or neon types that match the other members' HFA or HVA types.
 
 HVA values with four or fewer elements are returned in s0-s3, d0-d3, or v0-v3, as appropriate.
@@ -210,12 +215,12 @@ Types returned by value are handled differently depending on whether they have c
 - they have a trivial copy-assignment operator, and
 - they have a trivial destructor,
 
-and are returned by non-member functions or static member functions, use the following return style:
+and are returned by nonmember functions or static member functions, use the following return style:
 
 - Types that are HFAs with four or fewer elements are returned in s0-s3, d0-d3, or v0-v3, as appropriate.
 - Types less than or equal to 8 bytes are returned in x0.
 - Types less than or equal to 16 bytes are returned in x0 and x1, with x0 containing the lower-order 8 bytes.
-- For other aggregate types, the caller shall reserve a block of memory of sufficient size and alignment to hold the result. The address of the memory block shall be passed as an additional argument to the function in x8. The callee may modify the result memory block at any point during the execution of the subroutine. The callee isn't required to preserve the value stored in x8.
+- For other aggregate types, the caller shall reserve a block of memory of sufficient size and alignment to hold the result. The address of the memory block shall be passed as another argument to the function in x8. The callee may modify the result memory block at any point during the execution of the subroutine. The callee isn't required to preserve the value stored in x8.
 
 All other types use this convention:
 
@@ -223,9 +228,9 @@ All other types use this convention:
 
 ## Stack
 
-Following the ABI put forth by ARM, the stack must remain 16-byte aligned at all times. AArch64 contains a hardware feature that generates stack alignment faults whenever the SP isn't 16-byte aligned and an SP-relative load or store is done. Windows runs with this feature enabled at all times.
+Following the ABI put forth by ARM, the stack must always remain 16-byte aligned. AArch64 contains a hardware feature that generates stack alignment faults whenever the SP isn't 16-byte aligned and an SP-relative load or store is done. Windows always runs with this feature enabled.
 
-Functions that allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order. This action ensures no code can "leap over" the guard pages that Windows uses to expand the stack. Typically the touching is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x15.
+Functions that allocate 4k or more worth of stack must ensure that each page before the final page is touched in order. This action ensures no code can "leap over" the guard pages that Windows uses to expand the stack. Typically the touching is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x15.
 
 ## Red zone
 
@@ -241,7 +246,7 @@ Code within Windows is compiled with frame pointers enabled ([/Oy-](reference/oy
 
 ## Exception unwinding
 
-Unwinding during exception handling is assisted through the use of unwind codes. The unwind codes are a sequence of bytes stored in the .xdata section of the executable. They describe the operation of the prologue and epilogue in an abstract manner, such that the effects of a function's prologue can be undone in preparation for backing up to the caller's stack frame. For more information on the unwind codes, see [ARM64 exception handling](arm64-exception-handling.md).
+Unwinding during exception handling is assisted by using unwind codes. The unwind codes are a sequence of bytes stored in the .xdata section of the executable. They describe the operation of the prologue and epilogue in an abstract manner, such that the effects of a function's prologue can be undone in preparation for backing up to the caller's stack frame. For more information on the unwind codes, see [ARM64 exception handling](arm64-exception-handling.md).
 
 The ARM EABI also specifies an exception unwinding model that uses unwind codes. However, the specification as presented is insufficient for unwinding in Windows, which must handle cases where the PC is in the middle of a function prologue or epilogue.
 
@@ -251,7 +256,7 @@ Code that is dynamically generated should be described with dynamic function tab
 
 All ARMv8 CPUs are required to support a cycle counter register, a 64-bit register that Windows configures to be readable at any exception level, including user mode. It can be accessed via the special PMCCNTR_EL0 register, using the MSR opcode in assembly code, or the `_ReadStatusReg` intrinsic in C/C++ code.
 
-The cycle counter here is a true cycle counter, not a wall clock. The counting frequency will vary with the processor frequency. If you feel you must know the frequency of the cycle counter, you shouldn't be using the cycle counter. Instead, you want to measure wall clock time, for which you should use `QueryPerformanceCounter`.
+The cycle counter here is a true cycle counter, not a wall clock. The counting frequency varies with the processor frequency. If you feel you must know the frequency of the cycle counter, you shouldn't be using the cycle counter. Instead, you want to measure wall clock time, for which you should use `QueryPerformanceCounter`.
 
 ## See also
 
diff --git a/docs/build/arm64ec-windows-abi-conventions.md b/docs/build/arm64ec-windows-abi-conventions.md
index 39f6d7434e..9c78bc39f5 100644
--- a/docs/build/arm64ec-windows-abi-conventions.md
+++ b/docs/build/arm64ec-windows-abi-conventions.md
@@ -92,6 +92,12 @@ Special helper routines like `__chkstk_arm64ec` use custom calling conventions a
 
 ARM64EC follows the same struct packing rules used for x64 to ensure interoperability between ARM64EC code and x64 code. For more information and examples of x64 struct packing, see [Overview of x64 ABI conventions](x64-software-conventions.md).
 
+## Floating-point exceptions
+
+To determine if an ARM CPU supports exceptions, write a value that enables exceptions to the FPCR register and then read it back. If the CPU supports floating-point exceptions, the bits corresponding to supported exceptions remain set, while the CPU resets the bits for unsupported exceptions.
+
+On ARM64EC, Windows catches processor floating-point exceptions and disables them in the FPCR register. This ensures consistent behavior across different processor variants.
+
 ## Emulation helper ABI routines
 
 ARM64EC code and [thunks](#thunks) use emulation helper routines to transition between x64 and ARM64EC functions.
diff --git a/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md b/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md
index 6d15a9df76..01183ef989 100644
--- a/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md
+++ b/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md
@@ -4,6 +4,7 @@ title: "Building C/C++ Isolated Applications and Side-by-side Assemblies"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["isolated applications [C++]", "WinSxS [C++]", "native assembly cache [C++]", "builds [C++], isolated applications", "side-by-side applications [C++]", "builds [C++], side-by-side assemblies"]
 ms.assetid: 9465904e-76f7-48bd-bb3f-c55d8f1699b6
+ms.topic: concept-article
 ---
 # Building C/C++ Isolated Applications and Side-by-side Assemblies
 
diff --git a/docs/build/building-c-cpp-isolated-applications.md b/docs/build/building-c-cpp-isolated-applications.md
index 6494e2dd38..8724e842f8 100644
--- a/docs/build/building-c-cpp-isolated-applications.md
+++ b/docs/build/building-c-cpp-isolated-applications.md
@@ -4,6 +4,7 @@ title: "Building C/C++ Isolated Applications"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["isolated applications [C++]"]
 ms.assetid: 8a2fe4fa-0489-433e-bfc6-495844d8d73a
+ms.topic: concept-article
 ---
 # Building C/C++ Isolated Applications
 
diff --git a/docs/build/building-c-cpp-side-by-side-assemblies.md b/docs/build/building-c-cpp-side-by-side-assemblies.md
index 615b2c1d3b..29478d8b6e 100644
--- a/docs/build/building-c-cpp-side-by-side-assemblies.md
+++ b/docs/build/building-c-cpp-side-by-side-assemblies.md
@@ -4,6 +4,7 @@ title: "Building C/C++ Side-by-side Assemblies"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["side-by-side applications [C++]"]
 ms.assetid: 7fa20b16-3737-4f76-a0b5-1dacea19a1e8
+ms.topic: concept-article
 ---
 # Building C/C++ Side-by-side Assemblies
 
diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md
index 06332dd523..7b4a452f29 100644
--- a/docs/build/building-on-the-command-line.md
+++ b/docs/build/building-on-the-command-line.md
@@ -5,6 +5,7 @@ ms.custom: "conceptual"
 ms.date: 04/07/2022
 helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"]
 ms.assetid: 7ca9daed-a003-4162-842d-908f79058365
+ms.topic: how-to
 ---
 # Use the Microsoft C++ toolset from the command line
 
diff --git a/docs/build/calling-dll-functions-from-visual-basic-applications.md b/docs/build/calling-dll-functions-from-visual-basic-applications.md
index bf6850d0f5..38bcce3a90 100644
--- a/docs/build/calling-dll-functions-from-visual-basic-applications.md
+++ b/docs/build/calling-dll-functions-from-visual-basic-applications.md
@@ -4,6 +4,7 @@ title: "Calling DLL Functions from Visual Basic Applications"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["functions [C++], calling DLL functions from Visual Basic", "DLL functions [C++]", "function calls [C++], DLL functions", "DLLs [C++], calling", "calling DLL functions from VB applications [C++]", "__stdcall keyword [C++]", "DLL functions [C++], calling"]
 ms.assetid: 282f7fbf-a0f2-4b9f-b277-1982710be56c
+ms.topic: concept-article
 ---
 # Calling DLL Functions from Visual Basic Applications
 
diff --git a/docs/build/checking-for-memory-overwrites.md b/docs/build/checking-for-memory-overwrites.md
index 786540319e..5c8869aca1 100644
--- a/docs/build/checking-for-memory-overwrites.md
+++ b/docs/build/checking-for-memory-overwrites.md
@@ -4,6 +4,7 @@ title: "Checking for Memory Overwrites"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["memory, overwrites"]
 ms.assetid: da7c5d77-a267-415f-a8ab-ee5ce5bfc286
+ms.topic: concept-article
 ---
 # Checking for Memory Overwrites
 
diff --git a/docs/build/clang-support-msbuild.md b/docs/build/clang-support-msbuild.md
index 08c9adec55..6e44fbb42a 100644
--- a/docs/build/clang-support-msbuild.md
+++ b/docs/build/clang-support-msbuild.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Clang/LLVM support in Visual Studio projects"
 title: "Clang/LLVM support in Visual Studio projects"
+description: "Learn more about: Clang/LLVM support in Visual Studio projects"
 ms.date: 03/13/2024
 ms.description: "Configure a Visual Studio MSBuild project to use the Clang/LLVM toolchain."
 helpviewer_keywords: ["Clang support for C++ MSBuild projects"]
@@ -57,7 +57,7 @@ To configure a Visual Studio project to use Clang, right-click on the project no
 The project properties page is open to the Configuration Properties > General page. The Platform Toolset dropdown is selected, on which LLVM (clang-cl) is selected.
 :::image-end:::
 
-If you're using the Clang tools that are bundled with Visual Studio, no extra steps are required. For Windows projects, Visual Studio by default invokes Clang in [clang-cl](https://llvm.org/devmtg/2014-04/PDFs/Talks/clang-cl.pdf) mode. It links with the Microsoft implementation of the Standard Library. By default, **clang-cl.exe** is located in `*%VCINSTALLDIR%\Tools\Llvm\bin\*` and `*%VCINSTALLDIR%\Tools\Llvm\x64\bin\*`.
+If you're using the Clang tools that are bundled with Visual Studio, no extra steps are required. For Windows projects, Visual Studio by default invokes Clang in [clang-cl](https://llvm.org/devmtg/2014-04/PDFs/Talks/clang-cl.pdf) mode. It links with the Microsoft implementation of the Standard Library. By default, **clang-cl.exe** is located in *`%VCINSTALLDIR%\Tools\Llvm\bin\`* and *`%VCINSTALLDIR%\Tools\Llvm\x64\bin\`*.
 
 If you're using a custom Clang installation, you can change the value of the `LLVMInstallDir` property. For more information, see [Set a custom LLVM location](#custom_llvm_location).
 
@@ -116,5 +116,7 @@ After you have set up a Clang configuration, right-click again on the project no
 When debugging, you can use breakpoints, memory and data visualization, and most other debugging features.  
 
 :::image type="complex" source="media/clang-debug-msbuild.png" alt-text="Screenshot of Visual Studio debugging a sample app":::
-The portion of the app that is visible creates a string vector and adds some strings to it. Execution has stopped on a breakpoint for the code: v.push_back("Clang/LLVM");."
+The portion of the app that is visible creates a string vector and adds some strings to it. Execution has stopped on a breakpoint for the code: v.push_back("Clang/LLVM");.
+:::image-end:::
+
 ::: moniker-end
diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md
index 8aface6d9b..87d3fd7146 100644
--- a/docs/build/cmake-presets-vs.md
+++ b/docs/build/cmake-presets-vs.md
@@ -3,6 +3,7 @@ title: Configure and build with CMake Presets
 description: "Reference for using CMake Presets to configure and build CMake projects."
 ms.date: 06/09/2023
 ms.topic: reference
+ms.custom: sfi-image-nochange
 ---
 
 # Configure and build with CMake Presets in Visual Studio
@@ -19,7 +20,7 @@ This article contains information about *`CMakePresets.json`* integration with V
 
 We recommend *`CMakePresets.json`* as an alternative to *`CMakeSettings.json`*. Visual Studio never reads from both *`CMakePresets.json`* and *`CMakeSettings.json`* at the same time. To enable or disable *`CMakePresets.json`* integration in Visual Studio, see [Enable `CMakePresets.json` in Visual Studio 2019](#enable-cmakepresets-json-integration).
 
-## Supported CMake and  *`CMakePresets.json`* versions
+## Supported CMake and *`CMakePresets.json`* versions
 
 The supported *`CMakePresets.json`* and *`CMakeUserPresets.json`* schema versions depend on your version of Visual Studio:
 - Visual Studio 2019 version 16.10 and later support schema versions 2 and 3.
@@ -391,7 +392,7 @@ Instead, set the path to `vcpkg.cmake` by using the `VCPKG_ROOT` environment var
 
 If you're already using a CMake toolchain file and want to enable vcpkg integration, see [Using multiple toolchain files](/vcpkg/users/buildsystems/cmake-integration#using-multiple-toolchain-files). Follow those instructions to use an external toolchain file with a project by using vcpkg.
 
-## Variable substitution in  *`launch.vs.json`* and  *`tasks.vs.json`*
+## Variable substitution in *`launch.vs.json`* and *`tasks.vs.json`*
 
 *`CMakePresets.json`* supports variable substitution in *`launch.vs.json`* and *`tasks.vs.json`*. Here are some considerations:
 
diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md
index 40b56f6bb8..b56efcce7e 100644
--- a/docs/build/cmake-projects-in-visual-studio.md
+++ b/docs/build/cmake-projects-in-visual-studio.md
@@ -1,25 +1,27 @@
 ---
 title: "CMake projects in Visual Studio"
-description: "How to create and build C++ projects using CMake in Visual Studio."
-ms.date: 02/14/2022
+description: "Learn how to create and build C++ projects using CMake in Visual Studio."
+ms.date: 03/18/2025
+ms.topic: concept-article
 f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] 
+ms.custom: sfi-image-nochange
 ---
 # CMake projects in Visual Studio
 
 [CMake](https://cmake.org) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you're familiar with CMake. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). The [CMake tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake%20Tutorial) is a good starting point to learn more.
 
 > [!NOTE]
-> CMake has become more and more integrated with Visual Studio over the past few releases. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's found at the top of the table of contents on this page.
+> CMake has become more and more integrated with Visual Studio over the past few releases. To see the documentation for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page.
 
 ::: moniker range=">=msvc-160"
 
-Visual Studio's native support for CMake enables you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. `cmake.exe` is invoked directly by Visual Studio for CMake configuration and build.
+Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes `cmake.exe` directly for CMake configuration and build.
 
 ## Installation
 
 **C++ CMake tools for Windows** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads. Both **C++ CMake tools for Windows** and **Linux Development with C++** are required for cross-platform CMake development.
 
-:::image type="complex" source="media/cmake-install-2019.png" alt-text="Screenshot of the Visual Studio installer.":::
+:::image type="complex" source="media/cmake-install-2022.png" alt-text="Screenshot of the Visual Studio installer.":::
 In the installer, the Desktop development with C plus plus dropdown is selected and C plus plus C Make tools for Windows is selected."
 :::image-end:::
 
@@ -42,7 +44,7 @@ The dialog offers these options: clone a repository, open a project or solution,
 - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.
 
 > [!NOTE]
-> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level `CMakeLists.txt` exists in a subfolder and not at the root of the workspace, you'll be prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation).
+> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level *`CMakeLists.txt`* exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation).
 
 Once CMake cache generation has succeeded, you can also view your projects organized logically by targets. Choose the **Select View** button on the **Solution Explorer** toolbar. From the list in **Solution Explorer - Views**, select **CMake Targets View** and press **Enter** to open the targets view:
 
@@ -64,18 +66,18 @@ Most Visual Studio and C++ language features are supported by CMake projects in
 - [Clang/LLVM support](https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/)
 
 > [!NOTE]
-> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file is not relevant for CMake projects.
+> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file isn't relevant for CMake projects.
 
 ## Configuring CMake projects
 
-The CMake configure step generates the project build system. It's equivalent to invoking `cmake.exe` from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem).
+The CMake configure step generates the project build system. It's equivalent to invoking *`cmake.exe`* from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem).
 
-Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md).
+Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md).
 
-When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio will automatically run the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**.
+When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**.
 
-:::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the CMake configuration options in the Visual Studio settings window.":::
-The CMake configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date:', the option 'Never run configure step automatically' is selected.
+:::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the C Make configuration options in the Visual Studio settings window.":::
+The C Make configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date', the option 'Never run configure step automatically' is selected.
 :::image-end:::
 
 If the configure step finishes without errors, then the information that's available drives C++ IntelliSense and language services. It's also used in build and debug operations.
@@ -88,6 +90,12 @@ By default, most configuration messages are suppressed unless there's an error.
 
 You can also disable all CMake cache notifications (gold bars) by deselecting **Show CMake cache notification**.
 
+### Customize Targets View source groups
+
+By default, the CMake Targets View ignores the following source groups: *Source Files*, *Header Files*, *Resources*, *Object Files*. These groups are included by default in most CMake projects and would unnecessarily increase the number of clicks required to navigate the Targets View.
+
+You can enable the use of these source groups by selecting **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**.
+
 ### Troubleshooting CMake cache errors
 
 If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands:
@@ -112,8 +120,8 @@ To build a CMake project, you have these choices:
 
 As you would expect, build results are shown in the **Output Window** and **Error List**.
 
-:::image type="content" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window":::
-CMake build warnings about conversions that may result in data loss such as converting from a float to an integer, are visible.
+:::image type="complex" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window":::
+C Make build warnings about conversions that might result in data loss such as converting from a float to an integer, are visible.
 :::image-end:::
 
 ### Edit build settings
@@ -122,7 +130,7 @@ Visual Studio uses a CMake configuration file to drive CMake builds. CMake confi
 
 ## Debugging CMake projects
 
-All executable CMake targets are shown in the **Startup Item** dropdown in the toolbar. To start debugging, select one and press the **Debug > Start Debugging** button in the toolbar. In a CMake project, the "Current document" option is only valid for .cpp files.
+All executable CMake targets are shown in the **Startup Item** dropdown in the toolbar. To start debugging, select one and press the **Debug > Start Debugging** button in the toolbar. In a CMake project, the **Current document** option is only valid for .cpp files.
 
 :::image type="complex" source="media/debug-target.png" alt-text="Screenshot of the Visual Studio debug dropdown.":::
 The dropdown has these options: Show / Hide debug targets, current document, samples (which is highlighted), box2d_tests, and samples-noGUI.
@@ -130,7 +138,7 @@ The dropdown has these options: Show / Hide debug targets, current document, sam
 
 The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*`CMakePresets.json`* or *`CMakeSettings.json`*) or a *`CMakeLists.txt`* causes the CMake cache to be regenerated.
 
-You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and press **Debug > Debug and Launch Settings for \<active-target>**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
+You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \<active-target>**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
 
 ### Just My Code for CMake projects
 
@@ -138,7 +146,7 @@ When you build for Windows using the MSVC compiler, CMake projects have support
 
 ### Edit and Continue for CMake projects
 
-When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. For more information on Edit and Continue, see [Configure Edit and Continue (C#, VB, C++)](/visualstudio/debugger/how-to-enable-and-disable-edit-and-continue).
+When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue.
 
 ```
 if(MSVC)
@@ -147,6 +155,8 @@ if(MSVC)
 endif()
 ```
 
+For more information on Edit and Continue, see [Configure Edit and Continue (C#, VB, C++)](/visualstudio/debugger/how-to-enable-and-disable-edit-and-continue).
+
 ### Attach to a CMake project running on Linux
 
 Visual Studio allows you to debug a process running on a remote Linux system or WSL and debug it with the GDB debugger. To get started, select **Debug** > **Attach to Process...**, set the **Connection type** to **SSH**, and select your **Connection target** from the list of connections in the Connection Manager. Select a process from the list of available processes and press **Attach**. GDB must be installed on your Linux machine. For more information on SSH connections, see the [Connection Manager](../linux/connect-to-your-remote-linux-computer.md)
@@ -157,16 +167,16 @@ The following options are available on the dialog: Connection type (set to SSH),
 
 ## <a name="cmake-partial-activation"></a> CMake partial activation
 
-In Visual Studio 2022 version 17.1 and later, CMake functionality won't be enabled automatically if your root folder doesn't contain a `CMakeLists.txt` file. Instead, a dialog will prompt you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation won't start and CMake configurations (from `CMakeSettings.json` or `CMakePresets.json`) won't appear in the configuration dropdown. If you accept, you'll be taken to a workspace-level configuration file, `CMakeWorkspaceSettings.json` (stored in the `.vs` directory), to specify the folders you'd like to enable CMake for. (These folders contain your root `CMakeLists.txt` files).
+In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a *`CMakeLists.txt`* file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from *`CMakeSettings.json`* or *`CMakePresets.json`*) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, *`CMakeWorkspaceSettings.json`* (stored in the *`.vs`* directory), to specify the folders you'd like to enable CMake for. (These folders contain your root *`CMakeLists.txt`* files).
 
 The accepted properties are:
 
 | Property | Description |
 |--|--|
 | `enableCMake` | Enable Visual Studio's integration for this workspace. |
-| `sourceDirectory` | A string or array of strings specifying the directory or directories with `CMakeLists.txt`. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace will be ignored. |
+| `sourceDirectory` | A string or array of strings specifying the directory or directories with *`CMakeLists.txt`*. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. |
 
-You can reach `CMakeWorkspaceSettings.json` through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled.
+You can reach *`CMakeWorkspaceSettings.json`* through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled.
 
 ## Open an existing cache
 
@@ -197,7 +207,7 @@ When your custom or preferred tools generate your cache, CMake places files unde
 
 To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/).
 
-:::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists .txt file being edited in Visual Studio."
+:::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists TXT file being edited in Visual Studio."
 It contains the lines project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache.
 :::image-end:::
 
@@ -209,7 +219,7 @@ A C Make error message on line 3 of CMakeLists.txt is highlighted. The details a
 
 ### Language services for CMake
 
-Language services for CMake are available in Visual Studio 2019 version 16.5 or later. It supports code navigation features like Go To Definition, Peek Definition, and Find All References for CMake variables, functions, and targets in CMake script files. For more information, see [Code Navigation for CMake Scripts](https://devblogs.microsoft.com/cppblog/code-navigation-for-cmake-scripts/).
+Language services for CMake are available in Visual Studio 2019 version 16.5 or later. Language services support code navigation features like *Go To Definition*, *Peek Definition*, and *Find All References* for CMake variables, functions, and targets in CMake script files. For more information, see [Code Navigation for CMake Scripts](https://devblogs.microsoft.com/cppblog/code-navigation-for-cmake-scripts/).
 
 :::image type="complex" source="media/cmake-find-all-refs.png" alt-text="Screenshot of the Visual Studio Find All References window.":::
 Results of where SUPERTUX_SOURCES_CXX are found are shown. For example, in list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) and so on.
@@ -217,10 +227,10 @@ Results of where SUPERTUX_SOURCES_CXX are found are shown. For example, in list(
 
 ### CMake project manipulation
 
-CMake project manipulation is available in Visual Studio 2019 version 16.5 or later. Project manipulation enables you to add, remove, and rename source files and targets in your CMake project without manually editing your CMake scripts. When you add or remove files from the Solution Explorer, Visual Studio automatically edits your CMake project. There could be more than one place where it makes sense to add or remove a reference to a CMake script. If so, Visual Studio asks you where you want to make the change and displays a preview of the proposed changes. For step-by-step instructions, see [Add, Remove, and Rename Files and Targets in CMake Projects](https://devblogs.microsoft.com/cppblog/easily-add-remove-and-rename-files-and-targets-in-cmake-projects/).
+CMake project manipulation is available in Visual Studio 2019 version 16.5 or later. Project manipulation lets you add, remove, and rename source files and targets in your CMake project without manually editing your CMake scripts. When you add or remove files from the Solution Explorer, Visual Studio automatically edits your CMake project. There could be more than one place where it makes sense to add or remove a reference to a CMake script. If so, Visual Studio asks you where you want to make the change and displays a preview of the proposed changes. For step-by-step instructions, see [Add, Remove, and Rename Files and Targets in CMake Projects](https://devblogs.microsoft.com/cppblog/easily-add-remove-and-rename-files-and-targets-in-cmake-projects/).
 
 :::image type="complex" source="media/cmake-project-manipulation.png" alt-text="Screenshot of the Visual Studio Preview Changes dialog box.":::
-A tree view shows CMakeLists.txt, under which are two items: add_executable and set. Set is checked. The preview window shows where changes will be made. The line set (PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" shows "Demo.cpp" highlighted before the closing parenthesis. The apply button accepts the change, or you can press cancel.
+A tree view shows CMakeLists.txt, under which are two items: add_executable and set. Set is checked. The preview window shows where changes will be made. The line set PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" shows "Demo.cpp" highlighted before the closing parenthesis. The apply button accepts the change, or you can press cancel.
 :::image-end:::
 
 ## IntelliSense for CMake projects
@@ -244,15 +254,15 @@ CMake projects opened in Visual Studio integrate with vcpkg, a cross-platform C/
 
 If *`CMakeSettings.json`* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration.
 
-If *`CMakePresets.json`* is your active configuration file, you'll need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file.
+If *`CMakePresets.json`* is your active configuration file, you need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file.
 
 ## Run CMake from the command line
 
 If *`CMakePresets.json`* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *`CMakePresets.json`* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file.
 
-If *`CMakeSettings.json`* is your active CMake configuration file, then you'll need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
+If *`CMakeSettings.json`* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
 
-1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the command line](building-on-the-command-line.md) .
+1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) .
 
 1. Switch to your output folder.
 
@@ -268,7 +278,7 @@ Visual Studio 2017 has rich support for CMake, including [cross-platform CMake p
 
 **Visual C++ Tools for CMake** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads.
 
-:::image type="content" source="media/cmake-install.png" alt-text="Screenshot of the Visual Studio Installer. The Individual components tab is selected on which Visual C plus plus tools for CMake is selected.":::
+:::image type="content" source="media/cmake-install.png" alt-text="Screenshot of the Visual Studio Installer. The Individual components tab is selected on which Visual C plus plus tools for C Make is selected.":::
 
 For more information, see [Install the C++ Linux workload in Visual Studio](../linux/download-install-and-setup-the-linux-development-workload.md).
 
@@ -284,17 +294,17 @@ When you choose **File > Open > Folder** to open a folder containing a *`CMakeLi
 
 - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.
 
-You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.
+You can open folders containing any number of CMake projects. Visual Studio detects and configures all the top-level *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.
 
 :::image type="complex" source="media/cmake-multiple-roots.png" alt-text="Screenshot of the Visual Studio Solution Explorer.":::
-The files and folders of a CMake project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp.
+The files and folders of a C Make project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp.
 :::image-end:::
 
 You can also view your projects organized logically by targets. Choose **Targets view** from the dropdown in the **Solution Explorer** toolbar:
 
 :::image type="content" source="media/cmake-targets-view.png" alt-text="Screenshot of the dropdown button in the Visual Studio Solution Explorer that offers the CMake targets view option. Which is selected.":::
 
-Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also enables you to define and store multiple CMake build configurations. You can conveniently switch between them in the IDE.
+Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE.
 
 Otherwise, use the *`CMakeLists.txt`* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information.
 
@@ -305,7 +315,7 @@ If you need to pass arguments to an executable at debug time, you can use anothe
 
 ## Import an existing cache
 
-When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a pre-populated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new  *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog.
+When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a prepopulated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog.
 
 Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE.
 
@@ -313,13 +323,13 @@ Not everything in the cache is imported. Properties such as the generator and th
 
 1. From the main menu, choose **File > Open > CMake**:
 
-   :::image type="content" source="media/cmake-file-open.png" alt-text="Screenshot of the Visual Studio main menu. File > Open > C Make is selected.":::
+   :::image type="content" source="media/cmake-file-open.png" alt-text="Screenshot of the Visual Studio main menu with C Make selected.":::
 
    This command brings up the **Import CMake from Cache** wizard.
 
 2. Navigate to the *`CMakeCache.txt`* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears:
 
-   :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import CMake Project from Cache wizard. The directory path of the CMake project to import goes in the `folder` textbox.":::
+   :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import C Make Project from Cache wizard. The directory path of the C Make project to import goes in the folder textbox.":::
 
    When the wizard completes, you can see the new *`CMakeCache.txt`* file in **Solution Explorer** next to the root *`CMakeLists.txt`* file in your project.
 
@@ -327,31 +337,31 @@ Not everything in the cache is imported. Properties such as the generator and th
 
 To build a CMake project, you have these choices:
 
-1. In the General toolbar, find the **Configurations** dropdown. It's probably showing "Linux-Debug" or "x64-Debug" by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
+1. In the General toolbar, find the **Configurations** dropdown. It's probably showing **Linux-Debug** or **x64-Debug** by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
 
 1. Right-click on *`CMakeLists.txt`* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.
 
 1. From the main menu, select **Build > Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar.
 
-:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking CMakeLists.txt.":::
+:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking C Make Lists dot t x t.":::
 The menu has options such as Add, Open, Configure tasks, Build, Clean all, and so on.
 :::image-end:::
 
-You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
+You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md).
 
 As you would expect, build results are shown in the **Output Window** and **Error List**.
 
 :::image type="complex" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window.":::
-CMake build warnings about conversions that may result in data loss such as converting from a float to an integer are visible.
+C Make build warnings about conversions that might result in data loss such as converting from a float to an integer are visible.
 :::image-end:::
 
 In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *`CMakeLists.txt`* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document.
 
 ## Debugging CMake projects
 
-To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.)
+To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says **Select Startup Item**, select the dropdown arrow and choose the target that you want to run. (In a CMake project, the **Current document** option is only valid for .cpp files.)
 
-:::image type="content" source="media/cmake-run-button.png" alt-text="Screenshot of the Select Startup Item dropdown for a CMake project. You can select current document or hello-cmake.exe":::
+:::image type="content" source="media/cmake-run-button.png" alt-text="Screenshot of the Select Startup Item dropdown for a C Make project. You can select current document or hello-cmake.":::
 
 The **Run** or **F5** commands first build the project if changes have been made since the previous build.
 
@@ -361,8 +371,8 @@ You can customize a CMake debugging session by setting properties in the *`launc
 
 To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/).
 
-   :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists .txt file being edited in Visual Studio.":::
-   The file contains: project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache.
+   :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists file being edited in Visual Studio.":::
+   The file contains project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache.
    :::image-end:::
 
 As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*.
@@ -373,12 +383,12 @@ As soon as you save the file, the configuration step automatically runs again an
 
 ## CMake configure step
 
-When significant changes are made to the  *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.
+When significant changes are made to the *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.
 
-Multiple CMake projects might use the same CMake configuration name (for example, x86-Debug). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
+Multiple CMake projects might use the same CMake configuration name (for example, *x86-Debug*). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
 
-   :::image type="complex" source="media/cmake-build-only.png" alt-text="Screenshot of Visual Studio's main menu, open to CMake > Build Only.":::
-   The context menu shows what can be built--in this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted.
+   :::image type="complex" source="media/cmake-build-only.png" alt-text="Screenshot of Visual Studio's main menu, open to C Make Build Only.":::
+   The context menu shows what can be built. In this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted.
    :::image-end:::
 
 You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the  *`CMakeSettings.json`* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects.
@@ -387,7 +397,7 @@ You can limit builds and debug sessions to a subset of the projects in the works
 
 If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands:
 
-- **View Cache** opens the  *`CMakeCache.txt`* file from the build root folder in the editor. (Any edits you make here to  *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).)
+- **View Cache** opens the *`CMakeCache.txt`* file from the build root folder in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).
 
 - **Open Cache Folder** opens an Explorer window to the build root folder.
 
@@ -401,11 +411,11 @@ Automatic cache generation can be disabled in the **Tools > Options > CMake > Ge
 
 To build a single file in a CMake project, right-click on the file in **Solution Explorer**. Choose **Compile** from the pop-up menu. You can also build the currently open file in the editor by using the main **CMake** menu:
 
-:::image type="content" source="media/cmake-single-file-compile.png" alt-text="Screenshot of the CMake > Compile context menu. It contains one entry: Bullet3Collision.":::
+:::image type="content" source="media/cmake-single-file-compile.png" alt-text="Screenshot of the C Make Compile context menu. It contains one entry, Bullet 3 Collision.":::
 
 ## Run CMake from the command line
 
-If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
+If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
 
 1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md).
 
@@ -421,15 +431,15 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c
 
 ::: moniker-end
 
-## See also
-
-[Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md)\
-[Configure a Linux CMake project](../linux/cmake-linux-project.md)\
-[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)\
-[Customize CMake build settings](customize-cmake-settings.md)\
-[`CMakeSettings.json` schema reference](cmakesettings-reference.md)\
-[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)\
-[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)\
-[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)\
-[vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration)\
-[Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs)
+## Related content
+
+- [Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md)
+- [Configure a Linux CMake project](../linux/cmake-linux-project.md)
+- [Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)
+- [Customize CMake build settings](customize-cmake-settings.md)
+- [*`CMakeSettings.json`* schema reference](cmakesettings-reference.md)
+- [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
+- [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
+- [CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
+- [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration)
+- [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs)
diff --git a/docs/build/cmake-remote-debugging.md b/docs/build/cmake-remote-debugging.md
index da1c2c7774..41645840b3 100644
--- a/docs/build/cmake-remote-debugging.md
+++ b/docs/build/cmake-remote-debugging.md
@@ -1,8 +1,8 @@
 ---
 title: "Tutorial: Debug a CMake project on a remote Windows machine"
+description: "How to use Visual Studio C++ on Windows to create and build a CMake project. You'll then deploy and debug it on a remote Windows machine."
 ms.date: "12/4/2020"
 ms.topic: tutorial
-description: "How to use Visual Studio C++ on Windows to create and build a CMake project. You'll then deploy and debug it on a remote Windows machine."
 ---
 
 # Tutorial: Debug a CMake project on a remote Windows machine
@@ -115,7 +115,7 @@ For example, on the remote machine, from the Visual Studio Remote Debugger menu
 
 Then, in Visual Studio on the host machine, update the *`launch.vs.json`* file to match. For example, if you choose **No Authentication** on the remote debugger, update the *`launch.vs.json`* file in your project by adding `"authenticationType": "none"` to the `configurations` section *`launch.vs.json`*. Otherwise, `"authenticationType"` defaults to `"windows"` and doesn't need to be explicitly stated. This example shows a *`launch.vs.json`* file configured for no authentication:
 
-``` XAML
+```XAML
 {
   "version": "0.2.1",
   "defaults": {},
diff --git a/docs/build/common-visual-cpp-arm-migration-issues.md b/docs/build/common-visual-cpp-arm-migration-issues.md
index 93805a8ab7..36035c044b 100644
--- a/docs/build/common-visual-cpp-arm-migration-issues.md
+++ b/docs/build/common-visual-cpp-arm-migration-issues.md
@@ -2,28 +2,30 @@
 description: "Learn more about: Common Visual C++ ARM Migration Issues"
 title: "Common Visual C++ ARM Migration Issues"
 ms.date: "05/06/2019"
-ms.assetid: 0f4c434e-0679-4331-ba0a-cc15dd435a46
 ---
-# Common Visual C++ ARM Migration Issues
+# Common Visual C++ ARM migration issues
 
-When using the Microsoft C++ compiler (MSVC), the same C++ source code might produce different results on the ARM architecture than it does on x86 or x64 architectures.
+This document describes some of the common issues that you might encounter when you migrate code from x86 or x64 architectures to the ARM architecture. It also describes how to avoid these issues, and how to use the compiler to help identify them.
+
+> [!NOTE]
+> When this article refers to the ARM architecture, it applies to both ARM32 and ARM64.
 
 ## Sources of migration issues
 
 Many issues that you might encounter when you migrate code from the x86 or x64 architectures to the ARM architecture are related to source-code constructs that might invoke undefined, implementation-defined, or unspecified behavior.
 
-*Undefined behavior* is behavior that the C++ standard does not define, and that's caused by an operation that has no reasonable result: for example, converting a floating-point value to an unsigned integer, or shifting a value by a number of positions that is negative or exceeds the number of bits in its promoted type.
+*Undefined behavior* is behavior that the C++ standard doesn't define, and that's caused by an operation that has no reasonable result: for example, converting a floating-point value to an unsigned integer, or shifting a value by a number of positions that is negative or exceeds the number of bits in its promoted type.
 
 *Implementation-defined behavior* is behavior that the C++ standard requires the compiler vendor to define and document. A program can safely rely on implementation-defined behavior, even though doing so might not be portable. Examples of implementation-defined behavior include the sizes of built-in data types and their alignment requirements. An example of an operation that might be affected by implementation-defined behavior is accessing the variable arguments list.
 
-*Unspecified behavior* is behavior that the C++ standard leaves intentionally non-deterministic. Although the behavior is considered non-deterministic, particular invocations of unspecified behavior are determined by the compiler implementation. However, there is no requirement for a compiler vendor to predetermine the result or guarantee consistent behavior between comparable invocations, and there is no requirement for documentation. An example of unspecified behavior is the order in which sub-expressions, which include arguments to a function call, are evaluated.
+*Unspecified behavior* is behavior that the C++ standard leaves intentionally nondeterministic. Although the behavior is considered nondeterministic, particular invocations of unspecified behavior are determined by the compiler implementation. However, there's no requirement for a compiler vendor to predetermine the result or guarantee consistent behavior between comparable invocations, and there's no requirement for documentation. An example of unspecified behavior is the order in which sub-expressions, which include arguments to a function call, are evaluated.
 
-Other migration issues can be attributed to hardware differences between ARM and x86 or x64 architectures that interact with the C++ standard differently. For example, the strong memory model of the x86 and x64 architecture gives **`volatile`**-qualified variables some additional properties that have been used to facilitate certain kinds of inter-thread communication in the past. But the ARM architecture's weak memory model doesn't support this use, nor does the C++ standard require it.
+Other migration issues can be attributed to hardware differences between ARM and x86 or x64 architectures that interact with the C++ standard differently. For example, the strong memory model of the x86 and x64 architecture gives **`volatile`**-qualified variables some extra properties that have been used to facilitate certain kinds of inter-thread communication in the past. But the ARM architecture's weak memory model doesn't support this use, nor does the C++ standard require it.
 
 > [!IMPORTANT]
-> Although **`volatile`** gains some properties that can be used to implement limited forms of inter-thread communication on x86 and x64, these additional properties are not sufficient to implement inter-thread communication in general. The C++ standard recommends that such communication be implemented by using appropriate synchronization primitives instead.
+> Although **`volatile`** gains some properties that can be used to implement limited forms of inter-thread communication on x86 and x64, these properties aren't sufficient to implement inter-thread communication in general. The C++ standard recommends that such communication be implemented by using appropriate synchronization primitives instead.
 
-Because different platforms might express these kinds of behavior differently, porting software between platforms can be difficult and bug-prone if it depends on the behavior of a specific platform. Although many of these kinds of behavior can be observed and might appear stable, relying on them is at least non-portable, and in the cases of undefined or unspecified behavior, is also an error. Even the behavior that's cited in this document should not be relied on, and could change in future compilers or CPU implementations.
+Because different platforms might express these kinds of behavior differently, porting software between platforms can be difficult and bug-prone if it depends on the behavior of a specific platform. Although many of these kinds of behavior can be observed and might appear stable, relying on them is at least non-portable, and in the cases of undefined or unspecified behavior, is also an error. Even the behavior cited in this document shouldn't be relied on, and could change in future compilers or CPU implementations.
 
 ## Example migration issues
 
@@ -41,15 +43,15 @@ These platforms also differ in how they handle conversion of NaN (Not-a-Number)
 
 Floating-point conversion can only be relied on if you know that the value is within the range of the integer type that it's being converted to.
 
-### Shift operator (\<\< >>) behavior
+### Shift operator (`<<` `>>`) behavior
 
-On the ARM architecture, a value can be shifted left or right up to 255 bits before the pattern begins to repeat. On x86 and x64 architectures, the pattern is repeated at every multiple of 32 unless the source of the pattern is a 64-bit variable; in that case, the pattern repeats at every multiple of 64 on x64, and every multiple of 256 on x86, where a software implementation is employed. For example, for a 32-bit variable that has a value of 1 shifted left by 32 positions, on ARM the result is 0, on x86 the result is 1, and on x64 the result is also 1. However, if the source of the value is a 64-bit variable, then the result on all three platforms is 4294967296, and the value doesn't "wrap around" until it's shifted 64 positions on x64, or 256 positions on ARM and x86.
+On the ARM architecture, a value can be shifted left or right up to 255 bits before the pattern begins to repeat. On x86 and x64 architectures, the pattern is repeated at every multiple of 32 unless the source of the pattern is a 64-bit variable. In that case, the pattern repeats at every multiple of 64 on x64, and every multiple of 256 on x86, where a software implementation is employed. For example, for a 32-bit variable that has a value of 1 shifted left by 32 positions, on ARM the result is 0, on x86 the result is 1, and on x64 the result is also 1. However, if the source of the value is a 64-bit variable, then the result on all three platforms is 4294967296, and the value doesn't "wrap around" until it's shifted 64 positions on x64, or 256 positions on ARM and x86.
 
-Because the result of a shift operation that exceeds the number of bits in the source type is undefined, the compiler is not required to have consistent behavior in all situations. For example, if both operands of a shift are known at compile time, the compiler may optimize the program by using an internal routine to precompute the result of the shift and then substituting the result in place of the shift operation. If the shift amount is too large, or negative, the result of the internal routine might be different than the result of the same shift expression as executed by the CPU.
+Because the result of a shift operation that exceeds the number of bits in the source type is undefined, the compiler isn't required to have consistent behavior in all situations. For example, if both operands of a shift are known at compile time, the compiler may optimize the program by using an internal routine to precompute the result of the shift and then substituting the result in place of the shift operation. If the shift amount is too large, or negative, the result of the internal routine might be different than the result of the same shift expression as executed by the CPU.
 
 ### Variable arguments (varargs) behavior
 
-On the ARM architecture, parameters from the variable arguments list that are passed on the stack are subject to alignment. For example, a 64-bit parameter is aligned on a 64-bit boundary. On x86 and x64, arguments that are passed on the stack are not subject to alignment and pack tightly. This difference can cause a variadic function like `printf` to read memory addresses that were intended as padding on ARM if the expected layout of the variable arguments list is not matched exactly, even though it might work for a subset of some values on the x86 or x64 architectures. Consider this example:
+On the ARM architecture, parameters from the variable arguments list that are passed on the stack are subject to alignment. For example, a 64-bit parameter is aligned on a 64-bit boundary. On x86 and x64, arguments that are passed on the stack aren't subject to alignment and pack tightly. This difference can cause a variadic function like `printf` to read memory addresses that were intended as padding on ARM if the expected layout of the variable arguments list isn't matched exactly, even though it might work for a subset of some values on the x86 or x64 architectures. Consider this example:
 
 ```C
 // notice that a 64-bit integer is passed to the function, but '%d' is used to read it.
@@ -69,7 +71,7 @@ printf("%I64d\n", 1LL);
 
 Because ARM, x86, and x64 processors are so different, they can present different requirements to compiler implementations, and also different opportunities for optimizations. Because of this, together with other factors like calling-convention and optimization settings, a compiler might evaluate function arguments in a different order on different architectures or when the other factors are changed. This can cause the behavior of an app that relies on a specific evaluation order to change unexpectedly.
 
-This kind of error can occur when arguments to a function have side effects that impact other arguments to the function in the same call. Usually this kind of dependency is easy to avoid, but it can sometimes be obscured by dependencies that are difficult to discern, or by operator overloading. Consider this code example:
+This kind of error can occur when arguments to a function have side effects that impact other arguments to the function in the same call. Usually this kind of dependency is easy to avoid but can be obscured by dependencies that are difficult to discern or by operator overloading. Consider this code example:
 
 ```cpp
 handle memory_handle;
@@ -83,15 +85,15 @@ This appears well-defined, but if `->` and `*` are overloaded operators, then th
 Handle::acquire(operator->(memory_handle), operator*(p));
 ```
 
-And if there's a dependency between `operator->(memory_handle)` and `operator*(p)`, the code might rely on a specific evaluation order, even though the original code looks like there is no possible dependency.
+And if there's a dependency between `operator->(memory_handle)` and `operator*(p)`, the code might rely on a specific evaluation order, even though the original code looks like there's no possible dependency.
 
-### volatile keyword default behavior
+### `volatile` keyword default behavior
 
 The MSVC compiler supports two different interpretations of the **`volatile`** storage qualifier that you can specify by using compiler switches. The [/volatile:ms](reference/volatile-volatile-keyword-interpretation.md) switch selects the Microsoft extended volatile semantics that guarantee strong ordering, as has been the traditional case for x86 and x64 because of the strong memory model on those architectures. The [/volatile:iso](reference/volatile-volatile-keyword-interpretation.md) switch selects the strict C++ standard volatile semantics that don't guarantee strong ordering.
 
 On the ARM architecture (except ARM64EC), the default is **/volatile:iso** because ARM processors have a weakly ordered memory model, and because ARM software doesn't have a legacy of relying on the extended semantics of **/volatile:ms** and doesn't usually have to interface with software that does. However, it's still sometimes convenient or even required to compile an ARM program to use the extended semantics. For example, it may be too costly to port a program to use the ISO C++ semantics, or driver software might have to adhere to the traditional semantics to function correctly. In these cases, you can use the **/volatile:ms** switch; however, to recreate the traditional volatile semantics on ARM targets, the compiler must insert memory barriers around each read or write of a **`volatile`** variable to enforce strong ordering, which can have a negative impact on performance.
 
-On the x86, x64 and ARM64EC architectures, the default is **/volatile:ms** because much of the software that has already been created for these architectures by using MSVC relies on them. When you compile x86, x64 and ARM64EC programs, you can specify the **/volatile:iso** switch to help avoid unnecessary reliance on the traditional volatile semantics, and to promote portability.
+On the x86, x64, and ARM64EC architectures, the default is **/volatile:ms** because much of the software that has already been created for these architectures by using MSVC relies on them. When you compile x86, x64 and ARM64EC programs, you can specify the **/volatile:iso** switch to help avoid unnecessary reliance on the traditional volatile semantics, and to promote portability.
 
 ## See also
 
diff --git a/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md b/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md
index 7b3b78360b..ef50625ae8 100644
--- a/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md
+++ b/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md
@@ -4,6 +4,7 @@ title: "Concepts of Isolated Applications and Side-by-side Assemblies"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["side-by-side assemblies [C++]", "isolated assemblies [C++]"]
 ms.assetid: 945a885f-cb3e-4c8a-a0b9-2c2e3e02cc50
+ms.topic: concept-article
 ---
 # Concepts of Isolated Applications and Side-by-side Assemblies
 
diff --git a/docs/build/configure-cmake-debugging-sessions.md b/docs/build/configure-cmake-debugging-sessions.md
index 896d5a3bf4..a16c9e0f9b 100644
--- a/docs/build/configure-cmake-debugging-sessions.md
+++ b/docs/build/configure-cmake-debugging-sessions.md
@@ -3,6 +3,7 @@ title: "Configure CMake debugging sessions in Visual Studio"
 description: "Describes how to use Visual Studio to configure CMake debugger settings."
 ms.date: 10/26/2023
 helpviewer_keywords: ["CMake debugging"]
+ms.topic: how-to
 ---
 # Configure CMake debugging sessions
 
diff --git a/docs/build/configuring-programs-for-windows-xp.md b/docs/build/configuring-programs-for-windows-xp.md
index 3e96c4f48e..629e6b7230 100644
--- a/docs/build/configuring-programs-for-windows-xp.md
+++ b/docs/build/configuring-programs-for-windows-xp.md
@@ -3,6 +3,7 @@ title: "Configuring Programs for Windows XP"
 description: "How to install and use the C++ Windows XP toolsets in Visual Studio."
 ms.date: 09/17/2021
 ms.assetid: 1e4487b3-d815-4123-878b-5718b22f0fd5
+ms.topic: how-to
 ---
 # Configuring Programs for Windows XP
 
diff --git a/docs/build/create-reusable-property-configurations.md b/docs/build/create-reusable-property-configurations.md
index d046426504..52af28e0f4 100644
--- a/docs/build/create-reusable-property-configurations.md
+++ b/docs/build/create-reusable-property-configurations.md
@@ -3,6 +3,7 @@ description: "Learn more about: Share or reuse Visual Studio project settings"
 title: "Share or reuse Visual Studio project settings - C++"
 ms.date: 02/07/2022
 helpviewer_keywords: ["project properties [C++], reusable"]
+ms.topic: how-to
 ---
 # Share or reuse Visual Studio project settings
 
diff --git a/docs/build/creating-a-resource-only-dll.md b/docs/build/creating-a-resource-only-dll.md
index e054108b83..664e45250d 100644
--- a/docs/build/creating-a-resource-only-dll.md
+++ b/docs/build/creating-a-resource-only-dll.md
@@ -5,6 +5,7 @@ ms.date: "01/27/2020"
 helpviewer_keywords: ["resource-only DLLs [C++], creating", "DLLs [C++], creating"]
 ms.assetid: e6b1d4da-7275-467f-a58c-a0a8a5835199
 no-loc: [noentry]
+ms.topic: how-to
 ---
 # Creating a resource-only DLL
 
diff --git a/docs/build/creating-and-managing-visual-cpp-projects.md b/docs/build/creating-and-managing-visual-cpp-projects.md
index 35125a7b22..2441a8b327 100644
--- a/docs/build/creating-and-managing-visual-cpp-projects.md
+++ b/docs/build/creating-and-managing-visual-cpp-projects.md
@@ -1,27 +1,30 @@
 ---
-description: "Learn more about: creating and configuring Visual Studio C++ projects"
-title: "Visual Studio Projects - C++"
-ms.date: 10/4/2023
+title: "Create and Configure Visual Studio C++ Projects"
+description: "Learn how to create a Visual Studio C++ project, and then add code and build your project."
+ms.date: 03/24/2025
+ms.topic: concept-article
 helpviewer_keywords: ["Visual Studio C++ projects, creating", "projects [C++], creating", "Visual Studio C++ projects"]
 ---
-# Visual Studio projects - C++
+# Visual Studio C++ projects
 
-A *Visual Studio project* is a collection of code files and assets such as icons, images, and so on, that are built together using the MSBuild build system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for Windows-specific programs. MSBuild is tightly integrated with Visual Studio, but you can also use it from the command line.
+A *Visual Studio project* is a collection of code files and assets such as icons, images, and so on, that are built together using the MSBuild system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for Windows-specific programs. MSBuild is tightly integrated with Visual Studio, but you can also use it from the command line.
 
-For information about upgrading MSBuild projects from older versions of Visual Studio, see the [Microsoft C++ Porting and Upgrading Guide](../porting/visual-cpp-porting-and-upgrading-guide.md).
+For information about upgrading MSBuild projects from older versions of Visual Studio, see the [Microsoft C++ porting and upgrading guide](../porting/visual-cpp-porting-and-upgrading-guide.md).
 
-For cross-platform projects, or projects that use open-source libraries, we recommend using [CMake projects in Visual Studio](cmake-projects-in-visual-studio.md) in Visual Studio 2017 and later.
+For cross-platform projects, or projects that use open-source libraries, we recommend using [CMake projects in Visual Studio](cmake-projects-in-visual-studio.md).
 
 ## Create a Visual Studio C++ project
 
 ::: moniker range=">=msvc-160"
 
 1. Create a C++ project by choosing **File** > **New** > **Project**.
+
 1. In the **Create a new project** dialog, set the **Language** dropdown to **C++**. This filters the list of project templates to C++ projects. You can filter the templates by setting the **Platform**, **Project Type**, or by entering keywords in the search box.
 
-   ![Screenshot of the Create a new project wizard. The Console App project template is selected.](../build/media/vs2019-choose-console-app.png)
+    :::image type="content" source="../build/media/vs2019-choose-console-app.png" alt-text="Screenshot of the Create a new project wizard. The Console App project template is selected.":::
 
 1. Select a project template, then choose **Next**.
+
 1. On the **Configure your new project page**, enter project-specific settings such as the project name or location and then choose **Create** to create your project.
 
 ::: moniker-end
@@ -29,21 +32,22 @@ For cross-platform projects, or projects that use open-source libraries, we reco
 ::: moniker range="msvc-150"
 
 1. Create a C++ project by choosing **File** > **New** > **Project**.
+
 1. Choose **Visual C++** in the left pane. In the center pane, a list of project templates appears:
 
-   ![Screenshot of the New Project dialog, showing available project templates for C++ such as Windows Console Application.](../overview/media/vs2017-new-project.png "Visual Studio 2017 New Project Dialog")
+    :::image type="content" source="../overview/media/vs2017-new-project.png" alt-text="Screenshot of the New Project dialog, showing available project templates for C++ such as Windows Console Application.":::
 
 ::: moniker-end
 
 For more information about the default project templates included in Visual Studio, see [C++ project templates in Visual Studio](reference/visual-cpp-project-types.md).
 
-You can create your own project templates. For more information, see [How to: Create project templates](/visualstudio/ide/how-to-create-project-templates).
+You can create your own project templates. For more information, see [Create project templates](/visualstudio/ide/how-to-create-project-templates).
 
 After you create a project, it appears in the [Solution Explorer](/visualstudio/ide/solutions-and-projects-in-visual-studio) window:
 
-   ![Screenshot of the Solution Explorer window, showing source files, header files, and resource files.](media/mathlibrary-solution-explorer-153.png)
+:::image type="content" source="media/mathlibrary-solution-explorer-153.png" alt-text="Screenshot of the Solution Explorer window, showing source files, header files, and resource files.":::
 
-When you create a new project, a solution file (.sln) is also created. A *Visual Studio solution* is a collection of one or more projects. You can add another project to the solution by right-clicking the solution name in **Solution Explorer** > **Add** > **New project**.
+When you create a new project, a solution file (*`.sln`*) is also created. A *Visual Studio solution* is a collection of one or more projects. You can add another project to the solution by right-clicking the solution name in **Solution Explorer** > **Add** > **New project**.
 
 The solution file coordinates build dependencies when you have multiple related projects. Compiler options are set at the project level.
 
@@ -61,28 +65,28 @@ For more information about consuming a library that you have downloaded by using
 - [vcpkg in MSBuild projects](/vcpkg/users/buildsystems/msbuild-integration)
 - [Tutorial: Install and use packages with MSBuild in Visual Studio](/vcpkg/get_started/get-started-msbuild)
 
-They're also commercial third-party libraries that you can install. Follow their installation instructions.
+There are also commercial third-party libraries that you can install. Follow their installation instructions.
 
 ## Set compiler options and build properties
 
-To configure build settings for a project, right-click on the project in **Solution Explorer** and choose **Properties**. For more information, see [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md).
+To configure build settings for a project, right-click on the project in **Solution Explorer** and choose **Properties**. For more information, see [Set compiler and build properties](working-with-project-properties.md).
 
 ## Compile and run a project
 
-To compile and run the new project, press **F5** or click the *debug dropdown* with the green arrow on the main toolbar. The *configuration dropdown* is where you choose whether to perform a *Debug* or *Release* build (or some other custom configuration).
+To compile and run the new project, press **F5** or select the *debug dropdown* with the green arrow on the main toolbar. The *configuration dropdown* is where you choose whether to perform a *Debug* or *Release* build (or some other custom configuration).
 
 A new project compiles without errors. When adding your own code, you might occasionally introduce an error or trigger a warning. An error prevents the build from completing; a warning doesn't. All errors and warnings appear both in the Output Window and in the Error List when you build the project.
 
-   ![Screenshot of the Output window and Error list, showing a syntax error for a misplaced colon.](../overview/media/vs2017-output-error-list.png)
+:::image type="content" source="../overview/media/vs2017-output-error-list.png" alt-text="Screenshot of the Output window and Error list, showing a syntax error for a misplaced colon.":::
 
 In the **Error List**, you can press **F1** on the highlighted error to go to its documentation topic.
 
-## See also
+## Related content
 
-[Create a project from existing code](how-to-create-a-cpp-project-from-existing-code.md)\
-[Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md)\
-[Custom build steps and build events](understanding-custom-build-steps-and-build-events.md)\
-[Reference libraries and components at build time](adding-references-in-visual-cpp-projects.md)\
-[Organize project output files](how-to-organize-project-output-files-for-builds.md)\
-[Projects and build systems](projects-and-build-systems-cpp.md)\
-[Microsoft C++ porting and upgrade guide](../porting/visual-cpp-porting-and-upgrading-guide.md)
+- [Create a project from existing code](how-to-create-a-cpp-project-from-existing-code.md)
+- [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md)
+- [Custom build steps and build events](understanding-custom-build-steps-and-build-events.md)
+- [Reference libraries and components at build time](adding-references-in-visual-cpp-projects.md)
+- [Organize project output files](how-to-organize-project-output-files-for-builds.md)
+- [Projects and build systems](projects-and-build-systems-cpp.md)
+- [Microsoft C++ porting and upgrade guide](../porting/visual-cpp-porting-and-upgrading-guide.md)
diff --git a/docs/build/creating-precompiled-header-files.md b/docs/build/creating-precompiled-header-files.md
index 1c8cb52ddc..2b0f1f5ebe 100644
--- a/docs/build/creating-precompiled-header-files.md
+++ b/docs/build/creating-precompiled-header-files.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Precompiled header files"
 title: "Precompiled Header Files"
+description: "Learn more about: Precompiled header files"
 ms.date: 06/29/2022
 helpviewer_keywords: ["precompiled header files, creating", "PCH files, creating", "cl.exe compiler, precompiling code", ".pch files, creating"]
 ---
@@ -140,7 +140,7 @@ This table lists compiler options that might trigger an inconsistency warning wh
 
 | Option | Name | Rule |
 |--|--|--|
-| **`/D `**| Define constants and macros | Must be the same between the compilation that created the precompiled header and the current compilation. The state of defined constants isn't checked. However, unpredictable results can occur if your files depend on the values of the changed constants. |
+| **`/D`**| Define constants and macros | Must be the same between the compilation that created the precompiled header and the current compilation. The state of defined constants isn't checked. However, unpredictable results can occur if your files depend on the values of the changed constants. |
 | **`/E`** or **`/EP`** | Copy preprocessor output to standard output | Precompiled headers don't work with the **`/E`** or **`/EP`** option. |
 | **`/Fr`** or **`/FR`** | Generate Microsoft Source Browser information | For the **`/Fr`** and **`/FR`** options to be valid with the **`/Yu`** option, they must also have been in effect when the precompiled header was created. Subsequent compilations that use the precompiled header also generate Source Browser information. Browser information is placed in a single *`.sbr`* file and is referenced by other files in the same manner as CodeView information. You can't override the placement of Source Browser information. |
 | **`/GA`**, **`/GD`**, **`/GE`**, **`/Gw`**, or **`/GW`** | Windows protocol options | Must be the same between the compilation that created the precompiled header and the current compilation. The compiler emits a warning if these options differ. |
@@ -161,7 +161,6 @@ The code base of a software project is often contained in multiple C or C++ sour
 
 The figure uses three diagrammatic devices to show the flow of the build process. Named rectangles represent each file or macro; the three macros represent one or more files. Shaded areas represent each compile or link action. Arrows show which files and macros are combined during the compilation or linking process.
 
-![ The diagram is described in the text following the diagram.]()\
 Structure of a makefile that uses a precompiled header file:
 
 :::image type="complex" source="media/vc30ow1.gif" alt-text="Diagram showing example inputs and outputs of a makefile that uses a precompiled header file.":::
@@ -259,7 +258,7 @@ Source file `ANOTHER.H`:
 //
 #ifndef __ANOTHER_H
 #define __ANOTHER_H
-#include<iostream>
+#include <iostream>
 void savemoretime( void );
 #endif // __ANOTHER_H
 ```
@@ -273,7 +272,7 @@ Source file `STABLE.H`:
 //
 #ifndef __STABLE_H
 #define __STABLE_H
-#include<iostream>
+#include <iostream>
 void savetime( void );
 #endif // __STABLE_H
 ```
@@ -289,7 +288,7 @@ Source file `UNSTABLE.H`:
 //
 #ifndef __UNSTABLE_H
 #define __UNSTABLE_H
-#include<iostream>
+#include <iostream>
 void notstable( void );
 #endif // __UNSTABLE_H
 ```
@@ -301,9 +300,9 @@ Source file `APPLIB.CPP`:
 //              the interface code declared in the header
 //              files STABLE.H, ANOTHER.H, and UNSTABLE.H.
 //
-#include"another.h"
-#include"stable.h"
-#include"unstable.h"
+#include "another.h"
+#include "stable.h"
+#include "unstable.h"
 using namespace std;
 // The following code represents code that is deemed stable and
 // not likely to change. The associated interface code is
@@ -331,9 +330,9 @@ Source file `MYAPP.CPP`:
 //             listed in the BOUNDRY macro. Unstable code must
 //             be included after the precompiled code.
 //
-#include"another.h"
-#include"stable.h"
-#include"unstable.h"
+#include "another.h"
+#include "stable.h"
+#include "unstable.h"
 int main( void )
 {
     savetime();
@@ -346,7 +345,7 @@ int main( void )
 
 [Compare header units, modules, and precompiled headers](compare-inclusion-methods.md)\
 [C/C++ building reference](reference/c-cpp-building-reference.md)\
-[MSVC compiler options](reference/compiler-options.md)
+[MSVC compiler options](reference/compiler-options.md)\
 [Overview of modules in C++](../cpp/modules-cpp.md)\
 [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md)\
 [Walkthrough: Build and import header units in your Visual C++ projects](walkthrough-header-units.md)\
diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md
index 078c550ff5..6b56804360 100644
--- a/docs/build/customize-cmake-settings.md
+++ b/docs/build/customize-cmake-settings.md
@@ -3,6 +3,7 @@ description: "Learn more about: Customize CMake build settings"
 title: "Customize CMake build settings in Visual Studio"
 ms.date: 12/15/2021
 helpviewer_keywords: ["CMake build settings"]
+ms.topic: how-to
 ---
 # Customize CMake build settings
 
@@ -72,7 +73,7 @@ For configurations such as Linux that use remote builds, the following settings
 
 ### `rsync` command arguments
 
-Extra command-line options passed to [`rsync`](https://download.samba.org/pub/rsync/rsync.html), a fast, versatile file-copying tool.
+Extra command-line options passed to [`rsync`](https://download.samba.org/pub/rsync/), a fast, versatile file-copying tool.
 
 ## CMake variables and cache
 
diff --git a/docs/build/exporting-and-importing-using-afx-ext-class.md b/docs/build/exporting-and-importing-using-afx-ext-class.md
index 0d16f63d7b..e47b06663e 100644
--- a/docs/build/exporting-and-importing-using-afx-ext-class.md
+++ b/docs/build/exporting-and-importing-using-afx-ext-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["afx_ext_class"]
 helpviewer_keywords: ["AFX_EXT_CLASS macro", "exporting classes [C++]", "importing DLLs [C++]", "extension DLLs [C++], exporting classes", "executable files [C++], importing classes", "exporting DLLs [C++], AFX_EXT_CLASS macro"]
 ms.assetid: 6b72cb2b-e92e-4ecd-bcab-c335e1d1cfde
+ms.topic: concept-article
 ---
 # Exporting and Importing Using AFX_EXT_CLASS
 
diff --git a/docs/build/exporting-c-functions-for-use-in-c-or-cpp-language-executables.md b/docs/build/exporting-c-functions-for-use-in-c-or-cpp-language-executables.md
index 2386881514..4096be3e6e 100644
--- a/docs/build/exporting-c-functions-for-use-in-c-or-cpp-language-executables.md
+++ b/docs/build/exporting-c-functions-for-use-in-c-or-cpp-language-executables.md
@@ -4,6 +4,7 @@ title: "Export C functions for use in C or C++ language executables"
 ms.date: 05/24/2022
 helpviewer_keywords: ["functions [C], exporting", "functions [C], C or C++ executables and", "__cplusplus macro", "exporting DLLs [C++], C functions in C++ executables", "exporting functions [C++], C functions in C++ executables"]
 ms.assetid: b51d6e5e-37cf-4c1c-b0bf-fcf188c82f00
+ms.topic: how-to
 ---
 # Export C functions for use in C or C++ language executables
 
diff --git a/docs/build/exporting-cpp-functions-for-use-in-c-language-executables.md b/docs/build/exporting-cpp-functions-for-use-in-c-language-executables.md
index decb3fd891..d44fe579a3 100644
--- a/docs/build/exporting-cpp-functions-for-use-in-c-language-executables.md
+++ b/docs/build/exporting-cpp-functions-for-use-in-c-language-executables.md
@@ -4,6 +4,7 @@ title: "Exporting C++ Functions for Use in C-Language Executables"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["functions [C++], C++ functions in C executables", "exporting DLLs [C++], C++ functions in C executables", "exporting functions [C++], C++ functions in C executables", "functions [C++], exporting"]
 ms.assetid: 80b9e982-f52d-4312-a891-f73cc69f3c2b
+ms.topic: concept-article
 ---
 # Exporting C++ Functions for Use in C-Language Executables
 
diff --git a/docs/build/exporting-from-a-dll-using-declspec-dllexport.md b/docs/build/exporting-from-a-dll-using-declspec-dllexport.md
index 46f17afc29..674c52fb8d 100644
--- a/docs/build/exporting-from-a-dll-using-declspec-dllexport.md
+++ b/docs/build/exporting-from-a-dll-using-declspec-dllexport.md
@@ -5,6 +5,7 @@ ms.date: "05/06/2019"
 f1_keywords: ["dllexport"]
 helpviewer_keywords: ["__declspec(dllexport) keyword [C++]", "names [C++], DLL exports by", "export directives [C++]", "exporting DLLs [C++], __declspec(dllexport) keyword"]
 ms.assetid: a35e25e8-7263-4a04-bad4-00b284458679
+ms.topic: how-to
 ---
 # Exporting from a DLL Using __declspec(dllexport)
 
diff --git a/docs/build/exporting-from-a-dll-using-def-files.md b/docs/build/exporting-from-a-dll-using-def-files.md
index c0cabdb87a..ce1b224eed 100644
--- a/docs/build/exporting-from-a-dll-using-def-files.md
+++ b/docs/build/exporting-from-a-dll-using-def-files.md
@@ -4,6 +4,7 @@ title: "Exporting from a DLL Using DEF Files"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["def files [C++], exporting from DLLs", ".def files [C++], exporting from DLLs", "exporting DLLs [C++], DEF files"]
 ms.assetid: 9d31eda2-184e-47de-a2ee-a93ebd603f8e
+ms.topic: concept-article
 ---
 # Exporting from a DLL Using DEF Files
 
diff --git a/docs/build/exporting-from-a-dll.md b/docs/build/exporting-from-a-dll.md
index b05991ac32..d7513fc477 100644
--- a/docs/build/exporting-from-a-dll.md
+++ b/docs/build/exporting-from-a-dll.md
@@ -4,6 +4,7 @@ title: "Exporting from a DLL"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["exporting DLLs [C++], about exporting from DLLs", "exporting functions [C++], DLLs (exporting from)", "exporting DLLs [C++]", "DLLs [C++], exporting from", "DLL exports [C++]", "functions [C++], exporting", "exports table [C++]"]
 ms.assetid: a08f86c4-5996-460b-ae54-da2b764045f0
+ms.topic: concept-article
 ---
 # Exporting from a DLL
 
diff --git a/docs/build/exporting-functions-from-a-dll-by-ordinal-rather-than-by-name.md b/docs/build/exporting-functions-from-a-dll-by-ordinal-rather-than-by-name.md
index 1a3e10eeae..d5911954fb 100644
--- a/docs/build/exporting-functions-from-a-dll-by-ordinal-rather-than-by-name.md
+++ b/docs/build/exporting-functions-from-a-dll-by-ordinal-rather-than-by-name.md
@@ -4,6 +4,7 @@ title: "Exporting Functions from a DLL by Ordinal Rather Than by Name"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["exporting functions [C++], ordinal values", "ordinal exports [C++]", "exporting DLLs [C++], ordinal values", "NONAME attribute"]
 ms.assetid: 679719fd-d965-4df3-9f7a-7d86ad831702
+ms.topic: concept-article
 ---
 # Exporting Functions from a DLL by Ordinal Rather Than by Name
 
diff --git a/docs/build/extension-dlls-overview.md b/docs/build/extension-dlls-overview.md
index 9efaa880fa..b43f909510 100644
--- a/docs/build/extension-dlls-overview.md
+++ b/docs/build/extension-dlls-overview.md
@@ -4,6 +4,7 @@ title: "Extension DLLs: Overview"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["AFXDLL library", "MFC DLLs [C++], MFC extension DLLs", "DLLs [C++], extension", "shared DLL versions [C++]", "extension DLLs [C++], about MFC extension DLLs"]
 ms.assetid: eb5e10b7-d615-4bc7-908d-e3e99b7b1d5f
+ms.topic: concept-article
 ---
 # MFC extension DLLs: Overview
 
diff --git a/docs/build/fixing-release-build-problems.md b/docs/build/fixing-release-build-problems.md
index b329363dc9..f10be40f3e 100644
--- a/docs/build/fixing-release-build-problems.md
+++ b/docs/build/fixing-release-build-problems.md
@@ -4,6 +4,7 @@ title: "Fixing Release Build Problems"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["release builds, troubleshooting", "debug builds, memory overwrites", "memory, overwrites", "troubleshooting Visual C++, release builds", "troubleshooting release builds"]
 ms.assetid: a0c0818e-4c47-4fe0-a611-50d61a41bd88
+ms.topic: concept-article
 ---
 # Fixing Release Build Problems
 
diff --git a/docs/build/formatting-the-output-of-a-custom-build-step-or-build-event.md b/docs/build/formatting-the-output-of-a-custom-build-step-or-build-event.md
index 938dc06425..b8c2ff6f18 100644
--- a/docs/build/formatting-the-output-of-a-custom-build-step-or-build-event.md
+++ b/docs/build/formatting-the-output-of-a-custom-build-step-or-build-event.md
@@ -4,6 +4,7 @@ title: "Formatting the output of a custom build step or build event"
 ms.date: 03/15/2022
 helpviewer_keywords: ["builds [C++], build events", "custom build steps [C++], output format", "events [C++], build", "build events [C++], output format", "build steps [C++], output format", "builds [C++], custom build steps"]
 ms.assetid: 92ad3e38-24d7-4b89-90e6-5a16f5f998da
+ms.topic: concept-article
 ---
 # Formatting the output of a custom build step or build event
 
diff --git a/docs/build/get-started-linux-cmake.md b/docs/build/get-started-linux-cmake.md
index 44cc20cf60..b2f59a7381 100644
--- a/docs/build/get-started-linux-cmake.md
+++ b/docs/build/get-started-linux-cmake.md
@@ -3,6 +3,7 @@ title: Create C++ cross-platform projects in Visual Studio
 description: "How to set up, compile, and debug a C++ open-source CMake project in Visual Studio that targets both Linux and Windows."
 ms.topic: tutorial
 ms.date: 02/07/2022
+ms.custom: sfi-image-nochange
 ---
 # Tutorial: Create C++ cross-platform projects in Visual Studio
 
@@ -187,7 +188,7 @@ Because it's a desktop application, you need to provide some more configuration
 
 1. Look at the Call Stack window and view the Calls to `x11OpenGLWindow` since Visual Studio launched the application on Linux.
 
-    :::image type="complex" source="media/cmake-bullet3-linux-console.png" alt-text="The Visual Studio Call Stack window, showing Linux call stack.":::
+    :::image type="complex" source="media/cmake-bullet3-linux-callstack.png" alt-text="The Visual Studio Call Stack window, showing Linux call stack.":::
     The callstack shows the breakpoint on CommonRigidBodyBase::mouseMoveCallback, and the calls that precede it such as OnMouseMove, X11OpenGLWindow::pumpMessage, and so on.
     :::image-end:::
 
diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md
index bb260ccf93..3063cfc32b 100644
--- a/docs/build/how-to-debug-a-release-build.md
+++ b/docs/build/how-to-debug-a-release-build.md
@@ -1,31 +1,27 @@
 ---
 description: "Learn more about: How to: Debug a Release Build"
 title: "How to: Debug a Release Build"
-ms.date: "11/04/2016"
+ms.date: 03/14/2025
 helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugging"]
-ms.assetid: d333e4d1-4e6c-4384-84a9-cb549702da25
 ---
 # How to: Debug a Release Build
 
-You can debug a release build of an application.
+This article explains which compiler and linker switches to set to enable you to debug a release build of an application.
 
-### To debug a release build
+A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging).
 
-1. Open the **Property Pages** dialog box for the project. For details, see [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md).
+## To debug a release build
 
+1. Open the **Property Pages** dialog box for the project. For details, see [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md).
 1. Click the **C/C++** node. Set **Debug Information Format** to [C7 compatible (/Z7)](reference/z7-zi-zi-debug-information-format.md) or **Program Database (/Zi)**.
-
 1. Expand **Linker** and click the **General** node. Set **Enable Incremental Linking** to [No (/INCREMENTAL:NO)](reference/incremental-link-incrementally.md).
-
-1. Select the **Debugging** node. Set **Generate Debug Info** to [Yes (/DEBUG)](reference/debug-generate-debug-info.md).
-
-1. Select the **Optimization** node. Set **References** to [/OPT:REF](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [/OPT:ICF](reference/opt-optimizations.md).
-
+1. Under **Linker**, select the **Debugging** node. Set **Generate Debug Info** to [Yes (/DEBUG)](reference/debug-generate-debug-info.md).
+1. Under **Linker**, select the **Optimization** node. Set **References** to [No (/OPT:NOREF)](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [No (/OPT:NOICF)](reference/opt-optimizations.md).
 1. You can now debug your release build application. To find a problem, step through the code (or use Just-In-Time debugging) until you find where the failure occurs, and then determine the incorrect parameters or code.
 
    If an application works in a debug build, but fails in a release build, one of the compiler optimizations may be exposing a defect in the source code. To isolate the problem, disable selected optimizations for each source code file until you locate the file and the optimization that is causing the problem. (To expedite the process, you can divide the files into two groups, disable optimization on one group, and when you find a problem in a group, continue dividing until you isolate the problem file.)
 
-   You can use [/RTC](reference/rtc-run-time-error-checks.md) to try to expose such bugs in your debug builds.
+   Use [/RTC](reference/rtc-run-time-error-checks.md) to try to expose such bugs in your debug builds.
 
    For more information, see [Optimizing Your Code](optimizing-your-code.md).
 
diff --git a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
index 8bf4c68302..a91d9d9158 100644
--- a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
+++ b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
@@ -23,7 +23,7 @@ Visual Studio also supports multitargeting for C++ projects. You can use the lat
 
 ## Target framework (C++/CLI project only)
 
-When you change the target Framework, also change the platform toolset to a version that supports that Framework. For example, to target the .NET Framework 4.5, you must use a compatible platform toolset. These toolsets include Visual Studio 2015 (v140), Visual Studio 2013 (v120), or Visual Studio 2012 (v110). You can use the [Windows 7.1 SDK](https://www.microsoft.com/download/details.aspx?id=8279) to target .NET Framework 2.0, 3.0, 3.5, and 4.
+When you change the target Framework, also change the platform toolset to a version that supports that Framework. For example, to target the .NET Framework 4.5, you must use a compatible platform toolset. These toolsets include Visual Studio 2015 (v140), Visual Studio 2013 (v120), or Visual Studio 2012 (v110). You can use the [Windows 7.1 SDK](https://www.microsoft.com/en-us/download/details.aspx?id=8442) to target .NET Framework 2.0, 3.0, 3.5, and 4.
 
 You can extend the target platform further by creating a custom platform toolset. For more information, see [C++ Native Multi-Targeting](https://devblogs.microsoft.com/cppblog/c-native-multi-targeting/) on the Visual C++ blog.
 
diff --git a/docs/build/how-to-use-build-events-in-msbuild-projects.md b/docs/build/how-to-use-build-events-in-msbuild-projects.md
index c747397334..72aea3d96a 100644
--- a/docs/build/how-to-use-build-events-in-msbuild-projects.md
+++ b/docs/build/how-to-use-build-events-in-msbuild-projects.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: How to: Use Build Events in MSBuild Projects"
 title: "How to: Use Build Events in MSBuild Projects"
+description: "Learn more about: How to: Use Build Events in MSBuild Projects"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["msbuild (c++), howto: use build events in projects"]
-ms.assetid: 2a58dc9d-3d50-4e49-97c1-86c5a05ce218
 ---
 # How to: Use Build Events in MSBuild Projects
 
@@ -33,7 +32,7 @@ The following table lists each *use-in-build* element:
 
 The following example can be added inside of the Project element of the myproject.vcxproj file created in [Walkthrough: Using MSBuild to Create a C++ Project](walkthrough-using-msbuild-to-create-a-visual-cpp-project.md). A *pre-build* event makes a copy of main.cpp; a *pre-link* event makes a copy of main.obj; and a *post-build* event makes a copy of myproject.exe. If the project is built using a release configuration, the build events are executed. If the project is built using a debug configuration, the build events are not executed.
 
-``` xml
+```xml
 <ItemDefinitionGroup>
   <PreBuildEvent>
     <Command>copy $(ProjectDir)main.cpp $(ProjectDir)copyOfMain.cpp</Command>
@@ -64,5 +63,5 @@ The following example can be added inside of the Project element of the myprojec
 
 ## See also
 
-[MSBuild on the command line - C++](msbuild-visual-cpp.md)<br/>
+[MSBuild on the command line - C++](msbuild-visual-cpp.md)\
 [Walkthrough: Using MSBuild to Create a C++ Project](walkthrough-using-msbuild-to-create-a-visual-cpp-project.md)
diff --git a/docs/build/importing-and-exporting-inline-functions.md b/docs/build/importing-and-exporting-inline-functions.md
index ec71f01e74..c34b0859a1 100644
--- a/docs/build/importing-and-exporting-inline-functions.md
+++ b/docs/build/importing-and-exporting-inline-functions.md
@@ -4,6 +4,7 @@ title: "Importing and exporting inline functions"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["exporting functions [C++], inline functions", "inline functions [C++], importing", "DLLs [C++], importing", "importing functions [C++]", "DLLs [C++], exporting from", "importing inline functions [C++]", "inline functions [C++], exporting", "functions [C++], importing", "functions [C++], exporting"]
 ms.assetid: 89f488f8-b078-40fe-afd7-80bd7840057b
+ms.topic: concept-article
 ---
 # Importing and exporting inline functions
 
diff --git a/docs/build/importing-and-exporting.md b/docs/build/importing-and-exporting.md
index 322232d23b..87ecffe020 100644
--- a/docs/build/importing-and-exporting.md
+++ b/docs/build/importing-and-exporting.md
@@ -4,6 +4,7 @@ title: "Importing and Exporting"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["DLLs [C++], importing", "exporting DLLs [C++]", "importing DLLs [C++]", "DLLs [C++], exporting from", "__declspec(dllimport) keyword [C++]"]
 ms.assetid: 7c44c2aa-2117-4cec-9615-a65bfd3f8f7b
+ms.topic: concept-article
 ---
 # Importing and Exporting
 
diff --git a/docs/build/importing-data-using-declspec-dllimport.md b/docs/build/importing-data-using-declspec-dllimport.md
index bfe281afe3..eeec7bf2ff 100644
--- a/docs/build/importing-data-using-declspec-dllimport.md
+++ b/docs/build/importing-data-using-declspec-dllimport.md
@@ -4,6 +4,7 @@ description: "How to use __declspec(dllimport) to import DLL data."
 ms.date: 09/03/2020
 helpviewer_keywords: ["importing data [C++]", "dllimport attribute [C++], data imports", "__declspec(dllimport) keyword [C++]", "importing DLLs [C++], __declspec(dllimport)"]
 ms.assetid: 0ae70b39-87c7-4181-8be9-e786e0db60b0
+ms.topic: concept-article
 ---
 # Importing data using `__declspec(dllimport)`
 
diff --git a/docs/build/importing-function-calls-using-declspec-dllimport.md b/docs/build/importing-function-calls-using-declspec-dllimport.md
index e275b0ec86..4d4472780a 100644
--- a/docs/build/importing-function-calls-using-declspec-dllimport.md
+++ b/docs/build/importing-function-calls-using-declspec-dllimport.md
@@ -4,6 +4,7 @@ description: "How and why to use __declspec(dllimport) when calling DLL data and
 ms.date: "05/03/2020"
 helpviewer_keywords: ["importing function calls [C++]", "dllimport attribute [C++], function call imports", "__declspec(dllimport) keyword [C++]", "function calls [C++], importing"]
 ms.assetid: 6b53c616-0c6d-419a-8e2a-d2fff20510b3
+ms.topic: concept-article
 ---
 # Importing function calls using `__declspec(dllimport)`
 
diff --git a/docs/build/importing-into-an-application-using-declspec-dllimport.md b/docs/build/importing-into-an-application-using-declspec-dllimport.md
index 7b8247460e..c50718d79d 100644
--- a/docs/build/importing-into-an-application-using-declspec-dllimport.md
+++ b/docs/build/importing-into-an-application-using-declspec-dllimport.md
@@ -4,6 +4,7 @@ title: "Import into an application using __declspec(dllimport)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["__declspec(dllimport) keyword [C++]", "importing DLLs [C++], __declspec(dllimport)"]
 ms.assetid: edb4da4e-f83a-44cf-a668-9239d49dbe42
+ms.topic: how-to
 ---
 # Import into an application using __declspec(dllimport)
 
diff --git a/docs/build/importing-into-an-application.md b/docs/build/importing-into-an-application.md
index f2458e128f..c944f53c12 100644
--- a/docs/build/importing-into-an-application.md
+++ b/docs/build/importing-into-an-application.md
@@ -4,6 +4,7 @@ title: "Importing into an Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DLLs [C++], importing", "importing DLLs [C++], applications", "applications [C++], importing into"]
 ms.assetid: 9d646466-e12e-4710-8ad9-c819c0375fcc
+ms.topic: concept-article
 ---
 # Importing into an Application
 
diff --git a/docs/build/importing-using-def-files.md b/docs/build/importing-using-def-files.md
index e52767c769..877708fe77 100644
--- a/docs/build/importing-using-def-files.md
+++ b/docs/build/importing-using-def-files.md
@@ -4,6 +4,7 @@ title: "Importing Using DEF Files"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["importing DLLs [C++], DEF files", "def files [C++], importing with", ".def files [C++], importing with", "dllimport attribute [C++], DEF files", "DLLs [C++], DEF files"]
 ms.assetid: aefdbf50-f603-488a-b0d7-ed737bae311d
+ms.topic: concept-article
 ---
 # Importing Using DEF Files
 
diff --git a/docs/build/improving-compiler-throughput.md b/docs/build/improving-compiler-throughput.md
index c71675de07..3da2de62fc 100644
--- a/docs/build/improving-compiler-throughput.md
+++ b/docs/build/improving-compiler-throughput.md
@@ -4,6 +4,7 @@ title: "Improving Compiler Throughput"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["throughput, C++ compiler", "cl.exe compiler, performance", "performance, compiler", "cl.exe compiler, throughput"]
 ms.assetid: ba5f884e-9037-4a92-b10e-fc2a3836c5bf
+ms.topic: concept-article
 ---
 # Improving Compiler Throughput
 
diff --git a/docs/build/launch-vs-schema-reference-cpp.md b/docs/build/launch-vs-schema-reference-cpp.md
index 1140ae533d..290cc1a1ce 100644
--- a/docs/build/launch-vs-schema-reference-cpp.md
+++ b/docs/build/launch-vs-schema-reference-cpp.md
@@ -55,7 +55,7 @@ To create the file, right-click on an executable file in **Solution Explorer** a
 | `debugServerArgs` | string | Optional debug server args. Defaults to null. |
 | `filterStderr` | boolean | Search stderr stream for server-started pattern and log stderr to debug output. Defaults to **`false`**. |
 | `coreDumpPath` | string | Optional full path to a core dump file for the specified program. Defaults to null. |
-| externalConsole | boolean | If true, a console is launched for the debuggee. If **`false`**, no console is launched. The default for this setting is **`false`**. This option is ignored in some cases for technical reasons. |
+| `externalConsole` | boolean | If true, a console is launched for the debuggee. If **`false`**, no console is launched. The default for this setting is **`false`**. This option is ignored in some cases for technical reasons. |
 | `pipeTransport` | string | When present, this value tells the debugger to connect to a remote computer using another executable as a pipe that will relay standard input/output between Visual Studio and the MI-enabled debugger (such as gdb). Allowed values: one or more [Pipe Transport Options](#pipe_transport_options). |
 
 ## debugInfo macros
diff --git a/docs/build/media/cmake-build-errors.png b/docs/build/media/cmake-build-errors.png
index 089db013a3..80127fdebd 100644
Binary files a/docs/build/media/cmake-build-errors.png and b/docs/build/media/cmake-build-errors.png differ
diff --git a/docs/build/media/cmake-cmakelists-error.png b/docs/build/media/cmake-cmakelists-error.png
index 6601ecbed3..5c0877845b 100644
Binary files a/docs/build/media/cmake-cmakelists-error.png and b/docs/build/media/cmake-cmakelists-error.png differ
diff --git a/docs/build/media/cmake-cmakelists.png b/docs/build/media/cmake-cmakelists.png
index f957bb6c1d..58f4729779 100644
Binary files a/docs/build/media/cmake-cmakelists.png and b/docs/build/media/cmake-cmakelists.png differ
diff --git a/docs/build/media/cmake-install-2022.png b/docs/build/media/cmake-install-2022.png
new file mode 100644
index 0000000000..870db48e1c
Binary files /dev/null and b/docs/build/media/cmake-install-2022.png differ
diff --git a/docs/build/media/cmake-targets-view2.png b/docs/build/media/cmake-targets-view2.png
index 04ae1e2a13..673ddd555b 100644
Binary files a/docs/build/media/cmake-targets-view2.png and b/docs/build/media/cmake-targets-view2.png differ
diff --git a/docs/build/media/desktop-app-project-run-150.gif b/docs/build/media/desktop-app-project-run-150.gif
deleted file mode 100644
index a46faeb947..0000000000
Binary files a/docs/build/media/desktop-app-project-run-150.gif and /dev/null differ
diff --git a/docs/build/media/visual-c---project-defaults.png b/docs/build/media/visual-c---project-defaults.png
index 3b3db949ce..659946ac9c 100644
Binary files a/docs/build/media/visual-c---project-defaults.png and b/docs/build/media/visual-c---project-defaults.png differ
diff --git a/docs/build/media/visual-c---property-pages-showing-active-configuration.png b/docs/build/media/visual-c---property-pages-showing-active-configuration.png
index 57e12a4419..521ba2fec9 100644
Binary files a/docs/build/media/visual-c---property-pages-showing-active-configuration.png and b/docs/build/media/visual-c---property-pages-showing-active-configuration.png differ
diff --git a/docs/build/media/visual-c---property-pages-showing-release-config.png b/docs/build/media/visual-c---property-pages-showing-release-config.png
index 763a22945a..39ff39170d 100644
Binary files a/docs/build/media/visual-c---property-pages-showing-release-config.png and b/docs/build/media/visual-c---property-pages-showing-release-config.png differ
diff --git a/docs/build/media/vscpp-quickstart-first-run.gif b/docs/build/media/vscpp-quickstart-first-run.gif
deleted file mode 100644
index 10d887cbcb..0000000000
Binary files a/docs/build/media/vscpp-quickstart-first-run.gif and /dev/null differ
diff --git a/docs/build/modify-project-properties-without-changing-project-file.md b/docs/build/modify-project-properties-without-changing-project-file.md
index aebbc2c0f7..3cba0d0efa 100644
--- a/docs/build/modify-project-properties-without-changing-project-file.md
+++ b/docs/build/modify-project-properties-without-changing-project-file.md
@@ -3,6 +3,7 @@ description: "Learn more about: How to: Modify C++ project properties and target
 title: "How to: Modify C++ project properties and targets without changing the project file"
 ms.date: "7/28/2023"
 helpviewer_keywords: ["project properties [C++], modifying outside project file"]
+ms.topic: how-to
 ---
 # How to: Modify C++ project properties and targets without changing the project file
 
diff --git a/docs/build/non-mfc-dlls-overview.md b/docs/build/non-mfc-dlls-overview.md
index f77fbcf305..ff377f90b1 100644
--- a/docs/build/non-mfc-dlls-overview.md
+++ b/docs/build/non-mfc-dlls-overview.md
@@ -4,6 +4,7 @@ title: "Non-MFC DLLs: Overview"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["non-MFC DLLs [C++]", "DLLs [C++], non-MFC"]
 ms.assetid: 1ed5d1ee-e20c-47d7-801d-87ea26a73842
+ms.topic: concept-article
 ---
 # Non-MFC DLLs: Overview
 
diff --git a/docs/build/open-folder-projects-cpp.md b/docs/build/open-folder-projects-cpp.md
index dff693a632..006635d28b 100644
--- a/docs/build/open-folder-projects-cpp.md
+++ b/docs/build/open-folder-projects-cpp.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Open Folder support for C++ build systems in Visual Studio"
 title: "Open Folder support for C++ build systems in Visual Studio"
-ms.date: "12/02/2019"
+description: "Learn more about: Open Folder support for C++ build systems in Visual Studio"
+ms.date: 12/02/2019
 helpviewer_keywords: ["Open Folder Projects in Visual Studio"]
-ms.assetid: abd1985e-3717-4338-9e80-869db5435175
+ms.topic: how-to
 ---
 # Open Folder support for C++ build systems in Visual Studio
 
@@ -105,7 +105,7 @@ If you add the MinGW-W64 configuration, the JSON looks this:
 }
 ```
 
-Note the `environments` block. It defines properties that behave like environment variables and are available not only in the *CppProperties.json* file, but also in the other configuration files *task.vs.json* and *launch.vs.json*. The `Mingw64` configuration inherits the `mingw_w64` environment, and uses its `INCLUDE` property to specify the value for `includePath`. You can add other paths to this array property as needed.`
+Note the `environments` block. It defines properties that behave like environment variables and are available not only in the *CppProperties.json* file, but also in the other configuration files *task.vs.json* and *launch.vs.json*. The `Mingw64` configuration inherits the `mingw_w64` environment, and uses its `INCLUDE` property to specify the value for `includePath`. You can add other paths to this array property as needed.
 
 The `intelliSenseMode` property is set to a value appropriate for GCC. For more information on all these properties, see [CppProperties schema reference](cppproperties-schema-reference.md).
 
diff --git a/docs/build/optimization-best-practices.md b/docs/build/optimization-best-practices.md
index ce428f701b..b0530ca07e 100644
--- a/docs/build/optimization-best-practices.md
+++ b/docs/build/optimization-best-practices.md
@@ -4,6 +4,7 @@ title: "Optimization best practices"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["C++, optimization", "optimization, best practices"]
 ms.assetid: f3433148-7255-4ca6-8a4f-7c31aac88508
+ms.topic: best-practice
 ---
 # Optimization best practices
 
diff --git a/docs/build/optimizing-your-code.md b/docs/build/optimizing-your-code.md
index a30267f382..590f7b8fae 100644
--- a/docs/build/optimizing-your-code.md
+++ b/docs/build/optimizing-your-code.md
@@ -3,6 +3,7 @@ description: "Learn more about: Optimizing your code"
 title: "Optimizing Your Code"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["performance, optimizing code", "optimization", "cl.exe compiler, performance", "optimization, C++ code", "code, optimizing", "performance, compiler"]
+ms.topic: concept-article
 ---
 # Optimizing your code
 
diff --git a/docs/build/reference/arch-arm.md b/docs/build/reference/arch-arm.md
index f7495756f0..8d7ebd3293 100644
--- a/docs/build/reference/arch-arm.md
+++ b/docs/build/reference/arch-arm.md
@@ -5,7 +5,7 @@ ms.date: 07/01/2022
 ---
 # `/arch` (ARM)
 
-Specifies the architecture for code generation on ARM. For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (x86)](arch-x86.md)
+Specifies the architecture for code generation on ARM. These switches apply to the ARM targeting version of the compiler. For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (x86)](arch-x86.md)
 
 ## Syntax
 
diff --git a/docs/build/reference/arch-arm64.md b/docs/build/reference/arch-arm64.md
index dd54dee205..7b432961ec 100644
--- a/docs/build/reference/arch-arm64.md
+++ b/docs/build/reference/arch-arm64.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: /arch (ARM64)"
 title: "/arch (ARM64)"
+description: "Learn more about: /arch (ARM64)"
 ms.date: 05/24/2024
 ---
 # `/arch` (ARM64)
 
-Specifies the Arm A-Profile architecture extension for code generation on ARM64. For more information about **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
+Specifies the Arm A-Profile architecture extension for code generation on ARM64. These switches apply to the ARM64 targeting version of the compiler. For more information about **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
 
 ## Syntax
 
@@ -25,9 +25,9 @@ Specifies the Armv9-A architecture, where **`x`** is a required extension value
 You can specify an ARM64 extension from Armv8.0-A through Armv8.9-A, and Armv9.0-A through Armv9.4-A. Optionally, enable one or more architecture features by appending a feature argument to the option<sup>3</sup>. For example, to target Armv8.0-A and enable feature `FEAT_LSE`, append feature argument **`lse`** so that the option becomes **`/arch:armv8.0+lse`**. For more information about available features and their requirements, see [`/feature` (ARM64)](feature-arm64.md)<sup>3</sup>.
 
 > [!NOTE]
-> Depending on your version of Visual Studio, the compiler may not yet generate instructions from all feature sets required by the extension level you specify. For example, **`/arch:armv8.1`** allows the `*Interlocked*` intrinsic functions to use the appropriate atomic instruction introduced with the Armv8.1-A extension feature `FEAT_LSE`, but compiler support requires Visual Studio 2022 version 17.2 or later.
+> Depending on your version of Visual Studio, the compiler may not yet generate instructions from all feature sets required by the extension level you specify. For example, **`/arch:armv8.1`** allows the *`Interlocked`* intrinsic functions to use the appropriate atomic instruction introduced with the Armv8.1-A extension feature `FEAT_LSE`, but compiler support requires Visual Studio 2022 version 17.2 or later.
 
-The `_M_ARM64` macro is defined by default when compiling for an ARM64 target. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md)\
+The `_M_ARM64` macro is defined by default when compiling for an ARM64 target. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md).
 
 The `__ARM_ARCH` macro is defined for `/arch:ARMv8.0` and higher. It indicates the ARM architecture extension level that the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md).
 
diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md
index 02fe9eb27b..0bcf4ff202 100644
--- a/docs/build/reference/arch-x64.md
+++ b/docs/build/reference/arch-x64.md
@@ -7,7 +7,7 @@ helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler
 ---
 # `/arch` (x64)
 
-Specifies the architecture for code generation on x64. For more information on **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (ARM64)](arch-arm64.md), and [`/arch` (ARM)](arch-arm.md).
+Specifies the architecture for code generation on x64. These switches apply to the x64 targeting version of the compiler. For more information on **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (ARM64)](arch-arm64.md), and [`/arch` (ARM)](arch-arm.md).
 
 ## Syntax
 
diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md
index e0806f08b8..cb71ce0716 100644
--- a/docs/build/reference/arch-x86.md
+++ b/docs/build/reference/arch-x86.md
@@ -7,7 +7,7 @@ helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler op
 ---
 # `/arch` (x86)
 
-Specifies the architecture for code generation on x86. For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
+Specifies the architecture for code generation on x86. These switches apply to the x86 (32-bit) targeting version of the compiler. For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
 
 ## Syntax
 
diff --git a/docs/build/reference/base-base-address.md b/docs/build/reference/base-base-address.md
index a78fb4117b..1728032bac 100644
--- a/docs/build/reference/base-base-address.md
+++ b/docs/build/reference/base-base-address.md
@@ -1,10 +1,9 @@
 ---
 description: "Learn more about: /BASE (Base address)"
 title: "/BASE (Base address)"
-ms.date: 05/11/2022
+ms.date: 03/27/2025
 f1_keywords: ["/base", "VC.Project.VCLinkerTool.BaseAddress"]
 helpviewer_keywords: ["base addresses [C++]", "programs [C++], preventing relocation", "semicolon [C++], specifier", "-BASE linker option", "key address size", "environment variables [C++], LIB", "programs [C++], base address", "LIB environment variable", "BASE linker option", "DLLs [C++], linking", "/BASE linker option", "@ symbol for base address", "executable files [C++], base address", "at sign symbol for base address"]
-ms.assetid: 00b9f6fe-0bd2-4772-a69c-7365eb199069
 ---
 # `/BASE` (Base address)
 
@@ -23,7 +22,7 @@ The **`/BASE`** linker option sets a base address for the program. It overrides
 
 The linker issues an error if *`address`* isn't a multiple of 64K. You can optionally specify the size of the program. The linker issues a warning if the program can't fit in the size you specified.
 
-On the command line, another way to specify the base address is by using a *base address response file*. A base address response file is a text file that contains the base addresses and optional sizes of all the DLLs your program uses, and a unique text key for each base address. To specify a base address by using a response file, use an at sign (**`@`**) followed by the name of the response file, *`filename`*, followed by a comma, then the *`key`* value for the base address to use in the file. The linker looks for *`filename`* in either the specified path, or if no path is specified, in the directories specified in the `LIB` environment variable. Each line in *`filename`* represents one DLL and has the following syntax:
+On the command line, another way to specify the base address is by using a *base address response file*. A base address response file is a text file that contains the base addresses and optional sizes of all the DLLs your program uses, and a unique text key for each base address. To specify a base address by using a response file, use an at sign (**`@`**) followed by the name of the response file, *`filename`*, followed by a comma, then the *`key`* value for the base address to use in the file. The linker looks for *`filename`* in either the specified path, or if no path is specified, in the directories specified in the `LIB` environment variable. The fully qualified *`filename`* must not exceed `MAX_PATH` (260 characters). Each line in *`filename`* represents one DLL and has the following syntax:
 
 > *`key`* *`address`* \[*`size`*] **`;`** *`comment`*
 
@@ -35,7 +34,7 @@ one    0x28000000    0x00100000    ; for DLLONE.DLL
 two    0x28100000    0x00300000    ; for DLLTWO.DLL
 ```
 
-If the file that contains these lines is called DLLS.txt, the following example command applies this information:
+If the file that contains these lines is called `DLLS.txt`, the following example command applies this information:
 
 ```cmd
 link dlltwo.obj /dll /base:@dlls.txt,two
@@ -46,9 +45,7 @@ Another way to set the base address is by using the *`BASE`* argument in a [`NAM
 ### To set this linker 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** > **Linker** > **Advanced** property page.
-
 1. Modify the **Base Address** property.
 
 ### To set this linker option programmatically
diff --git a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md
index 708f741e6a..86c167a0fb 100644
--- a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md
+++ b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md
@@ -2,32 +2,31 @@
 description: "Learn more about: Choosing the Format of .netmodule Input Files"
 title: "Choosing the Format of .netmodule Input Files"
 ms.date: "11/04/2016"
-ms.assetid: 4653d1bd-300f-4083-86f5-d1a06f44e61c
 ---
-# Choosing the Format of .netmodule Input Files
+# Choosing the format of .netmodule input files
 
-An MSIL .obj file (compiled with [/clr](clr-common-language-runtime-compilation.md)) can also be used as a .netmodule file.  .obj files contain metadata and native symbols.  .netmodules only contain metadata.
+You can use an MSIL `.obj` file (compiled with [`/clr`](clr-common-language-runtime-compilation.md)) as a `.netmodule` file. `.obj` files contain metadata and native symbols. `.netmodules` only contain metadata.
 
-You can pass an MSIL .obj file to any other Visual Studio compiler via the /addmodule compiler option (but be aware that the .obj file becomes part of the resulting assembly and must be shipped with the assembly).  For example, Visual C# and Visual Basic have the /addmodule compiler option.
+Pass an MSIL `.obj` file to any other Visual Studio compiler with the `/addmodule` compiler option. The `.obj` file becomes part of the resulting assembly and must be shipped with the assembly. For example, Visual C# and Visual Basic have the `/addmodule` compiler option.
 
 > [!NOTE]
-> In most cases, you will need to pass to the linker the .obj file from the compilation that created the .net module.  Passing a .dll or .netmodule MSIL module file to the linker may result in LNK1107.
+> In most cases, you need to pass to the linker the `.obj` file from the compilation that created the .net module. Passing a `.dll` or `.netmodule` MSIL module file to the linker might result in LNK1107.
 
-.obj files, along with their associated .h files, which you reference via #include in source, allow C++ applications to consume the native types in the module, whereas in a .netmodule file, only the managed types can be consumed by a C++ application.  If you attempt to pass a .obj file to #using, information about native types will not be available; #include the .obj file's .h file instead.
+`.obj` files, along with their associated `.h` files, which you reference via #include in source, allow C++ applications to consume the native types in the module. In a `.netmodule` file, only the managed types can be consumed by a C++ application. If you attempt to pass a `.obj` file to #using, information about native types isn't available. Instead, #include the `.obj` file's `.h` file.
 
 Other Visual Studio compilers can only consume managed types from a module.
 
-Use the following to determine whether you need to use a .netmodule or a .obj file as module input to the MSVC linker:
+Use the following guidance to determine whether you need to use a `.netmodule` or a `.obj` file as module input to the MSVC linker:
 
-- If you are building with a Visual Studio compiler other than Visual C++, produce a .netmodule and use the .netmodule as input to the linker.
+- If you're building with a Visual Studio compiler other than Visual C++, produce a `.netmodule` and use the `.netmodule` as input to the linker.
 
-- If you are using the MSVC compiler to produce modules and if the module(s) will be used to build something other than a library, use the .obj files produced by the compiler as module input to the linker; do not use the .netmodule file as input.
+- If you're using the MSVC compiler to produce modules and if the modules are used to build something other than a library, use the `.obj` files produced by the compiler as module input to the linker. Don't use the `.netmodule` file as input.
 
-- If your modules will be used to build a native (not a managed) library, use .obj files as module input to the linker and generate a .lib library file.
+- If your modules are used to build a native (not a managed) library, use `.obj` files as module input to the linker and generate a `.lib` library file.
 
-- If your modules will be used to build a managed library, and if all module input to the linker will be verifiable (produced with /clr:safe), use .obj files as module input to the linker and generate a .dll (assembly) or .netmodule (module) library file.
+- If your modules are used to build a managed library, and if all module input to the linker is verifiable (produced with `/clr:safe`), use `.obj` files as module input to the linker and generate a `.dll` (assembly) or `.netmodule` (module) library file.
 
-- If your modules will be used to build a managed library, and if one or more modules input to the linker will be produced with just /clr, use .obj files as module input to the linker and generate a .dll (assembly).  If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library will consist of the .obj files for the libraries component modules (you will also want to ship the .h files for each module, so they can be referenced with #include from source code).
+- If your modules are used to build a managed library, and if one or more modules input to the linker are produced with just `/clr`, use `.obj` files as module input to the linker and generate a `.dll` (assembly). If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library consists of the `.obj` files for the libraries component modules. You also want to ship the `.h` files for each module, so they can be referenced with #include from source code.
 
 ## See also
 
diff --git a/docs/build/reference/compiler-command-line-syntax.md b/docs/build/reference/compiler-command-line-syntax.md
index 6936391ed2..0f56baaed5 100644
--- a/docs/build/reference/compiler-command-line-syntax.md
+++ b/docs/build/reference/compiler-command-line-syntax.md
@@ -17,7 +17,7 @@ The following table describes input to the CL command.
 
 |Entry|Meaning|
 |-----------|-------------|
-|*option*|One or more [CL options](compiler-options.md). Note that all options apply to all specified source files. Options are specified by either a forward slash (/) or a dash (-). If an option takes an argument, the option's description documents whether a space is allowed between the option and the arguments. Option names (except for the /HELP option) are case sensitive. For more information, see [Order of CL Options](order-of-cl-options.md).|
+|*option*|One or more [CL options](compiler-options.md). All options apply to all specified source files. Specify options using either a forward slash (/) or a dash (-). Generally, there can't be a space between the option and argument. The option's description states when a space is allowed. Options are case-sensitive--except for `/HELP`. For more information, see [Order of CL Options](order-of-cl-options.md).|
 |`file`|The name of one or more source files, .obj files, or libraries. CL compiles source files and passes the names of the .obj files and libraries to the linker. For more information, see [CL Filename Syntax](cl-filename-syntax.md).|
 |*lib*|One or more library names. CL passes these names to the linker.|
 |*command-file*|A file that contains multiple options and filenames. For more information, see [CL Command Files](cl-command-files.md).|
diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md
index 82a2bf89c2..193a21544b 100644
--- a/docs/build/reference/compiler-options-listed-alphabetically.md
+++ b/docs/build/reference/compiler-options-listed-alphabetically.md
@@ -1,7 +1,7 @@
 ---
 title: "Compiler options listed alphabetically"
 description: "Reference listing in alphabetical order of the Microsoft C/C++ compiler command-line options."
-ms.date: 11/13/2023
+ms.date: 2/5/2025
 helpviewer_keywords: ["compiler options, C++"]
 ---
 # Compiler options listed alphabetically
@@ -35,8 +35,9 @@ This table contains an alphabetical list of compiler options. For a list of comp
 | [`/clr:safe`](clr-common-language-runtime-compilation.md) | Produce an IL-only verifiable output file. |
 | [`/constexpr:backtrace<N>`](constexpr-control-constexpr-evaluation.md) | Show N `constexpr` evaluations in diagnostics (default: 10). |
 | [`/constexpr:depth<N>`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). |
-| [`/constexpr:steps<N>`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) |
+| [`/constexpr:steps<N>`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000). |
 | [`/D<name>{=|#}<text>`](d-preprocessor-definitions.md) | Defines constants and macros. |
+| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. |
 | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. |
 | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. |
 | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. |
@@ -66,6 +67,7 @@ This table contains an alphabetical list of compiler options. For a list of comp
 | [`/Fd`](fd-program-database-file-name.md) | Renames program database file. |
 | [`/Fe`](fe-name-exe-file.md) | Renames the executable file. |
 | [`/feature`](feature-arm64.md) | Enable architecture features.<sup>17.10</sup> |
+| [`/forceInterlockedFunctions`](force-interlocked-functions.md) | Dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 LSE atomic instructions based on target CPU.<sup>17.14</sup> |
 | [`/FI<file>`](fi-name-forced-include-file.md) | Preprocesses the specified include file. |
 | [`/Fi`](fi-preprocess-output-file-name.md) | Specifies the preprocessed output file name. |
 | [`/Fm`](fm-name-mapfile.md) | Creates a mapfile. |
@@ -83,7 +85,7 @@ This table contains an alphabetical list of compiler options. For a list of comp
 | [`/fsanitize`](fsanitize.md) | Enables compilation of sanitizer instrumentation such as AddressSanitizer. |
 | [`/fsanitize-coverage`](fsanitize-coverage.md) | Enables compilation of code coverage instrumentation for libraries such as LibFuzzer. |
 | `/Ft<dir>` | Location of the header files generated for `#import`. |
-| [`/FU<file>`](fu-name-forced-hash-using-file.md) | Forces the use of a file name, as if it had been passed to the [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive. |
+| [`/FU<file>`](fu-name-forced-hash-using-file.md) | Forces the use of a file name, as if it were passed to the [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive. |
 | [`/Fx`](fx-merge-injected-code.md) | Merges injected code with the source file. |
 | [`/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) |
@@ -227,7 +229,7 @@ This table contains an alphabetical list of compiler options. For a list of comp
 | [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables (off by default). |
 | [`/Zc:forScope[-]`](zc-forscope-force-conformance-in-for-loop-scope.md) | Enforce Standard C++ **`for`** scoping rules (on by default). |
 | [`/Zc:gotoScope`](zc-gotoscope.md) | Enforce Standard C++ **`goto`** rules around local variable initialization (implied by **`/permissive-`**). |
-| [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules (implied by **`/permissive-`**) |
+| [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules (implied by **`/permissive-`**). |
 | [`/Zc:implicitNoexcept[-]`](zc-implicitnoexcept-implicit-exception-specifiers.md) | Enable implicit **`noexcept`** on required functions (on by default). |
 | [`/Zc:inline[-]`](zc-inline-remove-unreferenced-comdat.md) | Remove unreferenced functions or data if they're COMDAT or have internal linkage only (off by default). |
 | [`/Zc:lambda[-]`](zc-lambda.md) | Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. |
@@ -259,7 +261,8 @@ This table contains an alphabetical list of compiler options. For a list of comp
 | [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. |
 | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. |
 
-<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.
+<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.\
+<sup>17.14</sup> This option is available starting in Visual Studio 2022 version 17.14.
 
 ## See also
 
diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md
index 7153251edf..5b2a78c030 100644
--- a/docs/build/reference/compiler-options-listed-by-category.md
+++ b/docs/build/reference/compiler-options-listed-by-category.md
@@ -1,7 +1,7 @@
 ---
 title: "Compiler Options Listed by Category"
 description: "Reference listing by category of the Microsoft C/C++ compiler command-line options."
-ms.date: 11/13/2023
+ms.date: 2/5/2025
 helpviewer_keywords: ["compiler options, C++"]
 ---
 # Compiler options listed by category
@@ -12,6 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica
 
 | Option | Purpose |
 |--|--|
+| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) to debug optimized code as if it had been compiled deoptimized. |
 | [`/favor:<blend|AMD64|INTEL64|ATOM>`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. |
 | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. |
 | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. |
@@ -43,6 +44,7 @@ This article contains a categorical list of compiler options. For an alphabetica
 | [`/EHr`](eh-exception-handling-model.md) | Always generate `noexcept` runtime termination checks. |
 | [`/EHs`](eh-exception-handling-model.md) | Enable C++ exception handling (no SEH exceptions). |
 | [`/feature`](feature-arm64.md) | Enable architecture features.<sup>17.10</sup> |
+| [`/forceInterlockedFunctions`](force-interlocked-functions.md) | Dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 LSE atomic instructions based on target CPU.<sup>17.14</sup> |
 | [`/fp:contract`](fp-specify-floating-point-behavior.md) | Consider floating-point contractions when generating code. |
 | [`/fp:except[-]`](fp-specify-floating-point-behavior.md) | Consider floating-point exceptions when generating code. |
 | [`/fp:fast`](fp-specify-floating-point-behavior.md) | "fast" floating-point model; results are less predictable. |
@@ -156,7 +158,7 @@ This article contains a categorical list of compiler options. For an alphabetica
 | [`/await:strict`](await-enable-coroutine-support.md) | Enable standard C++20 coroutine support with earlier language versions. |
 | [`/constexpr:backtrace<N>`](constexpr-control-constexpr-evaluation.md) | Show N `constexpr` evaluations in diagnostics (default: 10). |
 | [`/constexpr:depth<N>`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). |
-| [`/constexpr:steps<N>`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) |
+| [`/constexpr:steps<N>`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000). |
 | [`/openmp`](openmp-enable-openmp-2-0-support.md) | Enables [`#pragma omp`](../../preprocessor/omp.md) in source code. |
 | [`/openmp:experimental`](openmp-enable-openmp-2-0-support.md) | Enable OpenMP 2.0 language extensions plus select OpenMP 3.0+ language extensions. |
 | [`/openmp:llvm`](openmp-enable-openmp-2-0-support.md) | OpenMP language extensions using LLVM runtime. |
@@ -181,12 +183,12 @@ This article contains a categorical list of compiler options. For an alphabetica
 | [`/Zc:alignedNew[-]`](zc-alignednew.md) | Enable C++17 over-aligned dynamic allocation (on by default in C++17). |
 | [`/Zc:auto[-]`](zc-auto-deduce-variable-type.md) | Enforce the new Standard C++ meaning for **`auto`** (on by default). |
 | [`/Zc:char8_t[-]`](zc-char8-t.md) | Enable or disable C++20 native `u8` literal support as `const char8_t` (off by default, except under **`/std:c++20`**). |
-| [`/Zc:enumTypes[-]`](zc-enumtypes.md) | Enable Standard C++ rules for inferred `enum` base types (Off b y default, not implied by **`/permissive-`**). |
+| [`/Zc:enumTypes[-]`](zc-enumtypes.md) | Enable Standard C++ rules for inferred `enum` base types (Off by default, not implied by **`/permissive-`**). |
 | [`/Zc:externC[-]`](zc-externc.md) | Enforce Standard C++ rules for `extern "C"` functions (implied by **`/permissive-`**). |
 | [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables (off by default). |
 | [`/Zc:forScope[-]`](zc-forscope-force-conformance-in-for-loop-scope.md) | Enforce Standard C++ **`for`** scoping rules (on by default). |
 | [`/Zc:gotoScope`](zc-gotoscope.md) | Enforce Standard C++ **`goto`** rules around local variable initialization (implied by **`/permissive-`**). |
-| [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules (implied by **`/permissive-`**) |
+| [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules (implied by **`/permissive-`**). |
 | [`/Zc:implicitNoexcept[-]`](zc-implicitnoexcept-implicit-exception-specifiers.md) | Enable implicit **`noexcept`** on required functions (on by default). |
 | [`/Zc:inline[-]`](zc-inline-remove-unreferenced-comdat.md) | Remove unreferenced functions or data if they're COMDAT or have internal linkage only (off by default). |
 | [`/Zc:lambda[-]`](zc-lambda.md) | Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. |
@@ -208,7 +210,7 @@ This article contains a categorical list of compiler options. For an alphabetica
 | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects (on by default). |
 | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. |
 | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. |
-| [`/ZH:[MD5|SHA1|SHA_256]`](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. |
+| [`/ZH`:[MD5|SHA1|SHA_256]](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. |
 | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) |
 | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. |
 | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. |
@@ -311,7 +313,7 @@ Experimental options may only be supported by certain versions of the compiler.
 |--|--|
 | [`/clr:noAssembly`](clr-common-language-runtime-compilation.md) | Deprecated. Use [`/LN` (Create MSIL Module)](ln-create-msil-module.md) instead. |
 | [`/errorReport`](errorreport-report-internal-compiler-errors.md) | Deprecated. Error reporting is controlled by [Windows Error Reporting (WER)](/windows/win32/wer/windows-error-reporting) settings. |
-| [`/experimental:preprocessor`](experimental-preprocessor.md) | Deprecated. Enables experimental conforming preprocessor support. Use [`/Zc:preprocessor`](zc-preprocessor.md) |
+| [`/experimental:preprocessor`](experimental-preprocessor.md) | Deprecated. Enables experimental conforming preprocessor support. Use [`/Zc:preprocessor`](zc-preprocessor.md) instead. |
 | [`/Fr`](fr-fr-create-dot-sbr-file.md) | Deprecated. Creates a browse information file without local variables. |
 | [`/Ge`](ge-enable-stack-probes.md) | Deprecated. Activates stack probes. On by default. |
 | [`/Gm`](gm-enable-minimal-rebuild.md) | Deprecated. Enables minimal rebuild. |
@@ -327,7 +329,8 @@ Experimental options may only be supported by certain versions of the compiler.
 | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables language extensions. |
 | [`/Zg`](zg-generate-function-prototypes.md) | Removed in Visual Studio 2015. Generates function prototypes. |
 
-<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.
+<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.\
+<sup>17.14</sup> This option is available starting in Visual Studio 2022 version 17.14.
 
 ## See also
 
diff --git a/docs/build/reference/constexpr-control-constexpr-evaluation.md b/docs/build/reference/constexpr-control-constexpr-evaluation.md
index 6bee6fa00a..9052345e64 100644
--- a/docs/build/reference/constexpr-control-constexpr-evaluation.md
+++ b/docs/build/reference/constexpr-control-constexpr-evaluation.md
@@ -1,45 +1,42 @@
 ---
 description: "Learn more about: /constexpr (Control constexpr evaluation)"
 title: "/constexpr (Control constexpr evaluation)"
-ms.date: "08/15/2017"
+ms.date: 04/14/2025
 f1_keywords: ["/constexpr", "-constexpr"]
 helpviewer_keywords: ["/constexpr control constexpr evaluation [C++]", "-constexpr control constexpr evaluation [C++]", "constexpr control constexpr evaluation [C++]"]
-ms.assetid: 76d56784-f5ad-401d-841d-09d1059e8b8c
 ---
 # /constexpr (Control constexpr evaluation)
 
-Use the **/constexpr** compiler options to control parameters for **`constexpr`** evaluation at compile time.
+Use the **`/constexpr`** compiler options to control parameters for **`constexpr`** evaluation at compile time.
 
 ## Syntax
 
-> **/constexpr:depth**<em>N</em>\
-> **/constexpr:backtrace**<em>N</em>\
-> **/constexpr:steps**<em>N</em>
+> `/constexpr:depth`<em>N</em>\
+> `/constexpr:backtrace`<em>N</em>\
+> `/constexpr:steps`<em>N</em>
 
 ## Arguments
 
-**depth**<em>N</em>
+**`depth`**<em>N</em>\
 Limit the depth of recursive **`constexpr`** function invocation to *N* levels. The default is 512.
 
-**backtrace**<em>N</em>
+**`backtrace`**<em>N</em>\
 Show up to *N* **`constexpr`** evaluations in diagnostics. The default is 10.
 
-**steps**<em>N</em>
-Terminate **`constexpr`** evaluation after *N* steps. The default is 100,000.
+**`steps`**<em>N</em>\
+Terminate **`constexpr`** evaluation after *N* steps. The default is 100,000. A step refers to an individual computation taken towards evaluating the constant expression. Increasing the maximum number of steps might cause compilation to take longer in cases where compilation would otherwise fail.
 
 ## Remarks
 
-The **/constexpr** compiler options control compile-time evaluation of **`constexpr`** expressions. Evaluation steps, recursion levels, and backtrace depth are controlled to prevent the compiler from spending too much time on **`constexpr`** evaluation. For more information on the **`constexpr`** language element, see [constexpr (C++)](../../cpp/constexpr-cpp.md).
+The **`/constexpr`** compiler options control compile-time evaluation of **`constexpr`** expressions. Evaluation steps, recursion levels, and backtrace depth are controlled to prevent the compiler from spending too much time on **`constexpr`** evaluation. For more information on the **`constexpr`** language element, see [`constexpr` (C++)](../../cpp/constexpr-cpp.md).
 
-The **/constexpr** options are available beginning in Visual Studio 2015.
+The **`/constexpr`** flag is available beginning in Visual Studio 2015.
 
 ### To set this compiler option in the Visual Studio development environment
 
 1. Open your project's **Property Pages** dialog box.
-
 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.
-
-1. Enter any **/constexpr** compiler options in the **Additional Options** box. Choose **OK** or **Apply** to save your changes.
+1. Enter **/constexpr** compiler options in the **Additional Options** box. Choose **OK** to save your changes.
 
 ### To set this compiler option programmatically
 
@@ -47,5 +44,5 @@ The **/constexpr** options are available beginning in Visual Studio 2015.
 
 ## See also
 
-[MSVC Compiler Options](compiler-options.md)<br/>
+[MSVC Compiler Options](compiler-options.md)\
 [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/def-specify-module-definition-file.md b/docs/build/reference/def-specify-module-definition-file.md
index 5d6c186f61..42e938c3ff 100644
--- a/docs/build/reference/def-specify-module-definition-file.md
+++ b/docs/build/reference/def-specify-module-definition-file.md
@@ -1,10 +1,9 @@
 ---
 description: "Learn more about: /DEF (Specify module-definition file)"
 title: "/DEF (Specify module-definition file)"
-ms.date: 09/09/2022
+ms.date: 03/27/2025
 f1_keywords: ["VC.Project.VCLinkerTool.ModuleDefinitionFile", "/def"]
 helpviewer_keywords: ["module definition files, specifying", "DEF linker option", "-DEF linker option", "module definition files", "/DEF linker option"]
-ms.assetid: 6497fa68-65f0-48ca-8f66-b87166fc631a
 ---
 # `/DEF` (Specify module-definition file)
 
@@ -17,7 +16,7 @@ Specifies a module-definition file to the linker.
 ## Arguments
 
 *`filename`*\
-The name of a module-definition file (*`.def`*) to be passed to the linker.
+The name of a module-definition file (*`.def`*) to be passed to the linker. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
@@ -28,9 +27,7 @@ To specify a *`.def`* file from within the development environment, add it to th
 ### To set this linker option in the Visual Studio development environment
 
 1. Open the project's **Property Pages** dialog box. For more information, see [Set compiler and build properties](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **Linker** > **Input** property page.
-
 1. Modify the **Module Definition File** property. Choose **OK** or **Apply** to save your changes.
 
 ### To set this linker option programmatically
diff --git a/docs/build/reference/dumpbin-options.md b/docs/build/reference/dumpbin-options.md
index 2bedc34b9e..71bd3a9c66 100644
--- a/docs/build/reference/dumpbin-options.md
+++ b/docs/build/reference/dumpbin-options.md
@@ -1,9 +1,8 @@
 ---
 title: "DUMPBIN options"
 description: "Reference guide to the Microsoft DUMPBIN utility command-line options."
-ms.date: "02/09/2020"
+ms.date: 02/09/2020
 helpviewer_keywords: ["DUMPBIN program, options"]
-ms.assetid: 563b696e-7599-4480-94b9-014776289ec8
 ---
 # DUMPBIN options
 
@@ -49,7 +48,7 @@ DUMPBIN has the following options:
 
 - [/PDBPATH\[:VERBOSE\]](pdbpath.md)
 
-- [/RANGEE:vaMin\[,vaMax\]](range.md)
+- [/RANGE:vaMin\[,vaMax\]](range.md)
 
 - [/RAWDATA\[:{NONE\|1\|2\|4\|8}\[,#\]\]](rawdata.md)
 
diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md
new file mode 100644
index 0000000000..6d4602acfc
--- /dev/null
+++ b/docs/build/reference/dynamic-deopt-linker.md
@@ -0,0 +1,53 @@
+---
+title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging) (Preview)"
+description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)."
+ms.date: 03/14/2025
+f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"]
+helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"]
+---
+# `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) (Preview)
+
+> [!IMPORTANT]
+> The `/DYNAMICDEOPT` linker switch is currently in PREVIEW.
+> This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here.
+
+The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it were compiled deoptimized and step in anywhere with on-demand function deoptimization.
+
+## Syntax
+
+> **`/DYNAMICDEOPT`**\
+> **`/DYNAMICDEOPT:SUFFIX=<suffix>`**\
+> **`/DYNAMICDEOPT:SYNC`**
+
+## Arguments
+
+*`suffix`*\
+Specify the file extension for the deoptimized output.
+
+With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and `test.alt.pdb`. This switch allows you to change the suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have.
+
+*`SYNC`*\
+Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment.
+
+## Remarks
+
+This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects.
+
+IncrediBuild 10.24 supports C++ Dynamic Debugging builds.\
+FastBuild v1.15 supports C++ Dynamic Debugging builds.
+
+### Set this linker 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 **Linker** > **Debugging** property page.
+
+### Set this linker option programmatically
+
+- See <xref:Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.GenerateDebugInformation%2A>.
+
+## See also
+
+[`/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview)](dynamic-deopt.md)\
+[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging)\
+[MSVC linker reference](linking.md)\
+[MSVC linker options](linker-options.md)
diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md
new file mode 100644
index 0000000000..33edd942e3
--- /dev/null
+++ b/docs/build/reference/dynamic-deopt.md
@@ -0,0 +1,78 @@
+---
+title: "/dynamicdeopt (Enable C++ Dynamic Debugging (Preview))"
+description: "Enable the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging."
+ms.date: 04/01/2025
+f1_keywords: ["/dynamicdeopt"]
+helpviewer_keywords: ["-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]"]
+---
+# `/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview)
+
+> [!IMPORTANT]
+> The `/dynamicdeopt` compiler switch is currently in PREVIEW.
+> This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here.
+
+Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) so you can debug optimized code as if it were compiled deoptimized and step in anywhere with on-demand function deoptimization.
+
+## Syntax
+
+> **`/dynamicdeopt`**\
+> **`/dynamicdeopt:suffix <suffix>`**\
+> **`/dynamicdeopt:sync`**
+
+## Arguments
+
+*`suffix`*\
+Specify the file extension for the deoptimized output.
+
+With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and `test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have.
+
+*`sync`*\
+Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the code generator. This switch makes them run serially instead. This switch is provided in case this better suits your build environment.
+
+## Remarks
+
+This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects and must be used with the corresponding linker flag, [`/DYNAMICDEOPT`](dynamic-deopt-linker.md).
+
+Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized function in an optimized file, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. 
+
+`/dynamicdeopt` requires:
+
+`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or if you specify `/DEBUG:FASTLINK`, the linker gives a fatal error.
+If you specify `/INCREMENTAL`, the compiler generates a warning and automatically turns off `/INCREMENTAL`.
+If you specify `/OPT:ICF`, the compiler generates a warning that the debug experience isn't as good. This is because ICF can cause functions to be removed from the alt file, which means you can't step into them.
+
+IncrediBuild 10.24 supports C++ Dynamic Debugging builds.\
+FastBuild v1.15 supports C++ Dynamic Debugging builds.
+
+`/dynamicdeopt` is incompatible with edit-and-continue and the following compiler switches:
+
+```cpp
+/GL
+/ZI
+/RTC1
+/RTCs
+/RTCc
+/RTCu
+/GH
+/Gh
+/fastcap
+/callcap
+/ZW
+/fsanitize=address
+/fsanitize=kernel-address
+All of the CLR flags
+```
+
+### Set this linker option in the Visual Studio development environment
+
+You can set this switch inside Visual Studio. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging#build-system-integration). There are advantages to setting the switch in Visual Studio because MSBuild automatically suppresses some of the incompatible switches such as `/GL` and `/OPT:ICF`. It also sets the corresponding linker option (`/DYNAMICDEOPT`). You can also set the switch in the command line.
+
+### Set this compiler option programmatically
+
+- See <xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.CompileAsManaged>.
+
+## See also
+
+[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging)\
+[MSVC Compiler Options](compiler-options.md)\
+[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/experimental-log.md b/docs/build/reference/experimental-log.md
index e6af3965a2..413151fd86 100644
--- a/docs/build/reference/experimental-log.md
+++ b/docs/build/reference/experimental-log.md
@@ -1,23 +1,28 @@
 ---
 title: "/experimental:log (Structured SARIF diagnostics)"
-description: "Use the /experimental:log compiler option to output experimental structured SARIF output for diagnostics."
-ms.date: 10/26/2023
+description: "The /experimental:log compiler option outputs experimental structured SARIF output for diagnostics."
+ms.date: 06/05/2025
 f1_keywords: ["/experimental:log"]
 helpviewer_keywords: ["/experimental:log", "SARIF", "structured diagnostics"]
 ---
 # `/experimental:log` (Structured SARIF diagnostics)
 
-Output [SARIF](https://sarifweb.azurewebsites.net/) diagnostics to the specified file. For more information, see [Structured SARIF Diagnostics](sarif-output.md).
+Output [SARIF](https://sarifweb.azurewebsites.net/) diagnostics to the specified file or directory. For more information, see [Structured SARIF Diagnostics](sarif-output.md).
 
 ## Syntax
 
-> **`/experimental:log`** *filename*
+> **`/experimental:log`** *filename*\
+> **`/experimental:log`** *directoryname\\*
 
 ## Arguments
 
 *filename*
 
-Where to output SARIF diagnostics. The `.sarif` suffix is added to *filename* to produce the final filename at which to store the resulting SARIF diagnostics. The space between `/experimental:log` and *filename* is optional. Paths that include spaces must be enclosed in double quotes. *filename* may name a relative or absolute path.
+The output file for SARIF diagnostics. The compiler automatically adds the `.sarif` extension to *filename*. The space between `/experimental:log` and *filename* is optional. Use double quotes around paths containing spaces. Both relative and absolute paths are supported.
+
+*directoryname\\*
+
+The output directory for SARIF diagnostics (for example, `/experimental:log sarif_output\`). Remember to add the trailing backslash (`\`) to indicate it's a directory. Each source file name forms the base name for each SARIF file saved in the directory. The compiler automatically adds the `.sarif` extension to each file name. The space between `/experimental:log` and *directoryname\\* is optional. Use double quotes around paths containing spaces. Both relative and absolute paths are supported.
 
 ## Remarks
 
@@ -28,19 +33,22 @@ Diagnostics are also output as text to the console as usual.
 ### 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 specific project **Configuration** and **Platform** for which you want to change the property. You can also choose **"All Configurations"** and **"All Platforms"**.
-
 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.
-
 1. Modify the **Additional Options** property, and then choose **OK**.
 
-## Example
+## Examples
+
+The following command produces SARIF information for the compilation of `main.cpp` and saves it in the file `mySarifInfo.sarif`:
+
+```cmd
+cl /experimental:log mySarifInfo main.cpp
+```
 
-The following command produces SARIF information for the entire compilation in the `diags.sarif` file in the current directory:
+The following command produces SARIF information for the entire compilation and saves it in the `sarif_output` directory in the files `main.sarif` and `other.sarif`:
 
 ```cmd
-CL /experimental:logdiags main.cpp other.cpp
+cl /experimental:log sarif_output\ main.cpp other.cpp
 ```
 
 ## See also
diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md
index bd1c16ed79..bfbcec74a8 100644
--- a/docs/build/reference/experimental-module.md
+++ b/docs/build/reference/experimental-module.md
@@ -1,13 +1,13 @@
 ---
 title: "/experimental:module (Enable module support)"
 description: "Use the /experimental:module compiler option to enable experimental compiler support for named modules."
-ms.date: 01/27/2022
+ms.date: 02/12/2025
 f1_keywords: ["module", "/experimental:module"]
 helpviewer_keywords: ["module", "/experimental:module", "Enable module support"]
 ---
-# `/experimental:module` (Enable module support)
+# `/experimental:module` (Enable experimental module support)
 
-Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio version 16.11 and later. It's still required (along with [`/std:c++latest`](std-specify-language-standard-version.md)) for the experimental Standard library modules.
+Enables compiler support for Microsoft's experimental form of C++ Standard modules. This option is obsolete in Visual Studio 2019 version 16.11 and later.
 
 ## Syntax
 
@@ -15,24 +15,46 @@ Enables experimental compiler support for C++ Standard modules. This option is o
 
 ## Remarks
 
-In versions of Visual Studio before Visual Studio 2019 version 16.11, you can enable experimental modules support by use of the **`/experimental:module`** compiler option along with the [`/std:c++latest`](std-specify-language-standard-version.md) option. In Visual Studio 2019 version 16.11, module support is enabled automatically by either **`/std:c++20`** or **`/std:c++latest`**. Use **`/experimental:module-`** to disable module support explicitly.
+ This switch applies to the time before the new, standardized, way of consuming the C++ Standard Library as modules was available. Although you can use this switch to use the older experimental named modules, we recommend that you use the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md).
 
-This option is available starting in Visual Studio 2015 Update 1. As of Visual Studio 2019 version 16.2, C++20 Standard modules aren't fully implemented in the Microsoft C++ compiler. Modules support is feature complete in Visual Studio 2019 version 16.10. You can use the modules feature import the Standard Library modules provided by Microsoft. A module and the code that consumes it must be compiled with the same compiler options.
+This compiler switch is available starting in Visual Studio 2015 Update 1. In the VS Installer under the **Individual components** tab, ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** is selected. You can use the search box with **experimental** to find it. For more information, see [Install C and C++ support in Visual Studio](../vscpp-step-0-installation.md).
 
-For more information on modules and how to use and create them, see [Overview of modules in C++](../../cpp/modules-cpp.md).
+| Version  | Status |
+|---|---|
+| Visual Studio 2015 Update 1  | `/experimental:module` introduced. |
+| Visual Studio 2019 version 16.10 | C++20 modules support is feature complete. |
+| Visual Studio 2019 16.11 and earlier | Enable experimental modules support using **`/experimental:module`** along with [`/std:c++latest`](std-specify-language-standard-version.md). |
+| Visual Studio 2019 version 16.11 and later | Modules support is enabled automatically with **`/std:c++20`** or later, or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. |
+
+The experimental library consists of the following named modules:
+
+- `std.regex` provides the content of header `<regex>`
+- `std.filesystem` provides the content of header `<filesystem>`
+- `std.memory` provides the content of header `<memory>`
+- `std.threading` provides the contents of headers `<atomic>`, `<condition_variable>`, `<future>`, `<mutex>`, `<shared_mutex>`, and `<thread>`
+- `std.core` provides everything else in the C++ Standard Library
+
+To consume these modules, add an import declaration to the top of the source code file. For example:
+
+```cpp
+import std.core;
+import std.regex;
+```
+
+To consume the experimental Microsoft Standard Library modules, compile your program with the [`/EHsc`](eh-exception-handling-model.md) and [`/MD`](md-mt-ld-use-run-time-library.md) options.
 
 ### 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. Set the **Configuration** drop-down to **All Configurations**.
-
 1. Select the **Configuration Properties** > **C/C++** > **Language** property page.
-
 1. Modify the **Enable C++ Modules (experimental)** property, and then choose **OK**.
 
+For more information about how to use and create modules, see [Overview of modules in C++](../../cpp/modules-cpp.md).
+
 ## See also
 
+[Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md)\
 [`/headerUnit` (Use header unit IFC)](headerunit.md)\
 [`/exportHeader` (Create header units)](module-exportheader.md)\
 [`/reference` (Use named module IFC)](module-reference.md)\
diff --git a/docs/build/reference/force-interlocked-functions.md b/docs/build/reference/force-interlocked-functions.md
new file mode 100644
index 0000000000..b0fb4df6fa
--- /dev/null
+++ b/docs/build/reference/force-interlocked-functions.md
@@ -0,0 +1,55 @@
+---
+title:       "/forceInterlockedFunctions"
+description: "Learn more about /forceInterlockedFunctions"
+ms.date:     03/07/2025
+---
+# `/forceInterlockedFunctions`
+
+Dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 Large System Extension (LSE) atomic instructions based on CPU capability at runtime.
+
+## Syntax
+
+> **`/forceInterlockedFunctions`**[**`-`**]
+
+## Remarks
+When possible, this flag avoids using Armv8.0 load and store exclusive instructions, as these instructions can result in livelocks.
+This flag forces the following interlocked intrinsics to be generated as out-of-line functions:
+
+|Operation|8|16|32|64|128|Pointer|
+|-|-------|--------|--------|--------|-------|-------|
+|Add|None|None|Full|Full|None|None|
+|And|Full|Full|Full|Full|None|None|
+|CompareExchange|Full|Full|Full|Full|Full|Full|
+|Decrement|None|Full|Full|Full|None|None|
+|Exchange|Full|Full|Full|Full|None|Full|
+|ExchangeAdd|Full|Full|Full|Full|None|None|
+|Increment|None|Full|Full|Full|None|None|
+|Or|Full|Full|Full|Full|None|None|
+|Xor|Full|Full|Full|Full|None|None|
+|bittestandreset|None|None|Full|Full|None|None|
+|bittestandset|None|None|Full|Full|None|None|
+
+Key:
+
+- **Full**: supports plain, `_acq`, `_rel`, and `_nf` forms.
+
+- **None**: Not supported
+
+For more information about interlocked intrinsics, see the "Interlocked intrinsics" section in [Arm64 Intrinsics](../../intrinsics/arm64-intrinsics.md).
+
+### To set the `/forceInterlockedFunctions` compiler option in Visual Studio
+
+1. Open the **Property Pages** dialog box for the project. For more information, 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. In the **Additional options** box, add *`/forceInterlockedFunctions`* to enable. Choose **OK** to save your changes.
+
+### To set this compiler option programmatically
+
+- See <xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.AdditionalOptions%2A>.
+
+## See also
+[Arm64 Intrinsics](../../intrinsics/arm64-intrinsics.md)\
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/fsanitize.md b/docs/build/reference/fsanitize.md
index 7fd5128bb7..6e9e8c9439 100644
--- a/docs/build/reference/fsanitize.md
+++ b/docs/build/reference/fsanitize.md
@@ -12,19 +12,24 @@ Use the **`/fsanitize`** compiler options to enable sanitizers.
 ## Syntax
 
 > **`/fsanitize=address`**\
+> **`/fsanitize=kernel-address`**\
 > **`/fsanitize=fuzzer`**\
 > **`/fsanitize-address-use-after-return`**\
 > **`/fno-sanitize-address-vcasan-lib`**
+> **`/fsanitize-address-asan-compat-lib`**
+> **`/fno-sanitize-address-asan-compat-lib`**
 
 ## Remarks
 
 The **`/fsanitize=address`** compiler option enables [AddressSanitizer](../../sanitizers/asan.md), a powerful compiler and runtime technology to uncover [hard-to-find bugs](../../sanitizers/asan.md#error-types). Support for the **`/fsanitize=address`** option is available starting in Visual Studio 2019 version 16.9.
 
+The **`/fsanitize=kernel-address`** compiler option enables [Kernel AddressSanitizer (KASan)](/windows-hardware/drivers/devtest/kasan). KASan is the kernel-mode variant of AddressSanitizer, available starting in Visual Studio 2022 version 17.11. KASan is only supported on Windows 11 24H2 or Windows Server 2025 and higher, and requires building using a Windows SDK 10.0.26100.2161 and higher. Building with KASan also implies the **`/fsanitize-address-asan-compat-lib`** compiler option.
+
 The **`/fsanitize=fuzzer`** compiler option enables experimental support for [LibFuzzer](https://llvm.org/docs/LibFuzzer.html). LibFuzzer is a coverage-guided fuzzing library that can be used to find bugs and crashes caused by user-provided input. We recommended you use **`/fsanitize=address`** with LibFuzzer. This option is useful for fuzzing tools such as OneFuzz. For more information, see the [OneFuzz documentation](https://www.microsoft.com/research/project/project-onefuzz/) and [OneFuzz GitHub project](https://github.com/microsoft/onefuzz). Support for the **`/fsanitize=fuzzer`** option is available starting in Visual Studio 2022 version 17.0.
 
 The **`/fsanitize`** option doesn't allow comma-separated syntax, for example: **`/fsanitize=address,fuzzer`**. These options must be specified individually.
 
-The **`/fsanitize-address-use-after-return`** and **`/fno-sanitize-address-vcasan-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md).
+The **`/fsanitize-address-use-after-return`**, **`/fno-sanitize-address-vcasan-lib`**, **`/fsanitize-address-asan-compat-lib`**, and **`/fno-sanitize-address-asan-compat-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md).
 
 ### To set the **`/fsanitize=address`** compiler option in the Visual Studio development environment
 
diff --git a/docs/build/reference/gd-gr-gv-gz-calling-convention.md b/docs/build/reference/gd-gr-gv-gz-calling-convention.md
index 834a53189c..50380ebb09 100644
--- a/docs/build/reference/gd-gr-gv-gz-calling-convention.md
+++ b/docs/build/reference/gd-gr-gv-gz-calling-convention.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: /Gd, /Gr, /Gv, /Gz (Calling Convention)"
 title: "/Gd, /Gr, /Gv, /Gz (Calling Convention)"
-ms.date: "09/05/2018"
+description: "Learn more about: /Gd, /Gr, /Gv, /Gz (Calling Convention)"
+ms.date: 09/05/2018
 f1_keywords: ["/Gr", "/Gv", "/Gd", "VC.Project.VCCLCompilerTool.CallingConvention"]
 helpviewer_keywords: ["-Gd compiler option [C++]", "-Gv compiler option [C++]", "/Gv compiler option [C++]", "-Gr compiler option [C++]", "Gd compiler option [C++]", "Gr compiler option [C++]", "/Gz compiler option [C++]", "-Gz compiler option [C++]", "/Gd compiler option [C++]", "Gz compiler option [C++]", "Gv compiler option [C++]", "/Gr compiler option [C++]"]
-ms.assetid: fd3110cb-2d77-49f2-99cf-a03f9ead00a3
 ---
 # /Gd, /Gr, /Gv, /Gz (Calling Convention)
 
@@ -44,7 +43,7 @@ For more information about calling conventions, see [Calling Conventions](../../
 
 On x86 processors, all function arguments are passed on the stack from right to left. On ARM and x64 architectures, some arguments are passed by register and the rest are passed on the stack from right to left. The calling routine pops the arguments from the stack.
 
-For C, the **`__cdecl`** naming convention uses the function name preceded by an underscore ( `_` ); no case translation is performed. Unless declared as `extern "C"`, C++ functions use a different name-decorating scheme. For more information, see [Decorated Names](decorated-names.md).
+For C, the **`__cdecl`** naming convention uses the function name preceded by an underscore (`_`); no case translation is performed. Unless declared as `extern "C"`, C++ functions use a different name-decorating scheme. For more information, see [Decorated Names](decorated-names.md).
 
 ## __fastcall Specifics
 
diff --git a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md
index e77bc2bfd9..37657efee2 100644
--- a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md
+++ b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: /GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)"
 title: "/GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)"
-ms.date: 04/14/2021
+description: "Learn more about: /GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)"
+ms.date: 03/27/2025
 f1_keywords: ["GENPROFILE", "FASTGENPROFILE", "/GENPROFILE", "/FASTGENPROFILE"]
 helpviewer_keywords: ["GENPROFILE", "FASTGENPROFILE"]
 ---
@@ -12,7 +12,7 @@ Specifies generation of a *`.pgd`* file by the linker to support profile-guided
 ## Syntax
 
 > **`/GENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]]\
-> **`/FASTGENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]]\
+> **`/FASTGENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]]
 
 > *`profile-argument`*\
 > &emsp;{ **`COUNTER32`** &vert; **`COUNTER64`** }\
@@ -43,7 +43,7 @@ Use **`PATH`**  to specify a separate set of PGO counters for each unique path t
 Specifies whether to use extra counters to keep an accurate count when exceptions are thrown during training. Use **`TRACKEH`**  to specify extra counters for an exact count. Use **`NOTRACKEH`**  to specify single counters for code that doesn't use exception handling or that doesn't run into exceptions in your training scenarios.  When you specify **`/GENPROFILE`**, the default is **`TRACKEH`** . When you specify **`/FASTGENPROFILE`**, the default is **`NOTRACKEH`** .
 
 **`PGD`**=*filename*\
-Specifies a base file name for the *`.pgd`* file. By default, the linker uses the base executable image file name with a *`.pgd`* extension.
+Specifies a base filename for the *`.pgd`* file. By default, the linker uses the base executable image filename with a *`.pgd`* extension. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
diff --git a/docs/build/reference/gs-buffer-security-check.md b/docs/build/reference/gs-buffer-security-check.md
index 227124b814..41fe1b082c 100644
--- a/docs/build/reference/gs-buffer-security-check.md
+++ b/docs/build/reference/gs-buffer-security-check.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: /GS (Buffer Security Check)"
 title: "/GS (Buffer Security Check)"
-ms.date: "11/04/2016"
+description: "Learn more about: /GS (Buffer Security Check)"
+ms.date: 11/04/2016
 f1_keywords: ["VC.Project.VCCLWCECompilerTool.BufferSecurityCheck", "VC.Project.VCCLCompilerTool.BufferSecurityCheck"]
 helpviewer_keywords: ["buffers [C++], buffer overruns", "buffer overruns, compiler /GS switch", "GS compiler option [C++]", "/GS compiler option [C++]", "security check compiler option [C++]", "-GS compiler option [C++]", "buffers [C++], avoiding overruns"]
-ms.assetid: 8d8a5ea1-cd5e-42e1-bc36-66e1cd7e731e
 ---
 # /GS (Buffer Security Check)
 
@@ -29,11 +28,8 @@ On functions that the compiler recognizes as subject to buffer overrun problems,
 A buffer overrun security check is performed on a *GS buffer*. A GS buffer can be one of these:
 
 - An array that is larger than 4 bytes, has more than two elements, and has an element type that is not a pointer type.
-
 - A data structure whose size is more than 8 bytes and contains no pointers.
-
-- A buffer allocated by using the [_alloca](../../c-runtime-library/reference/alloca.md) function.
-
+- A buffer allocated by using the [`_alloca`](../../c-runtime-library/reference/alloca.md) function.
 - Any class or structure that contains a GS buffer.
 
 For example, the following statements declare GS buffers.
@@ -57,16 +53,14 @@ struct { int a; int b; };
 
 ## Initialize the Security Cookie
 
-The **/GS** compiler option requires that the security cookie be initialized before any function that uses the cookie is run. The security cookie must be initialized immediately on entry to an EXE or DLL. This is done automatically if you use the default VCRuntime entry points: mainCRTStartup, wmainCRTStartup, WinMainCRTStartup, wWinMainCRTStartup, or _DllMainCRTStartup. If you use an alternate entry point, you must manually initialize the security cookie by calling [__security_init_cookie](../../c-runtime-library/reference/security-init-cookie.md).
+The **/GS** compiler option requires that the security cookie be initialized before any function that uses the cookie is run. The security cookie must be initialized immediately on entry to an EXE or DLL. This is done automatically if you use the default VCRuntime entry points: `mainCRTStartup`, `wmainCRTStartup`, `WinMainCRTStartup`, `wWinMainCRTStartup`, or `_DllMainCRTStartup`. If you use an alternate entry point, you must manually initialize the security cookie by calling [`__security_init_cookie`](../../c-runtime-library/reference/security-init-cookie.md).
 
 ## What Is Protected
 
 The **/GS** compiler option protects the following items:
 
 - The return address of a function call.
-
 - The address of an exception handler for a function.
-
 - Vulnerable function parameters.
 
 On all platforms, **/GS** attempts to detect buffer overruns into the return address. Buffer overruns are more easily exploited on platforms such as x86 and x64, which use calling conventions that store the return address of a function call on the stack.
@@ -80,15 +74,10 @@ A vulnerable parameter is allocated before the cookie and local variables. A buf
 The compiler does not make copies of vulnerable parameters in the following situations:
 
 - Functions that do not contain a GS buffer.
-
-- Optimizations ([/O options](o-options-optimize-code.md)) are not enabled.
-
+- Optimizations ([`/O` options](o-options-optimize-code.md)) are not enabled.
 - Functions that have a variable argument list (...).
-
 - Functions that are marked with [naked](../../cpp/naked-cpp.md).
-
 - Functions that contain inline assembly code in the first statement.
-
 - A parameter is used only in ways that are less likely to be exploitable in the event of a buffer overrun.
 
 ## What Is Not Protected
@@ -100,9 +89,7 @@ Even if you use **/GS**, always try to write secure code that has no buffer over
 ### To set this compiler option in Visual Studio
 
 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++** > **Code Generation** property page.
-
 1. Modify the **Buffer Security Check** property.
 
 ### To set this compiler option programmatically
@@ -138,5 +125,5 @@ int main() {
 
 ## See also
 
-[MSVC Compiler Options](compiler-options.md)<br/>
+[MSVC Compiler Options](compiler-options.md)\
 [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/guard-enable-control-flow-guard.md b/docs/build/reference/guard-enable-control-flow-guard.md
index 9114479252..61a24b9f5a 100644
--- a/docs/build/reference/guard-enable-control-flow-guard.md
+++ b/docs/build/reference/guard-enable-control-flow-guard.md
@@ -1,9 +1,8 @@
 ---
 description: "Learn more about: /guard (Enable Control Flow Guard)"
 title: "/guard (Enable Control Flow Guard)"
-ms.date: 09/19/2022
+ms.date: 2/24/2025
 f1_keywords: ["/guard", "VC.Project.VCCLCompilerTool.ControlFlowGuard"]
-ms.assetid: be495323-f59f-4cf3-a6b6-8ee69e6a19dd
 ---
 # `/guard` (Enable Control Flow Guard)
 
@@ -16,7 +15,7 @@ Enable compiler generation of Control Flow Guard security checks.
 
 ## Remarks
 
-The **`/guard:cf`** option causes the compiler to analyze control flow for indirect call targets at compile time, and then to insert code to verify the targets at runtime. By default, **`/guard:cf`** is off and must be explicitly enabled. To explicitly disable this option, use **`/guard:cf-`**.
+The **`/guard:cf`** option causes the compiler to analyze control flow for indirect call targets at compile time, and inserts code at runtime to verify the targets. By default, **`/guard:cf`** is off and must be explicitly enabled. To explicitly disable this option, use **`/guard:cf-`**.
 
 **Visual Studio 2017 and later**: This option adds guards for **`switch`** statements that generate jump tables.
 
@@ -24,7 +23,13 @@ When the **`/guard:cf`** Control Flow Guard (CFG) option is specified, the compi
 
 A common attack on software takes advantage of bugs in handling extreme or unexpected inputs. Carefully crafted input to the application may overwrite a location that contains a pointer to executable code. This technique can be used to redirect control flow to code controlled by the attacker. The CFG runtime checks don't fix the data corruption bugs in your executable. They instead make it more difficult for an attacker to use them to execute arbitrary code. CFG is a mitigation tool that prevents calls to locations other than function entry points in your code. It's similar to how Data Execution Prevention (DEP),  [/GS](gs-buffer-security-check.md) stack checks, and [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) and [/HIGHENTROPYVA](highentropyva-support-64-bit-aslr.md) address space layout randomization (ASLR) lower the chances that your code becomes an exploit vector.
 
-The **`/guard:cf`** option must be passed to both the compiler and linker to build code that uses the CFG exploit mitigation technique. If your binary is built by using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, the option must be set on both the compiler and linker commands. The /DYNAMICBASE linker option is also required. To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`.
+To use the CFG exploit mitigation technique, pass **`/guard:cf`** to the compiler and **`/GUARD:CF`** to the linker.
+
+To disable the CFG exploit mitigation technique, pass **`/guard:cf-`** to the compiler **`/GUARD:NO`** to the linker.
+
+If you build using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, set the option for both the compiler and linker commands. The `/DYNAMICBASE` linker option is also required.
+
+To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`.
 
 The **`/guard:cf`** option is incompatible with [`/ZI`](z7-zi-zi-debug-information-format.md) (Edit and Continue debug information) or [`/clr`](clr-common-language-runtime-compilation.md) (Common Language Runtime Compilation).
 
@@ -33,11 +38,8 @@ Code compiled by using **`/guard:cf`** can be linked to libraries and object fil
 ### To set this compiler option in the Visual Studio development environment
 
 1. Open the **Property Pages** dialog box for the project. For more information, see [Set compiler and build properties](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page.
-
 1. Select the **Control Flow Guard** property.
-
 1. In the dropdown control, choose **Yes** to enable Control Flow Guard, or **No** to disable it.
 
 ## See also
diff --git a/docs/build/reference/hint-files.md b/docs/build/reference/hint-files.md
index 374b605e6f..b292dfffa3 100644
--- a/docs/build/reference/hint-files.md
+++ b/docs/build/reference/hint-files.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Hint Files"
 title: "Hint Files"
-ms.date: "02/26/2019"
+description: "Learn more about: Hint Files"
+ms.date: 02/26/2019
 f1_keywords: ["cpp.hint", "vc.hint.file"]
 helpviewer_keywords: ["stop file", "cpp.hint", "hint file", "cpp.stop", "Class View, hint file"]
-ms.assetid: 17194f66-cf62-4523-abec-77db0675ab65
 ---
 # Hint Files
 
@@ -133,7 +132,7 @@ For a depiction of how hints are gathered, see the [Example](#example) section.
 
 You create and delete hints by using the same syntax as the preprocessor directives to create and delete macros. In fact, the parsing system uses the C/C++ preprocessor to evaluate the hints. For more information about the preprocessor directives, see [#define Directive (C/C++)](../../preprocessor/hash-define-directive-c-cpp.md) and [#undef Directive (C/C++)](../../preprocessor/hash-undef-directive-c-cpp.md).
 
-The only unusual syntax elements are the `@<`, `@=`, and `@>` replacement strings. These hint-file specific replacement strings are only used in *map* macros. A map is a set of macros that relate data, functions, or events to other data, functions, or event handlers. For example, `MFC` uses maps to create [message maps](../../mfc/reference/message-maps-mfc.md), and `ATL` uses maps to create [object maps](../../atl/reference/object-map-macros.md). The hint-file specific replacement strings mark the starting, intermediate, and ending elements of a map. Only the name of a map macro is significant. Therefore, each replacement string intentionally hides the implementation of the macro.
+The only unusual syntax elements are the `@<`, `@=`, and `@>` replacement strings. These hint-file specific replacement strings are only used in *map* macros. A map is a set of macros that relate data, functions, or events to other data, functions, or event handlers. For example, MFC uses maps to create [message maps](../../mfc/reference/message-maps-mfc.md), and ATL uses maps to create [object maps](../../atl/reference/object-map-macros.md). The hint-file specific replacement strings mark the starting, intermediate, and ending elements of a map. Only the name of a map macro is significant. Therefore, each replacement string intentionally hides the implementation of the macro.
 
 Hints use this syntax:
 
diff --git a/docs/build/reference/idlout-name-midl-output-files.md b/docs/build/reference/idlout-name-midl-output-files.md
index 38b277f76d..3c18293306 100644
--- a/docs/build/reference/idlout-name-midl-output-files.md
+++ b/docs/build/reference/idlout-name-midl-output-files.md
@@ -1,51 +1,45 @@
 ---
-description: "Learn more about: /IDLOUT (Name MIDL Output Files)"
 title: "/IDLOUT (Name MIDL Output Files)"
-ms.date: "11/04/2016"
+description: "Learn more about: /IDLOUT (Name MIDL Output Files)"
+ms.date: 03/27/2025
 f1_keywords: ["/idlout", "VC.Project.VCLinkerTool.MergedIDLBaseFileName"]
 helpviewer_keywords: ["MIDL, output file names", ".idl files, path", "MIDL", "/IDLOUT linker option", "IDL files, path", "-IDLOUT linker option", "IDLOUT linker option"]
-ms.assetid: 10d00a6a-85b4-4de1-8732-e422c6931509
 ---
 # /IDLOUT (Name MIDL Output Files)
 
-```
-/IDLOUT:[path\]filename
-```
+## Syntax
 
-## Parameters
+> /IDLOUT:[path\]filename
 
-*path*<br/>
-An absolute or relative path specification. By specifying a path, you affect only the location of an .idl file; all other files are placed in the project directory.
+## Argument
 
-*filename*<br/>
-Specifies the name of the .idl file created by the MIDL compiler. No file extension is assumed; specify *filename*.idl if you want an .idl extension.
+*`path`*\
+An absolute or relative path specification. By specifying a path, you affect only the location of an `.idl` file; all other files are placed in the project directory.
+
+*`filename`*\
+Specifies the name of the `.idl` file created by the MIDL compiler. No file extension is assumed; specify *`filename.idl` if you want an `.idl` extension. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The /IDLOUT option specifies the name and extension of the .idl file.
+The `/IDLOUT` option specifies the name and extension of the `.idl` file.
 
-The MIDL compiler is called by the MSVC linker when linking projects that have the [module](../../windows/attributes/module-cpp.md) attribute.
+The MIDL compiler is called by the MSVC linker when linking projects that have the [`module`](../../windows/attributes/module-cpp.md) attribute.
 
-/IDLOUT also specifies the file names of the other output files associated with the MIDL compiler:
+`/IDLOUT` also specifies the file names of the other output files associated with the MIDL compiler:
 
 - *filename*.tlb
-
 - *filename*_p.c
-
 - *filename*_i.c
-
 - *filename*.h
 
-*filename* is the parameter that you pass to /IDLOUT. If [/TLBOUT](tlbout-name-dot-tlb-file.md) is specified, the .tlb file will get its name from /TLBOUT *filename*.
+*`filename`* is the parameter that you pass to `/IDLOUT`. If [`/TLBOUT`](tlbout-name-dot-tlb-file.md) is specified, the .tlb file will get its name from `/TLBOUT` *`filename`*.
 
-If you specify neither /IDLOUT nor /TLBOUT, the linker will create vc70.tlb, vc70.idl, vc70_p.c, vc70_i.c, and vc70.h.
+If you specify neither `/IDLOUT` nor `/TLBOUT`, the linker will create vc70.tlb, vc70.idl, vc70_p.c, vc70_i.c, and vc70.h.
 
 ### To set this linker 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** > **Linker** > **Embedded IDL** property page.
-
 1. Modify the **Merge IDL Base File Name** property.
 
 ### To set this linker option programmatically
@@ -54,8 +48,8 @@ If you specify neither /IDLOUT nor /TLBOUT, the linker will create vc70.tlb, vc7
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
-[MSVC Linker Options](linker-options.md)<br/>
-[/IGNOREIDL (Don't Process Attributes into MIDL)](ignoreidl-don-t-process-attributes-into-midl.md)<br/>
-[/MIDL (Specify MIDL Command Line Options)](midl-specify-midl-command-line-options.md)<br/>
+[MSVC linker reference](linking.md)\
+[MSVC Linker Options](linker-options.md)\
+[/IGNOREIDL (Don't Process Attributes into MIDL)](ignoreidl-don-t-process-attributes-into-midl.md)\
+[/MIDL (Specify MIDL Command Line Options)](midl-specify-midl-command-line-options.md)\
 [Building an Attributed Program](../../windows/attributes/cpp-attributes-com-net.md)
diff --git a/docs/build/reference/ifc-map.md b/docs/build/reference/ifc-map.md
index e196dd9c33..7466fd2b00 100644
--- a/docs/build/reference/ifc-map.md
+++ b/docs/build/reference/ifc-map.md
@@ -17,7 +17,7 @@ This switch tells the compiler where to find the IFC reference map file, which m
 
 ## Remarks
 
-The `*filename*` argument specifies the IFC reference map file. It can be relative to the compiler's working directory, or an absolute path.
+The *`filename`* argument specifies the IFC reference map file. It can be relative to the compiler's working directory, or an absolute path.
 
 You can provide multiple `/ifcMap` arguments to the compiler.
 
@@ -41,7 +41,7 @@ name = "N"
 ifc = "C:\\modules\\N.ifc"
 ```
 
-This IFC reference map file maps the named modules `'M'` and `'N'` to their respective IFC files. The equivalent [`/reference'](module-reference.md) is:
+This IFC reference map file maps the named modules `'M'` and `'N'` to their respective IFC files. The equivalent [`/reference`](module-reference.md) is:
 
 ```cmd
 /reference M=C:\modules\M.ifc /reference N=C:\modules\N.ifc
diff --git a/docs/build/reference/ilk-name-incremental-database-file.md b/docs/build/reference/ilk-name-incremental-database-file.md
index 752535f808..ab1d1d456e 100644
--- a/docs/build/reference/ilk-name-incremental-database-file.md
+++ b/docs/build/reference/ilk-name-incremental-database-file.md
@@ -1,7 +1,7 @@
 ---
 title: "/ILK (Name incremental database file)"
 description: "The MSVC linker option /ILK specifies the incremental link database file pathname."
-ms.date: 09/07/2022
+ms.date: 03/27/2025
 f1_keywords: ["VC.Project.VCLinkerTool.IncrementalLinkDatabaseFile", "/ilk", "ilk"]
 helpviewer_keywords: ["Name incremental database file in C++ linker", "/ILK linker option", "-ILK linker option", "ILK linker option"]
 ---
@@ -16,7 +16,7 @@ The **`/ILK`** linker option tells the linker where to put the *`.ilk`* database
 ### Arguments
 
 *`pathname`*\
-The destination directory and filename for the generated *`.ilk`* file. If the **`/ILK`** option isn't specified when **`/INCREMENTAL`** is used, the filename is created by appending *`.ilk`* to the target base filename.
+The destination directory and filename for the generated *`.ilk`* file. If the **`/ILK`** option isn't specified when **`/INCREMENTAL`** is used, the filename is created by appending *`.ilk`* to the target base filename. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
@@ -25,9 +25,7 @@ The **`/ILK`** linker option tells the linker the path and filename to use for t
 ### To set this compiler option in the Visual Studio development environment
 
 1. Open the project **Property Pages** dialog box. For more information, see [Set compiler and build properties](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **Linker** > **General** property page.
-
 1. Modify the **Incremental Link Database File** property. The default value is `$(IntDir)$(TargetName).ilk`.
 
 ### To set this compiler option programmatically
diff --git a/docs/build/reference/implib-name-import-library.md b/docs/build/reference/implib-name-import-library.md
index 9bf0f23ef3..93ad9b6efb 100644
--- a/docs/build/reference/implib-name-import-library.md
+++ b/docs/build/reference/implib-name-import-library.md
@@ -1,38 +1,35 @@
 ---
 description: "Learn more about: /IMPLIB (Name Import Library)"
 title: "/IMPLIB (Name Import Library)"
-ms.date: "11/04/2016"
+ms.date: 03/24/2025
 f1_keywords: ["/implib", "VC.Project.VCLinkerTool.ImportLIbrary"]
 helpviewer_keywords: ["IMPLIB linker option", "/IMPLIB linker option", "-IMPLIB linker option", "import libraries, overriding default name"]
-ms.assetid: fe8f71ab-7055-41b5-8ef8-2b97cfa4a432
 ---
-# /IMPLIB (Name Import Library)
+# `/IMPLIB` (Name Import Library)
+
+## Syntax
 
 > /IMPLIB:*filename*
 
-## Parameters
+## Argument
 
-*filename*<br/>
-A user-specified name for the import library. It replaces the default name.
+*`filename`*\
+A user-specified name for the import library. It replaces the default name. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The /IMPLIB option overrides the default name for the import library that LINK creates when it builds a program that contains exports. The default name is formed from the base name of the main output file and the extension .lib. A program contains exports if one or more of the following are specified:
+The `/IMPLIB` option overrides the default name for the import library that LINK creates when it builds a program that contains exports. The default name is formed from the base name of the main output file and the extension `.lib`. A program contains exports if one or more of the following are specified:
 
 - The [__declspec(dllexport)](../../cpp/dllexport-dllimport.md) keyword in the source code
-
 - [EXPORTS](exports.md) statement in a .def file
-
 - An [/EXPORT](export-exports-a-function.md) specification in a LINK command
 
-LINK ignores /IMPLIB when an import library is not being created. If no exports are specified, LINK does not create an import library. If an export file is used in the build, LINK assumes that an import library already exists and does not create one. For information on import libraries and export files, see [LIB Reference](lib-reference.md).
+LINK ignores `/IMPLIB` when an import library isn't being created. If no exports are specified, LINK doesn't create an import library. If an export file is used in the build, LINK assumes that an import library already exists and doesn't create one. For information on import libraries and export files, see [LIB Reference](lib-reference.md).
 
 ### To set this linker 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** > **Linker** > **Advanced** property page.
-
 1. Modify the **Import Library** property.
 
 ### To set this linker option programmatically
@@ -41,5 +38,5 @@ LINK ignores /IMPLIB when an import library is not being created. If no exports
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/keyfile-specify-key-or-key-pair-to-sign-an-assembly.md b/docs/build/reference/keyfile-specify-key-or-key-pair-to-sign-an-assembly.md
index 2ef01ea543..3d1a74d531 100644
--- a/docs/build/reference/keyfile-specify-key-or-key-pair-to-sign-an-assembly.md
+++ b/docs/build/reference/keyfile-specify-key-or-key-pair-to-sign-an-assembly.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: /KEYFILE (Specify Key or Key Pair to Sign an Assembly)"
 title: "/KEYFILE (Specify Key or Key Pair to Sign an Assembly)"
-ms.date: "11/04/2016"
+description: "Learn more about: /KEYFILE (Specify Key or Key Pair to Sign an Assembly)"
+ms.date: 03/24/2025
 f1_keywords: ["/keyfile", "VC.Project.VCLinkerTool.KeyFile"]
 helpviewer_keywords: ["/KEYFILE linker option", "-KEYFILE linker option", "KEYFILE linker option"]
-ms.assetid: 9b71f8c0-541c-4fe5-a0c7-9364f42ecb06
 ---
-# /KEYFILE (Specify Key or Key Pair to Sign an Assembly)
+# `/KEYFILE` (Specify Key or Key Pair to Sign an Assembly)
 
 ```
 /KEYFILE:filename
@@ -14,39 +13,33 @@ ms.assetid: 9b71f8c0-541c-4fe5-a0c7-9364f42ecb06
 
 ## Arguments
 
-*filename*<br/>
+*`filename`*\
 File that contains the key. Place the string in double quotation marks (" ") if it contains a space.
 
 ## Remarks
 
-The linker inserts the public key into the assembly manifest and then signs the final assembly with the private key. To generate a key file, type [sn -k](/dotnet/framework/tools/sn-exe-strong-name-tool) *filename* at the command line. A signed assembly is said to have a strong name.
+The linker inserts the public key into the assembly manifest and then signs the final assembly with the private key. To generate a key file, type [`sn -k`](/dotnet/framework/tools/sn-exe-strong-name-tool) *filename* at the command line. A signed assembly is said to have a strong name.
 
-If you compile with [/LN](ln-create-msil-module.md), the name of the key file is held in the module and incorporated into the assembly that is created when you compile an assembly that includes an explicit reference to the module, via [#using](../../preprocessor/hash-using-directive-cpp.md), or when linking with [/ASSEMBLYMODULE](assemblymodule-add-a-msil-module-to-the-assembly.md).
+If you compile with [`/LN`](ln-create-msil-module.md), the name of the key file is held in the module and incorporated into the assembly that is created when you compile an assembly that includes an explicit reference to the module, via [`#using`](../../preprocessor/hash-using-directive-cpp.md), or when linking with [`/ASSEMBLYMODULE`](assemblymodule-add-a-msil-module-to-the-assembly.md).
 
-You can also pass your encryption information to the linker with [/KEYCONTAINER](keycontainer-specify-a-key-container-to-sign-an-assembly.md). Use [/DELAYSIGN](delaysign-partially-sign-an-assembly.md) if you want a partially signed assembly. For more information on signing an assembly, see [Strong Name Assemblies (Assembly Signing) (C++/CLI)](../../dotnet/strong-name-assemblies-assembly-signing-cpp-cli.md) and [Creating and Using Strong-Named Assemblies](/dotnet/framework/app-domains/create-and-use-strong-named-assemblies).
+You can also pass your encryption information to the linker with [`/KEYCONTAINER`](keycontainer-specify-a-key-container-to-sign-an-assembly.md). Use [`/DELAYSIGN`](delaysign-partially-sign-an-assembly.md) if you want a partially signed assembly. For more information on signing an assembly, see [Strong Name Assemblies (Assembly Signing) (C++/CLI)](../../dotnet/strong-name-assemblies-assembly-signing-cpp-cli.md) and [Creating and Using Strong-Named Assemblies](/dotnet/framework/app-domains/create-and-use-strong-named-assemblies).
 
-In case both **/KEYFILE** and **/KEYCONTAINER** are specified (either by command-line option or by custom attribute), the linker will first try the key container. If that succeeds, then the assembly is signed with the information in the key container. If the linker doesn't find the key container, it will try the file specified with /KEYFILE. If that succeeds, the assembly is signed with the information in the key file and the key information will be installed in the key container (similar to sn -i) so that on the next compilation, the key container will be valid.
+In case both **`/KEYFILE`** and **`/KEYCONTAINER`** are specified (either by command-line option or by custom attribute), the linker will first try the key container. If that succeeds, then the assembly is signed with the information in the key container. If the linker doesn't find the key container, it will try the file specified with /KEYFILE. If that succeeds, the assembly is signed with the information in the key file and the key information will be installed in the key container (similar to sn -i) so that on the next compilation, the key container will be valid.
 
 A key file might contain only the public key.
 
 Other linker options that affect assembly generation are:
 
-- [/ASSEMBLYDEBUG](assemblydebug-add-debuggableattribute.md)
-
-- [/ASSEMBLYLINKRESOURCE](assemblylinkresource-link-to-dotnet-framework-resource.md)
-
-- [/ASSEMBLYMODULE](assemblymodule-add-a-msil-module-to-the-assembly.md)
-
-- [/ASSEMBLYRESOURCE](assemblyresource-embed-a-managed-resource.md)
-
-- [/NOASSEMBLY](noassembly-create-a-msil-module.md)
+- [`/ASSEMBLYDEBUG`](assemblydebug-add-debuggableattribute.md)
+- [`/ASSEMBLYLINKRESOURCE`](assemblylinkresource-link-to-dotnet-framework-resource.md)
+- [`/ASSEMBLYMODULE`](assemblymodule-add-a-msil-module-to-the-assembly.md)
+- [`/ASSEMBLYRESOURCE`](assemblyresource-embed-a-managed-resource.md)
+- [`/NOASSEMBLY`](noassembly-create-a-msil-module.md)
 
 ### To set this linker 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** > **Linker** > **Command Line** property page.
-
 1. Enter the option into the **Additional Options** box.
 
 ### To set this linker option programmatically
@@ -55,5 +48,5 @@ Other linker options that affect assembly generation are:
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/libpath-additional-libpath.md b/docs/build/reference/libpath-additional-libpath.md
index 1ac84a5485..64cfdd3f94 100644
--- a/docs/build/reference/libpath-additional-libpath.md
+++ b/docs/build/reference/libpath-additional-libpath.md
@@ -1,32 +1,29 @@
 ---
 description: "Learn more about: /LIBPATH (Additional Libpath)"
 title: "/LIBPATH (Additional Libpath)"
-ms.date: "11/04/2016"
+ms.date: 03/27/2025
 f1_keywords: ["/libpath", "VC.Project.VCLinkerTool.AdditionalLibraryDirectories"]
 helpviewer_keywords: ["LIBPATH linker option", "/LIBPATH linker option", "Additional Libpath linker option", "environment library path override", "-LIBPATH linker option", "library path linker option"]
-ms.assetid: 7240af0b-9a3d-4d53-8169-2a92cd6958ba
 ---
-# /LIBPATH (Additional Libpath)
+# `/LIBPATH` (Additional Libpath)
 
-```
-/LIBPATH:dir
-```
+## Syntax
 
-## Parameters
+> /LIBPATH:dir
 
-*dir*<br/>
-Specifies a path that the linker will search before it searches the path specified in the LIB environment option.
+## Argument
+
+*`dir`*\
+Specifies a path that the linker searches before it searches the path specified in the `LIB` environment option. When expanded, the fully qualified directory must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-Use the /LIBPATH option to override the environment library path. The linker will first search in the path specified by this option, and then search in the path specified in the LIB environment variable. You can specify only one directory for each /LIBPATH option you enter. If you want to specify more than one directory, you must specify multiple /LIBPATH options. The linker will then search the specified directories in order.
+Use the `/LIBPATH` option to override the environment library path. The linker first searches in the path specified by this option, and then searches in the path specified in the `LIB` environment variable. You can specify only one directory for each `/LIBPATH` option you enter. To specify more than one directory, specify multiple `/LIBPATH` options. The linker searches the specified directories in order.
 
 ### To set this linker 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** > **Linker** > **General** property page.
-
 1. Modify the **Additional Library Directories** property.
 
 ### To set this linker option programmatically
@@ -35,5 +32,5 @@ Use the /LIBPATH option to override the environment library path. The linker wil
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/link-repro-full-path-rsp.md b/docs/build/reference/link-repro-full-path-rsp.md
index 1174adb871..c08892e4c7 100644
--- a/docs/build/reference/link-repro-full-path-rsp.md
+++ b/docs/build/reference/link-repro-full-path-rsp.md
@@ -1,23 +1,28 @@
 ---
 description: "Learn more about: /LINKREPROFULLPATHRSP (Generate file containing absolute paths of linked files)"
 title: "/LINKREPROFULLPATHRSP (Generate file containing absolute paths of linked files)"
-ms.date: 06/10/2024
+ms.date: 03/27/2025
 f1_keywords: ["VC.Project.VCLinkerTool.LinkReproFullPathRSP", "/LINKREPROFULLPATHRSP"]
 helpviewer_keywords: ["/LINKREPROFULLPATHRSP linker option", "-LINKREPROFULLPATHRSP linker option", "LINKREPROFULLPATHRSP linker option"]
 ---
 # `/LINKREPROFULLPATHRSP` (Generate file containing absolute paths of linked files)
 
-Generates a response file (.RSP) containing the absolute paths of all the files the linker took as input.
+Generates a response file (`.RSP`) containing the absolute paths of all the files the linker took as input.
 
 This flag was introduced in Visual Studio 2022 version 17.11.
 
 ## Syntax
 
-> **`/LINKREPROFULLPATHRSP:filename`**
+> **/LINKREPROFULLPATHRSP:filename**
+
+## Argument
+
+*`filename`*\
+Specifies the name of the response file to create. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-Rather than generating a full link repro like `/LINKREPRO` which copies all the files to a directory and creating a response file with relative paths to that directory, this option writes the names of the files used during linking to the specified file.
+Rather than generate a full link repro like `/LINKREPRO`, which copies all the files to a directory and creates a response file with relative paths to that directory, this option writes the names of the files used during linking to the specified file.
 
 For example, given:
 - a directory `c:\temp\test` that contains the files `test.cpp`, `f1.cpp`, `f2.cpp`
diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md
index 968094a0b5..5749d0c236 100644
--- a/docs/build/reference/linker-options.md
+++ b/docs/build/reference/linker-options.md
@@ -1,7 +1,7 @@
 ---
 title: "MSVC Linker options"
 description: "A list of the options supported by the Microsoft LINK linker."
-ms.date: 06/10/2024
+ms.date: 03/14/2025
 f1_keywords: ["link"]
 helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries [C++], linking to COFF", "LINK tool [C++], linker options"]
 ---
@@ -9,14 +9,14 @@ helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries
 
 LINK.exe links Common Object File Format (COFF) object files and libraries to create an executable (EXE) file or a dynamic-link library (DLL).
 
-The following table lists options for LINK.exe. For more information about LINK, see:
+The following table lists options for `LINK.exe`. For more information about LINK, see:
 
 - [Compiler-controlled LINK options](compiler-controlled-link-options.md)
 - [LINK input files](link-input-files.md)
 - [LINK output](link-output.md)
 - [Reserved words](reserved-words.md)
 
-On the command line, linker options aren't case-sensitive; for example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option.
+Linker options aren't case-sensitive; for example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option.
 
 You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to specify some linker options.
 
@@ -52,6 +52,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci
 | [`/DLL`](dll-build-a-dll.md) | Builds a DLL. |
 | [`/DRIVER`](driver-windows-nt-kernel-mode-driver.md) | Creates a kernel mode driver. |
 | [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) | Specifies whether to generate an executable image that's rebased at load time by using the address space layout randomization (ASLR) feature. |
+| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. |
 | [`/ENTRY`](entry-entry-point-symbol.md) | Sets the starting address. |
 | [`/ERRORREPORT`](errorreport-report-internal-linker-errors.md) | Deprecated. Error reporting is controlled by [Windows Error Reporting (WER)](/windows/win32/wer/windows-error-reporting) settings. |
 | [`/EXPORT`](export-exports-a-function.md) | Exports a function. |
diff --git a/docs/build/reference/linker-property-pages.md b/docs/build/reference/linker-property-pages.md
index 84c379aa0b..27a8a52d11 100644
--- a/docs/build/reference/linker-property-pages.md
+++ b/docs/build/reference/linker-property-pages.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Linker Property Pages"
 title: "Linker Property Pages"
+description: "Learn more about: Linker Property Pages"
 ms.date: 09/07/2022
 ms.topic: "article"
 f1_keywords: ["VC.Project.VCLinkerTool.IgnoreImportLibrary", "VC.Project.VCLinkerTool.RegisterOutput", "VC.Project.VCLinkerTool.PerUserRedirection", "VC.Project.VCLinkerTool.LinkLibraryDependencies", "VC.Project.VCLinkerTool.UseLibraryDependencyInputs"]
-ms.assetid: 7e7671e5-a35a-4e67-9bdb-661d75c4d11e
 ---
 # Linker Property Pages
 
@@ -252,7 +251,7 @@ Specifies total heap allocation size in virtual memory. Default is 1 MB.    ([`/
 
 ### Heap Commit Size
 
-Specifies total heap allocation size in physical memory. Default is 4 KB.    (`[/HEAP:reserve,commit`](heap-set-heap-size.md))
+Specifies total heap allocation size in physical memory. Default is 4 KB.    ([`/HEAP:reserve,commit`](heap-set-heap-size.md))
 
 ### Stack Reserve Size
 
@@ -373,7 +372,7 @@ Partially sign the Windows Metadata. Use [`/WINMDDELAYSIGN`](winmddelaysign-part
 
 ### Entry Point
 
-The `[/ENTRY`](entry-entry-point-symbol.md) option specifies an entry point function as the starting address for an *`.exe`* file or DLL.
+The [`/ENTRY`](entry-entry-point-symbol.md) option specifies an entry point function as the starting address for an *`.exe`* file or DLL.
 
 ### No Entry Point
 
diff --git a/docs/build/reference/linking.md b/docs/build/reference/linking.md
index ecfebb2496..8891ebf554 100644
--- a/docs/build/reference/linking.md
+++ b/docs/build/reference/linking.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about: Linking"
 title: "MSVC linker reference"
-ms.date: "12/10/2018"
+ms.date: 03/27/2025
 ---
 # Linking
 
@@ -38,6 +38,9 @@ On the command line, an option consists of an option specifier, either a dash (`
 
 To pass a file to the linker, specify the filename on the command line after the `link.exe` command. You can specify an absolute or relative path with the filename, and you can use wildcards in the filename. If you omit the dot (`.`) and filename extension, the linker assumes an extension of `.obj` to find the file. The linker doesn't use filename extensions or the lack of them to make assumptions about the contents of files. It determines the type of file by examining it, and processes it accordingly.
 
+> [!NOTE]
+> Various linker flags take a filename. Whether you specify a relative path or an absolute path, if the fully-qualified filename exceeds `MAX_PATH` (260 characters), the linker may fail--particularly while searching for libraries. If you encounter this problem, try using a shorter path.
+
 The linker returns zero for success (no errors). Otherwise, it returns the error number that stopped the link. For example, if the linker generates `LNK1104`, the linker returns 1104. Accordingly, the lowest error number returned on an error by the linker is 1000. A return value of 128 represents a configuration problem with either the operating system or a .config file; the loader didn't load either `link.exe` or `c2.dll`.
 
 ## Linker command files
@@ -46,7 +49,7 @@ You can pass command-line arguments to `link.exe` in the form of a command file.
 
 > `link @commandfile`
 
-The *`commandfile`* is the name of a text file. No space or tab is allowed between the at sign (**\@**) and the filename. There's no default extension; you must specify the full filename, including any extension. Wildcards can't be used. You can specify an absolute or relative path with the filename. The linker doesn't use an environment variable to search for the file.
+The *`commandfile`* is the name of a text file. No space or tab is allowed between the at sign (**\@**) and the filename. There's no default extension; you must specify the full filename, including any extension. Wildcards can't be used. You can specify an absolute or relative path with the filename. Must not exceed `MAX_PATH` (260 characters). The linker doesn't use an environment variable to search for the file.
 
 In the command file, arguments are separated by spaces or tabs (as on the command line) and by newline characters.
 
diff --git a/docs/build/reference/linkrepro.md b/docs/build/reference/linkrepro.md
index 9d00525a14..a106200fdc 100644
--- a/docs/build/reference/linkrepro.md
+++ b/docs/build/reference/linkrepro.md
@@ -1,7 +1,7 @@
 ---
 title: "/LINKREPRO (Link repro directory name)"
 description: Linker or library tool option to set the directory for a link repro.
-ms.date: "09/24/2019"
+ms.date: 03/28/2025
 f1_keywords: ["/LINKREPRO"]
 helpviewer_keywords: ["LINKREPRO linker option", "/LINKREPRO linker option", "-LINKREPRO linker option", "linker repro reporting"]
 ---
@@ -11,12 +11,12 @@ Tells the linker or library tool to generate a link repro in a specified directo
 
 ## Syntax
 
-> **/LINKREPRO:**_directory-name_
+> `/LINKREPRO:` **_directory-name_**
 
 ### Arguments
 
-**/LINKREPRO:**_directory-name_\
-The user-specified directory to store the link repro in. Directory names that include spaces must be enclosed in double quotes.
+**_directory-name_**\
+The user-specified directory to store the link repro in. Directory names that include spaces must be enclosed in double quotes. When expanded, the fully qualified link repro filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
diff --git a/docs/build/reference/ln-create-msil-module.md b/docs/build/reference/ln-create-msil-module.md
index c1a892c54b..b5cd351176 100644
--- a/docs/build/reference/ln-create-msil-module.md
+++ b/docs/build/reference/ln-create-msil-module.md
@@ -4,11 +4,10 @@ title: "/LN (Create MSIL Module)"
 ms.date: "11/04/2016"
 f1_keywords: ["/LN"]
 helpviewer_keywords: ["-LN compiler option [C++]", "/LN compiler option [C++]"]
-ms.assetid: 4f38f4f4-3176-4caf-8200-5c7585dc1ed3
 ---
 # /LN (Create MSIL Module)
 
-Specifies that an assembly manifest should not be inserted into the output file.
+Specifies that the compiler shouldn't insert an assembly manifest into the output file.
 
 ## Syntax
 
@@ -18,27 +17,27 @@ Specifies that an assembly manifest should not be inserted into the output file.
 
 ## Remarks
 
-By default, **/LN** is not in effect (an assembly manifest is inserted into the output file).
+By default, `/LN` isn't in effect, and the compiler inserts an assembly manifest into the output file.
 
-When **/LN** is used, one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options must also be used.
+When you use `/LN`, you must also use one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options.
 
-A managed program that does not have an assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and **/LN**, specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file.
+A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [`/NOASSEMBLY `(Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file.
 
-You may want to create modules if you want to take a component-based approach to building assemblies.  That is, you can author types and compile them into modules.  Then, you can generate an assembly from one or more modules.  For more information on creating assemblies from modules, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md) or [Al.exe (Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker).
+Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [`.netmodule` Files as Linker Input](netmodule-files-as-linker-input.md) or [`Al.exe `(Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker).
 
-The default file extension for a module is .netmodule.
+The default file extension for a module is `.netmodule`.
 
-In releases before Visual Studio 2005, a module was created with **/clr:noAssembly**.
+In releases before Visual Studio 2005, you created a module with `/clr:noAssembly`.
 
-The MSVC linker accepts .netmodule files as input and the output file produced by the linker will be an assembly or .netmodule with no run-time dependence on any of the .netmodules that were input to the linker.  For more information, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md).
+The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [`.netmodule `Files as Linker Input](netmodule-files-as-linker-input.md).
 
 ### To set this compiler option in the Visual Studio development environment
 
-- Specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file.
+- Specify [`/NOASSEMBLY` (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file.
 
 ### To set this compiler option programmatically
 
-- This compiler option cannot be changed programmatically.
+- You can't change this compiler option programmatically.
 
 ## See also
 
diff --git a/docs/build/reference/manifestfile-name-manifest-file.md b/docs/build/reference/manifestfile-name-manifest-file.md
index acd17845b9..32a06f368e 100644
--- a/docs/build/reference/manifestfile-name-manifest-file.md
+++ b/docs/build/reference/manifestfile-name-manifest-file.md
@@ -4,26 +4,28 @@ title: "/MANIFESTFILE (Name Manifest File)"
 ms.date: "11/04/2016"
 f1_keywords: ["VC.Project.VCLinkerTool.ManifestFile"]
 helpviewer_keywords: ["MANIFESTFILE linker option", "-MANIFESTFILE linker option", "/MANIFESTFILE linker option"]
-ms.assetid: befa5ab2-a9cf-4c9b-969a-e7b4a930f08d
 ---
 # /MANIFESTFILE (Name Manifest File)
 
-```
-/MANIFESTFILE:filename
-```
+Change the default name of the manifest file.
 
-## Remarks
+## Syntax
+
+> `/MANIFESTFILE:`**filename**
 
-/MANIFESTFILE lets you change the default name of the manifest file.  The default name of the manifest file is the file name with .manifest appended.
+## Arguments
 
-/MANIFESTFILE will have no effect if you do not also link with [/MANIFEST](manifest-create-side-by-side-assembly-manifest.md).
+**filename**\
+The default name of the manifest file is *filename* with `.manifest` appended.
+
+## Remarks
+
+`/MANIFESTFILE` has no effect if you do not also link with [/MANIFEST](manifest-create-side-by-side-assembly-manifest.md).
 
 ### To set this linker 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** > **Linker** > **Manifest File** property page.
-
 1. Modify the **Manifest File** property.
 
 ### To set this linker option programmatically
@@ -32,5 +34,5 @@ ms.assetid: befa5ab2-a9cf-4c9b-969a-e7b4a930f08d
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/manifestinput-specify-manifest-input.md b/docs/build/reference/manifestinput-specify-manifest-input.md
index 9c48c9dc54..df8b326f7d 100644
--- a/docs/build/reference/manifestinput-specify-manifest-input.md
+++ b/docs/build/reference/manifestinput-specify-manifest-input.md
@@ -1,9 +1,8 @@
 ---
 description: "Learn more about: /MANIFESTINPUT (Specify Manifest Input)"
 title: "/MANIFESTINPUT (Specify Manifest Input)"
-ms.date: 09/09/2022
+ms.date: 03/27/2025
 f1_keywords: ["VC.Project.VCLinkerTool.ManifestInput"]
-ms.assetid: a0b0c21e-1f9b-4d8c-bb3f-178f57fa7f1b
 ---
 # /MANIFESTINPUT (Specify Manifest Input)
 
@@ -11,20 +10,20 @@ Specifies a manifest input file to include in the manifest that's embedded in th
 
 ## Syntax
 
-> **`/MANIFESTINPUT:`***`filename`*
+> `/MANIFESTINPUT:`*filename*
 
 ### Parameters
 
-*`filename`*\
-The manifest file to include in the embedded manifest.
+*filename*\
+The manifest file to include in the embedded manifest. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
 The **`/MANIFESTINPUT`** option specifies the path of an input file to use to create the embedded manifest in an executable image. If you have multiple manifest input files, use the switch multiple times: once for each input file. The manifest input files are merged to create the embedded manifest. This option requires the **`/MANIFEST:EMBED`** option.
 
-This option can't be set directly in Visual Studio. Instead, use the **Additional Manifest Files** property of the project to specify additional manifest files to include. For more information, see [Manifest Tool Property Pages](manifest-tool-property-pages.md).
+This option can't be set directly in Visual Studio. Instead, use the **Additional Manifest Files** property of the project to specify other manifest files to include. For more information, see [Manifest Tool Property Pages](manifest-tool-property-pages.md).
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/md-mt-ld-use-run-time-library.md b/docs/build/reference/md-mt-ld-use-run-time-library.md
index ccbfe48d71..0867d33ed0 100644
--- a/docs/build/reference/md-mt-ld-use-run-time-library.md
+++ b/docs/build/reference/md-mt-ld-use-run-time-library.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: /MD, /MT, /LD (Use Run-Time Library)"
-title: "/MD, -MT, -LD (Use Run-Time Library)"
-ms.date: "07/17/2019"
+title: "/MD, /MT, /LD (Use runtime library)"
+description: "Learn more about: /MD, /MT, /LD (Use runtime library)"
+ms.date: "01/13/2025"
 f1_keywords: ["/ld", "/mt", "VC.Project.VCCLWCECompilerTool.RuntimeLibrary", "VC.Project.VCCLCompilerTool.RuntimeLibrary", "/md", "/ml"]
 helpviewer_keywords: ["/MT compiler option [C++]", "-MD compiler option [C++]", "threading [C++], multithread compiler option", "MSVCRTD.lib", "MSVCRT.lib", "LIBCMT.lib", "MD compiler option [C++]", "/MD compiler option [C++]", "MT compiler option [C++]", "LD compiler option [C++]", "MDd compiler option [C++]", "-MDd compiler option [C++]", "LIBCD.lib", "-MTd compiler option [C++]", "MTd compiler option [C++]", "/MTd compiler option [C++]", "-LD compiler option [C++]", "/MDd compiler option [C++]", "multithread compiler option", "_STATIC_CPPLIB symbol", "LIBC.lib", "/LD compiler option [C++]", "DLLs [C++], compiler options", "LIBCMTD.lib", "-MT compiler option [C++]"]
-ms.assetid: cf7ed652-dc3a-49b3-aab9-ad60e5395579
 ---
-# /MD, /MT, /LD (Use Run-Time Library)
+# /MD, /MT, /LD (Use runtime library)
 
-Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the run-time library.
+Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the runtime library.
 
 ## Syntax
 
@@ -22,27 +21,25 @@ Indicates whether a multithreaded module is a DLL and specifies retail or debug
 
 |Option|Description|
 |------------|-----------------|
-|**/MD**|Causes the application to use the multithread-specific and DLL-specific version of the run-time library. Defines `_MT` and `_DLL` and causes the compiler to place the library name MSVCRT.lib into the .obj file.|
-|**/MDd**|Defines `_DEBUG`, `_MT`, and `_DLL` and causes the application to use the debug multithread-specific and DLL-specific version of the run-time library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.|
-|**/MT**|Causes the application to use the multithread, static version of the run-time library. Defines `_MT` and causes the compiler to place the library name LIBCMT.lib into the .obj file so that the linker will use LIBCMT.lib to resolve external symbols.|
-|**/MTd**|Defines `_DEBUG` and `_MT`. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols.|
-|**/LD**|Creates a DLL.<br /><br /> Passes the **/DLL** option to the linker. The linker looks for, but does not require, a `DllMain` function. If you do not write a `DllMain` function, the linker inserts a `DllMain` function that returns TRUE.<br /><br /> Links the DLL startup code.<br /><br /> Creates an import library (.lib), if an export (.exp) file is not specified on the command line. You link the import library to applications that call your DLL.<br /><br /> Interprets [/Fe (Name EXE File)](fe-name-exe-file.md) as naming a DLL rather than an .exe file. By default, the program name becomes *basename*.dll instead of *basename*.exe.<br /><br /> Implies **/MT** unless you explicitly specify **/MD**.|
-|**/LDd**|Creates a debug DLL. Defines `_MT` and `_DEBUG`.|
+|**/MD**|Use the multithread-specific and DLL-specific version of the runtime library. Defines `_MT` and `_DLL`. The linker uses the `MSVCRT.lib` import library to resolve runtime symbols.|
+|**/MDd**|Use the debug multithread-specific and DLL-specific version of the runtime library. Defines `_DEBUG`, `_MT`, and `_DLL`. The linker uses the `MSVCRTD.lib` import library to resolve runtime symbols.|
+|**/MT**| Use the multithread, static version of the runtime library. Defines `_MT`. The linker uses `LIBCMT.lib` to resolve runtime symbols.|
+|**/MTd**| Use the debug multithread, static version of the runtime library. Defines `_DEBUG` and `_MT`. The linker uses `LIBCMTD.lib` to resolve runtime symbols.|
+|**/LD**|Create a DLL.<br /><br /> Passes the **/DLL** option to the linker. The linker looks for, but does not require, a `DllMain` function. If you don't write a `DllMain` function, the linker inserts a `DllMain` function that returns TRUE.<br /><br /> Links the DLL startup code.<br /><br /> Creates an import library (`.lib`), if an export (`.exp`) file is not specified on the command line. You link the import library to applications that call your DLL.<br /><br /> Interprets [/Fe (Name EXE File)](fe-name-exe-file.md) as naming a DLL rather than an `.exe` file. By default, the program name becomes *basename*.dll instead of *basename*.exe.<br /><br /> Implies **/MT** unless you explicitly specify **/MD**.|
+|**/LDd**|Create a debug DLL. Defines `_MT` and `_DEBUG`.|
 
-For more information about C run-time libraries and which libraries are used when you compile with [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md), see [CRT Library Features](../../c-runtime-library/crt-library-features.md).
+For more information about C runtime libraries and which libraries are used when you compile with [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md), see [CRT Library Features](../../c-runtime-library/crt-library-features.md).
 
-All modules passed to a given invocation of the linker must have been compiled with the same run-time library compiler option (**/MD**, **/MT**, **/LD**).
+All modules passed to a given invocation of the linker must have been compiled with the same runtime library compiler option (**/MD**, **/MT**, **/LD**).
 
-For more information about how to use the debug versions of the run-time libraries, see [C Run-Time Library Reference](../../c-runtime-library/c-run-time-library-reference.md).
+For more information about how to use the debug versions of the runtime libraries, see  [C runtime Library Reference](../../c-runtime-library/c-run-time-library-reference.md).
 
 For more about DLLs, see [Create C/C++ DLLs in Visual Studio](../dlls-in-visual-cpp.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++** > **Code Generation** property page.
-
 1. Modify the **Runtime Library** property.
 
 ### To set this compiler option programmatically
@@ -51,5 +48,6 @@ For more about DLLs, see [Create C/C++ DLLs in Visual Studio](../dlls-in-visual-
 
 ## See also
 
-[MSVC Compiler Options](compiler-options.md)<br/>
-[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
+[MSVC Compiler Options](compiler-options.md)\
+[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)\
+[The Great C Runtime (CRT) Refactoring](https://devblogs.microsoft.com/cppblog/the-great-c-runtime-crt-refactoring/)
\ No newline at end of file
diff --git a/docs/build/reference/msbuild-reference-cpp.md b/docs/build/reference/msbuild-reference-cpp.md
index e779a699b2..bbc889a922 100644
--- a/docs/build/reference/msbuild-reference-cpp.md
+++ b/docs/build/reference/msbuild-reference-cpp.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: MSBuild reference for C++ projects"
 title: "MSBuild reference for C++ projects in Visual Studio"
-ms.date: "12/08/2018"
+description: "Learn more about: MSBuild reference for C++ projects"
+ms.date: 12/08/2018
 helpviewer_keywords: ["MSBuild reference [C++]"]
 ---
 # MSBuild reference for C++ projects
@@ -12,25 +12,25 @@ If for some reason you wish to use MSBuild directly from the command line, see [
 
 ## In this section
 
-[MSBuild internals for C++ projects](msbuild-visual-cpp-overview.md)<br/>
+[MSBuild internals for C++ projects](msbuild-visual-cpp-overview.md)\
 Information about how properties and targets are stored and consumed.
 
-[Common macros for build commands and properties](common-macros-for-build-commands-and-properties.md)<br/>
+[Common macros for build commands and properties](common-macros-for-build-commands-and-properties.md)\
 Describes macros (compile-time constants) that can be used to define properties such as paths and product versions.
 
-[File types created for C++ projects](file-types-created-for-visual-cpp-projects.md)<br/>
+[File types created for C++ projects](file-types-created-for-visual-cpp-projects.md)\
 Describes the various kinds of files that Visual Studio creates for different project types.
 
-[Visual Studio C++ project templates](visual-cpp-project-types.md)<br>
+[Visual Studio C++ project templates](visual-cpp-project-types.md)\
 Describes the MSBuild-based project types that are available for C++.
 
-[C++ new item templates](using-visual-cpp-add-new-item-templates.md)<br>
+[C++ new item templates](using-visual-cpp-add-new-item-templates.md)\
 Describes source files and other items you can add to a Visual Studio project.
 
-[Precompiled header files](../creating-precompiled-header-files.md)
+[Precompiled header files](../creating-precompiled-header-files.md)\
 How to use precompiled header files and how to create your own custom precompiled code to speed up build times.
 
-[Visual Studio project property reference](property-pages-visual-cpp.md)<br/>
+[Visual Studio project property reference](property-pages-visual-cpp.md)\
 Reference documentation for project properties that are set in the Visual Studio IDE.
 
 ## See also
diff --git a/docs/build/reference/nodefaultlib-ignore-libraries.md b/docs/build/reference/nodefaultlib-ignore-libraries.md
index ba4c2438a9..646e515a1e 100644
--- a/docs/build/reference/nodefaultlib-ignore-libraries.md
+++ b/docs/build/reference/nodefaultlib-ignore-libraries.md
@@ -1,14 +1,13 @@
 ---
 description: "Learn more about: /NODEFAULTLIB (Ignore libraries)"
 title: "/NODEFAULTLIB (Ignore libraries)"
-ms.date: 09/09/2022
+ms.date: 04/16/2025
 f1_keywords: ["VC.Project.VCLinkerTool.IgnoreAllDefaultLibraries", "VC.Project.VCLinkerTool.IgnoreDefaultLibraryNames", "VC.Project.VCLinkerTool.OVERWRITEAllDefaultLibraries", "VC.Project.VCLinkerTool.OVERWRITEDefaultLibraryNames", "/nodefaultlib"]
 helpviewer_keywords: ["default libraries, removing", "-NODEFAULTLIB linker option", "libraries, ignore", "NODEFAULTLIB linker option", "/NODEFAULTLIB linker option", "ignore libraries linker option"]
-ms.assetid: 7270b673-6711-468e-97a7-c2925ac2be6e
 ---
 # `/NODEFAULTLIB` (Ignore Libraries)
 
-The **`/NODEFAULTLIB`** linker option tells the linker to remove one or more default libraries from the list of libraries it searches when it resolves external references.
+Unless an optional library name is provided, the `/NODEFAULTLIB` linker option removes all libraries not explicitly specified on the linker command-line. This also includes `#pragma`, `cl.exe` command-line switches, libs referenced by other libs, and so on.
 
 ## Syntax
 
@@ -34,11 +33,8 @@ If you use **`/NODEFAULTLIB`** to build your program without the C run-time libr
 ### To set this linker option in the Visual Studio development environment
 
 1. Open the project's **Property Pages** dialog box. For more information, see [Set compiler and build properties](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **Linker** > **Input** property page.
-
 1. Modify the **Ignore All Default Libraries** property. Or, specify a semicolon-separated list of the libraries you want to ignore in the **Ignore Specific Default Libraries** property. The **Linker** > **Command Line** property page shows the effect of the changes you make to these properties.
-
 1. Choose **OK** or **Apply** to save your changes.
 
 ### To set this linker option programmatically
diff --git a/docs/build/reference/oi-generate-intrinsic-functions.md b/docs/build/reference/oi-generate-intrinsic-functions.md
index 7eb1b3e971..6903538cac 100644
--- a/docs/build/reference/oi-generate-intrinsic-functions.md
+++ b/docs/build/reference/oi-generate-intrinsic-functions.md
@@ -4,7 +4,6 @@ title: "/Oi (Generate Intrinsic Functions)"
 ms.date: "11/04/2016"
 f1_keywords: ["VC.Project.VCCLCompilerTool.EnableIntrinsicFunctions", "/oi", "VC.Project.VCCLWCECompilerTool.EnableIntrinsicFunctions"]
 helpviewer_keywords: ["Oi compiler option [C++]", "intrinsic functions, generate", "/Oi compiler option [C++]", "-Oi compiler option [C++]", "generate intrinsic functions compiler option [C++]"]
-ms.assetid: fa4a3bf6-0ed8-481b-91c0-add7636132b4
 ---
 # /Oi (Generate Intrinsic Functions)
 
@@ -18,37 +17,34 @@ Replaces some function calls with intrinsic or otherwise special forms of the fu
 
 ## Remarks
 
-Programs that use intrinsic functions are faster because they do not have the overhead of function calls, but may be larger because of the additional code created.
+Programs that use intrinsic functions are faster because they don't have the overhead of function calls but may be larger because of the extra code created.
 
-See [intrinsic](../../preprocessor/intrinsic.md) for more information on which functions have intrinsic forms.
+For more information about which functions have intrinsic forms, see [intrinsic](../../preprocessor/intrinsic.md).
 
-**/Oi** is only a request to the compiler to replace some function calls with intrinsics; the compiler may call the function (and not replace the function call with an intrinsic) if it will result in better performance.
+**/Oi** is only a request to the compiler to replace some function calls with intrinsics. The compiler may call the function (and not replace the function call with an intrinsic) if it results in better performance.\
+**/Oi-** turns off this behavior, which may be useful if `/Oi` has been specified elsewhere and you want to override it.
 
-**x86 Specific**
+You can use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call.
 
-The intrinsic floating-point functions do not perform any special checks on input values and so work in restricted ranges of input, and have different exception handling and boundary conditions than the library routines with the same name. Using the true intrinsic forms implies loss of IEEE exception handling, and loss of `_matherr` and `errno` functionality; the latter implies loss of ANSI conformance. However, the intrinsic forms can considerably speed up floating-point-intensive programs, and for many programs, the conformance issues are of little practical value.
+### x86-specific remarks
 
-You can use the [Za](za-ze-disable-language-extensions.md) compiler option to override generation of true intrinsic floating-point options. In this case, the functions are generated as library routines that pass arguments directly to the floating-point chip instead of pushing them onto the program stack.
+The intrinsic floating-point functions don't perform any special checks on input values and so work in restricted ranges of input, and have different exception handling and boundary conditions than the library routines with the same name. Using the true intrinsic forms implies loss of IEEE exception handling, and loss of `_matherr` and `errno` functionality; the latter implies loss of ANSI conformance. However, the intrinsic forms can considerably speed up floating-point-intensive programs, and for many programs, the conformance issues are of little practical value.
 
-**END x86 Specific**
+You can use the [`Za`](za-ze-disable-language-extensions.md) compiler option to override generation of true intrinsic floating-point options. In this case, the functions are generated as library routines that pass arguments directly to the floating-point chip instead of pushing them onto the program stack.
 
-You also use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call.
-
-### To set this compiler option in the Visual Studio development environment
+## 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++** > **Optimization** property page.
-
 1. Modify the **Enable Intrinsic Functions** property.
 
-### To set this compiler option programmatically
+## To set this compiler option programmatically
 
 - See <xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.EnableIntrinsicFunctions%2A>.
 
 ## See also
 
-[/O Options (Optimize Code)](o-options-optimize-code.md)<br/>
-[MSVC Compiler Options](compiler-options.md)<br/>
-[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)<br/>
+[/O Options (Optimize Code)](o-options-optimize-code.md)\
+[MSVC Compiler Options](compiler-options.md)\
+[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)\
 [Compiler Intrinsics](../../intrinsics/compiler-intrinsics.md)
diff --git a/docs/build/reference/out-output-file-name.md b/docs/build/reference/out-output-file-name.md
index f43bb724dc..f671586c63 100644
--- a/docs/build/reference/out-output-file-name.md
+++ b/docs/build/reference/out-output-file-name.md
@@ -1,29 +1,26 @@
 ---
 description: "Learn more about: /OUT (Output File Name)"
 title: "/OUT (Output File Name)"
-ms.date: "11/04/2016"
+ms.date: 03/24/2025
 f1_keywords: ["VC.Project.VCLinkerTool.OutputFile", "/out"]
 helpviewer_keywords: ["output files, name linker option", "-OUT linker option", "OUT linker option", "/OUT C++ linker option", "linker [C++], output files"]
-ms.assetid: 976210a4-e51f-4cfb-af5e-c16344455834
 ---
 # /OUT (Output File Name)
 
-```
-/OUT:filename
-```
+> /OUT:filename
 
 ## Arguments
 
-*filename*<br/>
-A user-specified name for the output file. It replaces the default name.
+*`filename`*\
+A user-specified name for the output file. It replaces the default name. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The /OUT option overrides the default name and location of the program that the linker creates.
+The `/OUT` option overrides the default name and location of the program that the linker creates.
 
-By default, the linker forms the file name using the base name of the first .obj file specified and the appropriate extension (.exe or .dll).
+By default, the linker forms the file name using the base name of the first `.obj` file specified and the appropriate extension (`.exe` or `.dll`).
 
-This option the default base name for a .mapfile or import library. For details, see [Generate Mapfile](map-generate-mapfile.md) (/MAP) and [/IMPLIB](implib-name-import-library.md).
+This option the default base name for a `.mapfile` or import library. For details, see [Generate Mapfile](map-generate-mapfile.md) (`/MAP`) and [/IMPLIB](implib-name-import-library.md).
 
 ### To set this linker option in the Visual Studio development environment
 
@@ -39,5 +36,5 @@ This option the default base name for a .mapfile or import library. For details,
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/pdb-use-program-database.md b/docs/build/reference/pdb-use-program-database.md
index 3801076b0d..9d61dad7b1 100644
--- a/docs/build/reference/pdb-use-program-database.md
+++ b/docs/build/reference/pdb-use-program-database.md
@@ -1,38 +1,37 @@
 ---
-description: "Learn more about: /PDB (Use Program Database)"
 title: "/PDB (Use Program Database)"
-ms.date: "11/04/2016"
+description: "Learn more about: /PDB (Use Program Database)"
+ms.date: 03/24/2025
 f1_keywords: ["/pdb", "VC.Project.VCLinkerTool.ProgramDatabaseFile"]
 helpviewer_keywords: ["-PDB linker option", "/PDB linker option", "PDB linker option", "PDB files, creating", ".pdb files, creating"]
-ms.assetid: d23db0ce-10cb-427a-bc60-d6b2a852723d
 ---
 # /PDB (Use Program Database)
 
-```
-/PDB:filename
-```
+Specify the name of the program database (PDB) file that the linker creates.
+
+## Syntax
+
+> /PDB:filename
 
 ## Arguments
 
-*filename*<br/>
-A user-specified name for the program database (PDB) that the linker creates. It replaces the default name.
+*`filename`*\
+A user-specified name for the program database (PDB) that the linker creates. It replaces the default name. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-By default, when [/DEBUG](debug-generate-debug-info.md) is specified, the linker creates a program database (PDB) which holds debugging information. The default file name for the PDB has the base name of the program and the extension .pdb.
+By default, when [`/DEBUG`](debug-generate-debug-info.md) is specified, the linker creates a program database (PDB) which holds debugging information. The default file name for the PDB has the base name of the program and the extension .pdb.
 
-Use /PDB:*filename* to specify the name of the PDB file. If /DEBUG is not specified, the /PDB option is ignored.
+Use `/PDB:`*`filename`* to specify the name of the PDB file. If `/DEBUG` is not specified, the `/PDB` option is ignored.
 
-A PDB file can be up to 2GB.
+A PDB file can be up to 2GB in size.
 
 For more information, see [.pdb Files as Linker Input](dot-pdb-files-as-linker-input.md).
 
 ### To set this linker 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** > **Linker** > **Debug** property page.
-
 1. Modify the **Generate Program Database File** property.
 
 ### To set this linker option programmatically
@@ -41,5 +40,5 @@ For more information, see [.pdb Files as Linker Input](dot-pdb-files-as-linker-i
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/pdbaltpath-use-alternate-pdb-path.md b/docs/build/reference/pdbaltpath-use-alternate-pdb-path.md
index 654278e537..6c198f7815 100644
--- a/docs/build/reference/pdbaltpath-use-alternate-pdb-path.md
+++ b/docs/build/reference/pdbaltpath-use-alternate-pdb-path.md
@@ -1,29 +1,30 @@
 ---
 description: "Learn more about: /PDBALTPATH (Use Alternate PDB Path)"
 title: "/PDBALTPATH (Use Alternate PDB Path)"
-ms.date: "11/04/2016"
+ms.date: 03/24/2025
 f1_keywords: ["/pdbaltpath"]
 helpviewer_keywords: [".pdb files, path", "PDBALTPATH dumpbin option", "-PDBALTPATH dumpbin option", "/PDBALTPATH dumpbin option", "PDB files, path"]
-ms.assetid: 72e200aa-e2c3-4ad8-b687-25528da1aaaf
 ---
 # /PDBALTPATH (Use Alternate PDB Path)
 
-```
-/PDBALTPATH:pdb_file_name
-```
+Provide an alternate location for the Program Database (`.pdb`) file in a compiled binary file.
+
+## Syntax
+
+> /PDBALTPATH:pdb_file_name
 
 ## Arguments
 
-*pdb_file_name*<br/>
-The path and file name for the .pdb file.
+*`pdb_file_name`*\
+The path and filename for the `.pdb` file. The path may exceed `MAX_PATH` (260 characters). The filename (not including the path) must not exceed `MAX_PATH`.
 
 ## Remarks
 
-Use this option to provide an alternate location for the Program Database (.pdb) file in a compiled binary file. Normally, the linker records the location of the .pdb file in the binaries that it produces. You can use this option to provide a different path and file name for the .pdb file. The information provided with /PDBALTPATH does not change the location or name of the actual .pdb file; it changes the information that the linker writes in the binary file. This enables you to provide a path that is independent of the file structure of the build computer. Two common uses for this option are to provide a network path or a file that has no path information.
+Use this option to provide an alternate location for the Program Database (`.pdb`) file in a compiled binary file. Normally, the linker records the location of the `.pdb` file in the binaries that it produces. You can use this option to provide a different path and file name for the `.pdb` file. The information provided with `/PDBALTPATH` does not change the location or name of the actual `.pdb` file; it changes the information that the linker writes in the binary file. This enables you to provide a path that is independent of the file structure of the build computer. Two common uses for this option are to provide a network path or a file that has no path information.
 
-The value of *pdb_file_name* can be an arbitrary string, an environment variable, or **%_PDB%**. The linker will expand an environment variable, such as **%SystemRoot%**, to its value. The linker defines the environment variables **%_PDB%** and **%_EXT%**. **%_PDB%** expands to the file name of the actual .pdb file without any path information and **%_EXT%** is the extension of the generated executable.
+The value of *`pdb_file_name`* can be an arbitrary string, an environment variable, or `%_PDB%`. The linker will expand an environment variable, such as `%SystemRoot%`, to its value. The linker defines the environment variables `%_PDB%` and `%_EXT%`. `%_PDB%` expands to the file name of the actual `.pdb` file without any path information and `%_EXT%` is the extension of the generated executable.
 
 ## See also
 
-[DUMPBIN Options](dumpbin-options.md)<br/>
-[/PDBPATH](pdbpath.md)
+[DUMPBIN Options](dumpbin-options.md)\
+[`/PDBPATH`](pdbpath.md)
diff --git a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md
index 219bd6b023..77539e99b0 100644
--- a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md
+++ b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md
@@ -1,14 +1,13 @@
 ---
 description: "Learn more about: /PGD (Specify Database for Profile-Guided Optimizations)"
 title: "/PGD (Specify Database for Profile-Guided Optimizations)"
-ms.date: "03/14/2018"
+ms.date: 03/24/2025
 f1_keywords: ["VC.Project.VCLinkerTool.ProfileGuidedDatabase"]
 helpviewer_keywords: ["-PGD linker option", "/PGD linker option"]
-ms.assetid: 9f312498-493b-461f-886f-92652257e443
 ---
 # /PGD (Specify Database for Profile-Guided Optimizations)
 
-**The /PGD option is deprecated.** Starting in Visual Studio 2015, prefer the [/GENPROFILE or /FASTGENPROFILE](genprofile-fastgenprofile-generate-profiling-instrumented-build.md) linker options instead. This option is used to specify the name of the .pgd file used by the profile-guided optimization process.
+**The /PGD option is deprecated.** Starting in Visual Studio 2015, prefer the [`/GENPROFILE`or `/FASTGENPROFILE`](genprofile-fastgenprofile-generate-profiling-instrumented-build.md) linker options instead. This option is used to specify the name of the .pgd file used by the profile-guided optimization process.
 
 ## Syntax
 
@@ -16,14 +15,14 @@ ms.assetid: 9f312498-493b-461f-886f-92652257e443
 
 ## Argument
 
-*filename*<br/>
-Specifies the name of the .pgd file that is used to hold information about the running program.
+`filename`\
+Specifies the name of the `.pgd` file that is used to hold information about the running program. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-When using the deprecated [/LTCG:PGINSTRUMENT](ltcg-link-time-code-generation.md) option, use **/PGD** to specify a nondefault name or location for the .pgd file. If you do not specify **/PGD**, the .pgd file base name is the same as the output file (.exe or .dll) base name and is created in the same directory from which the link was invoked.
+When using the deprecated [`/LTCG:PGINSTRUMENT`](ltcg-link-time-code-generation.md) option, use **`/PGD`** to specify a nondefault name or location for the `.pgd` file. If you don't specify **`/PGD`**, the `.pgd` file base name is the same as the output file (`.exe` or `.dll`) base name and is created in the same directory from which the link was invoked.
 
-When using the deprecated **/LTCG:PGOPTIMIZE** option, use the **/PGD** option to specify the name of the .pgd file to use to create the optimized image. The *filename* argument should match the *filename* specified to **/LTCG:PGINSTRUMENT**.
+When using the deprecated **`/LTCG:PGOPTIMIZE`** option, use the **`/PGD`** option to specify the name of the `.pgd` file to use to create the optimized image. The *`filename`* argument should match the *`filename`* specified to **`/LTCG:PGINSTRUMENT`**.
 
 For more information, see [Profile-Guided Optimizations](../profile-guided-optimizations.md).
 
@@ -41,5 +40,5 @@ For more information, see [Profile-Guided Optimizations](../profile-guided-optim
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
-[MSVC Linker Options](linker-options.md)<br/>
+[MSVC linker reference](linking.md)\
+[MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/profile-performance-tools-profiler.md b/docs/build/reference/profile-performance-tools-profiler.md
index d1273f084d..bff93bcfd7 100644
--- a/docs/build/reference/profile-performance-tools-profiler.md
+++ b/docs/build/reference/profile-performance-tools-profiler.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: /PROFILE (Performance Tools Profiler)"
 title: "/PROFILE (Performance Tools Profiler)"
+description: "Learn more about: /PROFILE (Performance Tools Profiler)"
 ms.date: 10/13/2021
 f1_keywords: ["VC.Project.VCLinkerTool.Profile"]
 helpviewer_keywords: ["-PROFILE linker option", "/PROFILE linker option"]
@@ -57,7 +57,7 @@ Because a **CMake** project doesn't have the usual **Property Pages** support, t
 
 1. Rebuild your solution.
 
-## See Also
+## See also
 
 [MSVC linker reference](linking.md)\
 [MSVC linker options](linker-options.md)
diff --git a/docs/build/reference/qspectre.md b/docs/build/reference/qspectre.md
index 67dfb19bb4..2eace5222a 100644
--- a/docs/build/reference/qspectre.md
+++ b/docs/build/reference/qspectre.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: /Qspectre"
 title: "/Qspectre"
+description: "Learn more about: /Qspectre"
 ms.date: 07/02/2021
 f1_keywords: ["VC.Project.VCCLCompilerTool.SpectreMitigation"]
 helpviewer_keywords: ["/Qspectre"]
 ---
-# /Qspectre
+# `/Qspectre`
 
 Specifies compiler generation of instructions to mitigate certain Spectre variant 1 security vulnerabilities.
 
@@ -38,7 +38,7 @@ If your code operates on data that crosses a trust boundary, then we recommend y
 
 The **`/Qspectre`** option is available starting in Visual Studio 2017 version 15.5.5, and in all updates to Microsoft C/C++ compilers (MSVC) made on or after January 23, 2018. Use the Visual Studio Installer to update the compiler, and to install the Spectre-mitigated libraries as individual components. The **`/Qspectre`** option is also available in Visual Studio 2015 Update 3 through a patch. For more information, see [KB 4338871](https://support.microsoft.com/help/4338871).
 
-All versions of Visual Studio 2017 version 15.5, and all Previews of Visual Studio 2017 version 15.6. include an undocumented option, **/`d2guardspecload`**. It's equivalent to the initial behavior of **`/Qspectre`**. You can use **`/d2guardspecload`** to apply the same mitigations to your code in these versions of the compiler. We recommend you update your build to use **`/Qspectre`** in compilers that support the option. The **`/Qspectre`** option may also support new mitigations in later versions of the compiler.
+All versions of Visual Studio 2017 version 15.5, and all Previews of Visual Studio 2017 version 15.6. include an undocumented option, **`/d2guardspecload`**. It's equivalent to the initial behavior of **`/Qspectre`**. You can use **`/d2guardspecload`** to apply the same mitigations to your code in these versions of the compiler. We recommend you update your build to use **`/Qspectre`** in compilers that support the option. The **`/Qspectre`** option may also support new mitigations in later versions of the compiler.
 
 ### Effect
 
diff --git a/docs/build/reference/running-nmake.md b/docs/build/reference/running-nmake.md
index ad7fa7d7b7..e9633b59a9 100644
--- a/docs/build/reference/running-nmake.md
+++ b/docs/build/reference/running-nmake.md
@@ -12,6 +12,8 @@ helpviewer_keywords: ["targets, building", "response files, NMAKE", "targets", "
 
 ## Remarks
 
+NMAKE must run in a Developer Command Prompt window. A Developer Command Prompt window has the environment variables set for the tools, libraries, and include file paths required to build at the command line. For details on how to open a Developer Command Prompt window, see [Use the MSVC toolset from the command line](../building-on-the-command-line.md).
+
 NMAKE builds only specified *targets* or, when none is specified, the first target in the makefile. The first makefile target can be a [pseudotarget](description-blocks.md#pseudotargets) that builds other targets. NMAKE uses makefiles specified with **`/F`**, or if **`/F`** isn't specified, the Makefile file in the current directory. If no makefile is specified, it uses inference rules to build command-line *targets*.
 
 The *command-file* text file (or response file) contains command-line input. Other input can precede or follow \@*command-file*. A path is permitted. In *command-file*, line breaks are treated as spaces. Enclose macro definitions in quotation marks if they contain spaces.
diff --git a/docs/build/reference/sarif-output.md b/docs/build/reference/sarif-output.md
index 3cbd752476..29e608baa8 100644
--- a/docs/build/reference/sarif-output.md
+++ b/docs/build/reference/sarif-output.md
@@ -15,7 +15,7 @@ The MSVC compiler can be made to output diagnostics as [SARIF](https://sarifweb.
 There are two ways to make the MSVC compiler produce SARIF diagnostics:
 
 - Pass the `/experimental:log` switch on the command line. See the [documentation for `/experimental:log`](experimental-log.md) for details.
-- Launch `cl.exe` programatically and set the `SARIF_OUTPUT_PIPE` environment variable to retrieve SARIF blocks through a pipe.
+- Launch `cl.exe` programmatically and set the `SARIF_OUTPUT_PIPE` environment variable to retrieve SARIF blocks through a pipe.
 
 ## Retrieving SARIF through a pipe
 
diff --git a/docs/build/reference/scandependencies.md b/docs/build/reference/scandependencies.md
index 0bf2e54226..d7a6f2f99c 100644
--- a/docs/build/reference/scandependencies.md
+++ b/docs/build/reference/scandependencies.md
@@ -60,10 +60,8 @@ Consider the following sample code:
 #include <vector>
 
 import other.module;
-import std.core;
-
+import std;
 import "t.h";
-
 import <iostream>;
 
 int main() {}
@@ -83,14 +81,14 @@ The compiler produces a JSON file, *`output.json`*, with content similar to:
         {
             "primary-output": "app.obj",
             "outputs": [
-                "C:\\Users\\username\\source\\repos\\app\\app"
+                "output.json"
             ],
             "requires": [
                 {
                     "logical-name": "other.module"
                 },
                 {
-                    "logical-name": "std.core"
+                    "logical-name": "std"
                 },
                 {
                     "logical-name": "t.h",
@@ -134,6 +132,7 @@ To report module and header unit dependencies, you must also set the **Configura
 
 ## See also
 
+[Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md)\
 [MSVC compiler options](compiler-options.md)\
 [MSVC compiler command-line syntax](compiler-command-line-syntax.md)\
 [`/sourceDependencies:directives`](sourcedependencies-directives.md)\
diff --git a/docs/build/reference/sourcedependencies-directives.md b/docs/build/reference/sourcedependencies-directives.md
index 7f1e9efe38..25cfd5f192 100644
--- a/docs/build/reference/sourcedependencies-directives.md
+++ b/docs/build/reference/sourcedependencies-directives.md
@@ -9,7 +9,7 @@ helpviewer_keywords: ["/sourceDependencies:directives compiler option", "/source
 ---
 # `/sourceDependencies:directives` (List module and header unit dependencies)
 
-This command-line option scans source files and their `#include` statements to generate a JSON file that lists module export and imports. This information can be used by a build system to determine the build order of modules and header units.
+This command-line option scans source files and their `#include` statements to generate a JSON file that lists module export and imports. A build system can use this information to determine the build order of modules and header units.
 
 This option differs from [`/sourceDependencies`](sourcedependencies.md) in the following ways:
 
@@ -59,10 +59,8 @@ Given the following sample code:
 #include <vector>
 
 import m;
-import std.core;
-
+import std;
 import <utility>;
-
 import "t.h";
 
 int main() {}
@@ -78,15 +76,16 @@ produces a JSON file *`output.json`* similar to:
 {
    "Version":"1.1",
    "Data":{
-      "Source":"C:\\a\\b\\main.cpp",
+      "Source":"C:\\test\\main.cpp",
       "ProvidedModule":"",
       "ImportedModules":[
          "m",
-         "std.core"
+         "std"
       ],
       "ImportedHeaderUnits":[
          "C:\\...\\utility",
-         "C:\\a\\b\\t.h"
+         "C:\\...\\vector",
+         "C:\\test\\t.h"
       ]
    }
 }
@@ -100,10 +99,11 @@ No *`.ifc`* files are listed in the output because they weren't built. Unlike `/
 
 ## To set this compiler option in Visual Studio
 
-You normally shouldn't set this option yourself in the Visual Studio development environment. It's set by the build system.
+You normally shouldn't set this option yourself in the Visual Studio development environment. The build system sets it.
 
 ## See also
 
+[Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md)\
 [`/translateInclude`](translateinclude.md)\
 [C++ header-units.json reference](header-unit-json-reference.md)\
 [MSVC compiler options](compiler-options.md)\
diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md
index d2fa1a11cd..c9eeb3f544 100644
--- a/docs/build/reference/std-specify-language-standard-version.md
+++ b/docs/build/reference/std-specify-language-standard-version.md
@@ -1,8 +1,8 @@
 ---
 title: "/std (Specify Language Standard Version)"
 description: "The MSVC compiler option /std specifies the C or C++ language standard supported by the compiler."
-ms.date: 4/9/2023
-f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"]
+ms.date: 1/29/2025
+f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c++23preview", "/std:c++latest", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"]
 ---
 # `/std` (Specify Language Standard Version)
 
@@ -13,6 +13,7 @@ Enable supported C and C++ language features from the specified version of the C
 > **`/std:c++14`**\
 > **`/std:c++17`**\
 > **`/std:c++20`**\
+> **`/std:c++23preview`**\
 > **`/std:c++latest`**\
 > **`/std:c11`**\
 > **`/std:c17`**\
@@ -24,19 +25,20 @@ The **`/std`** options are available in Visual Studio 2017 and later. They're us
 
 The Microsoft C++ compiler in Visual Studio 2017 and later versions doesn't support C++ standards modes earlier than C++14 (**`/std:c++14`**). Such support isn't planned. As an imperfect workaround, it's possible to use older Visual C++ compiler toolsets that didn't implement features from later standards. For more information on how to install and use older compiler toolsets in Visual Studio, see [Use native multi-targeting in Visual Studio to build old projects](../../porting/use-native-multi-targeting.md).
 
-### C++ standards support
+## C++ standards support
 
-The **`/std`** option in effect during a C++ compilation can be detected by use of the [`_MSVC_LANG`](../../preprocessor/predefined-macros.md) preprocessor macro. For more information, see [Preprocessor Macros](../../preprocessor/predefined-macros.md).
+Detect whether the **`/std`** option is in effect during a C++ compilation with the [`_MSVC_LANG`](../../preprocessor/predefined-macros.md) preprocessor macro. For more information, see [Preprocessor Macros](../../preprocessor/predefined-macros.md).
 
 > [!IMPORTANT]
 > Because some existing code depends on the value of the macro `__cplusplus` being `199711L`, the MSVC compiler doesn't change the value of this macro unless you explicitly opt in by setting [`/Zc:__cplusplus`](zc-cplusplus.md). Specify `/Zc:__cplusplus` and the **`/std`** option to set `__cplusplus` to the appropriate value.
 
-**`/std:c++14`**\
-The **`/std:c++14`** option enables C++14 standard-specific features implemented by the MSVC compiler. This option is the default for code compiled as C++. It's available starting in Visual Studio 2015 Update 3.
+### `/std:c++14`
+
+Enables C++14 standard-specific features implemented by the MSVC compiler. This option is the default for code compiled as C++. It's available starting in Visual Studio 2015 Update 3.
 
 This option disables compiler and standard library support for features that are changed or new in more recent versions of the language standard. However, it doesn't disable some C++17 features already implemented in previous releases of the MSVC compiler. For more information, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). The tables indicate which C++17 features are enabled when you specify **`/std:c++14`**.
 
-The following features remain enabled when the **`/std:c++14`** option is specified to avoid breaking changes for users who have already taken dependencies on the features available in or before Visual Studio 2015 Update 2:
+The following features remain enabled when the **`/std:c++14`** option is specified to avoid breaking changes for users who took dependencies on features available in or before Visual Studio 2015 Update 2:
 
 - [Rules for `auto` with braced-init-lists](https://wg21.link/n3922)
 - [`typename` in template template-parameters](https://wg21.link/n4051)
@@ -44,43 +46,52 @@ The following features remain enabled when the **`/std:c++14`** option is specif
 - [Attributes for namespaces and enumerators](https://wg21.link/n4266)
 - [u8 character literals](https://wg21.link/n4267)
 
-**`/std:c++17`**\
-The **`/std:c++17`** option enables C++17 standard-specific features and behavior. It enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are new or changed after C++17. It specifically disables post-C++17 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. This option is available starting in Visual Studio 2017 version 15.3.
+### `/std:c++17`
+
+Enables C++17 standard-specific features and behavior. It enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are new or changed after C++17. It specifically disables post-C++17 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. This option is available starting in Visual Studio 2017 version 15.3.
 
 Depending on the MSVC compiler version or update level, C++17 features may not be fully implemented or fully conforming when you specify the **`/std:c++17`** option. For an overview of C++ language conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md).
 
-**`/std:c++20`**\
-The **`/std:c++20`** option enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Note that Visual Studio 2022 version 17.0 does not support `std::format`, the C++20 `<chrono>` formatting extensions, and the range factories and range adaptors from `<ranges>` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard.
+### `/std:c++20`
+
+Enables C++20 standard-specific features and behavior.
+
+Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**.
 
-The **`/std:c++20`** option disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard.
+### `/std:c++23preview`
 
-The **`/std:c++20`** option enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**.
+Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13 Preview 4. Preview features may change and may not be ABI compatible across releases.
 
-**`/std:c++latest`**\
-The **`/std:c++latest`** option enables all currently implemented compiler and standard library features proposed for the next draft standard, as well as some in-progress and experimental features. This option is available starting in Visual Studio 2015 Update 3.
+This switch will be removed when the `/std:c++23` switch is implemented--at which point C++23 features will be fully implemented and ABI stable. If in project properties **C/C++** > **Language** you specify **Preview - ISO C++ 23 Standard (/std:c++preview)**, it will automatically change to mean `/std:c++23` once the new switch is implemented.
 
-Depending on the MSVC compiler version or update level, C++17, C++20, or proposed C++23 features may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md).
+This switch differs from `/std:c++latest` in that it only enables features that are part of the C++23 standard. It doesn't enable experimental or in-progress features.
 
-In versions of Visual Studio 2019 before version 16.11, **`/std:c++latest`** is required to enable all the compiler and standard library features of C++20.
+### `/std:c++latest`
 
-Since Visual Studio 2019 version 16.8, the **`/std:c++latest`** option has enabled the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**.
+Enables all currently implemented compiler and standard library features proposed in the next ISO C++ working draft, as well as some in-progress and experimental features. This option is available starting with Visual Studio 2015 Update 3.
+
+Depending on the MSVC compiler version or update level, features from published C++ standards or proposed features in the current C++ working draft, may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md).
+
+Since Visual Studio 2019 version 16.8, the **`/std:c++latest`** option has enabled the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**.
 
 For a list of supported language and library features, see [What's New for C++ in Visual Studio](../../overview/what-s-new-for-visual-cpp-in-visual-studio.md).
 
 The **`/std:c++latest`** option doesn't enable features guarded by the **`/experimental`** switch, but may be required to enable them.
 
 > [!NOTE]
-> The compiler and library features enabled by **`/std:c++latest`** may appear in a future C++ standard. Features that have not been approved are subject to breaking changes or removal without notice and are provided on an as-is basis.
+> The compiler and library features enabled by **`/std:c++latest`** may appear in a future C++ standard. Features that haven't been approved are subject to breaking changes or removal without notice and are provided on an as-is basis.
 
-### C standards support
+## C standards support
 
 You can invoke the Microsoft C compiler by using the [`/TC` or `/Tc`](tc-tp-tc-tp-specify-source-file-type.md) compiler option. It's used by default for code that has a *`.c`* file extension, unless overridden by a **`/TP`** or **`/Tp`** option. The default C compiler (that is, the compiler when **`/std:c11`** or **`/std:c17`** isn't specified) implements ANSI C89, but includes several Microsoft extensions, some of which are part of ISO C99. Some Microsoft extensions to C89 can be disabled by using the [`/Za`](za-ze-disable-language-extensions.md) compiler option, but others remain in effect. It isn't possible to specify strict C89 conformance. The compiler doesn't implement several required features of C99, so it isn't possible to specify C99 conformance, either.
 
-**`/std:c11`**\
-The **`/std:c11`** option enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8.
+### `/std:c11`
+
+Enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8.
+
+### `/std:c17`
 
-**`/std:c17`**\
-The **`/std:c17`** option enables ISO C17 conformance. It's available starting in Visual Studio 2019 version 16.8.
+Enables ISO C17 conformance. It's available starting in Visual Studio 2019 version 16.8.
 
 Because the new preprocessor is needed to support these standards, the **`/std:c11`** and **`/std:c17`** compiler options set the [`/Zc:preprocessor`](zc-preprocessor.md) option automatically. If you want to use the traditional (legacy) preprocessor for C11 or C17, you must set the **`/Zc:preprocessor-`** compiler option explicitly. Setting the **`/Zc:preprocessor-`** option may lead to unexpected behavior, and isn't recommended.
 
@@ -90,15 +101,10 @@ Because the new preprocessor is needed to support these standards, the **`/std:c
 When you specify **`/std:c11`** or **`/std:c17`**, MSVC supports all the features of C11 and C17 required by the standards. The **`/std:c11`** and **`/std:c17`** compiler options enable support for these functionalities:
 
 - [`_Pragma`](../../preprocessor/pragma-directives-and-the-pragma-keyword.md#the-pragma-preprocessing-operator)
-
 - [`restrict`](../../c-language/type-qualifiers.md#restrict)
-
 - [`_Noreturn`](../../c-language/noreturn.md) and \<stdnoreturn.h>
-
 - [`_Alignas`, `_Alignof`](../../c-language/alignment-c.md) and \<stdalign.h>
-
 - [`_Generic`](../../c-language/generic-selection.md) and \<tgmath.h>
-
 - [`_Static_assert`](../../c-language/static-assert-c.md)
 
 The IDE uses C settings for IntelliSense and code highlighting when your source files have a *`.c`* file extension, or when you specify the [`/TC` or `/Tc`](tc-tp-tc-tp-specify-source-file-type.md) compiler option. Currently, IntelliSense in C highlights keywords `_Alignas`, `_Alignof`, `_Noreturn`, and `_Static_assert`, but not the equivalent macros defined in the standard headers: `alignas`, `alignof`, `noreturn`, and `static_assert`.
@@ -115,17 +121,16 @@ The compiler doesn't support most optional features of ISO C11. Several of these
 
 - Variable length array (VLA) support isn't planned. VLAs provide attack vectors comparable to [`gets`](../../c-runtime-library/gets-getws.md), which is deprecated and planned for removal.
 
-**`/std:clatest`**\
-The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed for the next draft C standard, as well as some in-progress and experimental features.
+### `/std:clatest`
+
+The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed in the next draft C standard, as well as some in-progress and experimental features.
 
 For more information, see the C Standard library features section of [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md).
 
 ### To set this compiler option in the Visual Studio development environment
 
 1. Open the project's **Property Pages** dialog box. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **C/C++** > **Language** property page.
-
 1. In **C++ Language Standard** (or for C, **C Language Standard**), choose the language standard to support from the dropdown control, then choose **OK** or **Apply** to save your changes.
 
 ## See also
diff --git a/docs/build/reference/subsystem-specify-subsystem.md b/docs/build/reference/subsystem-specify-subsystem.md
index 4371a12db0..5669fa0e8b 100644
--- a/docs/build/reference/subsystem-specify-subsystem.md
+++ b/docs/build/reference/subsystem-specify-subsystem.md
@@ -29,7 +29,7 @@ Win32 character-mode application. The operating system provides a console for co
 **`EFI_BOOT_SERVICE_DRIVER`**\
 **`EFI_ROM`**\
 **`EFI_RUNTIME_DRIVER`**\
-The Extensible Firmware Interface subsystems. For more information, see the [UEFI specification](https://uefi.org/specifications). For examples, see the Intel [UEFI Driver and Application Tool Resources](https://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/uefi-driver-and-application-tool-resources.html). The minimum version and default version is 1.0.
+The Extensible Firmware Interface subsystems. For more information, see the [UEFI specification](https://uefi.org/specifications). The minimum version and default version is 1.0.
 
 **`NATIVE`**\
 Kernel mode drivers for Windows NT. This option is normally reserved for Windows system components. If [`/DRIVER:WDM`](driver-windows-nt-kernel-mode-driver.md) is specified, `NATIVE` is the default.
diff --git a/docs/build/reference/tlbout-name-dot-tlb-file.md b/docs/build/reference/tlbout-name-dot-tlb-file.md
index a9fde3067b..3daba01380 100644
--- a/docs/build/reference/tlbout-name-dot-tlb-file.md
+++ b/docs/build/reference/tlbout-name-dot-tlb-file.md
@@ -1,32 +1,31 @@
 ---
 description: "Learn more about: /TLBOUT (Name .TLB File)"
 title: "/TLBOUT (Name .TLB File)"
-ms.date: "11/04/2016"
+ms.date: 03/24/2025
 f1_keywords: ["VC.Project.VCLinkerTool.TypeLibraryFile", "/tlbout"]
 helpviewer_keywords: ["tlb files, renaming", "TLBOUT linker option", "/TLBOUT linker option", ".tlb files, renaming", "-TLBOUT linker option"]
-ms.assetid: 0df6d078-2e48-46c9-a1a5-02674d85dce8
 ---
-# /TLBOUT (Name .TLB File)
+# `/TLBOUT` (Name .TLB File)
 
-```
+```cmd
 /TLBOUT:[path\]filename
 ```
 
 ## Arguments
 
-*path*<br/>
+*`path`*\
 An absolute or relative path specification for where the .tlb file should be created.
 
-*filename*<br/>
-Specifies the name of the .tlb file created by the MIDL compiler. No file extension is assumed; specify *filename*.tlb if you want a .tlb extension.
+*`filename`*
+Specifies the name of the .tlb file created by the MIDL compiler. No file extension is assumed; specify *filename*.tlb if you want a .tlb extension. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The /TLBOUT option specifies the name and extension of the .tlb file.
+The `/TLBOUT` option specifies the name and extension of the .tlb file.
 
 The MIDL compiler is called by the MSVC linker when linking projects that have the [module](../../windows/attributes/module-cpp.md) attribute.
 
-If /TLBOUT is not specified, the .tlb file will get its name from [/IDLOUT](idlout-name-midl-output-files.md) *filename*. If /IDLOUT is not specified, the .tlb file will be called vc70.tlb.
+If `/TLBOUT` is not specified, the .tlb file will get its name from [/IDLOUT](idlout-name-midl-output-files.md) *filename*. If /IDLOUT is not specified, the .tlb file will be called vc70.tlb.
 
 ### To set this linker option in the Visual Studio development environment
 
@@ -42,8 +41,8 @@ If /TLBOUT is not specified, the .tlb file will get its name from [/IDLOUT](idlo
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
-[MSVC Linker Options](linker-options.md)<br/>
-[/IGNOREIDL (Don't Process Attributes into MIDL)](ignoreidl-don-t-process-attributes-into-midl.md)<br/>
-[/MIDL (Specify MIDL Command Line Options)](midl-specify-midl-command-line-options.md)<br/>
+[MSVC linker reference](linking.md)\
+[MSVC Linker Options](linker-options.md)\
+[/IGNOREIDL (Don't Process Attributes into MIDL)](ignoreidl-don-t-process-attributes-into-midl.md)\
+[/MIDL (Specify MIDL Command Line Options)](midl-specify-midl-command-line-options.md)\
 [Building an Attributed Program](../../windows/attributes/cpp-attributes-com-net.md)
diff --git a/docs/build/reference/u-u-undefine-symbols.md b/docs/build/reference/u-u-undefine-symbols.md
index 816c704527..cdc3cdd3ba 100644
--- a/docs/build/reference/u-u-undefine-symbols.md
+++ b/docs/build/reference/u-u-undefine-symbols.md
@@ -1,12 +1,11 @@
 ---
 title: "/U, /u (Undefine symbols)"
 description: "Use the Microsoft C/C++ compiler /U and /u options to undefine preprocessor symbols."
-ms.date: 09/03/2020
+ms.date: 04/14/2025
 f1_keywords: ["VC.Project.VCCLCompilerTool.UndefinePreprocessorDefinitions", "VC.Project.VCCLWCECompilerTool.UndefinePreprocessorDefinitions", "VC.Project.VCCLCompilerTool.UndefineAllPreprocessorDefinitions", "/u", "VC.Project.VCCLWCECompilerTool.UndefineAllPreprocessorDefinitions"]
 helpviewer_keywords: ["-U compiler option [C++]", "Undefine Symbols compiler option", "/U compiler option [C++]", "U compiler option [C++]"]
-ms.assetid: 7bc0474f-6d1f-419b-807d-0d8816763b2a
 ---
-# /U, /u (Undefine symbols)
+# `/U`, `/u` (Undefine symbols)
 
 The **`/U`** compiler option undefines the specified preprocessor symbol. The **`/u`** compiler option undefines the Microsoft-specific symbols that the compiler defines.
 
@@ -17,7 +16,7 @@ The **`/U`** compiler option undefines the specified preprocessor symbol. The **
 
 ## Arguments
 
-*symbol*<br/>
+*`symbol`*\
 The preprocessor symbol to undefine.
 
 ## Remarks
@@ -44,9 +43,7 @@ For a complete list of Microsoft-specific predefined macros, see [Predefined mac
 ### 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++** > **Advanced** property page.
-
+1. Select the **Configuration Properties** > **C/C++** > **Preprocessor** property page.
 1. Modify the **Undefine Preprocessor Definitions** or **Undefine All Preprocessor Definitions** properties.
 
 ### To set this compiler option programmatically
@@ -55,9 +52,9 @@ For a complete list of Microsoft-specific predefined macros, see [Predefined mac
 
 ## See also
 
-[MSVC compiler options](compiler-options.md)<br/>
-[MSVC compiler command-line syntax](compiler-command-line-syntax.md)<br/>
-[**`/J`** (Default char type is unsigned)](j-default-char-type-is-unsigned.md)<br/>
-[**`/GR`** (Enable run-time type information)](gr-enable-run-time-type-information.md)<br/>
-[**`/EH`** (Exception handling model)](eh-exception-handling-model.md)<br/>
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)\
+[**`/J`** (Default char type is unsigned)](j-default-char-type-is-unsigned.md)\
+[**`/GR`** (Enable run-time type information)](gr-enable-run-time-type-information.md)\
+[**`/EH`** (Exception handling model)](eh-exception-handling-model.md)\
 [**`/MD`**, **`/MT`**, **`/LD`** (Use run-time library)](md-mt-ld-use-run-time-library.md)
diff --git a/docs/build/reference/useprofile.md b/docs/build/reference/useprofile.md
index 9efe996529..9a9fde9e72 100644
--- a/docs/build/reference/useprofile.md
+++ b/docs/build/reference/useprofile.md
@@ -1,12 +1,12 @@
 ---
 description: "Learn more about: /USEPROFILE (Run PGO in thread safe mode)"
 title: "/USEPROFILE (Use PGO data with LTCG)"
-ms.date: "03/14/2018"
+ms.date: 03/24/2025
 f1_keywords: ["USEPROFILE"]
 ---
 # /USEPROFILE (Run PGO in thread safe mode)
 
-This linker option together with [/LTCG (Link-time code generation](ltcg-link-time-code-generation.md) tells the linker to build by using profile-guided optimization (PGO) training data.
+This linker option together with [`/LTCG` (Link-time code generation](ltcg-link-time-code-generation.md) tells the linker to build by using profile-guided optimization (PGO) training data.
 
 ## Syntax
 
@@ -14,21 +14,21 @@ This linker option together with [/LTCG (Link-time code generation](ltcg-link-ti
 
 ### Arguments
 
-**AGGRESSIVE**<br/>
+**`AGGRESSIVE`**\
 This optional argument specifies that aggressive speed optimizations should be used during optimized code generation.
 
-**PGD**=*filename*<br/>
-Specifies a base file name for the .pgd file. By default, the linker uses the base executable file name with a .pgd extension.
+**`PGD`**=*filename*\
+Specifies a base filename for the `.pgd` file. By default, the linker uses the base executable filename with a `.pgd` extension. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The **/USEPROFILE** linker option is used together with **/LTCG** to generate or update an optimized build based on PGO training data. It is the equivalent of the deprecated **/LTCG:PGUPDATE** and **/LTCG:PGOPTIMIZE** options.
+The **`/USEPROFILE`** linker option is used together with **`/LTCG`** to generate or update an optimized build based on PGO training data. It is the equivalent of the deprecated **`/LTCG:PGUPDATE`** and **`/LTCG:PGOPTIMIZE`** options.
 
-The optional **AGGRESSIVE** argument disables size-related heuristics to attempt to optimize for speed. This may result in optimizations that substantially increase the size of your executable, and may not increase the resulting speed. You should profile and compare the results of using and not using **AGGRESSIVE**. This argument must be specified explicitly; it is not enabled by default.
+The optional **`AGGRESSIVE`** argument disables size-related heuristics to attempt to optimize for speed. This may result in optimizations that substantially increase the size of your executable, and may not increase the resulting speed. You should profile and compare the results of using and not using **`AGGRESSIVE`**. This argument must be specified explicitly; it is not enabled by default.
 
-The **PGD** argument specifies an optional name for the training data .pgd file to use, the same as in [/GENPROFILE or /FASTGENPROFILE](genprofile-fastgenprofile-generate-profiling-instrumented-build.md). It is the equivalent of the deprecated **/PGD** switch. By default, or if no *filename* is specified, a .pgd file that has the same base name as the executable is used.
+The **`PGD`** argument specifies an optional name for the training data `.pgd` file to use, the same as in [`/GENPROFILE` or `/FASTGENPROFILE`](genprofile-fastgenprofile-generate-profiling-instrumented-build.md). It is the equivalent of the deprecated **/PGD** switch. By default, or if no *`filename`* is specified, a `.pgd` file that has the same base name as the executable is used.
 
-The **/USEPROFILE** linker option is new in Visual Studio 2015.
+The **`/USEPROFILE`** linker option is new in Visual Studio 2015.
 
 ### To set this linker option in the Visual Studio development environment
 
@@ -48,7 +48,7 @@ The **/USEPROFILE** linker option is new in Visual Studio 2015.
 
 ## See also
 
-[/GENPROFILE and /FASTGENPROFILE](genprofile-fastgenprofile-generate-profiling-instrumented-build.md)<br/>
-[/LTCG](ltcg-link-time-code-generation.md)<br/>
-[Profile-Guided Optimizations](../profile-guided-optimizations.md)<br/>
-[Environment Variables for Profile-Guided Optimizations](../environment-variables-for-profile-guided-optimizations.md)<br/>
+[`/GENPROFILE` and `/FASTGENPROFILE`](genprofile-fastgenprofile-generate-profiling-instrumented-build.md)\
+[`/LTCG`](ltcg-link-time-code-generation.md)\
+[Profile-Guided Optimizations](../profile-guided-optimizations.md)\
+[Environment Variables for Profile-Guided Optimizations](../environment-variables-for-profile-guided-optimizations.md)
diff --git a/docs/build/reference/wholearchive-include-all-library-object-files.md b/docs/build/reference/wholearchive-include-all-library-object-files.md
index 4a1addad37..dafe4bcd5f 100644
--- a/docs/build/reference/wholearchive-include-all-library-object-files.md
+++ b/docs/build/reference/wholearchive-include-all-library-object-files.md
@@ -1,8 +1,7 @@
 ---
 description: "Learn more about: /WHOLEARCHIVE (Include All Library Object Files)"
 title: "/WHOLEARCHIVE (Include All Library Object Files)"
-ms.date: "02/12/2020"
-ms.assetid: ee92d12f-18af-4602-9683-d6223be62ac9
+ms.date: 03/27/2025
 ---
 # /WHOLEARCHIVE (Include All Library Object Files)
 
@@ -15,26 +14,24 @@ Force the linker to include all object files in the static library in the linked
 
 ### Arguments
 
-*library*\
-An optional pathname to a static library. The linker includes every object file from this library.
+*`library`*\
+An optional pathname to a static library. The linker includes every object file from this library. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
 
 ## Remarks
 
-The /WHOLEARCHIVE option forces the linker to include every object file from either a specified static library, or if no library is specified, from all static libraries specified to the LINK command. To specify the /WHOLEARCHIVE option for multiple libraries, you can use more than one /WHOLEARCHIVE switch on the linker command line. By default, the linker includes object files in the linked output only if they export symbols referenced by other object files in the executable. The /WHOLEARCHIVE option makes the linker treat all object files archived in a static library as if they were specified individually on the linker command line.
+The `/WHOLEARCHIVE` option forces the linker to include every object file from either a specified static library, or if no library is specified, from all static libraries specified to the LINK command. To specify the `/WHOLEARCHIVE` option for multiple libraries, you can use more than one `/WHOLEARCHIVE` switch on the linker command line. By default, the linker includes object files in the linked output only if they export symbols referenced by other object files in the executable. The `/WHOLEARCHIVE` option makes the linker treat all object files archived in a static library as if they were specified individually on the linker command line.
 
-The /WHOLEARCHIVE option can be used to re-export all the symbols from a static library. This allows you to make sure that all of your library code, resources, and metadata are included when you create a component from more than one static library. If you see warning LNK4264 when you create a static library that contains Windows Runtime components for export, use the /WHOLEARCHIVE option when linking that library into another component or app.
+The `/WHOLEARCHIVE` option can be used to re-export all the symbols from a static library. This allows you to make sure that all of your library code, resources, and metadata are included when you create a component from more than one static library. If you see warning LNK4264 when you create a static library that contains Windows Runtime components for export, use the `/WHOLEARCHIVE` option when linking that library into another component or app.
 
-The /WHOLEARCHIVE option was introduced in Visual Studio 2015 Update 2.
+The `/WHOLEARCHIVE` option was introduced in Visual Studio 2015 Update 2.
 
 ### To set this linker option in Visual Studio
 
 1. Open the project **Property Pages** dialog box. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
-
 1. Select the **Configuration Properties** > **Linker** > **Command Line** property page.
-
 1. Add the *`/WHOLEARCHIVE`* option to the **Additional Options** text box.
 
 ## See also
 
-[MSVC linker reference](linking.md)<br/>
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/winmdfile-specify-winmd-file.md b/docs/build/reference/winmdfile-specify-winmd-file.md
index fb489848b5..69f135c446 100644
--- a/docs/build/reference/winmdfile-specify-winmd-file.md
+++ b/docs/build/reference/winmdfile-specify-winmd-file.md
@@ -1,21 +1,25 @@
 ---
-description: "Learn more about: /WINMDFILE (Specify winmd File)"
 title: "/WINMDFILE (Specify winmd File)"
-ms.date: "11/04/2016"
+description: "Learn more about: /WINMDFILE (Specify winmd File)"
+ms.date: 03/27/2025
 f1_keywords: ["VC.Project.VCLinkerTool.GenerateWindowsMetadataFile"]
-ms.assetid: 062b41b3-14d6-432c-a361-fdb66e918931
 ---
 # /WINMDFILE (Specify winmd File)
 
-Specifies the file name for the Windows Runtime Metadata (.winmd) output file that is generated by the [/WINMD](winmd-generate-windows-metadata.md) linker option.
+Specifies the filename for the Windows Runtime Metadata (`.winmd`) output file that is generated by the [`/WINMD`](winmd-generate-windows-metadata.md) linker option.
 
 ```
 /WINMDFILE:filename
 ```
 
+## Argument
+
+*`filename`*\
+The filename for `.winmd` output file. When expanded, the fully qualified filename must not exceed `MAX_PATH` (260 characters).
+
 ## Remarks
 
-Use the value that is specified in `filename` to override the default .winmd file name (`binaryname`.winmd). Notice that you do not append ".winmd" to `filename`.  If multiple values are listed on the **/WINMDFILE** command line, the last one takes precedence.
+Use the value that is specified in `filename` to override the default `.winmd` file name (`binaryname`.winmd). Don't append `".winmd"` to `filename`.  If multiple values are listed on the **`/WINMDFILE`** command line, the last one takes precedence. The resulting name when combined with `.winmd` must not exceed `MAX_PATH` (260 characters).
 
 ### To set this linker option in the Visual Studio development environment
 
@@ -27,6 +31,6 @@ Use the value that is specified in `filename` to override the default .winmd fil
 
 ## See also
 
-[/WINMD (Generate Windows Metadata)](winmd-generate-windows-metadata.md)<br/>
-[MSVC linker reference](linking.md)<br/>
+[`/WINMD` (Generate Windows Metadata)](winmd-generate-windows-metadata.md)\
+[MSVC linker reference](linking.md)\
 [MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/zc-alignednew.md b/docs/build/reference/zc-alignednew.md
index c8a583964a..c591923268 100644
--- a/docs/build/reference/zc-alignednew.md
+++ b/docs/build/reference/zc-alignednew.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: /Zc:alignedNew (C++17 over-aligned allocation)"
 title: "/Zc:alignedNew (C++17 over-aligned allocation)"
+description: "Learn more about: /Zc:alignedNew (C++17 over-aligned allocation)"
 ms.date: "05/18/2019"
 f1_keywords: ["/Zc:alignedNew"]
 helpviewer_keywords: ["/Zc:alignedNew", "Zc:alignedNew", "-Zc:alignedNew"]
@@ -17,7 +17,7 @@ Enable support for C++17 over-aligned **`new`**, dynamic memory allocation align
 
 The MSVC compiler and library support C++17 standard over-aligned dynamic memory allocation. When the **`/Zc:alignedNew`** option is specified, a dynamic allocation such as `new Example;` respects the alignment of `Example` even when it's greater than `max_align_t`, the largest alignment required for any fundamental type. When the alignment of the allocated type is no more than the alignment guaranteed by the original operator **`new`**, available as the value of the predefined macro `__STDCPP_DEFAULT_NEW_ALIGNMENT__`, the statement `new Example;` results in a call to `::operator new(size_t)` as it did in C++14. When the alignment is greater than `__STDCPP_DEFAULT_NEW_ALIGNMENT__`, the implementation instead obtains the memory by using `::operator new(size_t, align_val_t)`. Similarly, deletion of over-aligned types invokes `::operator delete(void*, align_val_t)` or the sized delete signature `::operator delete(void*, size_t, align_val_t)`.
 
-The **`/Zc:alignedNew`** option is only available when [`/std:c++17`](std-specify-language-standard-version.md) or later is enabled. Under **`/std:c++17`** or later, **`/Zc:alignedNew`** is enabled by default to conform to the C++ standard. If the only reason you implement operator **`new`** and **`delete`** is to support over-aligned allocations, you may no longer need this code in C++17 or later modes. To turn off this option and revert to the C++14 behavior of **`new`** and **`delete`** when you use **`/std::c++17`** or later, specify **`/Zc:alignedNew-`**. If you implement operator **`new`** and **`delete`** but you're not ready to implement the over-aligned operator **`new`** and **`delete`** overloads that have the `align_val_t` parameter, use the **`/Zc:alignedNew-`** option to prevent the compiler and Standard Library from generating calls to the over-aligned overloads. The [`/permissive-`](permissive-standards-conformance.md) option doesn't change the default setting of **`/Zc:alignedNew`**.
+The **`/Zc:alignedNew`** option is only available when [`/std:c++17`](std-specify-language-standard-version.md) or later is enabled. Under **`/std:c++17`** or later, **`/Zc:alignedNew`** is enabled by default to conform to the C++ standard. If the only reason you implement operator **`new`** and **`delete`** is to support over-aligned allocations, you may no longer need this code in C++17 or later modes. To turn off this option and revert to the C++14 behavior of **`new`** and **`delete`** when you use **`/std:c++17`** or later, specify **`/Zc:alignedNew-`**. If you implement operator **`new`** and **`delete`** but you're not ready to implement the over-aligned operator **`new`** and **`delete`** overloads that have the `align_val_t` parameter, use the **`/Zc:alignedNew-`** option to prevent the compiler and Standard Library from generating calls to the over-aligned overloads. The [`/permissive-`](permissive-standards-conformance.md) option doesn't change the default setting of **`/Zc:alignedNew`**.
 
 Support for **`/Zc:alignedNew`** is available starting in Visual Studio 2017 version 15.5.
 
diff --git a/docs/build/reference/zc-lambda.md b/docs/build/reference/zc-lambda.md
index be3feb313d..6081969b7c 100644
--- a/docs/build/reference/zc-lambda.md
+++ b/docs/build/reference/zc-lambda.md
@@ -17,8 +17,7 @@ The **`/Zc:lambda`** compiler option enables conforming lambda grammar and proce
 
 The **`/Zc:lambda`** compiler option enables the conforming lambda processor. It parses and implements lambda code according to the C++ standard. This option is off by default, which uses the legacy lambda processor. Use this option to enable conformance-mode syntax checks of generic lambdas when you use the default [`/std:c++14`](std-specify-language-standard-version.md) or the [`/std:c++17`](std-specify-language-standard-version.md) compiler options.
 
-**`/Zc:lambda`** is automatically enabled by the [`/std:c++20`](std-specify-language-standard-version.md), [`/std:c++latest`]
-(std-specify-language-standard-version.md), [`/permissive-`](permissive-standards-conformance.md), and [`/experimental:module`](experimental-module.md) options. You can disable it explicitly by using **`/Zc:lambda-`**.
+**`/Zc:lambda`** is automatically enabled by the [`/std:c++20`](std-specify-language-standard-version.md), [`/std:c++latest`](std-specify-language-standard-version.md), [`/permissive-`](permissive-standards-conformance.md), and [`/experimental:module`](experimental-module.md) options. You can disable it explicitly by using **`/Zc:lambda-`**.
 
 The **`/Zc:lambda`** option is available starting in Visual Studio 2019 version 16.8. It's available as **`/experimental:newLambdaProcessor`** starting in Visual Studio 2019 version 16.3, but this spelling is now deprecated.
 
diff --git a/docs/build/reference/zc-static-assert.md b/docs/build/reference/zc-static-assert.md
index 78276252a8..9eb98b94a5 100644
--- a/docs/build/reference/zc-static-assert.md
+++ b/docs/build/reference/zc-static-assert.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about: /Zc:static_assert (Strict static_assert handling)"
 title: "/Zc:static_assert (Strict static_assert handling)"
-ms.date: 12/15/2021
+ms.date: 1/15/2025
 f1_keywords: ["/Zc:static_assert"]
 helpviewer_keywords: ["/Zc:static_assert compiler option (C++)"]
 ---
@@ -16,7 +16,9 @@ The **`/Zc:static_assert`** compiler option tells the compiler to evaluate `stat
 
 ## Remarks
 
-The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression isn't `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated.
+Starting with Visual Studio 17.10, `/Zc:static_assert` and `/Zc:static_assert-` have no effect. Both options are ignored to avoid breaking builds that use them. `static_assert` is now never evaluated when parsing class or function templates.
+
+The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression is `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated.
 
 The **`/Zc:static_assert`** option is available starting in Visual Studio 2022 version 17.1. In earlier versions of Visual Studio, or if **`/Zc:static_assert-`** is specified, Visual Studio doesn't do dependent analysis if the `static_assert` is within the body of a function template or within the body of a member function of a class template. Instead, it only evaluates the `static_assert` when a template is instantiated.
 
diff --git a/docs/build/reference/zc-ternary.md b/docs/build/reference/zc-ternary.md
index 61d8b6a058..b77f0d7739 100644
--- a/docs/build/reference/zc-ternary.md
+++ b/docs/build/reference/zc-ternary.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: `/Zc:ternary` (Enforce conditional operator rules)"
 title: "/Zc:ternary (Enforce conditional operator rules)"
-ms.date: "09/12/2019"
+description: "Learn more about: `/Zc:ternary` (Enforce conditional operator rules)"
+ms.date: 09/12/2019
 f1_keywords: ["/Zc:ternary"]
 helpviewer_keywords: ["/Zc:ternary", "Zc:ternary", "-Zc:ternary"]
 ---
@@ -23,7 +23,7 @@ The **`/Zc:ternary`** option is off by default in Visual Studio 2017. Use **`/Zc
 
 ### Examples
 
-This sample shows how a class that provides both non-explicit initialization from a type, and conversion to a type, can lead to ambiguous conversions. This code is accepted by the compiler by default, but rejected when **/`Zc:ternary`** or **`/permissive-`** is specified.
+This sample shows how a class that provides both non-explicit initialization from a type, and conversion to a type, can lead to ambiguous conversions. This code is accepted by the compiler by default, but rejected when **`/Zc:ternary`** or **`/permissive-`** is specified.
 
 ```cpp
 // zcternary1.cpp
diff --git a/docs/build/reference/zc-tlsguards.md b/docs/build/reference/zc-tlsguards.md
index dfaf7ff2d0..15c36abf13 100644
--- a/docs/build/reference/zc-tlsguards.md
+++ b/docs/build/reference/zc-tlsguards.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about the /Zc:tlsGuards (Check TLS initialization) compiler option."
 title: "/Zc:tlsGuards (Check TLS initialization)"
+description: "Learn more about the /Zc:tlsGuards (Check TLS initialization) compiler option."
 ms.date: 11/08/2022
 f1_keywords: ["/Zc:tlsGuards"]
 helpviewer_keywords: ["-Zc:tlsGuards compiler option (C++)", "/Zc:tlsGuards compiler option (C++)"]
@@ -29,4 +29,4 @@ The **`/Zc:tlsGuards`** option is new in Visual Studio 2019 version 16.5. This o
 
 ## See also
 
-[`/Zc` (Conformance)](zc-conformance.md)\
+[`/Zc` (Conformance)](zc-conformance.md)
diff --git a/docs/build/reference/zc-twophase.md b/docs/build/reference/zc-twophase.md
index 61178e9b21..5675256313 100644
--- a/docs/build/reference/zc-twophase.md
+++ b/docs/build/reference/zc-twophase.md
@@ -163,7 +163,7 @@ typename T::TYPE func(typename T::TYPE*)
 }
 ```
 
-If you don't use the keyword **`typename`** in the function body, this code compiles under **`/permissive- /Zc:twoPhase-`**, but not under **`/permissive-`** alone. The **`typename`** keyword is required to indicate that the `TYPE` is dependent. Because the body isn't parsed under **`/Zc:twoPhase-`**, the compiler does't require the keyword. In **`/permissive-`** conformance mode, code without the **`typename`** keyword generates errors. To migrate your code to conformance in Visual Studio 2017 version 15.3 and beyond, insert the **`typename`** keyword where it's missing.
+If you don't use the keyword **`typename`** in the function body, this code compiles under **`/permissive- /Zc:twoPhase-`**, but not under **`/permissive-`** alone. The **`typename`** keyword is required to indicate that the `TYPE` is dependent. Because the body isn't parsed under **`/Zc:twoPhase-`**, the compiler doesn't require the keyword. In **`/permissive-`** conformance mode, code without the **`typename`** keyword generates errors. To migrate your code to conformance in Visual Studio 2017 version 15.3 and beyond, insert the **`typename`** keyword where it's missing.
 
 Similarly, consider this code sample:
 
diff --git a/docs/build/specifying-build-events.md b/docs/build/specifying-build-events.md
index 5490fb7090..25f79a1076 100644
--- a/docs/build/specifying-build-events.md
+++ b/docs/build/specifying-build-events.md
@@ -5,6 +5,7 @@ ms.date: "12/28/2017"
 f1_keywords: ["VC.Project.IVCEventTool.CommandLine", "VC.Project.IVCEventTool.ExcludedFromBuild", "VC.Project.IVCEventTool.Description"]
 helpviewer_keywords: ["Pre-Link event", "build events [C++], specifying", "custom build steps [C++], build events", "builds [C++], events", "events [C++], build", "builds [C++], customizing C++", "build events [C++]", "post-build events"]
 ms.assetid: 788a6c18-2dbe-4a49-8cd6-86c1ad7a95cc
+ms.topic: how-to
 ---
 # Specifying build events
 
diff --git a/docs/build/specifying-custom-build-tools.md b/docs/build/specifying-custom-build-tools.md
index 197908e3e4..251433fada 100644
--- a/docs/build/specifying-custom-build-tools.md
+++ b/docs/build/specifying-custom-build-tools.md
@@ -4,6 +4,7 @@ title: "Specifying Custom Build Tools"
 ms.date: "06/05/2018"
 f1_keywords: ["VC.Project.VCCustomBuildTool.CustomBuildToolBeforeTargets", "VC.Project.VCCustomBuildTool.Outputs", "VC.Project.VCCustomBuildTool.Command", "VC.Project.VCCustomBuildTool.CommandLine", "VC.Project.VCCustomBuildTool.AdditionalDependencies", "VC.Project.VCCustomBuildTool.Message", "VC.Project.VCCustomBuildTool.CustomBuildToolAfterTargets", "VC.Project.VCCustomBuildTool.Description", "VC.Project.VCCustomBuildTool.AdditionalInputs"]
 helpviewer_keywords: ["build tools (C++), specifying", "custom build tools (C++), specifying", "builds (C++), custom build tools"]
+ms.topic: how-to
 ---
 # Specify custom build tools
 
diff --git a/docs/build/toc.yml b/docs/build/toc.yml
index 0f5f89200a..b5614f10a7 100644
--- a/docs/build/toc.yml
+++ b/docs/build/toc.yml
@@ -9,7 +9,7 @@ items:
     - name: Set C++ compiler and build properties in Visual Studio
       expanded: false
       items: 
-        - name: Set C++ compiler and build properties in Visual Studio
+        - name: Set C++ compiler and build properties
           href: ../build/working-with-project-properties.md
         - name: Share or reuse Visual Studio project settings
           href: ../build/create-reusable-property-configurations.md
@@ -408,7 +408,7 @@ items:
             - name: Command line property pages
               href: ../build/reference/command-line-property-pages.md
             - name: NMake property page
-              href: ../build/reference/nmake-property-page.md                
+              href: ../build/reference/nmake-property-page.md
             - name: Manifest Tool property pages
               href: ../build/reference/manifest-tool-property-pages.md
             - name: Resources property pages
@@ -552,7 +552,7 @@ items:
                       href: ../build/reference/fp-name-dot-pch-file.md
                     - name: /FR, /Fr (Create .Sbr file)
                       href: ../build/reference/fr-fr-create-dot-sbr-file.md
-                    - name: /FU (Name forced
+                    - name: "/FU (Name forced #using file)"
                       href: ../build/reference/fu-name-forced-hash-using-file.md
                     - name: /Fx (Merge injected code)
                       href: ../build/reference/fx-merge-injected-code.md
@@ -562,6 +562,9 @@ items:
                   href: ../build/reference/fc-full-path-of-source-code-file-in-diagnostics.md
                 - name: /feature (Enable architecture features)
                   href: ../build/reference/feature-arm64.md
+                - name: /forceInterlockedFunctions (Generate and link with out-of-line atomic
+                    functions)
+                  href: ./reference/force-interlocked-functions.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)
@@ -1178,7 +1181,7 @@ items:
               href: ../build/reference/nmake-reference.md
             - name: NMAKE projects in Visual Studio
               href: ../build/reference/creating-a-makefile-project.md
-            - name: Running NMAKE 
+            - name: Running NMAKE
               href: ../build/reference/running-nmake.md
             - name: Makefile contents and features
               href: ../build/reference/contents-of-a-makefile.md
diff --git a/docs/build/troubleshooting-build-customizations.md b/docs/build/troubleshooting-build-customizations.md
index a7608815cf..f97a61e9d3 100644
--- a/docs/build/troubleshooting-build-customizations.md
+++ b/docs/build/troubleshooting-build-customizations.md
@@ -4,6 +4,7 @@ title: "Troubleshooting Build Customizations"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["build events [C++], troubleshooting", "builds [C++], build events", "troubleshooting [C++], builds", "build steps [C++], troubleshooting", "events [C++], build", "builds [C++], troubleshooting", "custom build steps [C++], troubleshooting"]
 ms.assetid: e4ceb177-fbee-4ed3-a7d7-80f0d78c1d07
+ms.topic: troubleshooting-general
 ---
 # Troubleshooting Build Customizations
 
diff --git a/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md b/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md
index cef9d627e6..e6b026bfba 100644
--- a/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md
+++ b/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md
@@ -4,6 +4,7 @@ title: "Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["troubleshooting side-by-side assemblies", "troubleshooting isolated applications", "troubleshooting Visual C++"]
 ms.assetid: 3257257a-1f0b-4ede-8564-9277a7113a35
+ms.topic: troubleshooting-general
 ---
 # Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies
 
diff --git a/docs/build/understanding-custom-build-steps-and-build-events.md b/docs/build/understanding-custom-build-steps-and-build-events.md
index e468fb7224..7827264c81 100644
--- a/docs/build/understanding-custom-build-steps-and-build-events.md
+++ b/docs/build/understanding-custom-build-steps-and-build-events.md
@@ -4,6 +4,7 @@ title: "Understanding Custom Build Steps and Build Events"
 ms.date: "08/29/2019"
 helpviewer_keywords: ["builds [C++], events", "custom build steps [C++], customizing builds", "events [C++], build", "custom build steps [C++]", "build steps [C++]", "build events [C++], order of events and build steps", "build steps [C++], build events", "builds [C++], custom build steps"]
 ms.assetid: beb2f017-3e9f-4b2c-9b57-2572fd2628e4
+ms.topic: how-to
 ---
 # Understanding Custom Build Steps and Build Events
 
diff --git a/docs/build/understanding-manifest-generation-for-c-cpp-programs.md b/docs/build/understanding-manifest-generation-for-c-cpp-programs.md
index 9caa982097..c0bc39deb7 100644
--- a/docs/build/understanding-manifest-generation-for-c-cpp-programs.md
+++ b/docs/build/understanding-manifest-generation-for-c-cpp-programs.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Understanding manifest generation for C/C++ programs"
 title: "Understanding manifest generation for C/C++ programs"
+description: "Learn more about: Understanding manifest generation for C/C++ programs"
 ms.date: 06/10/2022
 helpviewer_keywords: ["manifests [C++]"]
-ms.assetid: a1f24221-5b09-4824-be48-92eae5644b53
+ms.topic: how-to
 ---
 # Understanding manifest generation for C/C++ programs
 
@@ -181,7 +181,7 @@ clean :
 #^^^^^^^^^^^^^^^^^^^^^^^^^ Change #4. (Add full path if necessary.)
 ```
 
-The makefiles now include two files that do the real work,*` makefile.inc`* and *`makefile.target.inc`*.
+The makefiles now include two files that do the real work, *`makefile.inc`* and *`makefile.target.inc`*.
 
 Create *`makefile.inc`* and copy the following content into it:
 
diff --git a/docs/build/using-database-ole-and-sockets-extension-dlls-in-regular-dlls.md b/docs/build/using-database-ole-and-sockets-extension-dlls-in-regular-dlls.md
index 72f1bb24f2..08d3cbd88f 100644
--- a/docs/build/using-database-ole-and-sockets-extension-dlls-in-regular-dlls.md
+++ b/docs/build/using-database-ole-and-sockets-extension-dlls-in-regular-dlls.md
@@ -3,6 +3,7 @@ title: "Using Database, OLE, and Sockets MFC extension DLLs in regular MFC DLLs"
 description: "Shows how to use the Database, OLE, and Sockets MFC extension DLLs in regular MFC DLLs."
 ms.date: 11/30/2020
 helpviewer_keywords: ["DLLs [C++], initializing", "DLLs [C++], extension", "DLLs [C++], regular"]
+ms.topic: concept-article
 ---
 # Using Database, OLE, and Sockets MFC extension DLLs in regular MFC DLLs
 
diff --git a/docs/build/using-function-name-without-parens-produces-no-code.md b/docs/build/using-function-name-without-parens-produces-no-code.md
index 29d218d3c2..8b08e80798 100644
--- a/docs/build/using-function-name-without-parens-produces-no-code.md
+++ b/docs/build/using-function-name-without-parens-produces-no-code.md
@@ -4,6 +4,7 @@ title: "Using Function Name Without () Produces No Code"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["functions [C++], without parentheses"]
 ms.assetid: edf4a177-a160-44aa-8436-e077b5b27809
+ms.topic: concept-article
 ---
 # Using Function Name Without () Produces No Code
 
diff --git a/docs/build/using-the-debug-build-to-check-for-memory-overwrite.md b/docs/build/using-the-debug-build-to-check-for-memory-overwrite.md
index d7d9400345..36aae3bdec 100644
--- a/docs/build/using-the-debug-build-to-check-for-memory-overwrite.md
+++ b/docs/build/using-the-debug-build-to-check-for-memory-overwrite.md
@@ -4,6 +4,7 @@ title: "Using the Debug Build to Check for Memory Overwrite"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["memory, overwrites"]
 ms.assetid: 1345eb4d-24ba-4595-b1cc-2da66986311e
+ms.topic: how-to
 ---
 # Using the Debug Build to Check for Memory Overwrite
 
diff --git a/docs/build/using-verify-instead-of-assert.md b/docs/build/using-verify-instead-of-assert.md
index 225a1f9d07..f9e9350bc0 100644
--- a/docs/build/using-verify-instead-of-assert.md
+++ b/docs/build/using-verify-instead-of-assert.md
@@ -4,6 +4,7 @@ title: "Using VERIFY Instead of ASSERT"
 ms.date: "05/06/2019"
 helpviewer_keywords: ["ASSERT statements", "debugging [MFC], ASSERT statements", "VERIFY macro", "assertions, troubleshooting ASSERT statements", "debugging assertions", "assertions, debugging"]
 ms.assetid: 4c46397b-3fb1-49c1-a09b-41a72fae3797
+ms.topic: concept-article
 ---
 # Using VERIFY Instead of ASSERT
 
diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md
index 59fc3131c8..5ce61195dc 100644
--- a/docs/build/vscpp-step-0-installation.md
+++ b/docs/build/vscpp-step-0-installation.md
@@ -1,29 +1,32 @@
 ---
 title: Install C and C++ support in Visual Studio
-description: "Learn how to install Visual Studio with support for Microsoft C/C++ and related workloads."
-ms.custom: vs-acquisition, intro-installation
-ms.date: 11/08/2021
-ms.topic: "tutorial"
+description: "Learn how to install Visual Studio with support for Microsoft C and C++ and related workloads."
+ms.date: 03/18/2025
+ms.topic: tutorial
 ms.devlang: "cpp"
+ms.custom:
+  - vs-acquisition
+  - intro-installation
+  - sfi-image-nochange
 ---
 # Install C and C++ support in Visual Studio
 
-If you haven't downloaded and installed Visual Studio and the Microsoft C/C++ tools yet, here's how to get started.
+If you haven't installed Visual Studio and the Microsoft C and C++ tools yet, here's how to get started.
 
 ::: moniker range="msvc-170"
 
-## Visual Studio 2022 Installation
+## Visual Studio 2022 installation
 
-Welcome to Visual Studio 2022! In this version, it's easy to choose and install just the features you need. And because of its reduced minimum footprint, it installs quickly and with less system impact.
+Welcome to Visual Studio 2022! In this version, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact.
 
 > [!NOTE]
-> This topic applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com/) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, auto-completion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/).
+> This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/).
 
-Want to know more about what else is new in this version? See the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/).
+To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/).
 
-Ready to install? We walk you through it, step-by-step.
+Ready to install? Use the following step-by-step guide.
 
-### Step 1 - Make sure your computer is ready for Visual Studio
+### Step 1 - Prepare your computer for Visual Studio
 
 Before you begin installing Visual Studio:
 
@@ -31,28 +34,27 @@ Before you begin installing Visual Studio:
 
 1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio.
 
-1. Reboot. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install.
+1. Reboot your computer. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install.
 
-1. Free up space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app.
+1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app.
 
 For questions about running previous versions of Visual Studio side by side with Visual Studio 2022, see the [Visual Studio 2022 Platform Targeting and Compatibility](/visualstudio/releases/2022/compatibility/) page.
 
 ### Step 2 - Download Visual Studio
 
-Next, download the Visual Studio bootstrapper file. To do so, choose the following button to go to the Visual Studio download page. Select the edition of Visual Studio that you want and choose the **Free trial** or **Free download** button.
+Select the following button to go to the Visual Studio download page, and download the Visual Studio bootstrapper file. Select the edition of Visual Studio that you want and choose the **Free trial** or **Free download** button.
 
- > [!div class="button"]
- > [Download Visual Studio](https://visualstudio.microsoft.com/downloads/)
+> [!div class="button"]
+> [Download Visual Studio](https://visualstudio.microsoft.com/downloads/)
 
-### Step 3 - Install the Visual Studio installer
+>[!TIP]
+> The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio 2022 Professional or Visual Studio 2022 Enterprise.
 
-Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio.
+### Step 3 - Install the Visual Studio Installer
 
-1. From your **Downloads** folder, double-click the bootstrapper that matches or is similar to one of the following files:
+Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio.
 
-   - **vs_community.exe** for Visual Studio Community
-   - **vs_professional.exe** for Visual Studio Professional
-   - **vs_enterprise.exe** for Visual Studio Enterprise
+1. From your *Downloads* folder, double-click the bootstrapper file called *VisualStudioSetup.exe*.
 
    If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run.
 
@@ -60,40 +62,40 @@ Run the bootstrapper file you downloaded to install the Visual Studio Installer.
 
 ### Step 4 - Choose workloads
 
-After the installer is installed, you can use it to customize your installation by selecting the *workloads*, or feature sets, that you want. Here's how.
+You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want.
 
 1. Find the workload you want in the **Installing Visual Studio** screen.
 
-   :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Visual studio installer with the Desktop development with C++ workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png":::
-
-   For core C and C++ support, choose the "Desktop development with C++" workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control.
+   :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2022 installer with the Desktop development with C plus plus workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png":::
 
-   Other workloads support more kinds of development. For example, choose the "Universal Windows Platform development" workload to create apps that use the Windows Runtime for the Microsoft Store. Choose "Game development with C++" to create games that use DirectX, Unreal, and Cocos2d. Choose "Linux development with C++" to target Linux platforms, including IoT development.
+   For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for more than 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control.
 
    The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more.
 
-1. After you choose the workload(s) and optional components you want, choose **Install**.
+   Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, or Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development.
+
+1. After you choose the workloads and optional components you want, choose **Install**.
 
    Next, status screens appear that show the progress of your Visual Studio installation.
 
 > [!TIP]
 > At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**.
 
-### Step 5 - Choose individual components (Optional)
+### Step 5 - Choose individual components (optional)
 
 If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts.
 
-### Step 6 - Install language packs (Optional)
+### Step 6 - Install language packs (optional)
 
 By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts.
 
-   :::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view and the languages you can choose from like English, Spanish, Chinese (simplified or traditional), and more." lightbox="../get-started/media/vs-installer-language-packs.png":::
+   :::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view and the languages you can choose from like English, Spanish, Chinese (simplified or traditional)." lightbox="../get-started/media/vs-installer-language-packs.png":::
 
 #### Change the installer language from the command line
 
-Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr.
+Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer remembers this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr.
 
-### Step 7 - Change the installation location (Optional)
+### Step 7 - Change the installation location (optional)
 
 You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest.
 
@@ -106,9 +108,9 @@ You can reduce the installation footprint of Visual Studio on your system drive.
 
 1. On the start window, choose **Create a new project**.
 
-1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workload(s) that you chose during installation. To see different templates, choose different workloads.
+1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads.
 
-   You can also filter your search for a specific programming language by using the **Language** drop-down list. You can filter by using the **Platform** list and the **Project type** list, too.
+   You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too.
 
 1. Visual Studio opens your new project, and you're ready to code!
 
@@ -116,18 +118,18 @@ You can reduce the installation footprint of Visual Studio on your system drive.
 
 ::: moniker range="msvc-160"
 
-## Visual Studio 2019 Installation
+## Visual Studio 2019 installation
 
-Welcome to Visual Studio 2019! In this version, it's easy to choose and install just the features you need. And because of its reduced minimum footprint, it installs quickly and with less system impact.
+Welcome to Visual Studio 2019! In this version, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact.
 
 > [!NOTE]
-> This topic applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com/) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, auto-completion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/).
+> This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/).
 
-Want to know more about what else is new in this version? See the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/).
+To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/).
 
-Ready to install? We walk you through it, step-by-step.
+Ready to install? Use the following step-by-step guide.
 
-### Step 1 - Make sure your computer is ready for Visual Studio
+### Step 1 - Prepare your computer for Visual Studio
 
 Before you begin installing Visual Studio:
 
@@ -135,28 +137,24 @@ Before you begin installing Visual Studio:
 
 1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio.
 
-1. Reboot. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install.
+1. Reboot your computer. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install.
 
-1. Free up space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app.
+1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app.
 
 For questions about running previous versions of Visual Studio side by side with Visual Studio 2019, see the [Visual Studio 2019 Platform Targeting and Compatibility](/visualstudio/releases/2019/compatibility/) page.
 
 ### Step 2 - Download Visual Studio
 
-Next, download the Visual Studio bootstrapper file. To do so, choose the following button to go to the Visual Studio download page. Choose the Download button, then you can select the edition of Visual Studio that you want.
+Select the following button to go to the Visual Studio older downloads page, and download the Visual Studio 2019 bootstrapper file.
 
  > [!div class="button"]
  > [Download Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products)
 
-### Step 3 - Install the Visual Studio installer
+### Step 3 - Install the Visual Studio Installer
 
 Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio.
 
-1. From your **Downloads** folder, double-click the bootstrapper that matches or is similar to one of the following files:
-
-   - **vs_community.exe** for Visual Studio Community
-   - **vs_professional.exe** for Visual Studio Professional
-   - **vs_enterprise.exe** for Visual Studio Enterprise
+1. From your *Downloads* folder, double-click the bootstrapper file.
 
    If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run.
 
@@ -164,46 +162,46 @@ Run the bootstrapper file you downloaded to install the Visual Studio Installer.
 
 ### Step 4 - Choose workloads
 
-After the installer is installed, you can use it to customize your installation by selecting the *workloads*, or feature sets, that you want. Here's how.
+You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want.
 
 1. Find the workload you want in the **Installing Visual Studio** screen.
 
-   ![Visual Studio 2019: Install a workload.](../get-started/media/vs-installer-workloads.png)
+   :::image type="content" source="../get-started/media/vs-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2019 installer." lightbox="../get-started/media/vs-installer-workloads.png":::
 
-   For core C and C++ support, choose the "Desktop development with C++" workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control.
-
-   Other workloads support more kinds of development. For example, choose the "Universal Windows Platform development" workload to create apps that use the Windows Runtime for the Microsoft Store. Choose "Game development with C++" to create games that use DirectX, Unreal, and Cocos2d. Choose "Linux development with C++" to target Linux platforms, including IoT development.
+   For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control.
 
    The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more.
 
-1. After you choose the workload(s) and optional components you want, choose **Install**.
+   Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, and Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development.
+
+1. After you choose the workloads and optional components you want, choose **Install**.
 
    Next, status screens appear that show the progress of your Visual Studio installation.
 
 > [!TIP]
 > At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**.
 
-### Step 5 - Choose individual components (Optional)
+### Step 5 - Choose individual components (optional)
 
-If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts.
+If you don't want to use the Workloads feature to customize your Visual Studio installation, or if you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts.
 
-  ![Screenshot of the Visual Studio Installer, showing the Install individual components tab view.](../get-started/media/vs-installer-individual-components.png "Install Visual Studio individual components")
+:::image type="content" source="../get-started/media/vs-installer-individual-components.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install individual components tab view." lightbox="../get-started/media/vs-installer-individual-components.png":::
 
-### Step 6 - Install language packs (Optional)
+### Step 6 - Install language packs (optional)
 
 By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts.
 
-  ![Screenshot of the Visual Studio Installer, showing the Install language packs tab view.](../get-started/media/vs-installer-language-packs.png "Install Visual Studio language packs")
+:::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view." lightbox="../get-started/media/vs-installer-language-packs.png":::
 
 #### Change the installer language from the command line
 
 Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr.
 
-### Step 7 - Change the installation location (Optional)
+### Step 7 - Change the installation location (optional)
 
 You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest.
 
-  ![Screenshot of the Visual Studio Installer, showing the installation locations tab view.](../get-started/media/vs-installer-installation-locations.png "Change the installation location")
+:::image type="content" source="../get-started/media/vs-installer-installation-locations.png" alt-text="Screenshot of the Visual Studio Installer, showing the installation locations tab view." lightbox="../get-started/media/vs-installer-installation-locations.png":::
 
 > [!IMPORTANT]
 > You can select a different drive only when you first install Visual Studio. If you've already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it.
@@ -214,9 +212,9 @@ You can reduce the installation footprint of Visual Studio on your system drive.
 
 1. On the start window, choose **Create a new project**.
 
-1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workload(s) that you chose during installation. To see different templates, choose different workloads.
+1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads.
 
-   You can also filter your search for a specific programming language by using the **Language** drop-down list. You can filter by using the **Platform** list and the **Project type** list, too.
+   You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too.
 
 1. Visual Studio opens your new project, and you're ready to code!
 
@@ -224,14 +222,12 @@ You can reduce the installation footprint of Visual Studio on your system drive.
 
 ::: moniker range="msvc-150"
 
-## Visual Studio 2017 Installation
+## Visual Studio 2017 installation
 
-In Visual Studio 2017, it's easy to choose and install just the features you need. And because of its reduced minimum footprint, it installs quickly and with less system impact.
+In Visual Studio 2017, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, it installs quickly and with less system impact.
 
 ### Prerequisites
 
-- A broadband internet connection. The Visual Studio installer can download several gigabytes of data.
-
 - A computer that runs Microsoft Windows 7 or later versions. We recommend the latest version of Windows for the best development experience. Make sure that the latest updates are applied to your system before you install Visual Studio.
 
 - Enough free disk space. Visual Studio requires at least 7 GB of disk space, and can take 50 GB or more if many common options are installed. We recommend you install it on your C: drive.
@@ -240,36 +236,29 @@ For details on the disk space and operating system requirements, see [Visual Stu
 
 ### Download and install
 
-1. To download the latest Visual Studio 2017 installer for Windows, go to the Microsoft Visual Studio [Older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products) page. Expand the **2017** section, and choose the **Download** button.
+1. To download the Visual Studio 2017 installer for Windows, go to the Visual Studio [older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products) page. Expand the **2017** section, and choose the **Download** button.
 
-   >[!Tip]
-   > The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio 2017 Professional or Visual Studio 2017 Enterprise.
+1. Find the installer file you downloaded and run it. The downloaded file might be displayed in your browser, or you might find it in your *Downloads* folder. The installer needs Administrator privileges to run. You might see a **User Account Control** dialog asking you to give permission to let the installer make changes to your system; choose **Yes**. If you're having trouble, find the downloaded file in File Explorer, right-click on the installer icon, and choose **Run as Administrator** from the context menu.
 
-1. Find the installer file you downloaded and run it. The downloaded file might be displayed in your browser, or you might find it in your Downloads folder. The installer needs Administrator privileges to run. You might see a **User Account Control** dialog asking you to give permission to let the installer make changes to your system; choose **Yes**. If you're having trouble, find the downloaded file in File Explorer, right-click on the installer icon, and choose **Run as Administrator** from the context menu.
-
-   ![What you see when you download and install the Visual Studio Installer.](media/vscpp-concierge-run-installer.gif "Download and install the Visual Studio Installer")
+   :::image type="content" source="media/vscpp-concierge-run-installer.gif" alt-text="Animation that shows the Visual Studio Installer.":::
 
 1. The installer presents you with a list of workloads, which are groups of related options for specific development areas. Support for C++ is now part of optional workloads that aren't installed by default.
 
-   ![Detail showing the Desktop development with C++ workload.](media/desktop-development-with-cpp.png "Desktop development with C++")
+   :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot showing the Desktop development with C plus plus workload.":::
 
    For C and C++, select the **Desktop development with C++** workload and then choose **Install**.
 
-   ![What you see when you select the Desktop development with C++ workload then choose the Install button.](media/vscpp-concierge-choose-workload.gif "Install the Desktop development with C++ workload")
+   :::image type="content" source="media/vscpp-concierge-choose-workload.gif" alt-text="Animation that shows the Desktop development with C plus plus workload then choose the Install button.":::
 
 1. When the installation completes, choose the **Launch** button to start Visual Studio.
 
    The first time you run Visual Studio, you're asked to sign in with a Microsoft Account. If you don't have one, you can create one for free. You must also choose a theme. Don't worry, you can change it later if you want to.
 
-   It might take Visual Studio several minutes to get ready for use the first time you run it. Here's what it looks like in a quick time-lapse:
-
-   ![Visual Studio sign in dialog.](media/vscpp-quickstart-first-run.gif "Visual Studio 2017 sign in")
-
-   Visual Studio starts faster when you run it again.
+   It might take Visual Studio several minutes to get ready for use the first time you run it.
 
 1. When Visual Studio opens, check to see if the flag icon in the title bar is highlighted:
 
-   ![Visual Studio notification flag.](media/vscpp-first-start-page-flag.png "Visual Studio 2017 notification flag")
+   :::image type="content" source="media/vscpp-first-start-page-flag.png" alt-text="Screenshot of the Visual Studio notification flag.":::
 
    If it's highlighted, select it to open the **Notifications** window. If there are any updates available for Visual Studio, we recommend you install them now. Once the installation is complete, restart Visual Studio.
 
@@ -277,9 +266,9 @@ For details on the disk space and operating system requirements, see [Visual Stu
 
 ::: moniker range="<msvc-150"
 
-## Visual Studio 2015 Installation
+## Visual Studio 2015 installation
 
-To install Visual Studio 2015, go to the Microsoft Visual Studio [Older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2015-and-other-products) page. Expand the **2015** section, and choose the **Download** button. Run the downloaded setup program and choose **Custom installation** and then choose the C++ component. To add C and C++ support to an existing Visual Studio 2015 installation, click on the Windows Start button and type **Add Remove Programs**. Open the program from the results list and then find your Visual Studio 2015 installation in the list of installed programs. Double-click it, then choose **Modify** and select the Visual C++ components to install.
+To install Visual Studio 2015, go to the Visual Studio [older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2015-and-other-products) page. Expand the **2015** section, and choose the **Download** button. Run the downloaded setup program and choose **Custom installation** and then choose the C++ component. To add C and C++ support to an existing Visual Studio 2015 installation, select on the Windows Start button and type **Add Remove Programs**. Open the program from the results list and then find your Visual Studio 2015 installation in the list of installed programs. Double-click it, then choose **Modify** and select the Visual C++ components to install.
 
 In general, we highly recommend that you use the latest version of Visual Studio even if you need to compile your code using the Visual Studio 2015 compiler. For more information, see [Use native multi-targeting in Visual Studio to build old projects](../porting/use-native-multi-targeting.md).
 
@@ -287,7 +276,7 @@ In general, we highly recommend that you use the latest version of Visual Studio
 
 When Visual Studio is running, you're ready to continue to the next step.
 
-## Next Steps
+## Next step
 
 > [!div class="nextstepaction"]
-> [Create a C++ project](vscpp-step-1-create.md)
+> [Create a C++ console app project](vscpp-step-1-create.md)
diff --git a/docs/build/vscpp-step-1-create.md b/docs/build/vscpp-step-1-create.md
index f3a3546d39..1337c29d01 100644
--- a/docs/build/vscpp-step-1-create.md
+++ b/docs/build/vscpp-step-1-create.md
@@ -1,9 +1,11 @@
 ---
 title: Create a C++ console app project
 description: "Create a Hello World console app using Microsoft C++ in Visual Studio."
-ms.custom: "mvc"
 ms.date: 07/05/2023
 ms.topic: "tutorial"
+ms.custom:
+  - "mvc"
+  - sfi-image-nochange
 ---
 # Create a C++ console app project
 
@@ -81,7 +83,7 @@ Visual Studio now knows to build your project to run in a console window. Next,
 
    ![View of the process to add a source file for HelloWorld.cpp.](media/vscpp-add-new-item.gif "Add a source file for HelloWorld.cpp")
 
-Visual studio creates a new, empty source code file and opens it in an editor window, ready to enter your source code.
+Visual Studio creates a new, empty source code file and opens it in an editor window, ready to enter your source code.
 
 [I ran into a problem.](#add-a-source-code-file-issues)
 
diff --git a/docs/build/vscpp-step-2-build.md b/docs/build/vscpp-step-2-build.md
index d2ce5e0b51..e708ea80e0 100644
--- a/docs/build/vscpp-step-2-build.md
+++ b/docs/build/vscpp-step-2-build.md
@@ -88,7 +88,7 @@ If red squiggles appear under anything in the source code editor, the build may
 
 ::: moniker range="<msvc-170"
 
-If the path shown in File Explorer ends in `\HelloWorld\HelloWorld`, you opened the HelloWorld *project* instead of the HelloWorld *solution*. You won't see your app in th `Debug` folder. Navigate up a level in File Explorer to get to the solution folder, the first *HelloWorld* in the path. This folder also contains a `Debug` folder, where your app is.
+If the path shown in File Explorer ends in `\HelloWorld\HelloWorld`, you opened the HelloWorld *project* instead of the HelloWorld *solution*. You won't see your app in the `Debug` folder. Navigate up a level in File Explorer to get to the solution folder, the first *HelloWorld* in the path. This folder also contains a `Debug` folder, where your app is.
 
 You can also navigate to the solution `Debug` folder at the command line to run your app. Your app won't run from other directories without specifying the path to the app. However, you can copy your app to another directory and run it from there. It's also possible to copy it to a directory specified by your `PATH` environment variable, then run it from anywhere.
 
diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
index 1edfba8ac3..16e71d6fea 100644
--- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
+++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
@@ -1,37 +1,37 @@
 ---
-title: "Walkthrough: Compile a C program on the command line"
-description: "Walkthrough that shows how to create a Hello World C program."
-ms.custom: "conceptual"
-ms.date: 05/09/2022
+title: "Compile a C Program on the Command Line"
+description: "Learn how to create a Hello World C program by using a text editor, and then compile it by using the command line compiler."
+ms.custom: tutorial
+ms.date: 03/17/2025
 helpviewer_keywords: ["command-line applications [C++], C programs", "Visual C, compiling", "compiling programs [C++]", "C program compiling [C++]"]
 ms.assetid: 7e74cc2d-54b1-49de-b7ad-d3ae6b39ab8d
+ms.topic: how-to
 ---
 # Walkthrough: Compile a C program on the command line
 
-The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows Desktop applications, mobile apps, and more. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17.
+The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows desktop applications and mobile apps. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17.
 
-This walkthrough shows how to create a basic, "Hello, World"-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md).
+This guide explains how to create a basic *Hello, World*-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md).
 
 ## Prerequisites
 
-To complete this walkthrough, you must have installed either Visual Studio or the Build Tools for Visual Studio and the optional Desktop development with C++ workload.
+- Either **Visual Studio** or the **build tools for Visual Studio**, and the **Desktop development with C++** workload
+  - Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio).
+  - The build tools for Visual Studio install only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download build tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**.
 
-Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio).
-
-The Build Tools for Visual Studio version of Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**.
-
-When you've installed the tools, there's another tool you'll use to build a C or C++ program on the command line. MSVC has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use MSVC in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual Studio installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use.
+- **MSVC compiler**
+  - MSVC has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use MSVC in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual Studio installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use.
 
 > [!NOTE]
 > A developer command prompt shortcut automatically sets the correct paths for the compiler and tools, and for any required headers and libraries. Some of these values are different for each build configuration. You must set these environment values yourself if you don't use one of the shortcuts. For more information, see [Use the MSVC toolset from the command line](./building-on-the-command-line.md). Because the build environment is complex, we strongly recommend you use a developer command prompt shortcut instead of building your own.
 
-These instructions vary depending on which version of Visual Studio you're using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's found at the top of the table of contents on this page.
+These instructions vary depending on which version of Visual Studio you're using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page.
 
 ::: moniker range="msvc-170"
 
 ## Open a developer command prompt in Visual Studio 2022
 
-If you've installed Visual Studio 2022 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2022** folder (not the Visual Studio 2022 app). Choose **Developer Command Prompt for VS 2022** to open the command prompt window.
+If you installed Visual Studio 2022 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2022** folder (not the Visual Studio 2022 app). Choose **Developer Command Prompt for VS 2022** to open the command prompt window.
 
 ::: moniker-end
 
@@ -39,7 +39,7 @@ If you've installed Visual Studio 2022 on Windows 10 or later, open the Start me
 
 ## Open a developer command prompt in Visual Studio 2019
 
-If you've installed Visual Studio 2019 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2019** folder (not the Visual Studio 2019 app). Choose **Developer Command Prompt for VS 2019** to open the command prompt window.
+If you installed Visual Studio 2019 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2019** folder (not the Visual Studio 2019 app). Choose **Developer Command Prompt for VS 2019** to open the command prompt window.
 
 ::: moniker-end
 
@@ -47,7 +47,7 @@ If you've installed Visual Studio 2019 on Windows 10 or later, open the Start me
 
 ## Open a developer command prompt in Visual Studio 2017
 
-If you've installed Visual Studio 2017 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2017** folder (not the Visual Studio 2017 app). Choose **Developer Command Prompt for VS 2017** to open the command prompt window.
+If you installed Visual Studio 2017 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2017** folder (not the Visual Studio 2017 app). Choose **Developer Command Prompt for VS 2017** to open the command prompt window.
 
 ::: moniker-end
 
@@ -55,11 +55,11 @@ If you've installed Visual Studio 2017 on Windows 10 or later, open the Start me
 
 ## Open a developer command prompt in Visual Studio 2015
 
-If you've installed Microsoft Visual C++ Build Tools 2015 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual C++ Build Tools** folder. Choose **Visual C++ 2015 x86 Native Tools Command Prompt** to open the command prompt window.
+If you installed Microsoft Visual C++ Build Tools 2015 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual C++ Build Tools** folder. Choose **Visual C++ 2015 x86 Native Tools Command Prompt** to open the command prompt window.
 
 ::: moniker-end
 
-If you're using a different version of Windows, look in your Start menu or Start page for a Visual Studio tools folder that contains a developer command prompt shortcut. You can also use the Windows search function to search for "developer command prompt" and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window.
+If you're using a different version of Windows, look in your Start menu or Start page for a Visual Studio tools folder that contains a developer command prompt shortcut. You can also use the Windows search function to search for *developer command prompt* and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window.
 
 Next, verify that the developer command prompt is set up correctly. In the command prompt window, enter `cl` (or `CL`, case doesn't matter for the compiler name, but it does matter for compiler options). The output should look something like this:
 
@@ -71,19 +71,19 @@ Copyright (C) Microsoft Corporation.  All rights reserved.
 usage: cl [ option... ] filename... [ /link linkoption... ]
 ```
 
-There may be differences in the current directory or version numbers, depending on the version of Visual Studio and any updates installed. If the above output is similar to what you see, then you're ready to build C or C++ programs at the command line.
+There might be differences in the current directory or version numbers, depending on the version of Visual Studio and any updates installed. If the preceding output is similar to what you see, then you're ready to build C or C++ programs at the command line.
 
 > [!NOTE]
-> If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **cl** command, then either you are not using a developer command prompt, or something is wrong with your installation of Visual Studio. You must fix this issue before you can continue.
+> If you get an error such as **'cl' is not recognized as an internal or external command, operable program or batch file**, error C1034, or error LNK1104 when you run the `cl` command, then either you're not using a developer command prompt, or something is wrong with your installation of Visual Studio. You must fix this issue before you can continue.
 
-If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation may have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the Build Tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio).
+If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation might have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the build tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio).
 
 > [!NOTE]
-> Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as Administrator** to successfully build and run the program that you create by following this walkthrough.
+> Depending on the version of Windows on the computer and the system security configuration, you might need to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as Administrator** to successfully build and run the program that you create by following this walkthrough.
 
 ## Create a C source file and compile it on the command line
 
-1. In the developer command prompt window, enter `cd c:\` to change the current working directory to the root of your C: drive. Next, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory will hold your source file and the compiled program.
+1. In the developer command prompt window, enter `cd c:\` to change the current working directory to the root of your C: drive. Next, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory holds your source file and the compiled program.
 
 1. Enter `notepad hello.c` at the developer command prompt. In the Notepad alert dialog that pops up, choose **Yes** to create a new *`hello.c`* file in your working directory.
 
@@ -122,7 +122,7 @@ If you can't find the developer command prompt shortcut, or if you get an error
 
 1. To compile your program, enter `cl hello.c` at the developer command prompt.
 
-   You can see the executable program name, hello.exe, in the lines of output information that the compiler displays:
+   You can see the executable program name, *`hello.exe`*, in the lines of output information that the compiler displays:
 
     ```Output
     c:\hello>cl hello.c
@@ -138,7 +138,7 @@ If you can't find the developer command prompt shortcut, or if you get an error
     ```
 
    > [!NOTE]
-   > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104, your developer command prompt is not set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section.
+   > If you get an error such as **'cl' is not recognized as an internal or external command, operable program or batch file,** error C1034, or error LNK1104, your developer command prompt isn't set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section.
    >
    > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box at the top of this page to look for the error number.
 
@@ -152,9 +152,9 @@ If you can't find the developer command prompt shortcut, or if you get an error
 
    Congratulations, you've compiled and run a C program by using the command line.
 
-## Next steps
+## Advanced steps
 
-This "Hello, World" example is about as basic as a C program can get. Real world programs have header files and more source files, link in libraries, and do useful work.
+This *Hello, World* example is about as basic as a C program can get. Real-world programs have header files and more source files, link in libraries, and do useful work.
 
 You can use the steps in this walkthrough to build your own C code instead of typing the sample code shown. You can also build many C code sample programs that you find elsewhere. To compile a program that has more source code files, enter them all on the command line:
 
@@ -164,23 +164,23 @@ The compiler outputs a program called *`file1.exe`*. To change the name to *`pro
 
 `cl file1.c file2.c file3.c /link /out:program1.exe`
 
-And to catch more programming mistakes automatically, we recommend you compile by using either the [/W3](reference/compiler-option-warning-level.md) or [/W4](reference/compiler-option-warning-level.md) warning level option:
+And to catch more programming mistakes automatically, we recommend you compile by using either the [/W3 or /W4](reference/compiler-option-warning-level.md) warning level option:
 
 `cl /W4 file1.c file2.c file3.c /link /out:program1.exe`
 
-The compiler, cl.exe, has many more options you can apply to build, optimize, debug, and analyze your code. For a quick list, enter `cl /?` at the developer command prompt. You can also compile and link separately and apply linker options in more complex build scenarios. For more information on compiler and linker options and usage, see  [C/C++ Building Reference](reference/c-cpp-building-reference.md).
+The compiler, *`cl.exe`*, has many more options you can apply to build, optimize, debug, and analyze your code. For a quick list, enter `cl /?` at the developer command prompt. You can also compile and link separately and apply linker options in more complex build scenarios. For more information on compiler and linker options and usage, see [C/C++ Building Reference](reference/c-cpp-building-reference.md).
 
 You can use NMAKE and makefiles, or MSBuild and project files to configure and build more complex projects on the command line. For more information on using these tools, see [NMAKE Reference](reference/nmake-reference.md) and [MSBuild](msbuild-visual-cpp.md).
 
-The C and C++ languages are similar, but not the same. The Microsoft C/C++ compiler (MSVC) uses a basic rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in *`.c`* as C source code, and all files that end in *`.cpp`* as C++ source code. To force the compiler to treat all files as C no matter the file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option.
+The C and C++ languages are similar, but not the same. The MSVC compiler uses a basic rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in *`.c`* as C source code, and all files that end in *`.cpp`* as C++ source code. To force the compiler to treat all files as C no matter the file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option.
 
-By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code will compile and run as expected. The compiler provides optional support for the changes in ISO C11/C17. To compile with C11/C17 support, use the compiler flag **`/std:c11`** or **`/std:c17`**. C11/C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md).
+By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code compiles and runs as expected. The compiler provides optional support for the changes in ISO C11 and C17. To compile with C11 and C17 support, use the compiler flag `/std:c11` or `/std:c17`. C11 and C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md).
 
 Certain library functions and POSIX function names are deprecated by MSVC. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md).
 
 ## See also
 
-[Walkthrough: Creating a Standard C++ Program (C++)](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md)\
-[C Language Reference](../c-language/c-language-reference.md)\
-[Projects and build systems](projects-and-build-systems-cpp.md)\
-[Compatibility](../c-runtime-library/compatibility.md)
+- [Walkthrough: Create a Standard C++ Program](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md)
+- [C Language Reference](../c-language/c-language-reference.md)
+- [C/C++ projects and build systems](projects-and-build-systems-cpp.md)
+- [Compatibility](../c-runtime-library/compatibility.md)
diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
index ed1941b880..e777914ccd 100644
--- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
+++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
@@ -1,59 +1,56 @@
 ---
-title: "Walkthrough: Create and use your own Dynamic Link Library (C++)"
-description: "Use C++ to create a Windows dynamic-link library (DLL) in Visual Studio."
+title: "Create and Use Your Own Dynamic-Link Library (C++)"
+description: "Learn how to use C++ to create a Windows dynamic-link library (DLL) in Visual Studio."
 ms.topic: tutorial
-ms.date: 12/09/2021
+ms.date: 03/17/2025
 helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"]
+ms.custom: sfi-image-nochange
 ---
-# Walkthrough: Create and use your own Dynamic Link Library (C++)
+# Walkthrough: Create and use your own dynamic-link library (C++)
 
-This step-by-step walkthrough shows how to use the Visual Studio IDE to create your own dynamic link library (DLL) written in Microsoft C++ (MSVC). Then it shows how to use the DLL from another C++ app. DLLs (also known as *shared libraries* in UNIX-based operating systems) are one of the most useful kinds of Windows components. You can use them as a way to share code and resources, and to shrink the size of your apps. DLLs can even make it easier to service and extend your apps.
+This step-by-step walkthrough explains how to use the Visual Studio IDE to create your own dynamic-link library (DLL) written in Microsoft C++ (MSVC), and how to use the DLL from another C++ app. DLLs, also known as *shared libraries* in UNIX-based operating systems, are one of the most useful kinds of Windows components. You can use them to share code and resources, and to shrink the size of your apps. DLLs can even make it easier to service and extend your apps.
 
-In this walkthrough, you'll create a DLL that implements some math functions. Then you'll create a console app that uses the functions from the DLL. You'll also get an introduction to some of the programming techniques and conventions used in Windows DLLs.
+In this walkthrough, you create a DLL that implements some math functions. Then you create a console app that uses the functions from the DLL. You also get an introduction to some of the programming techniques and conventions used in Windows DLLs.
 
-This walkthrough covers these tasks:
+This walkthrough covers the following steps:
 
 - Create a DLL project in Visual Studio.
-
 - Add exported functions and variables to the DLL.
-
 - Create a console app project in Visual Studio.
-
 - Use the functions and variables imported from the DLL in the console app.
-
 - Run the completed app.
 
 Like a statically linked library, a DLL _exports_ variables, functions, and resources by name. A client app _imports_ the names to use those variables, functions, and resources. Unlike a statically linked library, Windows connects the imports in your app to the exports in a DLL at load time or at run time, instead of connecting them at link time. Windows requires extra information that isn't part of the standard C++ compilation model to make these connections. The MSVC compiler implements some Microsoft-specific extensions to C++ to provide this extra information. We explain these extensions as we go.
 
-This walkthrough creates two Visual Studio solutions; one that builds the DLL, and one that builds the client app. The DLL uses the C calling convention. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. The client app uses _implicit linking_, where Windows links the app to the DLL at load-time. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library.
+This walkthrough creates two Visual Studio solutions: one that builds the DLL, and one that builds the client app. The DLL uses the C calling convention. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. The client app uses _implicit linking_, where Windows links the app to the DLL at load time. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library.
 
-This walkthrough doesn't cover some common situations. The code doesn't show the use of C++ DLLs by other programming languages. It doesn't show how to [create a resource-only DLL](creating-a-resource-only-dll.md), or how to use [explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly) to load DLLs at run-time rather than at load-time. Rest assured, you can use MSVC and Visual Studio to do all these things.
+This walkthrough doesn't cover some common situations. The code doesn't show the use of C++ DLLs by other programming languages. It doesn't show how to [create a resource-only DLL](creating-a-resource-only-dll.md), or how to use [explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly) to load DLLs at run time rather than at load time. Rest assured, you can use MSVC and Visual Studio to do all these things.
 
-Even though the code of the DLL is written in C++, we've used C-style interfaces for the exported functions. There are two main reasons for this: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue.
+Even though the code of the DLL is written in C++, we use C-style interfaces for the exported functions. There are two main reasons for this: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue.
 
 For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md). For more information about implicit linking and explicit linking, see [Determine which linking method to use](linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use). For information about creating C++ DLLs for use with programming languages that use C-language linkage conventions, see [Exporting C++ functions for use in C-language executables](exporting-cpp-functions-for-use-in-c-language-executables.md). For information about how to create DLLs for use with .NET languages, see [Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md).
 
 ## Prerequisites
 
-- A computer that runs Microsoft Windows 7 or later versions. We recommend the latest version of Windows for the best development experience.
+- Microsoft Windows 7 or later. We recommend the latest version of Windows for the best development experience.
 
 ::: moniker range=">=msvc-150"
 
-- A copy of Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now.
+- Visual Studio. To learn how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now.
 
-   ![Visual Studio Installer, Desktop development with C++ workload.](media/desktop-development-with-cpp.png "Desktop development with C++")
+   :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot of the Visual Studio Installer, Desktop development with C++ workload.":::
 
 ::: moniker-end
 
 ::: moniker range="msvc-140"
 
-- A copy of Visual Studio. For information on how to download and install Visual Studio 2015, see [Install Visual Studio 2015](/visualstudio/install/install-visual-studio-2015?view=vs-2015&preserve-view=true). Use a **Custom** installation to install the C++ compiler and tools, since they're not installed by default.
+- Visual Studio. For information on how to download and install Visual Studio 2015, see [Install Visual Studio 2015](/visualstudio/install/install-visual-studio-2015?view=vs-2015&preserve-view=true). Use a **Custom** installation to install the C++ compiler and tools, since they're not installed by default.
 
 ::: moniker-end
 
 - An understanding of the basics of using the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide).
 
-- An understanding of enough of the fundamentals of the C++ language to follow along. Don't worry, we don't do anything too complicated.
+- Some familiarity with the C++ language. Don't worry, we don't do anything too complicated.
 
 ::: moniker range="msvc-150"
 
@@ -64,15 +61,15 @@ For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studi
 
 ## Create the DLL project
 
-In this set of tasks, you create a project for your DLL, add code, and build it. To begin, start the Visual Studio IDE, and sign in if you need to. The instructions vary slightly depending on which version of Visual Studio you're using. Make sure you have the correct version selected in the control in the upper left of this page.
+In the following set of tasks, you create a project for your DLL, add code, and build it. To begin, start the Visual Studio IDE, and sign in if you need to. The instructions vary slightly depending on which version of Visual Studio you're using. To see the steps for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page.
 
 ::: moniker range=">=msvc-160"
 
-### To create a DLL project in Visual Studio 2019
+### To create a DLL project in Visual Studio
 
 1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box.
 
-   ![Screenshot of the Create a new project dialog with the Dynamic Link Library template highlighted.](media/create-new-dll-project-2019.png "Create the MathLibrary project")
+   :::image type="content" source="media/create-new-dll-project-2019.png" alt-text="Screenshot of the Create a new project dialog box with the dynamic-link library template highlighted.":::
 
 1. At the top of the dialog, set  **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**.
 
@@ -84,7 +81,7 @@ In this set of tasks, you create a project for your DLL, add code, and build it.
 
 When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio.
 
-![Screenshot of the Solution Explorer window with the Math Library project highlighted.](media/mathlibrary-solution-explorer-162.png "Generated solution in Visual Studio")
+   :::image type="content" source="media/mathlibrary-solution-explorer-162.png" alt-text="Screenshot of the Solution Explorer window with the MathLibrary project highlighted.":::
 
 ::: moniker-end
 
@@ -96,13 +93,13 @@ When the solution is created, you can see the generated project and source files
 
 1. In the left pane of the **New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Dynamic-Link Library (DLL)**. Enter *MathLibrary* in the **Name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked.
 
-   ![Screenshot of the New Project dialog box showing Math Library in the Name text box.](media/mathlibrary-new-project-name-159.png "Name the MathLibrary project")
+   :::image type="content" source="media/mathlibrary-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2017 showing Math Library in the Name text box.":::
 
 1. Choose the **OK** button to create the project.
 
 When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio.
 
-![Screenshot of the Solution Explorer window with the Math Library highlighted.](media/mathlibrary-solution-explorer-159.png "Generated solution in Visual Studio")
+:::image type="content" source="media/mathlibrary-solution-explorer-159.png" alt-text="Screenshot of the Solution Explorer window in Visual Studio 2017 with the Math Library highlighted.":::
 
 ::: moniker-end
 
@@ -114,21 +111,21 @@ When the solution is created, you can see the generated project and source files
 
 1. In the left pane of the **New Project** dialog box, expand **Installed** > **Templates**, and select **Visual C++**, and then in the center pane, select **Win32 Console Application**. Enter *MathLibrary* in the **Name** edit box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked.
 
-   ![Screenshot of the New Project dialog box showing Math Library in the Name text box.](media/mathlibrary-project-name.png "Name the MathLibrary project")
+   :::image type="content" source="media/mathlibrary-project-name.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2015 showing MathLibrary in the Name text box.":::
 
 1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**.
 
-   ![Screenshot of the Win32 Application Wizard Overview page.](media/mathlibrary-project-wizard-1.png "Win32 Application Wizard Overview")
+   :::image type="content" source="media/mathlibrary-project-wizard-1.png" alt-text="Screenshot of the Win32 Application Wizard Overview page.":::
 
 1. Choose the **Next** button. On the **Application Settings** page, under **Application type**, select **DLL**.
 
-   ![Screenshot of the Win32 Application Wizard Application Settings Page.](media/mathlibrary-project-wizard-2.png "Create DLL in Win32 Application Wizard")
+   :::image type="content" source="media/mathlibrary-project-wizard-2.png" alt-text="Screenshot of the Win32 Application Wizard Application Settings Page.":::
 
 1. Choose the **Finish** button to create the project.
 
 When the wizard completes the solution, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio.
 
-![Screenshot of the Solution Explorer window with the Math Library highlighted.](media/mathlibrary-solution-explorer-153.png "Generated solution in Visual Studio")
+:::image type="content" source="media/mathlibrary-solution-explorer-153.png" alt-text="Screenshot of the Solution Explorer window in Visual Studio 2015 with the MathLibrary highlighted.":::
 
 ::: moniker-end
 
@@ -138,13 +135,13 @@ Right now, this DLL doesn't do very much. Next, you'll create a header file to d
 
 1. To create a header file for your functions, on the menu bar, choose **Project** > **Add New Item**.
 
-1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *MathLibrary.h* as the name for the header file.
+1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *`MathLibrary.h`* as the name for the header file.
 
-   ![Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox.](media/mathlibrary-add-new-item-header-file.png "Add header file in Add New Item dialog")
+   :::image type="content" source="media/mathlibrary-add-new-item-header-file.png" alt-text="Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox.":::
 
 1. Choose the **Add** button to generate a blank header file, which is displayed in a new editor window.
 
-   ![Screenshot of the empty MathLibrary.h file in the editor.](media/edit-empty-mathlibrary-header.png "Empty MathLibrary.h file in editor")
+   :::image type="content" source="media/edit-empty-mathlibrary-header.png" alt-text="Screenshot of the empty MathLibrary.h file in the editor.":::
 
 1. Replace the contents of the header file with this code:
 
@@ -195,11 +192,11 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set
 
 ::: moniker range=">=msvc-160"
 
-1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new .cpp file called *MathLibrary.cpp*, in the same way that you added a new header file in the previous step.
+1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new *`.cpp`* file called *`MathLibrary.cpp`*, in the same way that you added a new header file in the previous step.
 
-1. In the editor window, select the tab for **MathLibrary.cpp** if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it.
+1. In the editor window, select the *`MathLibrary.cpp`* tab if it's already open. If not, in **Solution Explorer**, double-click *`MathLibrary.cpp`* in the **Source Files** folder of the **MathLibrary** project to open it.
 
-1. In the editor, replace the contents of the MathLibrary.cpp file with the following code:
+1. In the editor, replace the contents of the *`MathLibrary.cpp`* file with the following code:
 
    ```cpp
    // MathLibrary.cpp : Defines the exported functions for the DLL.
@@ -266,7 +263,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set
 
 1. In the editor window, select the tab for **MathLibrary.cpp** if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it.
 
-1. In the editor, replace the contents of the MathLibrary.cpp file with the following code:
+1. In the editor, replace the contents of the *`MathLibrary.cpp`* file with the following code:
 
    ```cpp
    // MathLibrary.cpp : Defines the exported functions for the DLL.
@@ -329,7 +326,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set
 
 ::: moniker-end
 
-To verify that everything works so far, compile the dynamic link library. To compile, choose **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called *Debug* directly below the solution folder. If you create a Release build, the output is placed in a folder called *Release*. The output should look something like this:
+To verify that everything works so far, compile the DLL. To compile, choose **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called `Debug` directly below the solution folder. If you create a Release build, the output is placed in a folder called `Release`. The output should look something like this:
 
 ::: moniker range=">=msvc-160"
 
@@ -380,9 +377,9 @@ Congratulations, you've created a DLL using Visual Studio! Next, you'll create a
 
 ## Create a client app that uses the DLL
 
-When you create a DLL, think about how client apps may use it. To call the functions or access the data exported by a DLL, client source code must have the declarations available at compile time. At link time, the linker requires information to resolve the function calls or data accesses. A DLL supplies this information in an *import library*, a file that contains information about how to find the functions and data, instead of the actual code. And at run time, the DLL must be available to the client, in a location that the operating system can find.
+When you create a DLL, think about how client apps might use it. To call the functions or access the data exported by a DLL, client source code must have the declarations available at compile time. At link time, the linker requires information to resolve the function calls or data accesses. A DLL supplies this information in an *import library*, a file that contains information about how to find the functions and data, instead of the actual code. And at run time, the DLL must be available to the client, in a location that the operating system can find.
 
-Whether it's your own or from a third-party, your client app project needs several pieces of information to use a DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. One solution is to copy all of these files into your client project. For third-party DLLs that are unlikely to change while your client is in development, this method may be the best way to use them. However, when you also build the DLL, it's better to avoid duplication. If you make a local copy of DLL files that are under development, you may accidentally change a header file in one copy but not the other, or use an out-of-date library.
+Whether it's your own or from a third-party, your client app project needs several pieces of information to use a DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. One solution is to copy all of these files into your client project. For third-party DLLs that are unlikely to change while your client is in development, this method might be the best way to use them. However, when you also build the DLL, it's better to avoid duplication. If you make a local copy of DLL files that are under development, you might accidentally change a header file in one copy but not the other, or use an out-of-date library.
 
 To avoid out-of-sync code, we recommend you set the include path in your client project to include the DLL header files directly from your DLL project. Also, set the library path in your client project to include the DLL import libraries from the DLL project. And finally, copy the built DLL from the DLL project into your client build output directory. This step allows your client app to use the same DLL code you build.
 
@@ -398,11 +395,11 @@ To avoid out-of-sync code, we recommend you set the include path in your client
 
 1. In the **Configure your new project** page, enter *MathClient* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked.
 
-   ![Screenshot of the Create a new project dialog box with the Console App option highlighted.](media/mathclient-project-name-2019.png "Name the client project")
+   :::image type="content" source="media/mathclient-project-name-2019.png" alt-text="Screenshot of the Create a new project dialog box with the Console App option highlighted.":::
 
 1. Choose the **Create** button to create the client project.
 
-A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet.
+A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet.
 
 ::: moniker-end
 
@@ -412,13 +409,13 @@ A minimal console application project is created for you. The name for the main
 
 1. To create a C++ app that uses the DLL that you created, on the menu bar, choose **File** > **New** > **Project**.
 
-1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box.  Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked.
+1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked.
 
-   ![Screenshot of the New Project dialog box with Installed > Visual C plus plus > Windows Desktop selected, Windows Console Application highlighted, and Math Client typed in the Name text box.](media/mathclient-new-project-name-159.png "Name the client project")
+   :::image type="content" source="media/mathclient-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box with Windows Console Application highlighted, and Math Client typed in the Name text box.":::
 
 1. Choose **OK** to create the client app project.
 
-A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet.
+A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet.
 
 ::: moniker-end
 
@@ -430,7 +427,7 @@ A minimal console application project is created for you. The name for the main
 
 1. In the left pane of the **New Project** dialog, select **Win32** under **Installed** > **Templates** > **Visual C++**. In the center pane, select **Win32 Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked.
 
-   ![Screenshot of the New Project dialog box with Installed > Templates > Visual C plus plus > Win32 selected, Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box.](media/mathclient-project-name.png "Name the client project")
+   :::image type="content" source="media/mathclient-project-name.png" alt-text="Screenshot of the New Project dialog box with Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box.":::
 
 1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog box, choose the **Next** button.
 
@@ -438,27 +435,27 @@ A minimal console application project is created for you. The name for the main
 
 1. Choose the **Finish** button to create the project.
 
-When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet.
+When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet.
 
 ::: moniker-end
 
-Next, to call the MathLibrary functions in your source code, your project must include the *MathLibrary.h* file. You could copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header.
+Next, to call the MathLibrary functions in your source code, your project must include the *`MathLibrary.h`* file. You could copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header.
 
 ### To add the DLL header to your include path
 
 1. Right-click on the **MathClient** node in **Solution Explorer** to open the **Property Pages** dialog.
 
-1. In the **Configuration** drop-down box, select **All Configurations** if it's not already selected.
+1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected.
 
 1. In the left pane, select **Configuration Properties** > **C/C++** > **General**.
 
-1. In the property pane, select the drop-down control next to the **Additional Include Directories** edit box, and then choose **Edit**.
+1. In the property pane, select the dropdown control next to the **Additional Include Directories** edit box, and then choose **Edit**.
 
-   ![Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property drop-down.](media/mathclient-additional-include-directories-property.png "Edit the Additional Include Directories property")
+   :::image type="content" source="media/mathclient-additional-include-directories-property.png" alt-text="Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown.":::
 
 1. Double-click in the top pane of the **Additional Include Directories** dialog box to enable an edit control. Or, choose the folder icon to create a new entry.
 
-1. In the edit control, specify the path to the location of the **MathLibrary.h** header file. You can choose the ellipsis (**...**) control to browse to the correct folder.
+1. In the edit control, specify the path to the location of the *`MathLibrary.h`* header file. You can choose the ellipsis (**...**) control to browse to the correct folder.
 
    You can also enter a relative path from your client source files to the folder that contains the DLL header files. If you followed the directions to put your client project in a separate solution from the DLL, the relative path should look like this:
 
@@ -470,11 +467,11 @@ Next, to call the MathLibrary functions in your source code, your project must i
 
    When the DLL and client projects are in other folders, adjust the relative path to match. Or, use the ellipsis control to browse for the folder.
 
-   ![Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory.](media/mathclient-additional-include-directories.png "Add the header location to the Additional Include Directories property")
+   :::image type="content" source="media/mathclient-additional-include-directories.png" alt-text="Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory.":::
 
 1. After you've entered the path to the header file in the **Additional Include Directories** dialog box, choose the **OK** button. In the **Property Pages** dialog box, choose the **OK** button to save your changes.
 
-You can now include the **MathLibrary.h** file and use the functions it declares in your client application. Replace the contents of **MathClient.cpp** by using this code:
+You can now include the *`MathLibrary.h`* file and use the functions it declares in your client application. Replace the contents of *`MathClient.cpp`* by using this code:
 
 ```cpp
 // MathClient.cpp : Client app for MathLibrary DLL.
@@ -498,51 +495,51 @@ int main()
 }
 ```
 
-This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You haven't specified that your project has a dependency on the *MathLibrary.lib* library yet. And, you haven't told the linker how to find the *MathLibrary.lib* file.
+This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You haven't specified that your project has a dependency on the *`MathLibrary.lib`* library yet. And, you haven't told the linker how to find the *`MathLibrary.lib`* file.
 
-To fix this issue, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that might lead to changes in one copy that aren't shown in the other. To avoid this issue, you can set the **Additional Dependencies** property to tell the build system that your project depends on *MathLibrary.lib*. And, you can set an **Additional Library Directories** path in your project to include the path to the original library when you link.
+To fix this issue, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that might lead to changes in one copy that aren't shown in the other. To avoid this issue, you can set the **Additional Dependencies** property to tell the build system that your project depends on *`MathLibrary.lib`*. And, you can set an **Additional Library Directories** path in your project to include the path to the original library when you link.
 
 ### To add the DLL import library to your project
 
 1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog.
 
-1. In the **Configuration** drop-down box, select **All Configurations** if it's not already selected. It ensures that any property changes apply to both Debug and Release builds.
+1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. It ensures that any property changes apply to both Debug and Release builds.
 
-1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the drop-down control next to the **Additional Dependencies** edit box, and then choose **Edit**.
+1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the dropdown control next to the **Additional Dependencies** edit box, and then choose **Edit**.
 
-   ![Screenshot of the Property Pages dialog showing the Edit command in the Linker > Input > Additional Dependencies property drop-down.](media/mathclient-additional-dependencies-property.png "Edit the Additional Dependencies property")
+   :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog box under Input that shows the Edit command in the Additional Dependencies property dropdown.":::
 
-1. In the **Additional Dependencies** dialog, add *MathLibrary.lib* to the list in the top edit control.
+1. In the **Additional Dependencies** dialog, add *`MathLibrary.lib`* to the list in the top edit control.
 
-   ![Screenshot of the Additional Dependencies dialog showing the MathLibrary.lib file.](media/mathclient-additional-dependencies.png "Add the library dependency")
+   :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog box showing the MathLibrary.lib file.":::
 
 1. Choose **OK** to go back to the **Property Pages** dialog box.
 
-1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the drop-down control next to the **Additional Library Directories** edit box, and then choose **Edit**.
+1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the dropdown control next to the **Additional Library Directories** edit box, and then choose **Edit**.
 
-   ![Screenshot of the Property Pages dialog showing the Edit command in the Linker > General > Additional Library Directories property drop-down.](media/mathclient-additional-library-directories-property.png "Edit the Additional Library Directories property")
+   :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog box under General that shows the Edit command in the Additional Library Directories property dropdown.":::
 
-1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the **MathLibrary.lib** file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this:
+1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the *`MathLibrary.lib`* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this:
 
    `..\..\MathLibrary\$(IntDir)`
 
    If your DLL and client projects are in other locations, adjust the relative path to match.
 
-   ![Screenshot of the Additional Library Directories dialog.](media/mathclient-additional-library-directories.png "Add the library directory")
+   :::image type="content" source="media/mathclient-additional-library-directories.png" alt-text="Screenshot of the Additional Library Directories dialog.":::
 
 1. Once you've entered the path to the library file in the **Additional Library Directories** dialog box, choose the **OK** button to go back to the **Property Pages** dialog box. Choose **OK** to save the property changes.
 
 Your client app can now compile and link successfully, but it still doesn't have everything it needs to run. When the operating system loads your app, it looks for the MathLibrary DLL. If it can't find the DLL in certain system directories, the environment path, or the local app directory, the load fails. Depending on the operating system, you'll see an error message like this:
 
-![Screenshot of the error dialog, MathLibrary DLL not found.](media/mathclient-system-error-mathlibrary-dll-not-found.png "MathLibrary DLL not found error")
+:::image type="content" source="media/mathclient-system-error-mathlibrary-dll-not-found.png" alt-text="Screenshot of the error dialog, MathLibrary DLL not found.":::
 
-One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a **Post-Build Event** to your project, to add a command that copies the DLL to your build output directory. The command specified here copies the DLL only if it's missing or has changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration.
+One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a *post-build event* to your project, to add a command that copies the DLL to your build output directory. The command specified here copies the DLL only if it's missing or has changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration.
 
 ### To copy the DLL in a post-build event
 
 1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog.
 
-1. In the **Configuration** drop-down box, select **All Configurations** if it isn't already selected.
+1. In the **Configuration** dropdown box, select **All Configurations** if it isn't already selected.
 
 1. In the left pane, select **Configuration Properties** > **Build Events** > **Post-Build Event**.
 
@@ -552,7 +549,7 @@ One way to avoid this issue is to copy the DLL to the directory that contains yo
 
    If your DLL and client projects are in other directories, change the relative path to the DLL to match.
 
-   ![Screenshot of the Property Pages dialog showing the post build event command line property.](media/mathclient-post-build-command-line.png "Add the post-build command")
+   :::image type="content" source="media/mathclient-post-build-command-line.png" alt-text="Screenshot of the Property Pages dialog showing the post build event command line property.":::
 
 1. Choose the **OK** button to save your changes to the project properties.
 
@@ -568,7 +565,7 @@ Now your client app has everything it needs to build and run. Build the applicat
 
 Congratulations, you've created an application that calls functions in your DLL. Now run your application to see what it does. On the menu bar, choose **Debug** > **Start Without Debugging**. Visual Studio opens a command window for the program to run in. The last part of the output should look like:
 
-![Screenshot of the command window output when you start the client app without debugging.](media/mathclient-run-without-debugging.png "Start the client app without debugging")
+:::image type="content" source="media/mathclient-run-without-debugging.png" alt-text="Screenshot of the command window output when you start the client app without debugging.":::
 
 Press any key to dismiss the command window.
 
@@ -578,4 +575,4 @@ When you deploy your app, you must also deploy the DLLs it uses. The simplest wa
 
 ## See also
 
-[Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md)
+- [Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md)
diff --git a/docs/build/walkthrough-import-stl-header-units.md b/docs/build/walkthrough-import-stl-header-units.md
index 4a6f8830b1..3c2fd2d7e5 100644
--- a/docs/build/walkthrough-import-stl-header-units.md
+++ b/docs/build/walkthrough-import-stl-header-units.md
@@ -182,8 +182,8 @@ Follow these steps to create a project that includes two STL libraries: `<iostre
 1. Replace the contents of the source file as follows:
 
     ```cpp
-    #include <iostream>;
-    #include <vector>;
+    #include <iostream>
+    #include <vector>
     
     int main()
     {
diff --git a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md
index 9543859eee..2e21028185 100644
--- a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md
+++ b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md
@@ -83,10 +83,10 @@ An MSBuild project file is an XML file that contains a project root element (`<P
 
 ### To create the MSBuild project file
 
-1. Use a text editor to create a project file that is named *`myproject.vcxproj`*, and then add the root `<Project>` element shown here. (Use `ToolsVersion="14.0"` if you're using Visual Studio 2015, `ToolsVersion="15.0"` if you're using Visual Studio 2017, or `ToolsVersion="16.0"` if you're using Visual Studio 2019.)
+1. Use a text editor to create a project file that is named *`myproject.vcxproj`*, and then add the root `<Project>` element shown here. (Use `ToolsVersion="14.0"` if you're using Visual Studio 2015, `ToolsVersion="15.0"` if you're using Visual Studio 2017, `ToolsVersion="16.0"` if you're using Visual Studio 2019, or `ToolsVersion="17.0"` if you're using Visual Studio 2022.)
 
     ```xml
-    <Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     </Project>
     ```
 
@@ -113,12 +113,12 @@ An MSBuild project file is an XML file that contains a project root element (`<P
     <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
     ```
 
-1. Add a property group element (`<PropertyGroup>`) that specifies two project properties, `<ConfigurationType>` and `<PlatformToolset>`. (Use `v140` as the `<PlatformToolset>` value if you're using Visual Studio 2015, `v141` if you're using Visual Studio 2017, or `v142` if you're using Visual Studio 2019.)
+1. Add a property group element (`<PropertyGroup>`) that specifies two project properties, `<ConfigurationType>` and `<PlatformToolset>`. (Use `v140` as the `<PlatformToolset>` value if you're using Visual Studio 2015, `v141` if you're using Visual Studio 2017, `v142` if you're using Visual Studio 2019 or `v143` if you're using Visual Studio 2022.)
 
     ```xml
     <PropertyGroup>
       <ConfigurationType>Application</ConfigurationType>
-      <PlatformToolset>v142</PlatformToolset>
+      <PlatformToolset>v143</PlatformToolset>
     </PropertyGroup>
     ```
 
@@ -155,10 +155,10 @@ An MSBuild project file is an XML file that contains a project root element (`<P
 
 ### Complete Project File
 
-This code shows the complete project file that you created in the previous procedure. (Use `ToolsVersion="15.0"` for Visual Studio 2017, or `ToolsVersion="14.0"` for Visual Studio 2015.)
+This code shows the complete project file that you created in the previous procedure. (Use `ToolsVersion=16.0 for Visual Studio 2019, ToolsVersion="15.0"` for Visual Studio 2017, or `ToolsVersion="14.0"` for Visual Studio 2015.)
 
 ```xml
-<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
diff --git a/docs/build/working-with-project-properties.md b/docs/build/working-with-project-properties.md
index 8cd9eae55a..3540aad87d 100644
--- a/docs/build/working-with-project-properties.md
+++ b/docs/build/working-with-project-properties.md
@@ -1,38 +1,39 @@
 ---
-title: "Set C++ compiler and build properties in Visual Studio"
+title: "Set C++ Compiler and Build Properties in Visual Studio"
 description: "Use the Visual Studio IDE to change C++ compiler and linker options and other build settings."
-ms.date: "07/17/2019"
+ms.date: 03/19/2025
+ms.topic: concept-article
 helpviewer_keywords: ["project properties [C++], modifying", "properties [C++]", "Visual C++ projects, properties", "projects [C++], properties"]
 ---
 # Set compiler and build properties
 
-In the IDE, properties expose the information needed to build a project. This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, custom build steps, and many other things. Typically, you use *property pages* to view and modify these properties. To access the property pages, choose **Project** > **_project-name_ Properties** from the main menu, or right-click on the project node in **Solution Explorer** and choose **Properties**.
+In the Visual Studio IDE, you can view and edit the properties needed to compile and build a project. This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, and custom build steps.
+
+You can view and modify these properties by using *property pages*. To access the property pages, choose **Project** > **_project-name_ Properties** from the main menu, or right-click on the project node in **Solution Explorer** and choose **Properties**.
 
 ## Default properties
 
-When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an ATL project has properties related to MIDL files, but these properties are absent in a basic console application. The default properties are shown in the General pane in the Property Pages:
+When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an Active Template Library (ATL) project has properties related to Microsoft Interface Definition Language (MIDL) files, but these properties are absent in a basic console application. The default properties are shown in the Advanced pane in the **Property Pages** window:
 
-:::image type="complex" source="media/visual-c---project-defaults.png" alt-text="Screenshot of the Visual Studio project properties dialog.":::
-The General page is open. The Project Defaults section is highlighted, which includes Configuration Type set to Application (.exe), use of MFC set to Use standard Windows libraries, Character set is Unicode, Common Language Runtime Support is set to No Common Language Runtime Support, Whole Program optimization is set to No Whole Program Optimization, and Windows Store APP support is set to No.
-:::image-end:::
+:::image type="content" source="media/visual-c---project-defaults.png" alt-text="Screenshot of the Visual Studio project properties dialog box with the Advanced pane selected. Properties such as Use of MFC, Character Set, and so on are highlighted." lightbox="media/visual-c---project-defaults.png":::
 
-## Applying properties to build configurations and target platforms
+## Apply properties to build configurations and target platforms
 
 Some properties, such as the application name, apply to all build variations and target platforms, whether it's a debug or release build. But most properties are configuration-dependent. To generate the correct code, the compiler has to know both the specific platform the program runs on and which specific compiler options to use. So when you set a property, it's important to pay attention to which configuration and platform the new value should apply to. Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM64 and Debug x64? For example, the **Optimization** property, by default, is set to **Maximize Speed (/O2)** in a Release configuration, but is disabled in the Debug configuration.
 
-You can always see and change the configuration and platform a property value should apply to. The following illustration shows the property pages with the configuration and platform information controls at the top. When the **Optimization** property is set here, it only applies to Debug Win32 builds, the currently active configuration, as shown by the red arrows.
+You can always see and change the configuration and platform a property value should apply to. The following illustration shows the property pages with the configuration and platform information controls at the top. When the **Optimization** property is set here, it only applies to Debug x64 builds, the currently active configuration, as shown by the red arrows.
 
 :::image type="complex" source="media/visual-c---property-pages-showing-active-configuration.png" alt-text="Screenshot of the Visual Studio Property Pages dialog.":::
-The page is open to C/C++, Optimization. The Optimization setting is set to Disabled (/Od), which is called out. An arrow calls out the relationship between the Configuration setting in the project property page, which is set to Active(Debug), and the setting in the Solution configuration dropdown on the toolbar, which is set to Debug. Another arrow calls out the relationship between the Platform setting in the project property page, which is set to Active(Win32), and the setting in the Solutions platform dropdown on the toolbar, which is set to x86.
+The page is open to C/C++, Optimization. The Optimization setting is set to Disabled (/Od), which is called out. An arrow calls out the relationship between the Configuration setting in the project property page, which is set to Active(Debug), and the setting in the Solution configuration dropdown on the toolbar, which is set to Debug. Another arrow calls out the relationship between the Platform setting in the project property page, which is set to Active(x64), and the setting in the Solutions platform dropdown on the toolbar, which is set to x64.
 :::image-end:::
 
 The following illustration shows the same project property page, but the configuration has been changed to Release. Note the different value for the Optimization property. Also note that the active configuration is still Debug. You can set properties for any configuration here; it doesn't have to be the active one.
 
-:::image type="content" source="media/visual-c---property-pages-showing-release-config.png" alt-text="Screenshot of the Visual Studio project Property Pages dialog. The Configuration dropdown is called out and is set to Release. The C/C++ > Optimization > Optimization setting is set to Maximize Speed (/O2).":::
+:::image type="content" source="media/visual-c---property-pages-showing-release-config.png" alt-text="Screenshot of the Visual Studio project Property Pages dialog. The Configuration dropdown is called out and is set to Release. The optimization setting is set to Maximize Speed slash O2.":::
 
 ## Target platforms
 
-*Target platform* refers to the kind of device and operating system that the executable will run on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, ARM64, Android, and iOS. The **x86** target platform that you might see in **Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications).
+*Target platform* refers to the kind of device and operating system that the executable runs on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, ARM64, Android, and iOS. The **x86** target platform that you might see in **Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications).
 
 The **Any CPU** target platform value that you might see in **Configuration Manager** has no effect on native C++ projects. It's only relevant for C++/CLI and other .NET project types. For more information, see [`/CLRIMAGETYPE` (Specify Type of CLR Image)](reference/clrimagetype-specify-type-of-clr-image.md).
 
@@ -51,7 +52,7 @@ The **Property Pages** dialog box shows only the property pages that are relevan
 
 ## Directory and path values
 
-MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. They're exposed in the property pages, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. And, you can better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md).
+MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. They're exposed in the property pages, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. You can also better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md).
 
 The following illustration shows the property pages for a Visual Studio C++ project. In the left pane, the **VC++ Directories** *rule* is selected, and the right pane lists the properties that are associated with that rule. The property values are often macros, such as `$(VC_SourcePath)`:
 
@@ -63,21 +64,21 @@ You can use the [Property Editor](#property_editor) to view the values of all av
 
 ### Predefined macros
 
-- **Global macros**:\
+- **Global macros**\
   Global macros apply to all items in a project configuration. A global macro has the syntax `$(name)`. An example of a global macro is `$(VCInstallDir)`, which stores the root directory of your Visual Studio installation. A global macro corresponds to a `PropertyGroup` in MSBuild.
 
 - **Item macros**\
-  Item macros have the syntax `%(name)`. For a file, an item macro applies only to that file—for example, you can use `%(AdditionalIncludeDirectories)` to specify include directories that apply only to a particular file. This kind of item macro corresponds to an `ItemGroup` metadata in MSBuild. When used in the context of a project configuration, an item macro applies to all files of a certain type. For example, the C/C++ **Preprocessor Definitions** configuration property can take a `%(PreprocessorDefinitions)` item macro that applies to all .cpp files in the project. This kind of item macro corresponds to an `ItemDefinitionGroup` metadata in MSBuild. For more information, see [Item Definitions](/visualstudio/msbuild/item-definitions).
+  Item macros have the syntax `%(name)`. For a file, an item macro applies only to that file. For example, you can use `%(AdditionalIncludeDirectories)` to specify include directories that apply only to a particular file. This kind of item macro corresponds to an `ItemGroup` metadata in MSBuild. When used in the context of a project configuration, an item macro applies to all files of a certain type. For example, the C/C++ **Preprocessor Definitions** configuration property can take a `%(PreprocessorDefinitions)` item macro that applies to all .cpp files in the project. This kind of item macro corresponds to an `ItemDefinitionGroup` metadata in MSBuild. For more information, see [Item definitions](/visualstudio/msbuild/item-definitions).
 
 ### User-defined macros
 
-You can create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name/value pair. In a project file, use the `$(name)` notation to access the value.
+You can create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name-value pair. In a project file, use the `$(name)` notation to access the value.
 
 A user-defined macro is stored in a property sheet. If your project doesn't already contain a property sheet, you can create one by following the steps under [Share or reuse Visual Studio project settings](create-reusable-property-configurations.md).
 
 #### To create a user-defined macro
 
-1. Open the **Property Manager** window. (On the menu bar, choose **View** > **Property Manager** or **View** > **Other Windows** > **Property Manager**.) Open the shortcut menu for a property sheet (its name ends in *`.user`*) and then choose **Properties**. The **Property Pages** dialog box for that property sheet opens.
+1. Open the **Property Manager** window. On the menu bar, select **View** > **Other Windows** > **Property Manager**. Open the shortcut menu for a property sheet (its name ends in *`.user`*) and then choose **Properties**. The **Property Pages** dialog box for that property sheet opens.
 
 1. In the left pane of the dialog box, select **User Macros**. In the right pane, choose the **Add Macro** button to open the **Add User Macro** dialog box.
 
@@ -99,20 +100,17 @@ The property editor for Include Directories is open. The evaluated value is disp
 
 ## Add an include directory to the set of default directories
 
-When you add an include directory to a project, it's important not to override all the default directories. The correct way to add a directory is to append the new path, for example "`C:\MyNewIncludeDir\`", and then to Append the **`$(IncludePath)`** macro to the property value.
+When you add an include directory to a project, it's important not to override all the default directories. The correct way to add a directory is to append the new path, for example `C:\MyNewIncludeDir\`, and then to append the `$(IncludePath)` macro to the property value.
 
 ## Quickly browse and search all properties
 
 The **All Options** property page (under the **Configuration Properties** > **C/C++** node in the **Property Pages** dialog box) provides a quick way to browse and search the properties that are available in the current context. It has a special search box and a simple syntax to help you filter results:
 
-No prefix:\
-Search in property names only (case-insensitive substring).
+- No prefix: Search in property names only (case-insensitive substring).
 
-'`/`' or '`-`':\
-Search only in compiler switches (case-insensitive prefix)
+- '`/`' or '`-`': Search only in compiler switches (case-insensitive prefix).
 
-`v`:\
-Search only in values (case-insensitive substring).
+- `v`: Search only in values (case-insensitive substring).
 
 ## Set environment variables for a build
 
@@ -124,19 +122,14 @@ In the left pane of the project's **Property Pages** dialog box, expand **Config
 
 In the right pane, modify the **Environment** or **Merge Environment** project settings and then choose the **OK** button.
 
-## In this section
-
-[Share or reuse Visual Studio project settings](create-reusable-property-configurations.md)\
-How to create a *`.props`* file with custom build settings that can be shared or reused.
-
-[Project property inheritance](project-property-inheritance.md)\
-Describes the order of evaluation for the *`.props`*, *`.targets`*, *`.vcxproj`* files, and environment variables in the build process.
+## Articles in this section
 
-[Modify properties and targets without changing the project file](modify-project-properties-without-changing-project-file.md)\
-How to create temporary build settings without having to modify a project file.
+- [Share or reuse Visual Studio project settings](create-reusable-property-configurations.md)
+- [Property inheritance in Visual Studio projects](project-property-inheritance.md)
+- [Modify C++ project properties and targets without changing the project file](modify-project-properties-without-changing-project-file.md)
 
 ## See also
 
-[Visual Studio Projects - C++](creating-and-managing-visual-cpp-projects.md)\
-[`.vcxproj` and `.props` file structure](reference/vcxproj-file-structure.md)\
-[Property page XML files](reference/property-page-xml-files.md)
+- [Visual Studio projects - C++](creating-and-managing-visual-cpp-projects.md)
+- [`.vcxproj` and `.props` file structure](reference/vcxproj-file-structure.md)
+- [Property Page XML rule files](reference/property-page-xml-files.md)
diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md
index 54418166c4..bf4a575b47 100644
--- a/docs/build/x64-calling-convention.md
+++ b/docs/build/x64-calling-convention.md
@@ -1,21 +1,22 @@
 ---
-title: "x64 calling convention"
-description: "Learn about the details of the default x64 calling convention."
-ms.date: 05/17/2022
+title: "x64 Calling Convention"
+description: "Learn about the default x64 calling convention that one function uses to make calls into another function."
+ms.date: 03/19/2025
+ms.topic: concept-article
 ---
 # x64 calling convention
 
-This section describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code.
+This article describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code.
 
-For more information on the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md).
+For more information about the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md).
 
 ## Calling convention defaults
 
-The x64 Application Binary Interface (ABI) uses a four-register fast-call calling convention by default. Space is allocated on the call stack as a shadow store for callees to save those registers.
+The x64 Application Binary Interface (ABI) uses a four-register, fast-call calling convention by default. Space is allocated on the call stack as a shadow store for callees to save those registers.
 
 There's a strict one-to-one correspondence between a function call's arguments and the registers used for those arguments. Any argument that doesn't fit in 8 bytes, or isn't 1, 2, 4, or 8 bytes, must be passed by reference. A single argument is never spread across multiple registers.
 
-The x87 register stack is unused. It may be used by the callee, but consider it volatile across function calls. All floating point operations are done using the 16 XMM registers.
+The x87 register stack is unused. It might be used by the callee, but consider it volatile across function calls. All floating point operations are done using the 16 XMM registers.
 
 Integer arguments are passed in registers RCX, RDX, R8, and R9. Floating point arguments are passed in XMM0L, XMM1L, XMM2L, and XMM3L. 16-byte arguments are passed by reference. Parameter passing is described in detail in [Parameter passing](#parameter-passing). These registers, and RAX, R10, R11, XMM4, and XMM5, are considered *volatile*, or potentially changed by a callee on return. Register usage is documented in detail in [x64 register usage](x64-software-conventions.md#x64-register-usage) and [Caller/callee saved registers](#callercallee-saved-registers).
 
@@ -27,13 +28,13 @@ Most structures are aligned to their natural alignment. The primary exceptions a
 
 ## Unwindability
 
-Leaf functions are functions that don't change any non-volatile registers. A non-leaf function may change non-volatile RSP, for example, by calling a function. Or, it could change RSP by allocating additional stack space for local variables. To recover non-volatile registers when an exception is handled, non-leaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function.
+Leaf functions are functions that don't change any nonvolatile registers. A nonleaf function might change nonvolatile RSP, for example, by calling a function. Or, it could change RSP by allocating more stack space for local variables. To recover nonvolatile registers when an exception is handled, nonleaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function.
 
 Prologs and epilogs are highly restricted so that they can be properly described in xdata. The stack pointer must remain 16-byte aligned in any region of code that isn't part of an epilog or prolog, except within leaf functions. Leaf functions can be unwound simply by simulating a return, so pdata and xdata aren't required. For details about the proper structure of function prologs and epilogs, see [x64 prolog and epilog](../build/prolog-and-epilog.md). For more information about exception handling, and the exception handling and unwinding of pdata and xdata, see [x64 exception handling](../build/exception-handling-x64.md).
 
 ## Parameter passing
 
-By default, the x64 calling convention passes the first four arguments to a function in registers. The registers used for these arguments depend on the position and type of the argument. Remaining arguments get pushed on the stack in right-to-left order.
+By default, the x64 calling convention passes the first four arguments to a function in registers. The registers used for these arguments depend on the position and type of the argument. Remaining arguments get pushed on the stack in right-to-left order. All arguments passed on the stack are 8-byte aligned.
 
 Integer valued arguments in the leftmost four positions are passed in left-to-right order in RCX, RDX, R8, and R9, respectively. The fifth and higher arguments are passed on the stack as previously described. All integer arguments in registers are right-justified, so the callee can ignore the upper bits of the register and access only the portion of the register necessary.
 
@@ -92,7 +93,7 @@ If parameters are passed via varargs (for example, ellipsis arguments), then the
 
 For functions not fully prototyped, the caller passes integer values as integers and floating-point values as double precision. For floating-point values only, both the integer register and the floating-point register contain the float value in case the callee expects the value in the integer registers.
 
-```cpp
+```c
 func1();
 func2() {   // RCX = 2, RDX = XMM1 = 1.0, and R8 = 7
    func1(2, 1.0, 7);
@@ -101,9 +102,9 @@ func2() {   // RCX = 2, RDX = XMM1 = 1.0, and R8 = 7
 
 ## Return values
 
-A scalar return value that can fit into 64 bits, including the **`__m64`** type, is returned through RAX. Non-scalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in XMM0. The state of unused bits in the value returned in RAX or XMM0 is undefined.
+A scalar return value that can fit into 64 bits, including the `__m64` type, is returned through RAX. Nonscalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in XMM0. The state of unused bits in the value returned in RAX or XMM0 is undefined.
 
-User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in RAX, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected non-static data members, and no non-static data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. (This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test.) Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in RAX.
+User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in RAX, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected nonstatic data members, and no nonstatic data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test. Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in RAX.
 
 These examples show how parameters and return values are passed for functions with the specified declarations:
 
@@ -168,7 +169,7 @@ The x87 FPU control word register gets set using the following standard values a
 
 | Register\[bits] | Setting |
 |-|-|
-| FPCSR\[0:6] | Exception masks all 1's (all exceptions masked) |
+| FPCSR\[0:6] | Exception masks all 1s (all exceptions masked) |
 | FPCSR\[7] | Reserved - 0 |
 | FPCSR\[8:9] | Precision Control - 10B (double precision) |
 | FPCSR\[10:11] | Rounding  control - 0 (round to nearest) |
@@ -176,7 +177,7 @@ The x87 FPU control word register gets set using the following standard values a
 
 A callee that modifies any of the fields within FPCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values.
 
-There are two exceptions to the rules about the non-volatility of the control flags:
+There are two exceptions to the rules about the nonvolatility of the control flags:
 
 - In functions where the documented purpose of the given function is to modify the nonvolatile FPCSR flags.
 
@@ -191,13 +192,13 @@ The nonvolatile portion is set to the following standard values at the start of
 | Register\[bits] | Setting |
 |-|-|
 | MXCSR\[6] | Denormals are zeros - 0 |
-| MXCSR\[7:12] | Exception masks all 1's (all exceptions masked) |
+| MXCSR\[7:12] | Exception masks all 1s (all exceptions masked) |
 | MXCSR\[13:14] | Rounding  control - 0 (round to nearest) |
 | MXCSR\[15] | Flush to zero for masked underflow - 0 (off) |
 
 A callee that modifies any of the nonvolatile fields within MXCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values.
 
-There are two exceptions to the rules about the non-volatility of the control flags:
+There are two exceptions to the rules about the nonvolatility of the control flags:
 
 - In functions where the documented purpose of the given function is to modify the nonvolatile MXCSR flags.
 
@@ -207,10 +208,10 @@ Make no assumptions about the MXCSR register's volatile portion state across a f
 
 ## setjmp/longjmp
 
-When you include setjmpex.h or setjmp.h, all calls to [`setjmp`](../c-runtime-library/reference/setjmp.md) or [`longjmp`](../c-runtime-library/reference/longjmp.md) result in an unwind that invokes destructors and **`__finally`** calls.  This behavior differs from x86, where including setjmp.h results in **`__finally`** clauses and destructors not being invoked.
+When you include `setjmpex.h` or `setjmp.h`, all calls to [`setjmp`](../c-runtime-library/reference/setjmp.md) or [`longjmp`](../c-runtime-library/reference/longjmp.md) result in an unwind that invokes destructors and `__finally` calls. This behavior differs from x86, where including `setjmp.h` results in `__finally` clauses and destructors not being invoked.
 
-A call to `setjmp` preserves the current stack pointer, non-volatile registers, and MXCSR registers.  Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, non-volatile registers, and MXCSR registers, back to the state as preserved by the most recent `setjmp` call.
+A call to `setjmp` preserves the current stack pointer, nonvolatile registers, and MXCSR registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, nonvolatile registers, and MXCSR registers, back to the state as preserved by the most recent `setjmp` call.
 
 ## See also
 
-[x64 software conventions](../build/x64-software-conventions.md)
+- [Overview of x64 ABI conventions](../build/x64-software-conventions.md)
diff --git a/docs/build/x64-software-conventions.md b/docs/build/x64-software-conventions.md
index 256fbdb581..7f8229a531 100644
--- a/docs/build/x64-software-conventions.md
+++ b/docs/build/x64-software-conventions.md
@@ -1,8 +1,9 @@
 ---
 description: "Learn more about: x64 ABI conventions"
 title: "x64 ABI conventions"
-ms.date: 04/21/2022
+ms.date: 03/28/2025
 helpviewer_keywords: ["x64 coding conventions", "x64 abi", "Visual C++, x64 calling conventions"]
+ms.topic: concept-article
 ---
 # Overview of x64 ABI conventions
 
@@ -11,10 +12,11 @@ This topic describes the basic application binary interface (ABI) for x64, the 6
 ## x64 calling conventions
 
 Two important differences between x86 and x64 are:
+
 - 64-bit addressing capability
 - Sixteen 64-bit registers for general use.
 
-Given the expanded register set, x64 uses the [__fastcall](../cpp/fastcall.md) calling convention and a RISC-based exception-handling model.
+Given the expanded register set, x64 uses the [`__fastcall`](../cpp/fastcall.md) calling convention and a RISC-based exception-handling model.
 
 The **`__fastcall`** convention uses registers for the first four arguments, and the stack frame to pass more arguments. For details on the x64 calling convention, including register usage, stack parameters, return values, and stack unwinding, see [x64 calling convention](x64-calling-convention.md).
 
@@ -116,7 +118,7 @@ _declspec(align(2)) struct {
 }
 ```
 
-![Diagram showing the example 1 structure layout.](../build/media/vcamd_conv_ex_1_block.png "AMD conversion example 1 structure layout")
+:::image type="content" source="../build/media/vcamd_conv_ex_1_block.png" alt-text="Diagram showing the structure layout for example 1. The diagram shows 2 bytes of memory. Member a, a short, occupies bytes 0 through 1.":::
 
 #### Example 2
 
@@ -130,7 +132,9 @@ _declspec(align(8)) struct {
 }
 ```
 
-![Diagram showing the example 2 structure layout.](../build/media/vcamd_conv_ex_2_block.png "AMD conversion example 2 structure layout")
+:::image type="complex" source="../build/media/vcamd_conv_ex_2_block.png" alt-text="Diagram showing the structure layout for example 2.":::
+The diagram shows 24 bytes of memory. Member a, an int, occupies bytes 0 through 3. The diagram shows padding for bytes 4 through 7. Member b, a double, occupies bytes 8 through 15. Member c, a short, occupies bytes 16 through 17. Bytes 18 through 23 are unused.
+:::image-end:::
 
 #### Example 3
 
@@ -145,7 +149,9 @@ _declspec(align(4)) struct {
 }
 ```
 
-![Diagram showing the example 3 structure layout.](../build/media/vcamd_conv_ex_3_block.png "AMD conversion example 3 structure layout")
+:::image type="complex" source="../build/media/vcamd_conv_ex_3_block.png" alt-text="Diagram showing the structure layout for example 3.":::
+The diagram shows 12 bytes of memory. Member a, a char, occupies byte 0. Byte 1 is padding. Member b, a short, occupies bytes 2 through 4. Member c, a char, occupies byte 4. Bytes 5 through 7 are padding. Member d, an int, occupies bytes 8 through 11.
+:::image-end:::
 
 #### Example 4
 
@@ -159,7 +165,9 @@ _declspec(align(8)) union {
 }
 ```
 
-![Diagram showing the example 4 union layout.](../build/media/vcamd_conv_ex_4_block.png "AMD conversion example 4 union layout")
+:::image type="complex" source="../build/media/vcamd_conv_ex_4_block.png" alt-text="Diagram showing the union layout for example 4.":::
+The diagram shows 8 bytes of memory. Member p, a char, occupies byte 0. Member s, a short, occupies bytes 0 through 1. Member l, a long, occupies bytes 0 through 3. Bytes 4 through 7 are padding.
+:::image-end:::
 
 ### Bitfields
 
@@ -211,7 +219,7 @@ On function exit and on function entry to C Runtime Library calls and Windows sy
 
 ## Stack usage
 
-For details on stack allocation, alignment, function types and stack frames on x64, see [x64 stack usage](stack-usage.md).
+For details on stack allocation, alignment, function types, and stack frames on x64, see [x64 stack usage](stack-usage.md).
 
 ## Prolog and epilog
 
diff --git a/docs/c-language/c-primary-expressions.md b/docs/c-language/c-primary-expressions.md
index 1b57eecbf0..b2939192a2 100644
--- a/docs/c-language/c-primary-expressions.md
+++ b/docs/c-language/c-primary-expressions.md
@@ -23,5 +23,5 @@ Primary expressions are the building blocks of more complex expressions. They ma
 
 ## See also
 
-[Generic selection](generic-selection.md)
+[Generic selection](generic-selection.md)\
 [Operands and Expressions](../c-language/operands-and-expressions.md)
diff --git a/docs/c-language/demotion-of-integers.md b/docs/c-language/demotion-of-integers.md
index f64f4104f9..5cc14b1695 100644
--- a/docs/c-language/demotion-of-integers.md
+++ b/docs/c-language/demotion-of-integers.md
@@ -25,7 +25,7 @@ char y = (char)0x1234;
 
 assigns the value 0x34 to `y`.
 
-When **`signed`** variables are converted to **`unsigned`** and vice-versa, the bit patterns remain the same. For example, casting -2 (0xFE) to an **`unsigned`** value yields 254 (also 0xFE).
+When **`signed`** variables are converted to **`unsigned`** and vice-versa, the bit patterns remain the same. For example, casting -2 (0xFFFFFFFE) to an **`unsigned int`** value yields 4294967294 (also 0xFFFFFFFE).
 
 ## See also
 
diff --git a/docs/c-language/extern-storage-class-specifier.md b/docs/c-language/extern-storage-class-specifier.md
index cfcf2a0c38..fc53268609 100644
--- a/docs/c-language/extern-storage-class-specifier.md
+++ b/docs/c-language/extern-storage-class-specifier.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: extern Storage-Class Specifier"
 title: "extern Storage-Class Specifier"
+description: "Learn more about: extern Storage-Class Specifier"
 ms.date: "07/10/2018"
 helpviewer_keywords: ["extern keyword [C]", "storage class specifiers, extern", "extern keyword [C], storage class specifier", "external linkage, storage-class specifiers", "external linkage, extern modifier"]
-ms.assetid: 6e16d927-291f-49e4-986c-9d91a482a441
 ---
 # extern Storage-Class Specifier
 
@@ -14,12 +13,11 @@ A variable declared with the **`extern`** storage-class specifier is a reference
 This example illustrates internal- and external-level declarations:
 
 ```c
-
 // Source1.c
 
 int i = 1;
 
-// Source2. c
+// Source2.c
 
 #include <stdio.h>
 
diff --git a/docs/c-language/static-assert-c.md b/docs/c-language/static-assert-c.md
index dc8ab22981..99455cab88 100644
--- a/docs/c-language/static-assert-c.md
+++ b/docs/c-language/static-assert-c.md
@@ -42,7 +42,7 @@ In C, when you don't include `<assert.h>`, the Microsoft compiler treats **`stat
 In the following example, **`static_assert`** and **`_Static_assert`** are used to verify how many elements are in an enum and that integers are 32 bits wide.
 
 ```C
-// requires /std:c11 or higher
+// requires /std:c11 or later
 #include <assert.h>
 
 enum Items
@@ -78,5 +78,5 @@ Windows SDK 10.0.20348.0 (version 2104) or later. For more information on instal
 ## See also
 
 [`_STATIC_ASSERT` Macro](../c-runtime-library/reference/static-assert-macro.md)\
-[`assert` macro and `_assert` and `_wassert` functions](../c-runtime-library/reference/assert-macro-assert-wassert.md)
+[`assert` macro and `_assert` and `_wassert` functions](../c-runtime-library/reference/assert-macro-assert-wassert.md)\
 [`/std` (Specify language standard version)](../build/reference/std-specify-language-standard-version.md)
diff --git a/docs/c-language/toc.yml b/docs/c-language/toc.yml
index cfd26f82ed..13334cd6b4 100644
--- a/docs/c-language/toc.yml
+++ b/docs/c-language/toc.yml
@@ -444,7 +444,7 @@ items:
               - name: Inline assembler (C)
                 href: ../c-language/inline-assembler-c.md
               - name: _Noreturn (C)
-                href: ../c-language/noreturn.md                
+                href: ../c-language/noreturn.md
           - name: DLL import and export functions
             items: 
               - name: DLL import and export functions
diff --git a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
index 4d60eaa7af..45d1630a09 100644
--- a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
+++ b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _acmdln, _tcmdln, _wcmdln"
 title: "_acmdln, _tcmdln, _wcmdln"
-ms.date: "11/04/2016"
+description: "Learn more about: _acmdln, _tcmdln, _wcmdln"
+ms.date: 11/04/2016
 api_name: ["_wcmdln", "_acmdln"]
 api_location: ["msvcrt.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_acmdln", "_wcmdln", "_tcmdln"]
 helpviewer_keywords: ["_wcmdln global variable", "wcmdln global variable", "_acmdln global variable", "_tcmdln global variable", "tcmdln global variable", "acmdln global variable"]
-ms.assetid: 4fc0a6a0-3f93-420a-a19f-5276061ba539
 ---
 # `_acmdln`, `_tcmdln`, `_wcmdln`
 
@@ -24,6 +23,7 @@ wchar_t * _wcmdln;
    #define _tcmdln _wcmdln
 #else
    #define _tcmdln _acmdln
+#endif
 ```
 
 ## Remarks
@@ -32,4 +32,4 @@ These CRT internal variables store the complete command line. They're exposed in
 
 ## See also
 
-[Global variables](./global-variables.md)
+[Global variables](global-variables.md)
diff --git a/docs/c-runtime-library/ansi-c-compliance.md b/docs/c-runtime-library/ansi-c-compliance.md
index e9aad2a085..67c65fbd7c 100644
--- a/docs/c-runtime-library/ansi-c-compliance.md
+++ b/docs/c-runtime-library/ansi-c-compliance.md
@@ -2,7 +2,7 @@
 title: "ANSI C Conformance"
 description: "An overview of Microsoft C runtime naming conventions for ANSI C conformance."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["underscores, leading", "compatibility [C++], ANSI C", "conformance with ANSI C", "conventions [C++], Microsoft extensions", "underscores", "naming conventions [C++], Microsoft library", "ANSI [C++], C standard", "Microsoft extensions naming conventions"]
 ms.assetid: 6be271bf-eecf-491a-a928-0ee2dd60e3b9
 ---
diff --git a/docs/c-runtime-library/backward-compatibility.md b/docs/c-runtime-library/backward-compatibility.md
index 16e0a796c7..c96ccb6778 100644
--- a/docs/c-runtime-library/backward-compatibility.md
+++ b/docs/c-runtime-library/backward-compatibility.md
@@ -2,7 +2,7 @@
 title: "Backward Compatibility"
 description: "How to use the Microsoft OLDNAMES.LIB library to map function names for backwards compatibility."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["CRT, compatibility", "backward compatibility, C run-time libraries", "compatibility, C run-time libraries", "backward compatibility"]
 ms.assetid: cc3175cf-97fd-492f-b329-5791aea63090
 ---
diff --git a/docs/c-runtime-library/buffer-manipulation.md b/docs/c-runtime-library/buffer-manipulation.md
index 21c4336737..7fce41ba6c 100644
--- a/docs/c-runtime-library/buffer-manipulation.md
+++ b/docs/c-runtime-library/buffer-manipulation.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Buffer manipulation"
 title: "Buffer manipulation"
-ms.date: "04/04/2018"
+description: "Learn more about: Buffer manipulation"
+ms.date: 04/04/2018
 helpviewer_keywords: ["buffers, manipulation routines", "buffers"]
-ms.assetid: 164f4860-ce66-412c-8291-396fbd70f03e
 ---
 # Buffer manipulation
 
@@ -13,17 +12,17 @@ Use these routines to work with areas of memory on a byte-by-byte basis.
 
 | Routine | Use |
 |---|---|
-| [`_memccpy`](./reference/memccpy.md) | Copy characters from one buffer to another until given character or given number of characters has been copied |
-| [`memchr`, `wmemchr`](./reference/memchr-wmemchr.md) | Return pointer to first occurrence, within specified number of characters, of given character in buffer |
-| [`memcmp`, `wmemcmp`](./reference/memcmp-wmemcmp.md) | Compare specified number of characters from two buffers |
-| [`memcpy`, `wmemcpy`](./reference/memcpy-wmemcpy.md), [`memcpy_s`, `wmemcpy_s`](./reference/memcpy-s-wmemcpy-s.md) | Copy specified number of characters from one buffer to another |
-| [`_memicmp`, `_memicmp_l`](./reference/memicmp-memicmp-l.md) | Compare specified number of characters from two buffers without regard to case |
-| [`memmove`, `wmemmove`](./reference/memmove-wmemmove.md),[`memmove_s`, `wmemmove_s`](./reference/memmove-s-wmemmove-s.md) | Copy specified number of characters from one buffer to another |
-| [`memset`, `wmemset`](./reference/memset-wmemset.md) | Use given character to initialize specified number of bytes in the buffer |
-| [`_swab`](./reference/swab.md) | Swap bytes of data and store them at specified location |
+| [`_memccpy`](reference/memccpy.md) | Copy characters from one buffer to another until given character or given number of characters has been copied |
+| [`memchr`, `wmemchr`](reference/memchr-wmemchr.md) | Return pointer to first occurrence, within specified number of characters, of given character in buffer |
+| [`memcmp`, `wmemcmp`](reference/memcmp-wmemcmp.md) | Compare specified number of characters from two buffers |
+| [`memcpy`, `wmemcpy`](reference/memcpy-wmemcpy.md), [`memcpy_s`, `wmemcpy_s`](reference/memcpy-s-wmemcpy-s.md) | Copy specified number of characters from one buffer to another |
+| [`_memicmp`, `_memicmp_l`](reference/memicmp-memicmp-l.md) | Compare specified number of characters from two buffers without regard to case |
+| [`memmove`, `wmemmove`](reference/memmove-wmemmove.md), [`memmove_s`, `wmemmove_s`](reference/memmove-s-wmemmove-s.md) | Copy specified number of characters from one buffer to another |
+| [`memset`, `wmemset`](reference/memset-wmemset.md) | Use given character to initialize specified number of bytes in the buffer |
+| [`_swab`](reference/swab.md) | Swap bytes of data and store them at specified location |
 
 When the source and target areas overlap, only `memmove` is guaranteed to copy the full source properly.
 
 ## See also
 
-[Universal C runtime routines by category](./run-time-routines-by-category.md)
+[Universal C runtime routines by category](run-time-routines-by-category.md)
diff --git a/docs/c-runtime-library/byte-and-wide-streams.md b/docs/c-runtime-library/byte-and-wide-streams.md
index 8ef801bf6c..bc5ab7e6fb 100644
--- a/docs/c-runtime-library/byte-and-wide-streams.md
+++ b/docs/c-runtime-library/byte-and-wide-streams.md
@@ -2,7 +2,7 @@
 title: "Byte and Wide Streams"
 description: "An overview of byte streams in the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["byte streams", "wide streams"]
 ---
 # Byte and wide streams
diff --git a/docs/c-runtime-library/code-pages.md b/docs/c-runtime-library/code-pages.md
index e61fe0e5ee..f8700a2718 100644
--- a/docs/c-runtime-library/code-pages.md
+++ b/docs/c-runtime-library/code-pages.md
@@ -1,7 +1,7 @@
 ---
 title: "Code Pages"
 description: "A description of code page support in the Microsoft C runtime."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["character sets [C++], code pages", "ANSI [C++], code pages", "system-default code page", "multibyte code pages [C++]", "localization [C++], code pages", "code pages [C++], types of", "locale code pages [C++]"]
 ms.assetid: 4a26fc42-185a-4add-98bf-a7b314ae6186
diff --git a/docs/c-runtime-library/compatibility.md b/docs/c-runtime-library/compatibility.md
index 45f753bf02..0b56d4e3d8 100644
--- a/docs/c-runtime-library/compatibility.md
+++ b/docs/c-runtime-library/compatibility.md
@@ -2,7 +2,7 @@
 title: "Compatibility"
 description: "Describes the compatibility of the Microsoft Universal C runtime library (UCRT) with the Standard C library, POSIX, the Safe CRT, and Store apps."
 ms.date: 1/19/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["CRT, compatibility", "compatibility, C runtime libraries", "compatibility"]
 ms.assetid: 346709cb-edda-4909-9a19-3d253eddb6b7
 ---
diff --git a/docs/c-runtime-library/controlling-streams.md b/docs/c-runtime-library/controlling-streams.md
index 7bdf6321eb..43c00a11a4 100644
--- a/docs/c-runtime-library/controlling-streams.md
+++ b/docs/c-runtime-library/controlling-streams.md
@@ -2,7 +2,7 @@
 title: "Controlling Streams"
 description: "An overview of working with streams in the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["streams, controlling", "controlling streams", "streams"]
 ms.assetid: 267e9013-9afc-45f6-91e3-ca093230d9d9
 ---
diff --git a/docs/c-runtime-library/crt-debug-heap-details.md b/docs/c-runtime-library/crt-debug-heap-details.md
index ffef146716..5a0d180c7d 100644
--- a/docs/c-runtime-library/crt-debug-heap-details.md
+++ b/docs/c-runtime-library/crt-debug-heap-details.md
@@ -102,14 +102,11 @@ typedef struct _CrtMemBlockHeader
 
 The `no_mans_land` buffers on either side of the user data area of the block are currently 4 bytes in size, and are filled with a known byte value used by the debug heap routines to verify that the limits of the user's memory block haven't been overwritten. The debug heap also fills new memory blocks with a known value. If you elect to keep freed blocks in the heap's linked list, these freed blocks are also filled with a known value. Currently, the actual byte values used are as follows:
 
-`no_mans_land` (0xFD)\
-The "no_mans_land" buffers on either side of the memory used by an application are currently filled with 0xFD.
-
-Freed blocks (0xDD)\
-The freed blocks kept unused in the debug heap's linked list when the `_CRTDBG_DELAY_FREE_MEM_DF` flag is set are currently filled with 0xDD.
-
-New objects (0xCD)\
-New objects are filled with 0xCD when they're allocated.
+|Code  |Description  |
+|---------|---------|
+|`no_mans_land` (0xFD) | The "no_mans_land" buffers on either side of the memory used by an application are currently filled with 0xFD. |
+|Freed blocks (0xDD) | The freed blocks kept unused in the debug heap's linked list when the `_CRTDBG_DELAY_FREE_MEM_DF` flag is set are currently filled with 0xDD. |
+|New objects (0xCD) | New objects are filled with 0xCD when they're allocated.|
 
 ## Types of blocks on the debug heap
 
@@ -170,7 +167,7 @@ All calls to heap functions such as `malloc`, `free`, `calloc`, `realloc`, `new`
 
 ### To use the debug heap
 
-- Link the debug build of your application with a debug version of the C runtime library.
+Link the debug build of your application with a debug version of the C runtime library.
 
 ### To change one or more `_crtDbgFlag` bit fields and create a new state for the flag
 
@@ -275,9 +272,9 @@ Knowing the source file name and line number of an assert or reporting macro is
 
 ### Unique allocation request numbers and `_crtBreakAlloc`
 
-There's a simple way to identify the specific heap allocation call that went bad. It takes advantage of the unique allocation request number associated with each block in the debug heap. When information about a block is reported by one of the dump functions, this allocation request number is enclosed in braces (for example, "{36}").
+There's a simple way to identify the specific heap allocation call that went bad. It takes advantage of the unique allocation request number associated with each block in the debug heap. When information about a block is reported by one of the dump functions, this allocation request number is enclosed in braces. For example, `{36}`.
 
-Once you know the allocation request number of an improperly allocated block, you can pass this number to [`_CrtSetBreakAlloc`](./reference/crtsetbreakalloc.md) to create a breakpoint. Execution will break just before allocating the block, and you can backtrack to determine what routine was responsible for the bad call. To avoid recompiling, you can accomplish the same thing in the debugger by setting `_crtBreakAlloc` to the allocation request number you're interested in.
+Once you know the allocation request number of an improperly allocated block, you can pass this number to [`_CrtSetBreakAlloc`](./reference/crtsetbreakalloc.md) to create a breakpoint. Execution will break just before allocating the block and you can backtrack to determine what routine was responsible for the bad call. To avoid recompiling, you can accomplish the same thing in the debugger by setting `_crtBreakAlloc` to the allocation request number you're interested in.
 
 ### Creating debug versions of your allocation routines
 
diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md
index a2379c0484..323c0d36b9 100644
--- a/docs/c-runtime-library/crt-debugging-techniques.md
+++ b/docs/c-runtime-library/crt-debugging-techniques.md
@@ -18,7 +18,7 @@ When you debug a program that uses the C run-time library, these debugging techn
 
 The C runtime (CRT) library provides extensive debugging support. To use one of the CRT debug libraries, you must link with [`/DEBUG`](/cpp/build/reference/debug-generate-debug-info) and compile with [`/MDd`, `/MTd`, or `/LDd`](../build/reference/md-mt-ld-use-run-time-library.md).
 
-The main definitions and macros for CRT debugging can be found in the`<crtdbg.h>` header file.
+The main definitions and macros for CRT debugging can be found in the `<crtdbg.h>` header file.
 
 The functions in the CRT debug libraries are compiled with debug information ([/Z7, /Zd, /Zi, /ZI (Debug Information Format)](../build/reference/z7-zi-zi-debug-information-format.md)) and without optimization. Some functions contain assertions to verify parameters that are passed to them, and source code is provided. With this source code, you can step into CRT functions to confirm that the functions are working as you expect and check for bad parameters or memory states. (Some CRT technology is proprietary and doesn't provide source code for exception handling, floating point, and a few other routines.)
 
@@ -26,7 +26,7 @@ For more information on the various run-time libraries you can use, see [C Run-T
 
 ## Macros for reporting
 
-For debugging, you can use the `_RPTn` and `_RPTFn` macros, defined in`<crtdbg.h>`, to replace the use of `printf` statements. You don't need to enclose them in `#ifdef` directives, because they automatically disappear in your release build when `_DEBUG` isn't defined.
+For debugging, you can use the `_RPTn` and `_RPTFn` macros, defined in `<crtdbg.h>`, to replace the use of `printf` statements. You don't need to enclose them in `#ifdef` directives, because they automatically disappear in your release build when `_DEBUG` isn't defined.
 
 | Macro | Description |
 |---|---|
@@ -81,7 +81,7 @@ You can write several kinds of custom debug hook functions that allow you to ins
 
 ### Client block hook functions
 
-If you want to validate or report the contents of the data stored in `_CLIENT_BLOCK` blocks, you can write a function specifically for this purpose. The function that you write must have a prototype similar to the following, as defined in`<crtdbg.h>`:
+If you want to validate or report the contents of the data stored in `_CLIENT_BLOCK` blocks, you can write a function specifically for this purpose. The function that you write must have a prototype similar to the following, as defined in `<crtdbg.h>`:
 
 ```cpp
 void YourClientDump(void *, size_t)
@@ -91,7 +91,7 @@ In other words, your hook function should accept a `void` pointer to the beginni
 
 Once you've installed your hook function using [_CrtSetDumpClient](./reference/crtsetdumpclient.md), it will be called every time a `_CLIENT_BLOCK` block is dumped. You can then use [_CrtReportBlockType](./reference/crtreportblocktype.md) to get information on the type or subtype of dumped blocks.
 
-The pointer to your function that you pass to `_CrtSetDumpClient` is of type `_CRT_DUMP_CLIENT`, as defined in`<crtdbg.h>`:
+The pointer to your function that you pass to `_CrtSetDumpClient` is of type `_CRT_DUMP_CLIENT`, as defined in `<crtdbg.h>`:
 
 ```cpp
 typedef void (__cdecl *_CRT_DUMP_CLIENT)
@@ -113,7 +113,7 @@ int YourAllocHook(int nAllocType, void *pvData,
         const unsigned char * szFileName, int nLine )
 ```
 
-The pointer that you pass to [`_CrtSetAllocHook`](./reference/crtsetallochook.md) is of type `_CRT_ALLOC_HOOK`, as defined in`<crtdbg.h>`:
+The pointer that you pass to [`_CrtSetAllocHook`](./reference/crtsetallochook.md) is of type `_CRT_ALLOC_HOOK`, as defined in `<crtdbg.h>`:
 
 ```cpp
 typedef int (__cdecl * _CRT_ALLOC_HOOK)
@@ -169,5 +169,5 @@ If the hook handles the message in question completely, so that no further repor
 
 ## See also
 
-- [Debugging Native Code](/visualstudio/debugger/debugging-native-code.md)
-- [Debugger Security](/visualstudio/debugger/debugger-security.md)
+- [Debugging Native Code](/visualstudio/debugger/debugging-native-code)
+- [Debugger Security](/visualstudio/debugger/debugger-security)
diff --git a/docs/c-runtime-library/crt-initialization.md b/docs/c-runtime-library/crt-initialization.md
index b2971c1be1..be30e01238 100644
--- a/docs/c-runtime-library/crt-initialization.md
+++ b/docs/c-runtime-library/crt-initialization.md
@@ -1,7 +1,7 @@
 ---
 title: "CRT Initialization"
 description: "Describes how the CRT initializes global state in native code."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: 08/02/2021
 helpviewer_keywords: ["CRT initialization [C++]"]
 ---
diff --git a/docs/c-runtime-library/data-alignment.md b/docs/c-runtime-library/data-alignment.md
index e9c8d32d66..97b03773fb 100644
--- a/docs/c-runtime-library/data-alignment.md
+++ b/docs/c-runtime-library/data-alignment.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Data Alignment"
 title: "Data Alignment"
-ms.date: "11/04/2016"
+description: "Learn more about: Data Alignment"
+ms.date: 11/04/2016
 f1_keywords: ["data.alignment"]
 helpviewer_keywords: ["data alignment [C++]"]
-ms.assetid: 35ac3d2d-a4b3-421b-954f-b7372b1f18e1
 ---
 # Data alignment
 
@@ -14,7 +13,7 @@ The following C run-time functions support data alignment.
 
 | Routine | Use |
 |---|---|
-| [`_aligned_free`](./reference/aligned-free.md) | Frees a block of memory that was allocated with [`_aligned_malloc`](./reference/aligned-malloc.md)or [`_aligned_offset_malloc`](./reference/aligned-offset-malloc.md). |
+| [`_aligned_free`](./reference/aligned-free.md) | Frees a block of memory that was allocated with [`_aligned_malloc`](./reference/aligned-malloc.md) or [`_aligned_offset_malloc`](./reference/aligned-offset-malloc.md). |
 | [`_aligned_free_dbg`](./reference/aligned-free-dbg.md) | Frees a block of memory that was allocated with [`_aligned_malloc`](./reference/aligned-malloc.md) or [`_aligned_offset_malloc`](./reference/aligned-offset-malloc.md) (debug only). |
 | [`_aligned_malloc`](./reference/aligned-malloc.md) | Allocates memory on a specified alignment boundary. |
 | [`_aligned_malloc_dbg`](./reference/aligned-malloc-dbg.md) | Allocates memory on a specified alignment boundary with extra space for a debugging header and overwrite buffers (debug version only). |
diff --git a/docs/c-runtime-library/direction-flag.md b/docs/c-runtime-library/direction-flag.md
index 1acd9cfb5f..f3e62b0e4a 100644
--- a/docs/c-runtime-library/direction-flag.md
+++ b/docs/c-runtime-library/direction-flag.md
@@ -2,7 +2,7 @@
 title: "Direction Flag"
 description: "Describes the effect of the CPU direction flag on Microsoft C runtime functions."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["direction flag"]
 ms.assetid: 0836b4af-dbbb-4ab8-a4b2-156f2e2099e2
 ---
diff --git a/docs/c-runtime-library/file-handling.md b/docs/c-runtime-library/file-handling.md
index 9ff1cf7924..661f7a0fb3 100644
--- a/docs/c-runtime-library/file-handling.md
+++ b/docs/c-runtime-library/file-handling.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: File Handling"
 title: "File Handling"
-ms.date: "11/04/2016"
+description: "Learn more about: File Handling"
+ms.date: 11/04/2016
 f1_keywords: ["c.files"]
 helpviewer_keywords: ["files [C++], handling", "files [C++], opening", "files [C++], manipulating"]
-ms.assetid: 48119e2e-e94f-4602-b08b-b72440f731d8
 ---
 # File handling
 
 Use these routines to create, delete, and manipulate files and to set and check file-access permissions.
 
-The C run-time libraries have a 512 limit for the number of files that can be open at any one time. Attempting to open more than the maximum number of file descriptors or file streams causes program failure. Use [`_setmaxstdio`](./reference/setmaxstdio.md) to change this number.
+The C run-time libraries have a 512 limit for the number of files that can be open at any one time. Attempting to open more than the maximum number of file descriptors or file streams causes program failure. Use [`_setmaxstdio`](reference/setmaxstdio.md) to change this number.
 
 ## File-handling routines (file descriptor)
 
@@ -18,14 +17,14 @@ These routines operate on files designated by a file descriptor.
 
 | Routine | Use |
 |---|---|
-| [`_chsize`](./reference/chsize.md),[`_chsize_s`](./reference/chsize-s.md) | Change file size |
-| [`_filelength`, `_filelengthi64`](./reference/filelength-filelengthi64.md) | Get file length |
-| [`_fstat`, `_fstat32`, `_fstat64`, `_fstati64`, `_fstat32i64`, `_fstat64i32`](./reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md) | Get file-status information on descriptor |
-| [`_get_osfhandle`](./reference/get-osfhandle.md) | Return operating-system file handle associated with existing C run-time file descriptor |
-| [`_isatty`](./reference/isatty.md) | Check for character device |
-| [`_locking`](./reference/locking.md) | Lock areas of file |
-| [`_open_osfhandle`](./reference/open-osfhandle.md) | Associate C run-time file descriptor with existing operating-system file handle |
-| [`_setmode`](./reference/setmode.md) | Set file-translation mode |
+| [`_chsize`](reference/chsize.md), [`_chsize_s`](reference/chsize-s.md) | Change file size |
+| [`_filelength`, `_filelengthi64`](reference/filelength-filelengthi64.md) | Get file length |
+| [`_fstat`, `_fstat32`, `_fstat64`, `_fstati64`, `_fstat32i64`, `_fstat64i32`](reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md) | Get file-status information on descriptor |
+| [`_get_osfhandle`](reference/get-osfhandle.md) | Return operating-system file handle associated with existing C run-time file descriptor |
+| [`_isatty`](reference/isatty.md) | Check for character device |
+| [`_locking`](reference/locking.md) | Lock areas of file |
+| [`_open_osfhandle`](reference/open-osfhandle.md) | Associate C run-time file descriptor with existing operating-system file handle |
+| [`_setmode`](reference/setmode.md) | Set file-translation mode |
 
 ## File-Handling Routines (Path or Filename)
 
@@ -33,17 +32,17 @@ These routines operate on files specified by a path or filename.
 
 | Routine | Use |
 |---|---|
-| [`_access`, `_waccess`](./reference/access-waccess.md), [`_access_s`, `_waccess_s`](./reference/access-s-waccess-s.md) | Check file-permission setting |
-| [`_chmod`, `_wchmod`](./reference/chmod-wchmod.md) | Change file-permission setting |
-| [`_fullpath`, `_wfullpath`](./reference/fullpath-wfullpath.md) | Expand a relative path to its absolute path name |
-| [`_makepath`, `_wmakepath`](./reference/makepath-wmakepath.md), [`_makepath_s`, `_wmakepath_s`](./reference/makepath-s-wmakepath-s.md) | Merge path components into single, full path |
-| [`_mktemp`, `_wmktemp`](./reference/mktemp-wmktemp.md), [`_mktemp_s`, `_wmktemp_s`](./reference/mktemp-s-wmktemp-s.md) | Create unique filename |
-| [`remove`, `_wremove`](./reference/remove-wremove.md) | Delete file |
-| [`rename`, `_wrename`](./reference/rename-wrename.md) | Rename file |
-| [`_splitpath`, `_wsplitpath`](./reference/splitpath-wsplitpath.md), [`_splitpath_s`, `_wsplitpath_s`](./reference/splitpath-s-wsplitpath-s.md) | Parse path into components |
-| [`_stat`, `_stat64`, `_stati64`, `_wstat`, `_wstat64`, `_wstati64`](./reference/stat-functions.md) | Get file-status information on named file |
-| [`_umask`](./reference/umask.md), [`_umask_s`](./reference/umask-s.md) | Set default permission mask for new files created by program |
-| [`_unlink`, `_wunlink`](./reference/unlink-wunlink.md) | Delete file |
+| [`_access`, `_waccess`](reference/access-waccess.md), [`_access_s`, `_waccess_s`](reference/access-s-waccess-s.md) | Check file-permission setting |
+| [`_chmod`, `_wchmod`](reference/chmod-wchmod.md) | Change file-permission setting |
+| [`_fullpath`, `_wfullpath`](reference/fullpath-wfullpath.md) | Expand a relative path to its absolute path name |
+| [`_makepath`, `_wmakepath`](reference/makepath-wmakepath.md), [`_makepath_s`, `_wmakepath_s`](reference/makepath-s-wmakepath-s.md) | Merge path components into single, full path |
+| [`_mktemp`, `_wmktemp`](reference/mktemp-wmktemp.md), [`_mktemp_s`, `_wmktemp_s`](reference/mktemp-s-wmktemp-s.md) | Create unique filename |
+| [`remove`, `_wremove`](reference/remove-wremove.md) | Delete file |
+| [`rename`, `_wrename`](reference/rename-wrename.md) | Rename file |
+| [`_splitpath`, `_wsplitpath`](reference/splitpath-wsplitpath.md), [`_splitpath_s`, `_wsplitpath_s`](reference/splitpath-s-wsplitpath-s.md) | Parse path into components |
+| [`_stat`, `_stat64`, `_stati64`, `_wstat`, `_wstat64`, `_wstati64`](reference/stat-functions.md) | Get file-status information on named file |
+| [`_umask`](reference/umask.md), [`_umask_s`](reference/umask-s.md) | Set default permission mask for new files created by program |
+| [`_unlink`, `_wunlink`](reference/unlink-wunlink.md) | Delete file |
 
 ## File-Handling Routines (Open File)
 
@@ -51,32 +50,30 @@ These routines open files.
 
 | Routine | Use |
 |---|---|
-| [`fopen`, `_wfopen`](./reference/fopen-wfopen.md), [`fopen_s`, `_wfopen_s`](./reference/fopen-s-wfopen-s.md) | Opens a file and returns a pointer to the open file. |
-| [`_fsopen`, `_wfsopen`](./reference/fsopen-wfsopen.md) | Open a stream with file sharing and returns a pointer to the open file. |
-| [`_open`, `_wopen`](./reference/open-wopen.md) | Opens a file and returns a file descriptor to the opened file. |
-| [`_sopen`, `_wsopen`](./reference/sopen-wsopen.md), [`_sopen_s`, `_wsopen_s`](./reference/sopen-s-wsopen-s.md) | Open a file with file sharing and returns a file descriptor to the open file. |
-| [`_pipe`](./reference/pipe.md) | Creates a pipe for reading and writing. |
-| [`freopen`, `_wfreopen`](./reference/freopen-wfreopen.md), [`freopen_s`, `_wfreopen_s`](./reference/freopen-s-wfreopen-s.md) | Reassign a file pointer. |
+| [`fopen`, `_wfopen`](reference/fopen-wfopen.md), [`fopen_s`, `_wfopen_s`](reference/fopen-s-wfopen-s.md) | Opens a file and returns a pointer to the open file. |
+| [`_fsopen`, `_wfsopen`](reference/fsopen-wfsopen.md) | Open a stream with file sharing and returns a pointer to the open file. |
+| [`_open`, `_wopen`](reference/open-wopen.md) | Opens a file and returns a file descriptor to the opened file. |
+| [`_sopen`, `_wsopen`](reference/sopen-wsopen.md), [`_sopen_s`, `_wsopen_s`](reference/sopen-s-wsopen-s.md) | Open a file with file sharing and returns a file descriptor to the open file. |
+| [`_pipe`](reference/pipe.md) | Creates a pipe for reading and writing. |
+| [`freopen`, `_wfreopen`](reference/freopen-wfreopen.md), [`freopen_s`, `_wfreopen_s`](reference/freopen-s-wfreopen-s.md) | Reassign a file pointer. |
 
 These routines provide a way to change the representation of the file between a `FILE` structure, a file descriptor, and a Win32 file handle.
 
 | Routine | Use |
 |---|---|
-| [`_fdopen`, `_wfdopen`](./reference/fdopen-wfdopen.md) | Associates a stream with a file that was previously opened for low-level I/O and returns a pointer to the open stream. |
-| [`_fileno`](./reference/fileno.md) | Gets the file descriptor associated with a stream. |
-| [`_get_osfhandle`](./reference/get-osfhandle.md) | Return operating-system file handle associated with existing C run-time file descriptor |
-| [`_open_osfhandle`](./reference/open-osfhandle.md) | Associates C run-time file descriptor with an existing operating-system file handle. |
+| [`_fdopen`, `_wfdopen`](reference/fdopen-wfdopen.md) | Associates a stream with a file that was previously opened for low-level I/O and returns a pointer to the open stream. |
+| [`_fileno`](reference/fileno.md) | Gets the file descriptor associated with a stream. |
+| [`_get_osfhandle`](reference/get-osfhandle.md) | Return operating-system file handle associated with existing C run-time file descriptor |
+| [`_open_osfhandle`](reference/open-osfhandle.md) | Associates C run-time file descriptor with an existing operating-system file handle. |
 
 The following Win32 functions also open files and pipes:
 
 - [`CreateFile`](/windows/win32/api/fileapi/nf-fileapi-createfilew)
-
 - [`CreatePipe`](/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe)
-
 - [`CreateNamedPipe`](/windows/win32/api/winbase/nf-winbase-createnamedpipea)
 
 ## See also
 
-[Universal C runtime routines by category](./run-time-routines-by-category.md)\
-[Directory control](./directory-control.md)\
-[System calls](./system-calls.md)
+[Universal C runtime routines by category](run-time-routines-by-category.md)\
+[Directory control](directory-control.md)\
+[System calls](system-calls.md)
diff --git a/docs/c-runtime-library/files-and-streams.md b/docs/c-runtime-library/files-and-streams.md
index 16b6697be7..99c256fc55 100644
--- a/docs/c-runtime-library/files-and-streams.md
+++ b/docs/c-runtime-library/files-and-streams.md
@@ -2,7 +2,7 @@
 title: "Files and Streams"
 description: "An overview of files and streams in the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["files [C++]", "streams"]
 ms.assetid: f61e712b-eac9-4c28-bb18-97c3786ef387
 ---
diff --git a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md
index dea101aead..1e78d27ce5 100644
--- a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md
+++ b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md
@@ -2,7 +2,7 @@
 title: Find memory leaks with the CRT library
 description: Learn how the C/C++ debugger and C Run-time Library (CRT) can help find memory leaks. The techniques include memory-leak reports and comparing memory snapshots.
 ms.date: 02/03/2023
-helpviewer_keywords: 
+helpviewer_keywords:
   - breakpoints, on memory allocation
   - _CrtMemState
   - _CrtMemCheckpoint
@@ -165,7 +165,7 @@ struct Pod {
     int x;
 };
 
-void main() {
+int main() {
     Pod* pPod = DBG_NEW Pod;
     pPod = DBG_NEW Pod; // Oops, leaked the original pPod!
     delete pPod;
@@ -216,7 +216,7 @@ You can use the allocation number to set a breakpoint on the memory allocation.
 
 After you set a breakpoint on a memory-allocation number, continue to debug. Make sure to run under the same conditions, so the memory-allocation number doesn't change. When your program breaks at the specified memory allocation, use the **Call Stack** window and other debugger windows to determine the conditions under which the memory was allocated. Then, you can continue execution to observe what happens to the object and determine why it isn't correctly deallocated.
 
-Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints.md).
+Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints).
 
 You can also set memory-allocation breakpoints in code. You can set:
 
@@ -241,7 +241,7 @@ _CrtMemCheckpoint( &s1 );
 
 The `_CrtMemCheckpoint` function fills in the structure with a snapshot of the current memory state.
 
-To output the contents of a `_CrtMemState` structure, pass the structure to the `_ CrtMemDumpStatistics` function:
+To output the contents of a `_CrtMemState` structure, pass the structure to the `_CrtMemDumpStatistics` function:
 
 ```cpp
 _CrtMemDumpStatistics( &s1 );
@@ -281,5 +281,5 @@ One technique for finding memory leaks begins by placing `_CrtMemCheckpoint` cal
 ## See also
 
 - [CRT debug heap details](./crt-debug-heap-details.md)
-- [Debugger security](/visualstudio/debugger/debugger-security.md)
-- [Debugging native code](/visualstudio/debugger/debugging-native-code.md)
+- [Debugger security](/visualstudio/debugger/debugger-security)
+- [Debugging native code](/visualstudio/debugger/debugging-native-code)
diff --git a/docs/c-runtime-library/floating-point-support.md b/docs/c-runtime-library/floating-point-support.md
index 69a51ce7ce..7f4ac7bc98 100644
--- a/docs/c-runtime-library/floating-point-support.md
+++ b/docs/c-runtime-library/floating-point-support.md
@@ -11,7 +11,9 @@ The Universal C Runtime library (UCRT) provides many integral and floating-point
 
 For ISO C Standard 11 (C11) and later, the `<tgmath.h>` header, in addition to including `<math.h>` and `<complex.h>`, provides macros that invoke a corresponding math function based on the types of the parameters. See [Type-generic math](tgmath.md) for details.
 
-Many of the floating point math library functions have different implementations for different CPU architectures. For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. In addition, some of the functions may have multiple implementations for a given CPU architecture. The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. When running on a CPU that supports SSE2, the faster SSE2 implementation is used. When running on a CPU that doesn't support SSE2, the slower x87 implementation is used. Because different implementations of the math library functions may use different CPU instructions and different algorithms to produce their results, the functions may produce different results across CPUs. In most cases, the results are within +/-1 ULP of the correctly rounded result, but the actual results may vary across CPUs.
+Many of the floating-point math library functions have different implementations for different CPU architectures. For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. In addition, some of the functions may have multiple implementations for a given CPU architecture. The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. When running on a CPU that supports SSE2, the faster SSE2 implementation is used. When running on a CPU that doesn't support SSE2, the slower x87 implementation is used. Because different implementations of the math library functions may use different CPU instructions and different algorithms to produce their results, the functions may produce different results across CPUs. In most cases, the results are within +/-1 ULP of the correctly rounded result, but the actual results may vary across CPUs.
+
+Newer versions of the UCRT might improve the precision and accuracy of the floating-point math library functions. Since the UCRT is part of the Windows operating system, you might get different results for these functions on different operating system versions or between debug and release builds. Although it is not recommended, you can statically link to the UCRT to guarantee consistent results if you need these functions will produce identical results everywhere.
 
 Previous 16-bit versions of Microsoft C/C++ and Microsoft Visual C++ supported the **`long double`** type as an 80-bit precision floating-point data type. In later versions of Visual C++, the **`long double`** data type is a 64-bit precision floating-point data type identical to the **`double`** type. The compiler treats **`long double`** and **`double`** as distinct types, but the **`long double`** functions are identical to their **`double`** counterparts. The CRT provides **`long double`** versions of the math functions for ISO C99 source code compatibility, but note that the binary representation may differ from other compilers.
 
@@ -79,7 +81,7 @@ Previous 16-bit versions of Microsoft C/C++ and Microsoft Visual C++ supported t
 | [`imaxabs`](./reference/imaxabs.md) | Computes the absolute value of an integer type |
 | [`imaxdiv`](./reference/imaxdiv.md) | Computes the quotient and the remainder of two integer values |
 | [`isfinite`, `_finite`, `_finitef`](./reference/finite-finitef.md) | Determines whether a value is finite |
-| [`isgreater`, `isgreaterequal`, `isless`, `islessequal`, `islessgreater`, `isunordered`](./reference/floating-point-ordering.md) | Compare the order of two floating point values |
+| [`isgreater`, `isgreaterequal`, `isless`, `islessequal`, `islessgreater`, `isunordered`](./reference/floating-point-ordering.md) | Compare the order of two floating-point values |
 | [`isinf`](./reference/isinf.md) | Determines whether a floating-point value is infinite |
 | [`isnan`, `_isnan`, `_isnanf`](./reference/isnan-isnan-isnanf.md) | Tests a floating-point value for NaN |
 | [`isnormal`](./reference/isnormal.md) | Tests whether a floating-point value is both finite and not subnormal |
diff --git a/docs/c-runtime-library/global-state.md b/docs/c-runtime-library/global-state.md
index b1d216c39c..9a8a36b10d 100644
--- a/docs/c-runtime-library/global-state.md
+++ b/docs/c-runtime-library/global-state.md
@@ -1,7 +1,7 @@
 ---
 title: "Global state in the CRT"
 description: "Describes how shared global state is handled in the Microsoft Universal C Runtime." 
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "10/02/2020"
 helpviewer_keywords: ["CRT global state"]
 ---
diff --git a/docs/c-runtime-library/heapset.md b/docs/c-runtime-library/heapset.md
index 98b435fbb4..71dcd09725 100644
--- a/docs/c-runtime-library/heapset.md
+++ b/docs/c-runtime-library/heapset.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _heapset"
 title: "_heapset"
+description: "Learn more about: _heapset"
 ms.date: "11/04/2016"
 api_name: ["_heapset"]
 api_location: ["msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_heapset", "heapset"]
 helpviewer_keywords: ["checking heap", "heapset function", "heaps, checking", "debugging [CRT], heap-related problems", "_heapset function"]
-ms.assetid: 9667eeb0-55bc-4c19-af5f-d1fd0a142b3c
 ---
 # `_heapset`
 
@@ -47,7 +46,7 @@ In addition, if an error occurs, **`_heapset`** sets `errno` to `ENOSYS`.
 
 The **`_heapset`** function shows free memory locations or nodes that have been unintentionally overwritten.
 
-**`_heapset`** checks for minimal consistency on the heap and then sets each byte of the heap's free entries to the `fill` value. This known value shows which memory locations of the heap contain free nodes and which contain data that were unintentionally written to freed memory. If the operating system doesn't support **`_heapset`**(for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`.
+**`_heapset`** checks for minimal consistency on the heap and then sets each byte of the heap's free entries to the `fill` value. This known value shows which memory locations of the heap contain free nodes and which contain data that were unintentionally written to freed memory. If the operating system doesn't support **`_heapset`** (for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`.
 
 ## Requirements
 
diff --git a/docs/c-runtime-library/internationalization.md b/docs/c-runtime-library/internationalization.md
index e66a9a923f..93d47d0e91 100644
--- a/docs/c-runtime-library/internationalization.md
+++ b/docs/c-runtime-library/internationalization.md
@@ -2,7 +2,7 @@
 title: "Internationalization"
 ms.date: "09/29/2020"
 description: "A description of Microsoft runtime library support for writing apps for international markets."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["localization, routines for", "locale-dependent routines", "internationalization routines", "international applications, run-time routines for"]
 ms.assetid: ee536a04-3558-4729-8e10-6dabcde055fd
 ---
diff --git a/docs/c-runtime-library/is-isw-routines.md b/docs/c-runtime-library/is-isw-routines.md
index ed95473112..749a96439b 100644
--- a/docs/c-runtime-library/is-isw-routines.md
+++ b/docs/c-runtime-library/is-isw-routines.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: is, isw Routines"
 title: "is, isw Routines"
+description: "Learn more about: is, isw Routines"
 ms.date: 01/11/2022
 helpviewer_keywords: ["is routines", "isw routines"]
 ---
@@ -15,7 +15,7 @@ helpviewer_keywords: ["is routines", "isw routines"]
       [`iscntrl`, `iswcntrl`, `_iscntrl_l`, `_iswcntrl_l`](./reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md)\
       [`iscsym`, `iscsymf`, `__iscsym`, `__iswcsym`, `__iscsymf`, `__iswcsymf`, `_iscsym_l`, `_iswcsym_l`, `_iscsymf_l`, `_iswcsymf_l`](./reference/iscsym-functions.md)\
       [`_isctype`, `iswctype`, `_isctype_l`, `_iswctype_l`](./reference/isctype-iswctype-isctype-l-iswctype-l.md)\
-      [`isdigit`, `iswdigit`, `_isdigit_l`, `_iswdigit_l`](./reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md)
+      [`isdigit`, `iswdigit`, `_isdigit_l`, `_iswdigit_l`](./reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md)\
       [`isgraph`, `iswgraph`, `_isgraph_l`, `_iswgraph_l`](./reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md)\
       [`isleadbyte`, `_isleadbyte_l`](./reference/isleadbyte-isleadbyte-l.md)\
       [`islower`, `iswlower`, `_islower_l`, `_iswlower_l`](./reference/islower-iswlower-islower-l-iswlower-l.md)\
diff --git a/docs/c-runtime-library/ismbc-routines.md b/docs/c-runtime-library/ismbc-routines.md
index b941bbcf3c..7c7a33362c 100644
--- a/docs/c-runtime-library/ismbc-routines.md
+++ b/docs/c-runtime-library/ismbc-routines.md
@@ -1,41 +1,40 @@
 ---
-description: "Learn more about: _ismbc Routines"
 title: "_ismbc Routines"
+description: "Learn more about: _ismbc Routines"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ismbc routines", "_ismbc routines"]
-ms.assetid: b8995391-7857-4ac3-9a1e-de946eb4464d
 ---
 # `_ismbc` routines
 
 Each `_ismbc` routine tests a given multibyte character `c` for a particular condition.
 
-- [`_ismbcalnum`, `_ismbcalnum_l`, `_ismbcalpha`, `_ismbcalpha_l`, `_ismbcdigit`, `_ismbcdigit_l`](./reference/ismbcalnum-functions.md)\
-- [`_ismbcl0`, `_ismbcl0_l`, `_ismbcl1`, `_ismbcl1_l`, `_ismbcl2`, `_ismbcl2_l`](./reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md)\
-- [`_ismbcgraph`, `_ismbcgraph_l`, `_ismbcprint`, `_ismbcprint_l`, `_ismbcpunct`, `_ismbcpunct_l`, `_ismbcblank`, `_ismbcblank_l`, `_ismbcspace`, `_ismbcspace_l`](./reference/ismbcgraph-functions.md)\
-- [`_ismbclegal`, `_ismbclegal_l`, `_ismbcsymbol`, `_ismbcsymbol_l`](./reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md)\
-- [`_ismbchira`, `_ismbchira_l`, `_ismbckata`, `_ismbckata_l`](./reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md)\
-- [`_ismbclower`, `_ismbclower_l`, `_ismbcupper`, `_ismbcupper_l`](./reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md)
+- [`_ismbcalnum`, `_ismbcalnum_l`, `_ismbcalpha`, `_ismbcalpha_l`, `_ismbcdigit`, `_ismbcdigit_l`](reference/ismbcalnum-functions.md)
+- [`_ismbcl0`, `_ismbcl0_l`, `_ismbcl1`, `_ismbcl1_l`, `_ismbcl2`, `_ismbcl2_l`](reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md)
+- [`_ismbcgraph`, `_ismbcgraph_l`, `_ismbcprint`, `_ismbcprint_l`, `_ismbcpunct`, `_ismbcpunct_l`, `_ismbcblank`, `_ismbcblank_l`, `_ismbcspace`, `_ismbcspace_l`](reference/ismbcgraph-functions.md)
+- [`_ismbclegal`, `_ismbclegal_l`, `_ismbcsymbol`, `_ismbcsymbol_l`](reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md)
+- [`_ismbchira`, `_ismbchira_l`, `_ismbckata`, `_ismbckata_l`](reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md)
+- [`_ismbclower`, `_ismbclower_l`, `_ismbcupper`, `_ismbcupper_l`](reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md)
 
 ## Remarks
 
-The test result of each `_ismbc` routine depends on the multibyte code page in effect. Multibyte code pages have single-byte alphabetic characters. By default, the multibyte code page is set to the system-default ANSI code page obtained from the operating system at program startup. You can query or change the multibyte code page in use with [`_getmbcp`](./reference/getmbcp.md) or [`_setmbcp`](./reference/setmbcp.md), respectively.
+The test result of each `_ismbc` routine depends on the multibyte code page in effect. Multibyte code pages have single-byte alphabetic characters. By default, the multibyte code page is set to the system-default ANSI code page obtained from the operating system at program startup. You can query or change the multibyte code page in use with [`_getmbcp`](reference/getmbcp.md) or [`_setmbcp`](reference/setmbcp.md), respectively.
 
-The output value is affected by the `LC_CTYPE` category setting of the locale. For more information, see [`setlocale`](./reference/setlocale-wsetlocale.md). The versions of these functions without the `_l` suffix use the current locale for this locale-dependent behavior; the versions with the `_l` suffix are identical except that they use the locale parameter passed in instead.
+The output value is affected by the `LC_CTYPE` category setting of the locale. For more information, see [`setlocale`](reference/setlocale-wsetlocale.md). The versions of these functions without the `_l` suffix use the current locale for this locale-dependent behavior; the versions with the `_l` suffix are identical except that they use the locale parameter passed in instead.
 
 | Routine | Test condition | Code page 932 example |
 |---|---|---|
-| [`_ismbcalnum`, `_ismbcalnum_l`](./reference/ismbcalnum-functions.md) | Alphanumeric | Returns nonzero if and only if `c` is a single-byte representation of an ASCII English letter: See examples for `_ismbcdigit` and `_ismbcalpha`. |
-| [`_ismbcalpha`, `_ismbcalpha_l`](./reference/ismbcalnum-functions.md) | Alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII English letter: See examples for `_ismbcupper` and `_ismbclower`; or a katakana letter: 0xA6<=`c`<=0xDF. |
-| [`_ismbcdigit`, `_ismbcdigit_l`](./reference/ismbcalnum-functions.md) | Digit | Returns nonzero if and only if `c` is a single-byte representation of an ASCII digit: 0x30<=`c`<=0x39. |
-| [`_ismbcgraph`, `_ismbcgraph_l`](./reference/ismbcgraph-functions.md) | Graphic | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana printable character except a white space ( ). See examples for `_ismbcdigit`, `_ismbcalpha`, and `_ismbcpunct`. |
-| [`_ismbclegal`, `_ismbclegal_l`](./reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md) | Valid multibyte character | Returns nonzero if and only if the first byte of `c` is within ranges 0x81 - 0x9F or 0xE0 - 0xFC, while the second byte is within ranges 0x40 - 0x7E or 0x80 - FC. |
-| [`_ismbclower`, `_ismbclower_l`](./reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | Lowercase alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII lowercase English letter: 0x61<=`c`<=0x7A. |
-| [`_ismbcprint`, `_ismbcprint_l`](./reference/ismbcgraph-functions.md) | Printable | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana printable character including a white space ( ): See examples for `_ismbcspace`, `_ismbcdigit`, `_ismbcalpha`, and `_ismbcpunct`. |
-| [`_ismbcpunct`, `_ismbcpunct_l`](./reference/ismbcgraph-functions.md) | Punctuation | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana punctuation character. |
-| [`_ismbcblank`, `_ismbcblank_l`](./reference/ismbcgraph-functions.md) | Space or horizontal tab | Returns nonzero if and only if `c` is a single-byte representation of a space character or a horizontal tab character: `c`=0x20 or `c`=0x09. |
-| [`_ismbcspace`, `_ismbcspace_l`](./reference/ismbcgraph-functions.md) | Whitespace | Returns nonzero if and only if `c` is a white space character: `c`=0x20 or 0x09<=`c`<=0x0D. |
-| [`_ismbcsymbol`, `_ismbcsymbol_l`](./reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md) | Multibyte symbol | Returns nonzero if and only if 0x8141<=`c`<=0x81AC. |
-| [`_ismbcupper`, `_ismbcupper_l`](./reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | Uppercase alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII uppercase English letter: 0x41<=`c`<=0x5A. |
+| [`_ismbcalnum`, `_ismbcalnum_l`](reference/ismbcalnum-functions.md) | Alphanumeric | Returns nonzero if and only if `c` is a single-byte representation of an ASCII English letter: See examples for `_ismbcdigit` and `_ismbcalpha`. |
+| [`_ismbcalpha`, `_ismbcalpha_l`](reference/ismbcalnum-functions.md) | Alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII English letter: See examples for `_ismbcupper` and `_ismbclower`; or a katakana letter: 0xA6<=`c`<=0xDF. |
+| [`_ismbcdigit`, `_ismbcdigit_l`](reference/ismbcalnum-functions.md) | Digit | Returns nonzero if and only if `c` is a single-byte representation of an ASCII digit: 0x30<=`c`<=0x39. |
+| [`_ismbcgraph`, `_ismbcgraph_l`](reference/ismbcgraph-functions.md) | Graphic | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana printable character except a white space ( ). See examples for `_ismbcdigit`, `_ismbcalpha`, and `_ismbcpunct`. |
+| [`_ismbclegal`, `_ismbclegal_l`](reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md) | Valid multibyte character | Returns nonzero if and only if the first byte of `c` is within ranges 0x81 - 0x9F or 0xE0 - 0xFC, while the second byte is within ranges 0x40 - 0x7E or 0x80 - FC. |
+| [`_ismbclower`, `_ismbclower_l`](reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | Lowercase alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII lowercase English letter: 0x61<=`c`<=0x7A. |
+| [`_ismbcprint`, `_ismbcprint_l`](reference/ismbcgraph-functions.md) | Printable | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana printable character including a white space ( ): See examples for `_ismbcspace`, `_ismbcdigit`, `_ismbcalpha`, and `_ismbcpunct`. |
+| [`_ismbcpunct`, `_ismbcpunct_l`](reference/ismbcgraph-functions.md) | Punctuation | Returns nonzero if and only if `c` is a single-byte representation of any ASCII or katakana punctuation character. |
+| [`_ismbcblank`, `_ismbcblank_l`](reference/ismbcgraph-functions.md) | Space or horizontal tab | Returns nonzero if and only if `c` is a single-byte representation of a space character or a horizontal tab character: `c`=0x20 or `c`=0x09. |
+| [`_ismbcspace`, `_ismbcspace_l`](reference/ismbcgraph-functions.md) | Whitespace | Returns nonzero if and only if `c` is a white space character: `c`=0x20 or 0x09<=`c`<=0x0D. |
+| [`_ismbcsymbol`, `_ismbcsymbol_l`](reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md) | Multibyte symbol | Returns nonzero if and only if 0x8141<=`c`<=0x81AC. |
+| [`_ismbcupper`, `_ismbcupper_l`](reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | Uppercase alphabetic | Returns nonzero if and only if `c` is a single-byte representation of an ASCII uppercase English letter: 0x41<=`c`<=0x5A. |
 
 **Code Page 932 Specific**
 
@@ -43,18 +42,18 @@ The following routines are specific to code page 932.
 
 | Routine | Test condition (code page 932 only) |
 |---|---|
-| [`_ismbchira`, `_ismbchira_l`](./reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md) | Double-byte Hiragana: 0x829F<=`c`<=0x82F1. |
-| [`_ismbckata`, `_ismbckata_l`](./reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md) | Double-byte katakana: 0x8340<=`c`<=0x8396. |
-| [`_ismbcl0`, `_ismbcl0_l`](./reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS non-Kanji: 0x8140<=`c`<=0x889E. |
-| [`_ismbcl1`, `_ismbcl1_l`](./reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS level-1: 0x889F<=`c`<=0x9872. |
-| [`_ismbcl2`, `_ismbcl2_l`](./reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS level-2: 0x989F<=`c`<=0xEA9E. |
+| [`_ismbchira`, `_ismbchira_l`](reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md) | Double-byte Hiragana: 0x829F<=`c`<=0x82F1. |
+| [`_ismbckata`, `_ismbckata_l`](reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md) | Double-byte katakana: 0x8340<=`c`<=0x8396. |
+| [`_ismbcl0`, `_ismbcl0_l`](reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS non-Kanji: 0x8140<=`c`<=0x889E. |
+| [`_ismbcl1`, `_ismbcl1_l`](reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS level-1: 0x889F<=`c`<=0x9872. |
+| [`_ismbcl2`, `_ismbcl2_l`](reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md) | JIS level-2: 0x989F<=`c`<=0xEA9E. |
 
-`_ismbcl0`, `_ismbcl1`, and `_ismbcl2` check that the specified value `c` matches the test conditions described in the preceding table, but don't check that `c` is a valid multibyte character. If the lower byte is in the ranges 0x00 - 0x3F, 0x7F, or 0xFD - 0xFF, these functions return a nonzero value, indicating that the character satisfies the test condition. Use [`_ismbbtrail`, `_ismbbtrail_l`](./reference/ismbbtrail-ismbbtrail-l.md) to test whether the multibyte character is defined.
+`_ismbcl0`, `_ismbcl1`, and `_ismbcl2` check that the specified value `c` matches the test conditions described in the preceding table, but don't check that `c` is a valid multibyte character. If the lower byte is in the ranges 0x00 - 0x3F, 0x7F, or 0xFD - 0xFF, these functions return a nonzero value, indicating that the character satisfies the test condition. Use [`_ismbbtrail`, `_ismbbtrail_l`](reference/ismbbtrail-ismbbtrail-l.md) to test whether the multibyte character is defined.
 
 **END Code Page 932 Specific**
 
 ## See also
 
-[Character classification](./character-classification.md)\
-[`is`, `isw` routines](./is-isw-routines.md)\
-[`_ismbb` routines](./ismbb-routines.md)
+[Character classification](character-classification.md)\
+[`is`, `isw` routines](is-isw-routines.md)\
+[`_ismbb` routines](ismbb-routines.md)
diff --git a/docs/c-runtime-library/language-strings.md b/docs/c-runtime-library/language-strings.md
index c68c721c29..99b9af3a15 100644
--- a/docs/c-runtime-library/language-strings.md
+++ b/docs/c-runtime-library/language-strings.md
@@ -6,7 +6,7 @@ helpviewer_keywords: ["language strings"]
 ---
 # Language strings
 
-The [`setlocale`](./reference/setlocale-wsetlocale.md) and [`_create_locale`](./reference/create-locale-wcreate-locale.md) functions can use the Windows NLS API supported languages on operating systems that don't use the Unicode code page. For a list of supported languages by operating system version, see [Appendix A: Product Behavior](/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c) in \[MS-LCID]: Windows Language Code Identifier (LCID) Reference. The language string can be any of the values in the **Language** and **Language tag** columns of the list of supported languages. For example code that enumerates available locale names and related values, see [NLS: Name-based APIs Sample](/windows/win32/intl/nls--name-based-apis-sample).
+The [`setlocale`](reference/setlocale-wsetlocale.md) and [`_create_locale`](reference/create-locale-wcreate-locale.md) functions can use the Windows NLS API supported languages on operating systems that don't use the Unicode code page. For a list of supported languages by operating system version, see [Appendix A: Product Behavior](/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c) in \[MS-LCID]: Windows Language Code Identifier (LCID) Reference. The language string can be any of the values in the **Language** and **Language tag** columns of the list of supported languages. For example code that enumerates available locale names and related values, see [NLS: Name-based APIs Sample](/windows/win32/intl/nls--name-based-apis-sample).
 
 ## Supported language strings
 
@@ -82,7 +82,7 @@ The Microsoft C run-time library implementation also supports these language str
 
 ## See also
 
-- [Locale names, Languages, and Country/Region strings](./locale-names-languages-and-country-region-strings.md)\
-- [Country/Region strings](./country-region-strings.md)\
-- [`setlocale`, `_wsetlocale`](./reference/setlocale-wsetlocale.md)\
-- [`_create_locale`, `_wcreate_locale`](./reference/create-locale-wcreate-locale.md)
+- [Locale names, Languages, and Country/Region strings](locale-names-languages-and-country-region-strings.md)
+- [Country/Region strings](country-region-strings.md)
+- [`setlocale`, `_wsetlocale`](reference/setlocale-wsetlocale.md)
+- [`_create_locale`, `_wcreate_locale`](reference/create-locale-wcreate-locale.md)
diff --git a/docs/c-runtime-library/link-options.md b/docs/c-runtime-library/link-options.md
index 33a73b92de..7f27f9a178 100644
--- a/docs/c-runtime-library/link-options.md
+++ b/docs/c-runtime-library/link-options.md
@@ -1,27 +1,26 @@
 ---
-description: "Learn more about: Link Options"
-title: "Link Options"
+title: "Link options"
+description: "Learn more about: Link options"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["nothrownew.obj", "newmode.obj", "noenv.obj", "psetargv.obj", "legacy_stdio_float_rounding.obj", "loosefpmath.obj", "smallheap.obj", "fp10.obj", "nochkclr.obj", "chkstk.obj", "pcommode.obj", "pnoenv.obj", "link options [C++]", "invalidcontinue.obj", "pnothrownew.obj", "pwsetargv.obj", "pinvalidcontinue.obj", "wsetargv.obj", "binmode.obj", "setargv.obj", "noarg.obj", "pnewmode.obj", "commode.obj", "pthreadlocale.obj", "pbinmode.obj", "threadlocale.obj", "pnoarg.obj"]
-ms.assetid: 05b5a77b-9dd1-494b-ae46-314598c770bb
 ---
 # Link options
 
-The CRT lib directory includes several small object files that enable specific CRT features without any code change. These object files are called "link options" since you only have to add them to the linker command line to use them.
+The CRT lib directory includes several small object files that enable specific CRT features without code changes. These object files are called "link options" because you only have to add them to the linker command line to use them. To do this from Visual Studio, in the Solution Explorer right-click your project and choose **Properties**. Under **Configuration Properties**, choose **Linker** > **Input** > **Additional Dependencies** and specify the additional items to add to the link command line.
 
-CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and /clr code.
+CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and [`/clr`](../build/reference/clr-common-language-runtime-compilation.md) code.
 
 | Native and /clr | Pure mode | Description |
 |---|---|---|
-| `binmode.obj` | `pbinmode.obj` | Sets the default file-translation mode to binary. See [`_fmode`](./fmode.md). |
+| `binmode.obj` | `pbinmode.obj` | Sets the default file-translation mode to binary. See [`_fmode`](fmode.md). |
 | `chkstk.obj` | n/a | Provides stack-checking and alloca support when not using the CRT. |
-| `commode.obj` | `pcommode.obj` | Sets the global commit flag to "commit". See [`fopen`, `_wfopen`](./reference/fopen-wfopen.md) and [`fopen_s`, `_wfopen_s`](./reference/fopen-s-wfopen-s.md). |
-| exe_initialize_mta.lib | n/a | Initializes the MTA apartment during EXE startup, which allows the use of COM objects in global smart pointers. Because this option leaks an MTA apartment reference during shutdown, don't use it for DLLs. Linking to this file is equivalent to including `combase.h` and defining `_EXE_INITIALIZE_MTA`. Using this link option adds [onecore.lib](/windows/win32/apiindex/windows-umbrella-libraries) to the default library list. If this effect is undesirable (such as using onecore_apiset.lib or other umbrella library), use [/NODEFAULTLIB](../build/reference/nodefaultlib-ignore-libraries.md) to override this behavior and provide an alternative. |
-| `fp10.obj` | n/a | Changes the default precision control to 64 bits. See [Math and floating-point support](./floating-point-support.md). |
+| `commode.obj` | `pcommode.obj` | Sets the global commit flag to "commit". See [`fopen`, `_wfopen`](reference/fopen-wfopen.md) and [`fopen_s`, `_wfopen_s`](reference/fopen-s-wfopen-s.md). |
+| `exe_initialize_mta.lib` | n/a | Initializes the MTA apartment during EXE startup, which allows the use of COM objects in global smart pointers. Because this option leaks an MTA apartment reference during shutdown, don't use it for DLLs. Linking to this file is equivalent to including `combase.h` and defining `_EXE_INITIALIZE_MTA`. Using this link option adds [`onecore.lib`](/windows/win32/apiindex/windows-umbrella-libraries) to the default library list. If this effect is undesirable (such as using onecore_apiset.lib or other umbrella library), use [`/NODEFAULTLIB`](../build/reference/nodefaultlib-ignore-libraries.md) to override this behavior and provide an alternative. |
+| `fp10.obj` | n/a | Changes the default precision control to 64 bits. See [Math and floating-point support](floating-point-support.md). |
 | `invalidcontinue.obj` | `pinvalidcontinue.obj` | Sets a default invalid parameter handler that does nothing, meaning that invalid parameters passed to CRT functions will just set errno and return an error result. |
-| `legacy_stdio_float_rounding.obj` | n/a | The printing of floating-point values (for example, when using [`printf`](./reference/printf-printf-l-wprintf-wprintf-l.md)) with the Windows 10 19041 Universal C Runtime has been fixed. It now properly rounds exactly representable floating-point numbers, and respects the floating-point rounding requested by [`fesetround`](./reference/fegetround-fesetround2.md). This behavior update is available in Visual Studio 2019 version 16.2 and later. Legacy behavior is used in earlier versions of Visual Studio, or by providing this link option. |
+| `legacy_stdio_float_rounding.obj` | n/a | The printing of floating-point values (for example, when using [`printf`](reference/printf-printf-l-wprintf-wprintf-l.md)) with the Windows 10 19041 Universal C Runtime has been fixed. It now properly rounds exactly representable floating-point numbers, and respects the floating-point rounding requested by [`fesetround`](reference/fegetround-fesetround2.md). This behavior update is available in Visual Studio 2019 version 16.2 and later. Legacy behavior is used in earlier versions of Visual Studio, or by providing this link option. |
 | `loosefpmath.obj` | n/a | Ensures that floating point code tolerates denormal values. |
-| `newmode.obj` | `pnewmode.obj` | Causes [`malloc`](./reference/malloc.md) to call the new handler on failure. See [`_set_new_mode`](./reference/set-new-mode.md), [`_set_new_handler`](./reference/set-new-handler.md), [`calloc`](./reference/calloc.md), and [`realloc`](./reference/realloc.md). |
+| `newmode.obj` | `pnewmode.obj` | Causes [`malloc`](reference/malloc.md) to call the new handler on failure. See [`_set_new_mode`](reference/set-new-mode.md), [`_set_new_handler`](reference/set-new-handler.md), [`calloc`](reference/calloc.md), and [`realloc`](reference/realloc.md). |
 | `noarg.obj` | `pnoarg.obj` | Disables all processing of argc and argv. |
 | `nochkclr.obj` | n/a | Does nothing. Remove from your project. |
 | `noenv.obj` | `pnoenv.obj` | Disables the creation of a cached environment for the CRT. |
@@ -32,4 +31,4 @@ CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and
 
 ## See also
 
-- [C runtime (CRT) and C++ Standard Library (STL) `.lib` files](./crt-library-features.md)
+- [C runtime (CRT) and C++ Standard Library (STL) `.lib` files](crt-library-features.md)
diff --git a/docs/c-runtime-library/locale-names-languages-and-country-region-strings.md b/docs/c-runtime-library/locale-names-languages-and-country-region-strings.md
index dd2fae03a4..ae687afb43 100644
--- a/docs/c-runtime-library/locale-names-languages-and-country-region-strings.md
+++ b/docs/c-runtime-library/locale-names-languages-and-country-region-strings.md
@@ -1,7 +1,7 @@
 ---
 title: "Locale Names, Languages, and Country-Region Strings"
 description: "An overview of using Microsoft Universal CRT locale, language, and country and region strings."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "12/10/2018"
 helpviewer_keywords: ["country/region strings", "localization, locale", "locales", "setlocale function", "language strings"]
 ms.assetid: a0e5a0c5-5602-4da0-b65f-de3d6c8530a2
diff --git a/docs/c-runtime-library/locale.md b/docs/c-runtime-library/locale.md
index f7ced3c342..5801ca774e 100644
--- a/docs/c-runtime-library/locale.md
+++ b/docs/c-runtime-library/locale.md
@@ -1,63 +1,63 @@
 ---
-description: "Learn more about: Locale"
 title: "Locale"
-ms.date: "04/11/2018"
+description: "Learn more about: Locale"
+ms.date: 04/11/2018
 f1_keywords: ["c.international"]
 helpviewer_keywords: ["localization, locale", "country/region information", "language information routines", "setlocale function", "locale routines"]
 ---
 # Locale
 
-*Locale* refers to country/region and language settings that you can use to customize your program. Some locale-dependent categories include the display formats for dates and monetary values. For more information, see [Locale categories](./locale-categories.md).
+*Locale* refers to country/region and language settings that you can use to customize your program. Some locale-dependent categories include the display formats for dates and monetary values. For more information, see [Locale categories](locale-categories.md).
 
-Use the [`setlocale`](./reference/setlocale-wsetlocale.md) function to change or query some or all of the current program or thread locale information while using functions without the **`_l`** suffix. The functions with the **`_l`** suffix will use the locale parameter passed in for their locale information during the execution of that specific function only. To create a locale for use with a function with a **`_l`** suffix, use [`_create_locale`](./reference/create-locale-wcreate-locale.md). To free this locale, use [`_free_locale`](./reference/free-locale.md). To get the current locale, use [`_get_current_locale`](./reference/get-current-locale.md).
+Use the [`setlocale`](reference/setlocale-wsetlocale.md) function to change or query some or all of the current program or thread locale information while using functions without the **`_l`** suffix. The functions with the **`_l`** suffix will use the locale parameter passed in for their locale information during the execution of that specific function only. To create a locale for use with a function with a **`_l`** suffix, use [`_create_locale`](reference/create-locale-wcreate-locale.md). To free this locale, use [`_free_locale`](reference/free-locale.md). To get the current locale, use [`_get_current_locale`](reference/get-current-locale.md).
 
-Use [`_configthreadlocale`](./reference/configthreadlocale.md) to control whether each thread has its own locale, or all threads in a program share the same locale. For more information, see [Locales and code pages](../text/locales-and-code-pages.md).
+Use [`_configthreadlocale`](reference/configthreadlocale.md) to control whether each thread has its own locale, or all threads in a program share the same locale. For more information, see [Locales and code pages](../text/locales-and-code-pages.md).
 
-More secure versions of the functions in the following table are available, indicated by the **`_s`** ("secure") suffix. For more information, see [Security features in the CRT](./security-features-in-the-crt.md).
+More secure versions of the functions in the following table are available, indicated by the **`_s`** ("secure") suffix. For more information, see [Security features in the CRT](security-features-in-the-crt.md).
 
 ## Locale-dependent routines
 
 | Routine | Use | **`setlocale`** category setting dependence |
 |---|---|---|
-| [`atof`, `_atof_l`, `_wtof`, `_wtof_l`](./reference/atof-atof-l-wtof-wtof-l.md) | Convert character to floating-point value | `LC_NUMERIC` |
-| [`atoi`, `_atoi_l`, `_wtoi`, `_wtoi_l`](./reference/atoi-atoi-l-wtoi-wtoi-l.md) | Convert character to integer value | `LC_NUMERIC` |
-| [`_atoi64`, `_atoi64_l`, `_wtoi64`, `_wtoi64_l`](./reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md) | Convert character to 64-bit integer value | `LC_NUMERIC` |
-| [`atol`, `_atol_l`, `_wtol`, `_wtol_l`](./reference/atol-atol-l-wtol-wtol-l.md) | Convert character to long value | `LC_NUMERIC` |
-| [`_atodbl`, `_atodbl_l`, `_atoldbl`, `_atoldbl_l`, `_atoflt`, `_atoflt_l`](./reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md) | Convert character to double-long value | `LC_NUMERIC` |
-| [`is`, `isw` routines](./is-isw-routines.md) | Test given integer for particular condition. | `LC_CTYPE` |
-| [`isleadbyte`, `_isleadbyte_l`](./reference/isleadbyte-isleadbyte-l.md) | Test for lead byte | `LC_CTYPE` |
-| [`localeconv`](./reference/localeconv.md) | Read appropriate values for formatting numeric quantities | `LC_MONETARY, LC_NUMERIC` |
-| [`MB_CUR_MAX`](./mb-cur-max.md) | Maximum length in bytes of any multibyte character in current locale (macro defined in `STDLIB.H`) | `LC_CTYPE` |
-| [`_mbccpy`, `_mbccpy_l`](./reference/mbccpy-mbccpy-l.md),[`_mbccpy_s`, `_mbccpy_s_l`](./reference/mbccpy-s-mbccpy-s-l.md) | Copy one multibyte character | `LC_CTYPE` |
-| [`_mbclen`, `mblen`, `_mblen_l`](./reference/mbclen-mblen-mblen-l.md) | Validate and return number of bytes in multibyte character | `LC_CTYPE` |
-| [`strlen`, `wcslen`, `_mbslen`, `_mbslen_l`, `_mbstrlen`, `_mbstrlen_l`](./reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md) | For multibyte-character strings: validate each character in string; return string length | `LC_CTYPE` |
-| [`mbstowcs`, `_mbstowcs_l`](./reference/mbstowcs-mbstowcs-l.md),[`mbstowcs_s`, `_mbstowcs_s_l`](./reference/mbstowcs-s-mbstowcs-s-l.md) | Convert sequence of multibyte characters to corresponding sequence of wide characters | `LC_CTYPE` |
-| [`mbtowc`, `_mbtowc_l`](./reference/mbtowc-mbtowc-l.md) | Convert multibyte character to corresponding wide character | `LC_CTYPE` |
-| [`printf`](./reference/printf-printf-l-wprintf-wprintf-l.md) functions | Write formatted output | `LC_NUMERIC` (determines radix character output) |
-| [`scanf`](./reference/scanf-scanf-l-wscanf-wscanf-l.md) functions | Read formatted input | `LC_NUMERIC` (determines radix character recognition) |
-| [`setlocale`, `_wsetlocale`](./reference/setlocale-wsetlocale.md) | Select locale for program | Not applicable |
-| [`strcoll`, `wcscoll`, `_mbscoll`, `_strcoll_l`, `_wcscoll_l`, `_mbscoll_l`](./reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md) | Compare characters of two strings | `LC_COLLATE` |
-| [`_stricmp`, `_wcsicmp`, `_mbsicmp`, `_stricmp_l`, `_wcsicmp_l`, `_mbsicmp_l`](./reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) | Compare two strings without regard to case | `LC_CTYPE` |
-| [`_stricoll`, `_wcsicoll`, `_mbsicoll`, `_stricoll_l`, `_wcsicoll_l`, `_mbsicoll_l`](./reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md) | Compare characters of two strings (case insensitive) | `LC_COLLATE` |
-| [`_strncoll`, `_wcsncoll`, `_mbsncoll`, `_strncoll_l`, `_wcsncoll_l`, `_mbsncoll_l`](./reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md) | Compare first **`n`** characters of two strings | `LC_COLLATE` |
-| [`_strnicmp`, `_wcsnicmp`, `_mbsnicmp`, `_strnicmp_l`, `_wcsnicmp_l`, `_mbsnicmp_l`](./reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md) | Compare characters of two strings without regard to case. | `LC_CTYPE` |
-| [`_strnicoll`, `_wcsnicoll`, `_mbsnicoll`, `_strnicoll_l`, `_wcsnicoll_l`, `_mbsnicoll_l`](./reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md) | Compare first **`n`** characters of two strings (case insensitive) | `LC_COLLATE` |
-| [`strftime`, `wcsftime`, `_strftime_l`, `_wcsftime_l`](./reference/strftime-wcsftime-strftime-l-wcsftime-l.md) | Format date and time value according to supplied **`format`** argument | `LC_TIME` |
-| [`_strlwr`, `_wcslwr`, `_mbslwr`, `_strlwr_l`, `_wcslwr_l`, `_mbslwr_l`](./reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md),[`_strlwr_s`, `_strlwr_s_l`, `_mbslwr_s`, `_mbslwr_s_l`, `_wcslwr_s`, `_wcslwr_s_l`](./reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md) | Convert, in place, each uppercase letter in given string to lowercase | `LC_CTYPE` |
-| [`strtod`, `_strtod_l`, `wcstod`, `_wcstod_l`](./reference/strtod-strtod-l-wcstod-wcstod-l.md) | Convert character string to **`double`** value | `LC_NUMERIC` (determines radix character recognition) |
-| [`strtol`, `wcstol`, `_strtol_l`, `_wcstol_l`](./reference/strtol-wcstol-strtol-l-wcstol-l.md) | Convert character string to **`long`** value | `LC_NUMERIC` (determines radix character recognition) |
-| [`strtoul`, `_strtoul_l`, `wcstoul`, `_wcstoul_l`](./reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md) | Convert character string to unsigned long value | `LC_NUMERIC` (determines radix character recognition) |
-| [`_strupr`, `_strupr_l`, `_mbsupr`, `_mbsupr_l`, `_wcsupr_l`, `_wcsupr`](./reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md),[`_strupr_s`, `_strupr_s_l`, `_mbsupr_s`, `_mbsupr_s_l`, `_wcsupr_s`, `_wcsupr_s_l`](./reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md) | Convert, in place, each lowercase letter in string to uppercase | `LC_CTYPE` |
-| [`strxfrm`, `wcsxfrm`, `_strxfrm_l`, `_wcsxfrm_l`](./reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md) | Transform string into collated form according to locale | `LC_COLLATE` |
-| [`tolower`, `_tolower`, `towlower`, `_tolower_l`, `_towlower_l`](./reference/tolower-tolower-towlower-tolower-l-towlower-l.md),[`_mbctolower`, `_mbctolower_l`, `_mbctoupper`, `_mbctoupper_l`](./reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md) | Convert given character to corresponding lowercase character | `LC_CTYPE` |
-| [`toupper`, `_toupper`, `towupper`, `_toupper_l`, `_towupper_l`](./reference/toupper-toupper-towupper-toupper-l-towupper-l.md),[`_mbctolower`, `_mbctolower_l`, `_mbctoupper`, `_mbctoupper_l`](./reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md) | Convert given character to corresponding uppercase letter | `LC_CTYPE` |
-| [`wcstombs`, `_wcstombs_l`](./reference/wcstombs-wcstombs-l.md),[`wcstombs_s`, `_wcstombs_s_l`](./reference/wcstombs-s-wcstombs-s-l.md) | Convert sequence of wide characters to corresponding sequence of multibyte characters | `LC_CTYPE` |
-| [`wctomb`, `_wctomb_l`](./reference/wctomb-wctomb-l.md),[`wctomb_s`, `_wctomb_s_l`](./reference/wctomb-s-wctomb-s-l.md) | Convert wide character to corresponding multibyte character | `LC_CTYPE` |
+| [`atof`, `_atof_l`, `_wtof`, `_wtof_l`](reference/atof-atof-l-wtof-wtof-l.md) | Convert character to floating-point value | `LC_NUMERIC` |
+| [`atoi`, `_atoi_l`, `_wtoi`, `_wtoi_l`](reference/atoi-atoi-l-wtoi-wtoi-l.md) | Convert character to integer value | `LC_NUMERIC` |
+| [`_atoi64`, `_atoi64_l`, `_wtoi64`, `_wtoi64_l`](reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md) | Convert character to 64-bit integer value | `LC_NUMERIC` |
+| [`atol`, `_atol_l`, `_wtol`, `_wtol_l`](reference/atol-atol-l-wtol-wtol-l.md) | Convert character to long value | `LC_NUMERIC` |
+| [`_atodbl`, `_atodbl_l`, `_atoldbl`, `_atoldbl_l`, `_atoflt`, `_atoflt_l`](reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md) | Convert character to double-long value | `LC_NUMERIC` |
+| [`is`, `isw` routines](is-isw-routines.md) | Test given integer for particular condition. | `LC_CTYPE` |
+| [`isleadbyte`, `_isleadbyte_l`](reference/isleadbyte-isleadbyte-l.md) | Test for lead byte | `LC_CTYPE` |
+| [`localeconv`](reference/localeconv.md) | Read appropriate values for formatting numeric quantities | `LC_MONETARY, LC_NUMERIC` |
+| [`MB_CUR_MAX`](mb-cur-max.md) | Maximum length in bytes of any multibyte character in current locale (macro defined in `STDLIB.H`) | `LC_CTYPE` |
+| [`_mbccpy`, `_mbccpy_l`](reference/mbccpy-mbccpy-l.md), [`_mbccpy_s`, `_mbccpy_s_l`](reference/mbccpy-s-mbccpy-s-l.md) | Copy one multibyte character | `LC_CTYPE` |
+| [`_mbclen`, `mblen`, `_mblen_l`](reference/mbclen-mblen-mblen-l.md) | Validate and return number of bytes in multibyte character | `LC_CTYPE` |
+| [`strlen`, `wcslen`, `_mbslen`, `_mbslen_l`, `_mbstrlen`, `_mbstrlen_l`](reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md) | For multibyte-character strings: validate each character in string; return string length | `LC_CTYPE` |
+| [`mbstowcs`, `_mbstowcs_l`](reference/mbstowcs-mbstowcs-l.md), [`mbstowcs_s`, `_mbstowcs_s_l`](reference/mbstowcs-s-mbstowcs-s-l.md) | Convert sequence of multibyte characters to corresponding sequence of wide characters | `LC_CTYPE` |
+| [`mbtowc`, `_mbtowc_l`](reference/mbtowc-mbtowc-l.md) | Convert multibyte character to corresponding wide character | `LC_CTYPE` |
+| [`printf`](reference/printf-printf-l-wprintf-wprintf-l.md) functions | Write formatted output | `LC_NUMERIC` (determines radix character output) |
+| [`scanf`](reference/scanf-scanf-l-wscanf-wscanf-l.md) functions | Read formatted input | `LC_NUMERIC` (determines radix character recognition) |
+| [`setlocale`, `_wsetlocale`](reference/setlocale-wsetlocale.md) | Select locale for program | Not applicable |
+| [`strcoll`, `wcscoll`, `_mbscoll`, `_strcoll_l`, `_wcscoll_l`, `_mbscoll_l`](reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md) | Compare characters of two strings | `LC_COLLATE` |
+| [`_stricmp`, `_wcsicmp`, `_mbsicmp`, `_stricmp_l`, `_wcsicmp_l`, `_mbsicmp_l`](reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) | Compare two strings without regard to case | `LC_CTYPE` |
+| [`_stricoll`, `_wcsicoll`, `_mbsicoll`, `_stricoll_l`, `_wcsicoll_l`, `_mbsicoll_l`](reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md) | Compare characters of two strings (case insensitive) | `LC_COLLATE` |
+| [`_strncoll`, `_wcsncoll`, `_mbsncoll`, `_strncoll_l`, `_wcsncoll_l`, `_mbsncoll_l`](reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md) | Compare first **`n`** characters of two strings | `LC_COLLATE` |
+| [`_strnicmp`, `_wcsnicmp`, `_mbsnicmp`, `_strnicmp_l`, `_wcsnicmp_l`, `_mbsnicmp_l`](reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md) | Compare characters of two strings without regard to case. | `LC_CTYPE` |
+| [`_strnicoll`, `_wcsnicoll`, `_mbsnicoll`, `_strnicoll_l`, `_wcsnicoll_l`, `_mbsnicoll_l`](reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md) | Compare first **`n`** characters of two strings (case insensitive) | `LC_COLLATE` |
+| [`strftime`, `wcsftime`, `_strftime_l`, `_wcsftime_l`](reference/strftime-wcsftime-strftime-l-wcsftime-l.md) | Format date and time value according to supplied **`format`** argument | `LC_TIME` |
+| [`_strlwr`, `_wcslwr`, `_mbslwr`, `_strlwr_l`, `_wcslwr_l`, `_mbslwr_l`](reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md), [`_strlwr_s`, `_strlwr_s_l`, `_mbslwr_s`, `_mbslwr_s_l`, `_wcslwr_s`, `_wcslwr_s_l`](reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md) | Convert, in place, each uppercase letter in given string to lowercase | `LC_CTYPE` |
+| [`strtod`, `_strtod_l`, `wcstod`, `_wcstod_l`](reference/strtod-strtod-l-wcstod-wcstod-l.md) | Convert character string to **`double`** value | `LC_NUMERIC` (determines radix character recognition) |
+| [`strtol`, `wcstol`, `_strtol_l`, `_wcstol_l`](reference/strtol-wcstol-strtol-l-wcstol-l.md) | Convert character string to **`long`** value | `LC_NUMERIC` (determines radix character recognition) |
+| [`strtoul`, `_strtoul_l`, `wcstoul`, `_wcstoul_l`](reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md) | Convert character string to unsigned long value | `LC_NUMERIC` (determines radix character recognition) |
+| [`_strupr`, `_strupr_l`, `_mbsupr`, `_mbsupr_l`, `_wcsupr_l`, `_wcsupr`](reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md), [`_strupr_s`, `_strupr_s_l`, `_mbsupr_s`, `_mbsupr_s_l`, `_wcsupr_s`, `_wcsupr_s_l`](reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md) | Convert, in place, each lowercase letter in string to uppercase | `LC_CTYPE` |
+| [`strxfrm`, `wcsxfrm`, `_strxfrm_l`, `_wcsxfrm_l`](reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md) | Transform string into collated form according to locale | `LC_COLLATE` |
+| [`tolower`, `_tolower`, `towlower`, `_tolower_l`, `_towlower_l`](reference/tolower-tolower-towlower-tolower-l-towlower-l.md), [`_mbctolower`, `_mbctolower_l`, `_mbctoupper`, `_mbctoupper_l`](reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md) | Convert given character to corresponding lowercase character | `LC_CTYPE` |
+| [`toupper`, `_toupper`, `towupper`, `_toupper_l`, `_towupper_l`](reference/toupper-toupper-towupper-toupper-l-towupper-l.md), [`_mbctolower`, `_mbctolower_l`, `_mbctoupper`, `_mbctoupper_l`](reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md) | Convert given character to corresponding uppercase letter | `LC_CTYPE` |
+| [`wcstombs`, `_wcstombs_l`](reference/wcstombs-wcstombs-l.md), [`wcstombs_s`, `_wcstombs_s_l`](reference/wcstombs-s-wcstombs-s-l.md) | Convert sequence of wide characters to corresponding sequence of multibyte characters | `LC_CTYPE` |
+| [`wctomb`, `_wctomb_l`](reference/wctomb-wctomb-l.md), [`wctomb_s`, `_wctomb_s_l`](reference/wctomb-s-wctomb-s-l.md) | Convert wide character to corresponding multibyte character | `LC_CTYPE` |
 
 > [!NOTE]
-> For multibyte routines, the multibyte code page must be equivalent to the locale set with [`setlocale`](./reference/setlocale-wsetlocale.md). [`_setmbcp`](./reference/setmbcp.md), with an argument of `_MB_CP_LOCALE` makes the multibyte code page the same as the **`setlocale`** code page.
+> For multibyte routines, the multibyte code page must be equivalent to the locale set with [`setlocale`](reference/setlocale-wsetlocale.md). [`_setmbcp`](reference/setmbcp.md), with an argument of `_MB_CP_LOCALE` makes the multibyte code page the same as the **`setlocale`** code page.
 
 ## See also
 
-[Internationalization](./internationalization.md)\
-[Universal C runtime routines by category](./run-time-routines-by-category.md)
+[Internationalization](internationalization.md)\
+[Universal C runtime routines by category](run-time-routines-by-category.md)
diff --git a/docs/c-runtime-library/lock.md b/docs/c-runtime-library/lock.md
index e9f4e94fa0..19562f13ef 100644
--- a/docs/c-runtime-library/lock.md
+++ b/docs/c-runtime-library/lock.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _lock"
 title: "_lock"
-ms.date: "11/04/2016"
+description: "Learn more about: _lock"
+ms.date: 11/04/2016
 api_name: ["_lock"]
 api_location: ["msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcrt.dll", "msvcr120_clr0400.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_lock"]
 helpviewer_keywords: ["lock function", "_lock function"]
-ms.assetid: 29f77c37-30de-4b3d-91b6-030216e645a6
 ---
 # `_lock`
 
@@ -20,7 +19,7 @@ Acquires a multi-thread lock.
 ## Syntax
 
 ```cpp
-void __cdecl _lock
+void __cdecl _lock(
    int locknum
 );
 ```
diff --git a/docs/c-runtime-library/multithreaded-libraries-performance.md b/docs/c-runtime-library/multithreaded-libraries-performance.md
index 12d78d352f..d1f3cc0346 100644
--- a/docs/c-runtime-library/multithreaded-libraries-performance.md
+++ b/docs/c-runtime-library/multithreaded-libraries-performance.md
@@ -2,7 +2,7 @@
 title: "Multithreaded Libraries Performance"
 description: "An overview of how to get the most performance from the Microsoft C runtime multithreaded libraries."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["threading [C++], performance", "libraries, multithreaded", "performance, multithreading", "multithreaded libraries"]
 ms.assetid: faa5d808-087c-463d-8f0d-8c478d137296
 ---
diff --git a/docs/c-runtime-library/parameter-validation.md b/docs/c-runtime-library/parameter-validation.md
index a2d188ec7e..f63a50cc02 100644
--- a/docs/c-runtime-library/parameter-validation.md
+++ b/docs/c-runtime-library/parameter-validation.md
@@ -2,7 +2,7 @@
 title: "Parameter Validation"
 description: "A description of parameter validation in the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["parameters, validation"]
 ms.assetid: 019dd5f0-dc61-4d2e-b4e9-b66409ddf1f2
 ---
diff --git a/docs/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries.md b/docs/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries.md
index 9aac11ab8d..6dc1fb53c4 100644
--- a/docs/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries.md
+++ b/docs/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries.md
@@ -2,7 +2,7 @@
 title: "Potential Errors Passing CRT Objects Across DLL Boundaries"
 description: "An overview of potential problems you may come across when passing Microsoft C runtime objects across a dynamic link library (DLL) boundary."
 ms.date: 06/29/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["DLL conflicts [C++]"]
 ms.assetid: c217ffd2-5d9a-4678-a1df-62a637a96460
 ---
diff --git a/docs/c-runtime-library/recommendations-for-choosing-between-functions-and-macros.md b/docs/c-runtime-library/recommendations-for-choosing-between-functions-and-macros.md
index 1971598d3b..57ed7d86d0 100644
--- a/docs/c-runtime-library/recommendations-for-choosing-between-functions-and-macros.md
+++ b/docs/c-runtime-library/recommendations-for-choosing-between-functions-and-macros.md
@@ -2,7 +2,7 @@
 title: "Recommendations for Choosing Between Functions and Macros"
 description: "Explains the differences between using macros vs functions in the Microsoft C runtime library (CRT)"
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["c.functions"]
 helpviewer_keywords: ["functions [CRT], vs. macros", "macros, vs. functions"]
 ms.assetid: 18a633d6-cf1c-470c-a649-fa7677473e2b
diff --git a/docs/c-runtime-library/reference/abort.md b/docs/c-runtime-library/reference/abort.md
index 991f464049..436a39de91 100644
--- a/docs/c-runtime-library/reference/abort.md
+++ b/docs/c-runtime-library/reference/abort.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: abort"
 title: "abort"
+description: "Learn more about: abort"
 ms.date: 07/07/2022
 api_name: ["abort", "_o_abort"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
@@ -14,7 +14,7 @@ helpviewer_keywords: ["aborting current process", "abort function", "processes,
 Aborts the current process and returns an error code.
 
 > [!NOTE]
-> Do not use this method to shut down a Microsoft Store app or Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
+> Do not use this method to shut down a Microsoft Store app or Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
 
 ## Syntax
 
@@ -71,8 +71,8 @@ The following program tries to open a file and aborts if the attempt fails.
 // the abort function by attempting to open a file
 // and aborts if the attempt fails.
 
-#include  <stdio.h>
-#include  <stdlib.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 int main( void )
 {
diff --git a/docs/c-runtime-library/reference/access-waccess.md b/docs/c-runtime-library/reference/access-waccess.md
index 87fadbc2ba..87cf212ca0 100644
--- a/docs/c-runtime-library/reference/access-waccess.md
+++ b/docs/c-runtime-library/reference/access-waccess.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _access, _waccess"
 title: "_access, _waccess"
+description: "Learn more about: _access, _waccess"
 ms.date: "4/2/2020"
 api_name: ["_access", "_waccess", "t_access", "_o__access", "_o__waccess"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
@@ -90,9 +90,9 @@ The following example uses **`_access`** to check the file named *`crt_ACCESS.C`
 // This example uses _access to check the file named
 // crt_ACCESS.C to see if it exists and if writing is allowed.
 
-#include  <io.h>
-#include  <stdio.h>
-#include  <stdlib.h>
+#include <io.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 int main( void )
 {
diff --git a/docs/c-runtime-library/reference/acos-acosf-acosl.md b/docs/c-runtime-library/reference/acos-acosf-acosl.md
index 5296418f6b..b570c16c00 100644
--- a/docs/c-runtime-library/reference/acos-acosf-acosl.md
+++ b/docs/c-runtime-library/reference/acos-acosf-acosl.md
@@ -1,7 +1,7 @@
 ---
 title: "acos, acosf, acosl"
 description: "API reference for acos, acosf, and acosl; which calculate the arccosine of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["acosf", "acos", "acosl", "_o_acos", "_o_acosf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the arccosine.
 double acos( double x );
 float acosf( float x );
 long double acosl( long double x );
-#define acos(X) // Requires C11 or higher
+#define acos(X) // Requires C11 or later
 
 float acos( float x );   // C++ only
 long double acos( long double x );   // C++ only
diff --git a/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md b/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
index eae18abea8..18d9c23aa1 100644
--- a/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
+++ b/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
@@ -1,14 +1,13 @@
 ---
 title: "acosh, acoshf, acoshl"
 description: "API reference for acosh, acoshf, and acoshl; which calculate the inverse hyperbolic cosine of a floating-point value."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["acoshf", "acosh", "acoshl", "_o_acosh", "_o_acoshf", "_o_acoshl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["acosh", "acoshf", "acoshl", "math/acosh", "math/acoshf", "math/acoshl"]
 helpviewer_keywords: ["acoshf function", "acosh function", "acoshl function"]
-ms.assetid: 6985c4d7-9e2a-44ce-9a9b-5a43015f15f7
 ---
 # `acosh`, `acoshf`, `acoshl`
 
@@ -20,7 +19,7 @@ Calculates the inverse hyperbolic cosine.
 double acosh( double x );
 float acoshf( float x );
 long double acoshl( long double x );
-#define acosh(X) // Requires C11 or higher
+#define acosh(X) // Requires C11 or later
 
 float acosh( float x );  // C++ only
 long double acosh( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/and.md b/docs/c-runtime-library/reference/and.md
index 2a5a4412c1..efa2cca286 100644
--- a/docs/c-runtime-library/reference/and.md
+++ b/docs/c-runtime-library/reference/and.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: and"
 title: "and"
+description: "Learn more about: and"
 ms.date: "11/04/2016"
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["ISO646/and", "and", "std.and", "std::and"]
 helpviewer_keywords: ["and macro"]
-ms.assetid: 2644ab57-8e1b-48f0-9021-cafe3e26bdc4
 ---
 # `and`
 
@@ -16,7 +15,6 @@ An alternative to the && operator.
 ## Syntax
 
 ```C
-
 #define and &&
 ```
 
diff --git a/docs/c-runtime-library/reference/asctime-s-wasctime-s.md b/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
index c7762a0c8f..99d3ffe89b 100644
--- a/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
+++ b/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: asctime_s, _wasctime_s"
 title: "asctime_s, _wasctime_s"
-ms.date: "4/2/2020"
+description: "Learn more about: asctime_s, _wasctime_s"
+ms.date: 4/2/2020
 api_name: ["_wasctime_s", "asctime_s", "_o__wasctime_s", "_o_asctime_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["asctime_s", "_wasctime_s", "_tasctime_s"]
 helpviewer_keywords: ["tasctime_s function", "_tasctime_s function", "time structure conversion", "wasctime_s function", "time, converting", "_wasctime_s function", "asctime_s function"]
-ms.assetid: 17ad9b2b-a459-465d-976a-42822897688a
 ---
 # `asctime_s`, `_wasctime_s`
 
@@ -24,7 +23,7 @@ errno_t asctime_s(
 );
 errno_t _wasctime_s(
    wchar_t* buffer,
-   size_t numberOfElements
+   size_t numberOfElements,
    const struct tm *tmSource
 );
 template <size_t size>
diff --git a/docs/c-runtime-library/reference/asin-asinf-asinl.md b/docs/c-runtime-library/reference/asin-asinf-asinl.md
index 9fbe4cda49..0e7495e47a 100644
--- a/docs/c-runtime-library/reference/asin-asinf-asinl.md
+++ b/docs/c-runtime-library/reference/asin-asinf-asinl.md
@@ -1,7 +1,7 @@
 ---
 title: "asin, asinf, asinl"
 description: "API reference for asin, asinf, and asinl; which calculate the arcsine of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["asinf", "asinl", "asin", "_o_asin", "_o_asinf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the arcsine.
 double asin( double x );
 float asinf ( float x );
 long double asinl( long double x );
-#define asin(X) // Requires C11 or higher
+#define asin(X) // Requires C11 or later
 
 float asin( float x );  // C++ only
 long double asin( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md b/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
index 1c9480aac2..8501e27ac0 100644
--- a/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
+++ b/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
@@ -1,14 +1,13 @@
 ---
 title: "asinh, asinhf, asinhl"
 description: "API reference for asinh, asinhf, and asinhl; which calculate the inverse hyperbolic sine of a floating-point value."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["asinh", "asinhf", "asinhl", "_o_asinh", "_o_asinhf", "_o_asinhl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["asinhf", "asinhl", "asinh"]
 helpviewer_keywords: ["asinh function", "asinhl function", "asinhf function"]
-ms.assetid: 4488babe-1a7e-44ca-8b7b-c2db0a70084f
 ---
 # `asinh`, `asinhf`, `asinhl`
 
@@ -20,7 +19,7 @@ Calculates the inverse hyperbolic sine.
 double asinh( double x );
 float asinhf( float x );
 long double asinhl( long double x );
-#define asinh(X) // Requires C11 or higher
+#define asinh(X) // Requires C11 or later
 
 float asinh( float x );  // C++ only
 long double asinh( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md b/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
index 12dab5d047..91fc052f9a 100644
--- a/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
+++ b/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
@@ -1,7 +1,7 @@
 ---
 title: "atan, atanf, atanl, atan2, atan2f, atan2l"
 description: "API reference for atan, atanf, atanl, atan2, atan2f, and atan2l; which calculate the arctangent of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["atan2f", "atan2l", "atan2", "atanf", "atan", "atanl", "_o_atan", "_o_atan2", "_o_atan2f", "_o_atanf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the arctangent of **`x`** (**`atan`**, **`atanf`**, and **`atanl`**)
 double atan( double x );
 float atanf( float x );
 long double atanl( long double x );
-#define atan(X) // Requires C11 or higher
+#define atan(X) // Requires C11 or later
 
 float atan( float x );  // C++ only
 long double atan( long double x );  // C++ only
@@ -27,7 +27,7 @@ long double atan( long double x );  // C++ only
 double atan2( double y, double x );
 float atan2f( float y, float x );
 long double atan2l( long double y, long double x );
-#define atan2(Y, X) // Requires C11 or higher
+#define atan2(Y, X) // Requires C11 or later
 
 float atan2( float y, float x );  // C++ only
 long double atan2( long double y, long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md b/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
index 02b797f39a..02ebb06caf 100644
--- a/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
+++ b/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
@@ -1,14 +1,13 @@
 ---
 title: "atanh, atanhf, atanhl"
 description: "API reference for atanh, atanhf, and atanhl; which calculate the inverse hyperbolic tangent of a floating-point value."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["atanhl", "atanhf", "atanh", "_o_atanh", "_o_atanhf", "_o_atanhl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["atanhl", "atanhf", "atanh"]
-helpviewer_keywords: ["atanhf function", "atanhl function", "atanh funciton"]
-ms.assetid: 83a43b5b-2580-4461-854f-dc84236d9f32
+helpviewer_keywords: ["atanhf function", "atanhl function", "atanh function"]
 ---
 # `atanh`, `atanhf`, `atanhl`
 
@@ -20,7 +19,7 @@ Calculates the inverse hyperbolic tangent.
 double atanh( double x );
 float atanhf( float x );
 long double atanhl( long double x );
-#define atanh(X) // Requires C11 or higher
+#define atanh(X) // Requires C11 or later
 
 float atanh( float x );  // C++ only
 long double atanh( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/bitand.md b/docs/c-runtime-library/reference/bitand.md
index cc4b84b0bd..0701824a21 100644
--- a/docs/c-runtime-library/reference/bitand.md
+++ b/docs/c-runtime-library/reference/bitand.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: bitand"
 title: "bitand"
+description: "Learn more about: bitand"
 ms.date: "11/04/2016"
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["std::bitand", "std.bitand", "ISO646/bitand", "bitand"]
 helpviewer_keywords: ["bitand function"]
-ms.assetid: 279cf9b5-fac1-49de-b329-f1a31b3481fe
 ---
 # `bitand`
 
@@ -16,7 +15,6 @@ An alternative to the & operator.
 ## Syntax
 
 ```C
-
 #define bitand &
 ```
 
diff --git a/docs/c-runtime-library/reference/bitor.md b/docs/c-runtime-library/reference/bitor.md
index 4451365a0e..8f2aaf236d 100644
--- a/docs/c-runtime-library/reference/bitor.md
+++ b/docs/c-runtime-library/reference/bitor.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: bitor"
 title: "bitor"
+description: "Learn more about: bitor"
 ms.date: "11/04/2016"
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["ISO646/bitor", "bitor", "std.bitor", "std::bitor"]
 helpviewer_keywords: ["bitor function"]
-ms.assetid: 3c0a3711-9c74-41f2-b400-2f7797da30d1
 ---
 # `bitor`
 
@@ -16,7 +15,6 @@ An alternative to the `|` operator.
 ## Syntax
 
 ```C
-
 #define bitor |
 ```
 
diff --git a/docs/c-runtime-library/reference/calloc-dbg.md b/docs/c-runtime-library/reference/calloc-dbg.md
index bde434d3d8..fbff456b61 100644
--- a/docs/c-runtime-library/reference/calloc-dbg.md
+++ b/docs/c-runtime-library/reference/calloc-dbg.md
@@ -99,7 +99,7 @@ int main( void )
     else
         printf( "Problem allocating memory\n" );
 
-    / _free_dbg must be called to free CLIENT type blocks
+    // _free_dbg must be called to free CLIENT type blocks
     free( bufferN );
     _free_dbg( bufferC, _CLIENT_BLOCK );
 }
diff --git a/docs/c-runtime-library/reference/carg-cargf-cargl.md b/docs/c-runtime-library/reference/carg-cargf-cargl.md
index 0635b71a2e..867def0277 100644
--- a/docs/c-runtime-library/reference/carg-cargf-cargl.md
+++ b/docs/c-runtime-library/reference/carg-cargf-cargl.md
@@ -1,14 +1,13 @@
 ---
 title: "carg, cargf, cargl"
 description: "API reference for carg, cargf, and cargl; which retrieve the argument of a complex number, with a branch cut along the negative real axis."
-ms.date: "9/2/2020"
+ms.date: 9/2/2020
 api_name: ["carg", "cargf", "cargl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["carg", "cargf", "cargl", "complex/carg", "complex/cargf", "complex/cargl"]
 helpviewer_keywords: ["carg function", "cargf function", "cargl function"]
-ms.assetid: 610d6a93-b929-46ab-a966-b77db0b804be
 ---
 # `carg`, `cargf`, `cargl`
 
@@ -32,7 +31,7 @@ float cargf(
 long double cargl(
    _Lcomplex z
 );
-#define carg(X) // Requires C11 or higher
+#define carg(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md b/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
index 930c3fcaad..0ec75d6762 100644
--- a/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
+++ b/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
@@ -1,14 +1,13 @@
 ---
 title: "cbrt, cbrtf, cbrtl"
 description: "API reference for cbrt, cbrtf, and cbrtl; which calculate a cube root"
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["cbrt", "cbrtf", "cbrtl", "_o_cbrt", "_o_cbrtf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["cbrtl", "cbrt", "cbrtf"]
 helpviewer_keywords: ["cbrtl function", "cbrtf function", "cbrt function"]
-ms.assetid: ab51d916-3db2-4beb-b46a-28b4062cd33f
 ---
 # `cbrt`, `cbrtf`, `cbrtl`
 
@@ -32,7 +31,7 @@ float cbrtf(
 long double cbrtl(
    long double x
 );
-#define cbrt(X) // Requires C11 or higher
+#define cbrt(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/ceil-ceilf-ceill.md b/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
index 0b4598a254..c1e0fc6cfb 100644
--- a/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
+++ b/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
@@ -1,14 +1,13 @@
 ---
 title: "ceil, ceilf, ceill"
 description: "API ref for calculating the ceiling of a value with ceil()."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["ceilf", "ceil", "ceill", "_o_ceil", "_o_ceilf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntdll.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["ceil", "ceilf", "ceill"]
 helpviewer_keywords: ["calculating value ceilings", "ceill function", "ceil function", "ceilf function"]
-ms.assetid: f4e5acab-5c8f-4b10-9ae2-9561e6453718
 ---
 # `ceil`, `ceilf`, `ceill`
 
@@ -32,7 +31,7 @@ float ceilf(
 long double ceill(
    long double x
 );
-#define ceil(X) // Requires C11 or higher
+#define ceil(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
index 8709404d4c..82de69ea28 100644
--- a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
+++ b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _cgets_s, _cgetws_s"
 title: "_cgets_s, _cgetws_s"
+description: "Learn more about: _cgets_s, _cgetws_s"
 ms.date: "4/2/2020"
 api_name: ["_cgetws_s", "_cgets_s", "_o__cgets_s", "_o__cgetws_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_cgets_s", "cgets_s", "cgetws_s", "_cgetws_s"]
 helpviewer_keywords: ["strings [C++], getting from console", "console, getting strings from", "_cgets_s function", "cget_s function", "_cgetws_s function", "cgetws_s function"]
-ms.assetid: 38b74897-afe6-4dd9-a43f-36a3c0d72c5c
 ---
 # `_cgets_s`, `_cgetws_s`
 
@@ -26,7 +25,7 @@ errno_t _cgets_s(
    size_t *pSizeRead
 );
 errno_t _cgetws_s(
-   wchar_t *buffer
+   wchar_t *buffer,
    size_t numberOfElements,
    size_t *pSizeRead
 );
diff --git a/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md b/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
index dfcdd2f381..2f896bd509 100644
--- a/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
+++ b/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
@@ -1,14 +1,13 @@
 ---
 title: "cimag, cimagf, cimagl"
 description: "API reference for cimag, cimagf, and cimagl; which retrieve the imaginary part of a complex number."
-ms.date: "9/2/2020"
+ms.date: 9/2/2020
 api_name: ["cimag", "cimagf", "cimagl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["cimagf", "cimagl", "complex/cimag", "complex/cimagf", "complex/cimagl", "cimag"]
 helpviewer_keywords: ["cimag function", "cimagf function", "cimagl function"]
-ms.assetid: 0d8836f5-d61d-44cd-8731-6f75cb776def
 ---
 # `cimag`, `cimagf`, `cimagl`
 
@@ -20,7 +19,7 @@ Retrieves the imaginary part of a complex number.
 double cimag( _Dcomplex z );
 float cimagf( _Fcomplex z );
 long double cimagl( _Lcomplex z );
-#define cimag(X) // Requires C11 or higher
+#define cimag(X) // Requires C11 or later
 
 float cimag( _Fcomplex z );  // C++ only
 long double cimag( _Lcomplex z );  // C++ only
diff --git a/docs/c-runtime-library/reference/conj-conjf-conjl.md b/docs/c-runtime-library/reference/conj-conjf-conjl.md
index 60b5e95ad9..fbf227b3e4 100644
--- a/docs/c-runtime-library/reference/conj-conjf-conjl.md
+++ b/docs/c-runtime-library/reference/conj-conjf-conjl.md
@@ -1,14 +1,13 @@
 ---
 title: "conj, conjf, conjl"
 description: "API reference for conj, conjf, and conjl; which retrieve the complex conjugate of a complex number."
-ms.date: "9/2/2020"
+ms.date: 9/2/2020
 api_name: ["conj", "conjf", "conjl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["conj", "conjf", "conjl", "complex/conj", "complex/conjf", "complex/conjl"]
 helpviewer_keywords: ["conj function", "conjf function", "conjl function"]
-ms.assetid: 792fccfa-19c6-4890-99f9-a3b89effccd6
 ---
 # `conj`, `conjf`, `conjl`
 
@@ -32,7 +31,7 @@ _Fcomplex conjf(
 _Lcomplex conjl(
    _Lcomplex z
 );
-#define conj(X) // Requires C11 or higher
+#define conj(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/controlfp-s.md b/docs/c-runtime-library/reference/controlfp-s.md
index d955dfb42e..8de3df8b7c 100644
--- a/docs/c-runtime-library/reference/controlfp-s.md
+++ b/docs/c-runtime-library/reference/controlfp-s.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about: _controlfp_s"
 title: "_controlfp_s"
-ms.date: "4/2/2020"
+ms.date: 03/27/2025
 api_name: ["_controlfp_s", "_o__controlfp_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -75,16 +75,23 @@ _controlfp_s(&current_word, _DN_FLUSH, _MCW_DN);
 // and x64 processors with SSE2 support. Ignored on other x86 platforms.
 ```
 
-On ARM platforms, the **`_controlfp_s`** function applies to the FPSCR register. On x64 architectures, only the SSE2 control word that's stored in the MXCSR register is affected. On Intel (x86) platforms, **`_controlfp_s`** affects the control words for both the x87 and the SSE2, if present. It's possible for the two control words to be inconsistent with each other (because of a previous call to [`__control87_2`](control87-controlfp-control87-2.md), for example); if there's an inconsistency between the two control words, **`_controlfp_s`** sets the `EM_AMBIGUOUS` flag in *`currentControl`*. It's a warning that the returned control word might not represent the state of both floating-point control words accurately.
+This function is ignored when you use [`/clr` (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) to compile because the common language runtime (CLR) only supports the default floating-point precision.
 
-On the ARM and x64 architectures, changing the infinity mode or the floating-point precision isn't supported. If the precision control mask is used on the x64 platform, the function raises an assertion and the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md).
+On x64, only the SSE2 control word stored in the MXCSR register is affected. Changing the infinity mode or the floating-point precision isn't supported. If the precision control mask is used on the x64 platform, the function raises an assertion and the invalid parameter handler is invoked as described in [Parameter validation](../parameter-validation.md).
 
-If the mask isn't set correctly, this function generates an invalid parameter exception, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, this function returns `EINVAL` and sets `errno` to `EINVAL`.
+On x86, **`_controlfp_s`** affects the control words for both the x87 and the SSE2, if present. It's possible for the two control words to be inconsistent with each other (because of a previous call to [`__control87_2`](control87-controlfp-control87-2.md), for example); if there's an inconsistency between the two control words, **`_controlfp_s`** sets the `EM_AMBIGUOUS` flag in *`currentControl`*. It's a warning that the returned control word might not represent the state of both floating-point control words accurately.
 
-This function is ignored when you use [`/clr` (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) to compile because the common language runtime (CLR) only supports the default floating-point precision.
+If the mask isn't set correctly, this function generates an invalid parameter exception, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, this function returns `EINVAL` and sets `errno` to `EINVAL`.
 
 By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
 
+### Arm platforms
+
+- Changing the infinity mode or the floating-point precision isn't supported. If the precision control mask is used on the x64 platform, the function raises an assertion and the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md).
+- On ARM32 (discontinued), Windows doesn't support FP exceptions.
+- On ARM64, unmasking the whole `_MCW_EM` or any bits from it (`_EM_INEXACT`, `_EM_UNDERFLOW`, `_EM_OVERFLOW`, `_EM_ZERODIVIDE`, and `_EM_INVALID`) correctly change the FPCR register. Floating point exceptions raised by standard math functions, like Invalid operation from `std::acos`, are exempt from this behavior and can be ignored or raised properly depending on the FPCR register. For more information, see [Overview of ARM32 ABI Conventions](../../build/overview-of-arm-abi-conventions.md#floating-point-exceptions).
+- On ARM64EC, Windows catches processor floating-point exceptions and disables them in the FPCR register. This ensures consistent behavior across different processor variants.
+
 ### Mask constants and values
 
 For the `_MCW_EM` mask, clearing it sets the exception, which allows the hardware exception; setting it hides the exception. If a `_EM_UNDERFLOW` or `_EM_OVERFLOW` occurs, no hardware exception is thrown until the next floating-point instruction is executed. To generate a hardware exception immediately after `_EM_UNDERFLOW` or `_EM_OVERFLOW`, call the `FWAIT MASM` instruction.
diff --git a/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md b/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
index 8d979ab1f3..225fd4e100 100644
--- a/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
+++ b/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
@@ -1,14 +1,13 @@
 ---
 title: "copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl"
 description: "API ref for returning a value that has the magnitude of one argument and the sign of another using copysign()"
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["copysignf", "copysignl", "_copysignl", "_copysign", "_copysignf", "copysign"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_copysignl", "copysign", "copysignf", "_copysign", "copysignl", "_copysignf"]
 helpviewer_keywords: ["copysignl function", "_copysignl function", "copysign function", "_copysignf function", "_copysign function", "copysignf function"]
-ms.assetid: 009216d6-72a2-402d-aa6c-91d924b2c9e4
 ---
 # `copysign`, `copysignf`, `copysignl`, `_copysign`, `_copysignf`, `_copysignl`
 
@@ -45,7 +44,7 @@ long double _copysignl(
    long double x,
    long double y
 );
-#define copysign(X, Y) // Requires C11 or higher
+#define copysign(X, Y) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/cos-cosf-cosl.md b/docs/c-runtime-library/reference/cos-cosf-cosl.md
index 5e31e2aa7e..ab58605fd6 100644
--- a/docs/c-runtime-library/reference/cos-cosf-cosl.md
+++ b/docs/c-runtime-library/reference/cos-cosf-cosl.md
@@ -1,14 +1,13 @@
 ---
 title: "cos, cosf, cosl"
 description: "API reference for cos, cosf, and cosl; which calculate the cosine value of a floating-point number."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["cos", "cosf", "cosl", "_o_cos", "_o_cosf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["cos", "cosf", "cosl"]
 helpviewer_keywords: ["cosines", "cosl function", "calculating cosine", "cosf function", "cos function", "trigonometric functions", "cosines, calculating"]
-ms.assetid: ae90435e-6b68-4a47-a81f-be87d5c08f16
 ---
 # `cos`, `cosf`, `cosl`
 
@@ -20,7 +19,7 @@ Calculates the cosine.
 double cos( double x );
 float cosf( float x );
 long double cosl( long double x );
-#define cos(X) // Requires C11 or higher
+#define cos(X) // Requires C11 or later
 
 float cos( float x );  // C++ only
 long double cos( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/cosh-coshf-coshl.md b/docs/c-runtime-library/reference/cosh-coshf-coshl.md
index cddafd7d1b..f02e9ed491 100644
--- a/docs/c-runtime-library/reference/cosh-coshf-coshl.md
+++ b/docs/c-runtime-library/reference/cosh-coshf-coshl.md
@@ -1,7 +1,7 @@
 ---
 title: "cosh, coshf, coshl"
 description: "API reference for cosh, coshf, and coshl; which calculate the hyperbolic cosine of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["cosh", "coshf", "coshl", "_o_cosh", "_o_coshf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the hyperbolic cosine.
 double cosh( double x );
 float coshf( float x );
 long double coshl( long double x );
-#define cosh(X) // Requires C11 or higher
+#define cosh(X) // Requires C11 or later
 
 float cosh( float x );  // C++ only
 long double cosh( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
index cab723ba69..0c80a6f068 100644
--- a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l"
 title: "_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["_cwprintf_s_l", "_cprintf_s_l", "_cprintf_s", "_cwprintf_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -65,7 +65,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004  (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004  (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 Like the non-secure versions (see [`_cprintf`, `_cprintf_l`, `_cwprintf`, `_cwprintf_l`](cprintf-cprintf-l-cwprintf-cwprintf-l.md)), these functions validate their parameters and invoke the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md), if *`format`* is a null pointer. These functions differ from the non-secure versions in that the format string itself is also validated. If there are any unknown or badly formed formatting specifiers, these functions invoke the invalid parameter handler. In all cases, If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
diff --git a/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md b/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
index 39bd6ca7d8..99f512c15e 100644
--- a/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
+++ b/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
@@ -1,14 +1,13 @@
 ---
 title: "cproj, cprojf, cprojl"
 description: "API reference for cproj, cprojf, and cprojl; which retrieve the projection of a complex number on the Reimann sphere."
-ms.date: "9/2/2020"
+ms.date: 9/2/2020
 api_name: ["cproj", "cprojf", "cprojl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["cproj", "cprojf", "cprojl", "complex/cproj", "complex/cprojf", "complex/cprojl"]
 helpviewer_keywords: ["cproj function", "cprojf function", "cprojl function"]
-ms.assetid: 32b49623-13bf-4cae-802e-7912d75030fe
 ---
 # `cproj`, `cprojf`, `cprojl`
 
@@ -32,7 +31,7 @@ _Fcomplex cprojf(
 _Lcomplex cprojl(
    _Lcomplex z
 );
-#define cproj(X) // Requires C11 or higher
+#define cproj(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/creal-crealf-creall.md b/docs/c-runtime-library/reference/creal-crealf-creall.md
index 40a36d933e..82f3159c8d 100644
--- a/docs/c-runtime-library/reference/creal-crealf-creall.md
+++ b/docs/c-runtime-library/reference/creal-crealf-creall.md
@@ -1,14 +1,13 @@
 ---
 title: "creal, crealf, creall"
 description: "API reference for creal, crealf, creall; which retrieve the real part of a complex number."
-ms.date: "9/2/2020"
+ms.date: 9/2/2020
 api_name: ["creal", "crealf", "creall"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["creal", "crealf", "creall", "complex/creal", "complex/crealf", "complex/creall"]
 helpviewer_keywords: ["creal function", "crealf function", "creall function"]
-ms.assetid: fa3ac62f-7aa3-4238-a71f-d6b00cd0c7c8
 ---
 # `creal`, `crealf`, `creall`
 
@@ -20,7 +19,7 @@ Retrieves the real part of a complex number.
 double creal( _Dcomplex z );
 float crealf( _Fcomplex z );
 long double creall( _Lcomplex z );
-#define creal(X) // Requires C11 or higher
+#define creal(X) // Requires C11 or later
 
 float creal( _Fcomplex z );  // C++ only
 long double creal( _Lcomplex z );  // C++ only
diff --git a/docs/c-runtime-library/reference/crtcheckmemory.md b/docs/c-runtime-library/reference/crtcheckmemory.md
index de0f6e98ce..5c9ca5d58e 100644
--- a/docs/c-runtime-library/reference/crtcheckmemory.md
+++ b/docs/c-runtime-library/reference/crtcheckmemory.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _CrtCheckMemory"
 title: "_CrtCheckMemory"
+description: "Learn more about: _CrtCheckMemory"
 ms.date: "11/04/2016"
 api_name: ["_CrtCheckMemory"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CrtCheckMemory", "_CrtCheckMemory"]
 helpviewer_keywords: ["_CrtCheckMemory function", "CrtCheckMemory function"]
-ms.assetid: 457cc72e-60fd-4177-ab5c-6ae26a420765
 ---
 # `_CrtCheckMemory`
 
@@ -17,7 +16,6 @@ Confirms the integrity of the memory blocks allocated in the debug heap (debug v
 ## Syntax
 
 ```C
-
 int _CrtCheckMemory( void );
 ```
 
diff --git a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
index 5e934bfd26..28291b7a9c 100644
--- a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
+++ b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _CrtDumpMemoryLeaks"
 title: "_CrtDumpMemoryLeaks"
+description: "Learn more about: _CrtDumpMemoryLeaks"
 ms.date: "11/04/2016"
 api_name: ["_CrtDumpMemoryLeaks"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
@@ -16,7 +16,6 @@ Dumps all the memory blocks in the debug heap when a memory leak has occurred (d
 ## Syntax
 
 ```C
-
 int _CrtDumpMemoryLeaks( void );
 ```
 
diff --git a/docs/c-runtime-library/reference/crtreportblocktype.md b/docs/c-runtime-library/reference/crtreportblocktype.md
index 48220ad606..e9c58f7c24 100644
--- a/docs/c-runtime-library/reference/crtreportblocktype.md
+++ b/docs/c-runtime-library/reference/crtreportblocktype.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _CrtReportBlockType"
 title: "_CrtReportBlockType"
-ms.date: "11/04/2016"
+description: "Learn more about: _CrtReportBlockType"
+ms.date: 11/04/2016
 api_name: ["_CrtReportBlockType"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_CrtReportBlockType", "CrtReportBlockType"]
 helpviewer_keywords: ["CrtReportBlockType function", "BLOCK_SUBTYPE macro", "_CrtReportBlockType function", "_BLOCK_TYPE macro", "_BLOCK_SUBTYPE macro", "BLOCK_TYPE macro"]
-ms.assetid: 0f4b9da7-bebb-4956-9541-b2581640ec6b
 ---
 # `_CrtReportBlockType`
 
@@ -19,7 +18,7 @@ Returns the block type/subtype associated with a given debug heap block pointer.
 ```C
 int _CrtReportBlockType(
    const void * pBlock
-};
+);
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md b/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
index bd91d7fa57..143cbd3f21 100644
--- a/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
+++ b/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
@@ -1,14 +1,13 @@
 ---
 title: "_CrtSetDebugFillThreshold"
 description: "Use the _CrtSetDebugFillThreshold function to set the maximum amount of buffer to fill in secure CRT functions."
-ms.date: "10/31/2019"
+ms.date: 04/10/2025
 api_name: ["_CrtSetDebugFillThreshold"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_CrtSetDebugFillThreshold", "CrtSetDebugFillThreshold"]
 helpviewer_keywords: ["debug, buffer-filling behavior", "CrtSetDebugFillThreshold function", "_CrtSetDebugFillThreshold function", "buffer-filling behavior", "0xFE"]
-ms.assetid: 6cb360e8-56ae-4248-b17f-e28aee3e0ed7
 ---
 # `_CrtSetDebugFillThreshold`
 
@@ -38,58 +37,36 @@ The default threshold is `SIZE_T_MAX`.
 Here's a list of the affected functions:
 
 - [`asctime_s`, `_wasctime_s`](asctime-s-wasctime-s.md)
-
 - [`_cgets_s`, `_cgetws_s`](cgets-s-cgetws-s.md)
-
 - [`ctime_s`, `_ctime32_s`, `_ctime64_s`, `_wctime_s`, `_wctime32_s`, `_wctime64_s`](ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md)
-
 - [`_ecvt_s`](ecvt-s.md)
-
 - [`_fcvt_s`](fcvt-s.md)
-
 - [`_gcvt_s`](gcvt-s.md)
-
 - [`_itoa_s`, `_ltoa_s`, `_ultoa_s`, `_i64toa_s`, `_ui64toa_s`, `_itow_s`, `_ltow_s`, `_ultow_s`, `_i64tow_s`, `_ui64tow_s`](itoa-s-itow-s.md)
-
 - [`_makepath_s`, `_wmakepath_s`](makepath-s-wmakepath-s.md)
-
 - [`_mbsnbcat_s`, `_mbsnbcat_s_l`](mbsnbcat-s-mbsnbcat-s-l.md)
-
 - [`_mbsnbcpy_s`, `_mbsnbcpy_s_l`](mbsnbcpy-s-mbsnbcpy-s-l.md)
-
 - [`_mbsnbset_s`, `_mbsnbset_s_l`](mbsnbset-s-mbsnbset-s-l.md)
-
 - [`_mktemp_s`, `_wmktemp_s`](makepath-s-wmakepath-s.md)
-
 - [`_splitpath_s`, `_wsplitpath_s`](splitpath-s-wsplitpath-s.md)
-
 - [`strcat_s`, `wcscat_s`, `_mbscat_s`](strcat-s-wcscat-s-mbscat-s.md)
-
 - [`strcpy_s`, `wcscpy_s`, `_mbscpy_s`](strcpy-s-wcscpy-s-mbscpy-s.md)
-
 - [`_strdate_s`, `_wstrdate_s`](strdate-s-wstrdate-s.md)
-
 - [`strerror_s`, `_strerror_s`, `_wcserror_s`, `__wcserror_s`](strerror-s-strerror-s-wcserror-s-wcserror-s.md)
-
 - [`_strlwr_s`, `_strlwr_s_l`, `_mbslwr_s`, `_mbslwr_s_l`, `_wcslwr_s`, `_wcslwr_s_l`](strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md)
-
 - [`strncat_s`, `_strncat_s_l`, `wcsncat_s`, `_wcsncat_s_l`, `_mbsncat_s`, `_mbsncat_s_l`](strncat-s-strncat-s-l-wcsncat-s-wcsncat-s-l-mbsncat-s-mbsncat-s-l.md)
-
 - [`strncpy_s`, `_strncpy_s_l`, `wcsncpy_s`, `_wcsncpy_s_l`, `_mbsncpy_s`, `_mbsncpy_s_l`](strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l.md)
-
 - [`_strnset_s`, `_strnset_s_l`, `_wcsnset_s`, `_wcsnset_s_l`, `_mbsnset_s`, `_mbsnset_s_l`](strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md)
-
 - [`_strset_s`, `_strset_s_l`, `_wcsset_s`, `_wcsset_s_l`, `_mbsset_s`, `_mbsset_s_l`](strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md)
-
 - [`_strtime_s`, `_wstrtime_s`](strtime-s-wstrtime-s.md)
-
 - [`_strupr_s`, `_strupr_s_l`, `_mbsupr_s`, `_mbsupr_s_l`, `_wcsupr_s`, `_wcsupr_s_l`](strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md)
-
+- [`vsnprintf_s`, `_vsnprintf_s`, `_vsnprintf_s_l`, `_vsnwprintf_s`, `_vsnwprintf_s_l`](vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md)
+ 
 ## Requirements
 
 | Routine | Required header |
 |---|---|
-| **`_CrtSetDebugFillThreshold`** | \<crtdbg.h> |
+| **`_CrtSetDebugFillThreshold`** | `<crtdbg.h>` |
 
 This function is Microsoft-specific. For more compatibility information, see [Compatibility](../compatibility.md).
 
diff --git a/docs/c-runtime-library/reference/cxxthrowexception.md b/docs/c-runtime-library/reference/cxxthrowexception.md
index 1bad3b4dd0..2a2a3b87b6 100644
--- a/docs/c-runtime-library/reference/cxxthrowexception.md
+++ b/docs/c-runtime-library/reference/cxxthrowexception.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _CxxThrowException"
 title: "_CxxThrowException"
+description: "Learn more about: _CxxThrowException"
 ms.date: "11/04/2016"
 api_name: ["_CxxThrowException"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CxxThrowException", "_CxxThrowException"]
 helpviewer_keywords: ["_CxxThrowException function", "CxxThrowException function"]
-ms.assetid: 0b90bef5-b7d2-46e0-88e2-59e531e01a4d
 ---
 # `_CxxThrowException`
 
@@ -18,7 +17,7 @@ Builds the exception record and calls the runtime environment to start processin
 
 ```C
 extern "C" void __stdcall _CxxThrowException(
-   void* pExceptionObject
+   void* pExceptionObject,
    _ThrowInfo* pThrowInfo
 );
 ```
diff --git a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
index cfc0b250e2..047aba34af 100644
--- a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
+++ b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _dupenv_s_dbg, _wdupenv_s_dbg"
 title: "_dupenv_s_dbg, _wdupenv_s_dbg"
+description: "Learn more about: _dupenv_s_dbg, _wdupenv_s_dbg"
 ms.date: "11/04/2016"
 api_name: ["_dupenv_s_dbg", "_wdupenv_s_dbg"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_tdupenv_s_dbg", "_dupenv_s_dbg", "_wdupenv_s_dbg"]
 helpviewer_keywords: ["_tdupenv_s_dbg function", "dupenv_s_dbg function", "_wdupenv_s_dbg function", "environment variables", "tdupenv_s_dbg function", "wdupenv_s_dbg function", "_dupenv_s_dbg function"]
-ms.assetid: e3d81148-e24e-46d0-a21d-fd87b5e6256c
 ---
 # `_dupenv_s_dbg`, `_wdupenv_s_dbg`
 
@@ -88,7 +87,7 @@ For more compatibility information, see [Compatibility](../compatibility.md).
 
 ```C
 // crt_dupenv_s_dbg.c
-#include  <stdlib.h>
+#include <stdlib.h>
 #include <crtdbg.h>
 
 int main( void )
diff --git a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
index e0d4242db2..da9fb11032 100644
--- a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
+++ b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _dupenv_s, _wdupenv_s"
 title: "_dupenv_s, _wdupenv_s"
+description: "Learn more about: _dupenv_s, _wdupenv_s"
 ms.date: "4/2/2020"
 api_name: ["_dupenv_s", "_wdupenv_s", "_o__dupenv_s", "_o__wdupenv_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["tdupenv_s", "_dupenv_s", "wdupenv_s", "dupenv_s", "_tdupenv_s", "_wdupenv_s"]
 helpviewer_keywords: ["_dupenv_s function", "_tdupenv_s function", "_wdupenv_s function", "environment variables", "wdupenv_s function", "dupenv_s function", "tdupenv_s function"]
-ms.assetid: b729ecc2-a31d-4ccf-92a7-5accedb8f8c8
 ---
 # `_dupenv_s`, `_wdupenv_s`
 
@@ -89,7 +88,7 @@ For more compatibility information, see [Compatibility](../compatibility.md).
 
 ```C
 // crt_dupenv_s.c
-#include  <stdlib.h>
+#include <stdlib.h>
 
 int main( void )
 {
diff --git a/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md b/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
index ebc5633b22..84e447fee5 100644
--- a/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
+++ b/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
@@ -1,14 +1,13 @@
 ---
 title: "erf, erff, erfl, erfc, erfcf, erfcl"
 description: "API reference for erf, erff, erfl, erfc, erfcf, and erfcl; which computes the error function or the complementary error function of a value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["erff", "erfl", "erf", "erfc", "erfcf", "erfcl", "_o_erf", "_o_erfc", "_o_erfcf", "_o_erfcl", "_o_erff", "_o_erfl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["erfl", "erf", "erff", "erfc", "erfcf", "erfcl"]
 helpviewer_keywords: ["erfl function", "erff function", "erf function", "erfcl function", "erfcf function", "erfc function"]
-ms.assetid: 144d90d3-e437-41c2-a659-cd57596023b5
 ---
 # `erf`, `erff`, `erfl`, `erfc`, `erfcf`, `erfcl`
 
@@ -47,8 +46,8 @@ float erfcf(
 long double erfcl(
    long double x
 );
-#define erf(X) // Requires C11 or higher
-#define erfc(X) // Requires C11 or higher
+#define erf(X) // Requires C11 or later
+#define erfc(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/exit-exit-exit.md b/docs/c-runtime-library/reference/exit-exit-exit.md
index 1ad98c4dc5..bcec154714 100644
--- a/docs/c-runtime-library/reference/exit-exit-exit.md
+++ b/docs/c-runtime-library/reference/exit-exit-exit.md
@@ -14,7 +14,7 @@ helpviewer_keywords: ["exit function", "_exit function", "processes, terminating
 Terminates the calling process. The **`exit`** function terminates it after cleanup; **`_exit`** and **`_Exit`** terminate it immediately.
 
 > [!NOTE]
-> Do not use this method to shut down a Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). For more information about UWP apps, see [Universal Windows Platform documentation](https://developer.microsoft.com/windows/apps).
+> Do not use this method to shut down a Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). For more information about UWP apps, see [Universal Windows Platform documentation](https://developer.microsoft.com/windows/apps).
 
 ## Syntax
 
diff --git a/docs/c-runtime-library/reference/exp-expf.md b/docs/c-runtime-library/reference/exp-expf.md
index ca4498aea0..b79dcacd4c 100644
--- a/docs/c-runtime-library/reference/exp-expf.md
+++ b/docs/c-runtime-library/reference/exp-expf.md
@@ -1,7 +1,7 @@
 ---
 title: "exp, expf, expl"
 description: "API reference for exp, expf, and expl; which calculate the exponential."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["expf", "expl", "exp", "_o_exp", "_o_expf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -31,7 +31,7 @@ float expf(
 long double expl(
    long double x
 );
-#define exp(z) // Requires C11 or higher
+#define exp(z) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
index b2d84ff608..472d0cd5ce 100644
--- a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
+++ b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
@@ -1,14 +1,13 @@
 ---
 title: "exp2, exp2f, exp2l"
 description: "API ref for exp2(), exp2f(), and exp2l() which compute 2 raised to the specified value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["exp2", "exp2f", "exp2l", "_o_exp2", "_o_exp2f", "_o_exp2l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["exp2", "math/exp2", "exp2f", "math/exp2f", "exp2l", "math/exp2l"]
 helpviewer_keywords: ["exp2 function", "exp2f function", "exp2l function"]
-ms.assetid: 526e3e10-201a-4610-a886-533f44ece344
 ---
 # `exp2`, `exp2f`, `exp2l`
 
@@ -36,7 +35,7 @@ float exp2f(
 long double exp2l(
    long double x
 );
-#define exp2(X) // Requires C11 or higher
+#define exp2(X) // Requires C11 or later
 ```
 
 ### Parameters
@@ -79,5 +78,5 @@ For more compatibility information, see [Compatibility](../compatibility.md).
 ## See also
 
 [Alphabetical function reference](crt-alphabetical-function-reference.md)\
-[`exp`, `expf`, `expl`](exp-expf.md)
+[`exp`, `expf`, `expl`](exp-expf.md)\
 [`log2`, `log2f`, `log2l`](log2-log2f-log2l.md)
diff --git a/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md b/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
index 838790997c..7afd9844a3 100644
--- a/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
+++ b/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
@@ -1,14 +1,13 @@
 ---
 title: "expm1, expm1f, expm1l"
 description: "API reference for expm1, expm1f, and expm1; which compute the base-e exponential of a value, minus one."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["expm1l", "expm1", "expm1f"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["expm1l", "expm1", "expm1f"]
 helpviewer_keywords: ["expm1f function", "expm1l function", "expm1 function"]
-ms.assetid: 2a4dd2d9-370c-42b0-9067-0625efa272e0
 ---
 # `expm1`, `expm1f`, `expm1l`
 
@@ -32,7 +31,7 @@ float expm1f(
 long double expm1l(
    long double x
 );
-#define expm1(X) // Requires C11 or higher
+#define expm1(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md b/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
index 99d52e6c87..541221d8f9 100644
--- a/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
+++ b/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
@@ -1,12 +1,12 @@
 ---
 title: "fabs, fabsf, fabsl"
 description: "API reference for fabs, fabsf, and fabsl; which calculate the absolute value of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["fabsf", "fabs", "fabsl", "_o_fabs", "_o_fabsf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
-f1_keywords: ["fabs", "fabsf", "fabsl", "math\fabs", "math\fabsf", "math\fabsl"]
+f1_keywords: ["fabs", "fabsf", "fabsl", "math/fabs", "math/fabsf", "math/fabsl"]
 helpviewer_keywords: ["absolute values", "fabsf function", "calculating absolute values", "fabs function", "fabsl function"]
 ---
 # `fabs`, `fabsf`, `fabsl`
@@ -32,7 +32,7 @@ long double fabsl(
    long double x
 );
 
-#define fabs(X) // Requires C11 or higher
+#define fabs(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md b/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
index 89145b12af..7b408b2432 100644
--- a/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
+++ b/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
@@ -1,7 +1,7 @@
 ---
 title: "fdim, fdimf, fdiml"
 description: "API reference for fdim, fdimf, and fdiml; which determines the positive difference between two values."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["fdim", "fdimf", "fdiml"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -41,7 +41,7 @@ long double fdiml(
    long double y
 );
 
-#define fdim(X) // Requires C11 or higher
+#define fdim(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/floating-point-ordering.md b/docs/c-runtime-library/reference/floating-point-ordering.md
index ece44b97be..acdf45961d 100644
--- a/docs/c-runtime-library/reference/floating-point-ordering.md
+++ b/docs/c-runtime-library/reference/floating-point-ordering.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered"
 title: "isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered"
+description: "Learn more about: isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered"
 ms.date: "01/31/2019"
 f1_keywords: ["isgreater", "math/isgreater", "isgreaterequal", "math/isgreaterequal", "isless", "math/isless", "islessequal", "math/islessequal", "islessgreater", "math/islessgreater", "isunordered", "math/isunordered"]
 helpviewer_keywords: ["isgreater function", "isgreaterequal function", "isless function", "islessequal function", "islessgreater function", "isunordered function"]
@@ -43,7 +43,7 @@ int isunordered(
 ); /* C-only macro */
 ```
 
-```C++
+```cpp
 template <class FloatingType1, class FloatingType2>
 inline bool isgreater(
    FloatingType1 x,
diff --git a/docs/c-runtime-library/reference/floor-floorf-floorl.md b/docs/c-runtime-library/reference/floor-floorf-floorl.md
index fda6807505..6c5ae98469 100644
--- a/docs/c-runtime-library/reference/floor-floorf-floorl.md
+++ b/docs/c-runtime-library/reference/floor-floorf-floorl.md
@@ -1,14 +1,13 @@
 ---
 title: "floor, floorf, floorl"
 description: "API reference for floor, floorf, and floorl; which calculates the floor of a value." 
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["floorf", "floorl", "floor", "_o_floor", "_o_floorf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["floor", "floorl", "_floorl", "floorf"]
 helpviewer_keywords: ["floor function", "floorf function", "calculating floors of values", "floorl function"]
-ms.assetid: e9955f70-d659-414f-8050-132e13c8ff36
 ---
 # `floor`, `floorf`, `floorl`
 
@@ -32,7 +31,7 @@ float floorf(
 long double floorl(
    long double x
 );
-#define floor(X) // Requires C11 or higher
+#define floor(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fma-fmaf-fmal.md b/docs/c-runtime-library/reference/fma-fmaf-fmal.md
index 5c1d6f5f4b..07f439ce48 100644
--- a/docs/c-runtime-library/reference/fma-fmaf-fmal.md
+++ b/docs/c-runtime-library/reference/fma-fmaf-fmal.md
@@ -1,14 +1,13 @@
 ---
 title: "fma, fmaf, fmal"
 description: "API reference for fma, fmaf, and fmal; which multiplies two values together, adds a third value, and then rounds the result, while only losing a small amount of precision due to intermediary rounding."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["fma", "fmaf", "fmal", "_o_fma", "_o_fmaf", "_o_fmal"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["fma", "fmaf", "fmal", "math/fma", "math/fmaf", "math/fmal"]
 helpviewer_keywords: ["fma function", "fmaf function", "fmal function"]
-ms.assetid: 584a6037-da1e-4e86-9f0c-97aae86de0c0
 ---
 # `fma`, `fmaf`, `fmal`
 
@@ -47,7 +46,7 @@ long double fmal(
    long double z
 );
 
-#define fma(X, Y, Z) // Requires C11 or higher
+#define fma(X, Y, Z) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md b/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
index ccd942f672..eac6d8411b 100644
--- a/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
+++ b/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
@@ -1,14 +1,13 @@
 ---
 title: "fmax, fmaxf, fmaxl"
 description: "API reference for fmax, fmaxf, and fmaxl; which determines the larger of two numeric values."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["fmax", "fmaxf", "fmaxl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["fmax", "fmaxf", "fmaxl", "math/fmax", "math/fmaxf", "math/fmaxl"]
 helpviewer_keywords: ["fmax function", "fmaxf function", "fmaxl function"]
-ms.assetid: a773ccf7-495e-4a9a-8c6d-dfb53e341e35
 ---
 # `fmax`, `fmaxf`, `fmaxl`
 
@@ -42,7 +41,7 @@ long double fmaxl(
    long double y
 );
 
-#define fmax(X, Y) // Requires C11 or higher
+#define fmax(X, Y) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fmin-fminf-fminl.md b/docs/c-runtime-library/reference/fmin-fminf-fminl.md
index e1b2093567..d3cfee38cf 100644
--- a/docs/c-runtime-library/reference/fmin-fminf-fminl.md
+++ b/docs/c-runtime-library/reference/fmin-fminf-fminl.md
@@ -1,14 +1,13 @@
 ---
 title: "fmin, fminf, fminl"
 description: "API reference for fmin, fminf, and fminl; which determines the smaller of two values."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["fmin", "fminf", "fminl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["fmin", "fminf", "fminl", "math/fmin", "math/fminf", "math/fminl"]
 helpviewer_keywords: ["fmin function", "fminf function", "fminl function"]
-ms.assetid: 1916dfb5-99c1-4b0d-aefb-513525c3f2ac
 ---
 # `fmin`, `fminf`, `fminl`
 
@@ -42,7 +41,7 @@ long double fminl(
    long double y
 );
 
-#define fmin(x) // Requires C11 or higher
+#define fmin(x) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fmod-fmodf.md b/docs/c-runtime-library/reference/fmod-fmodf.md
index ecf39a5c28..5bd8fd5c8a 100644
--- a/docs/c-runtime-library/reference/fmod-fmodf.md
+++ b/docs/c-runtime-library/reference/fmod-fmodf.md
@@ -1,7 +1,7 @@
 ---
 title: "fmod, fmodf, fmodl"
 description: "API reference for fmod, fmodf, and fmodl; which calculates the floating-point remainder."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["fmod", "fmodf", "fmodl", "_o_fmod", "_o_fmodf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -37,7 +37,7 @@ long double fmodl(
    long double y
 );
 
-#define fmod(X, Y) // Requires C11 or higher
+#define fmod(X, Y) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
index 1efd939eec..6964db2b65 100644
--- a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
+++ b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
@@ -153,6 +153,7 @@ Valid characters for the *`mode`* string used in **`fopen_s`** and [`_fdopen`](f
 | **`t`** | `_O_TEXT` (translated) |
 | **`c`** | None |
 | **`n`** | None |
+| **`N`** | `_O_NOINHERIT` |
 | **`D`** | `_O_TEMPORARY` |
 | **`R`** | `_O_RANDOM` |
 | **`S`** | `_O_SEQUENTIAL` |
@@ -166,7 +167,7 @@ The **`c`**, **`n`**, **`R`**, **`S`**, **`t`**, **`T`**, and **`D`** *`mode`* o
 If you're using **`rb`** mode, memory mapped Win32 files might also be an option if you don't need to port your code, you expect to read much of the file, or you don't care about network performance.
 
 Regarding `T` and `D`:
-- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](https://learn.microsoft.com/archive/blogs/larryosterman/its-only-temporary).
+- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](/archive/blogs/larryosterman/its-only-temporary).
 - `D` specifies a regular file that is written to disk. The difference is that it's automatically deleted when it's closed.
 You can combine `TD` to get both semantics.
 
diff --git a/docs/c-runtime-library/reference/fopen-wfopen.md b/docs/c-runtime-library/reference/fopen-wfopen.md
index 3756a268d0..22d44f2421 100644
--- a/docs/c-runtime-library/reference/fopen-wfopen.md
+++ b/docs/c-runtime-library/reference/fopen-wfopen.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: fopen, _wfopen"
 title: "fopen, _wfopen"
+description: "Learn more about: fopen, _wfopen"
 ms.date: 04/27/2023
 api_name: ["_wfopen", "fopen", "_o__wfopen", "_o_fopen"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
@@ -136,7 +136,7 @@ Valid characters for the *`mode`* string that is used in **`fopen`** and **`_fdo
 | Characters in *`mode`* string | Equivalent *`oflag`* value for `_open`/`_sopen` |
 |--|--|
 | **`a`** | `_O_WRONLY | _O_APPEND` (usually `_O_WRONLY | _O_CREAT | _O_APPEND`) |
-| **`a+`** | `_O_RDWR | _O_APPEND` (usually `_O_RDWR | _O_APPEND | _O_CREAT` ) |
+| **`a+`** | `_O_RDWR | _O_APPEND` (usually `_O_RDWR | _O_APPEND | _O_CREAT`) |
 | **`r`** | `_O_RDONLY` |
 | **`r+`** | `_O_RDWR` |
 | **`w`** | `_O_WRONLY` (usually `_O_WRONLY | _O_CREAT | _O_TRUNC`) |
@@ -146,6 +146,7 @@ Valid characters for the *`mode`* string that is used in **`fopen`** and **`_fdo
 | **`x`** | `_O_EXCL` |
 | **`c`** | None |
 | **`n`** | None |
+| **`N`** | `_O_NOINHERIT` |
 | **`S`** | `_O_SEQUENTIAL` |
 | **`R`** | `_O_RANDOM` |
 | **`T`** | `_O_SHORTLIVED` |
@@ -157,7 +158,7 @@ Valid characters for the *`mode`* string that is used in **`fopen`** and **`_fdo
 If you're using **`rb`** mode, you don't have to port your code, and if you expect to read most of a large file or aren't concerned about network performance, you might also consider whether to use memory mapped Win32 files as an option.
 
 Regarding `T` and `D`:
-- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](https://learn.microsoft.com/archive/blogs/larryosterman/its-only-temporary).
+- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](/archive/blogs/larryosterman/its-only-temporary).
 - `D` specifies a regular file that is written to disk. The difference is that it's automatically deleted when it's closed.
 You can combine `TD` to get both semantics.
 
diff --git a/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md b/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
index 2d972d963a..19afc35f93 100644
--- a/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
+++ b/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: fprintf, _fprintf_l, fwprintf, _ftprintf, _ftprintf_l"
 title: "fprintf, _fprintf_l, fwprintf, _fwprintf_l, _ftprintf, _ftprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: fprintf, _fprintf_l, fwprintf, _ftprintf, _ftprintf_l"
+ms.date: 3/9/2021
 api_name: ["fwprintf", "fprintf", "_fprintf_l", "_fwprintf_l", "_ftprintf", "_ftprintf_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -73,7 +73,7 @@ The versions of these functions with the **`_l`** suffix are identical except th
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004  (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004  (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text function mappings
 
diff --git a/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md b/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
index 8ed284f343..67e942623e 100644
--- a/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _fprintf_p, _fprintf_p_l, _ftprintf_p, _ftprintf_p_l, _fwprintf_p, _fwprintf_p_l"
 title: "_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _fprintf_p, _fprintf_p_l, _ftprintf_p, _ftprintf_p_l, _fwprintf_p, _fwprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_fwprintf_p", "_fprintf_p_l", "_fwprintf_p_l", "_fprintf_p"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -71,7 +71,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 Like the non-secure versions (see [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](fprintf-fprintf-l-fwprintf-fwprintf-l.md)), these functions validate their parameters and invoke the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md), if either *`stream`* or *`format`* is a null pointer or if there are any unknown or badly formed formatting specifiers. If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
diff --git a/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md b/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
index 225ec4abc7..4d8fe4b93e 100644
--- a/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l, _ftprintf_s, _ftprintf_s_l"
 title: "fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l, _ftprintf_s, _ftprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l, _ftprintf_s, _ftprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["_fprintf_s_l", "fwprintf_s", "fprintf_s", "_fwprintf_s_l", "_ftprintf_s", "_ftprintf_s_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -71,7 +71,7 @@ The versions of these functions with the **`_l`** suffix are identical except th
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 Like the non-secure versions (see [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](fprintf-fprintf-l-fwprintf-fwprintf-l.md)), these functions validate their parameters and invoke the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md), if either *`stream`* or *`format`* is a `NULL` pointer. The format string itself is also validated. If there are any unknown or badly formed formatting specifiers, these functions generate the invalid parameter exception. In all cases, If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`. For more information about return codes, see [`errno`, `_doserrno`, `_sys_errlist`, and `_sys_nerr`](../errno-doserrno-sys-errlist-and-sys-nerr.md).
 
diff --git a/docs/c-runtime-library/reference/frexp.md b/docs/c-runtime-library/reference/frexp.md
index fa601e5e41..faf5d4404b 100644
--- a/docs/c-runtime-library/reference/frexp.md
+++ b/docs/c-runtime-library/reference/frexp.md
@@ -1,14 +1,13 @@
 ---
 title: "frexp, frexpf, frexpl"
 description: "API reference for frexp, frexpf, and frexpl; which gets the mantissa and exponent of a floating-point number."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["frexp", "_o_frexp"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["frexp", "_frexpl"]
 helpviewer_keywords: ["_frexpl function", "mantissas, floating-point variables", "frexpl function", "exponent, floating-point numbers", "frexp function", "floating-point functions, mantissa and exponent"]
-ms.assetid: 9b020f2e-3967-45ec-a6a8-d467a071aa55
 ---
 # `frexp`, `frexpf`, `frexpl`
 
@@ -29,7 +28,7 @@ long double frexpl(
    long double x,
    int * expptr
 );
-#define frexpl(X, INT_PTR) // Requires C11 or higher
+#define frexpl(X, INT_PTR) // Requires C11 or later
 ```
 
 ```cpp
diff --git a/docs/c-runtime-library/reference/fsopen-wfsopen.md b/docs/c-runtime-library/reference/fsopen-wfsopen.md
index 8f558b4def..5f2c003e22 100644
--- a/docs/c-runtime-library/reference/fsopen-wfsopen.md
+++ b/docs/c-runtime-library/reference/fsopen-wfsopen.md
@@ -76,7 +76,7 @@ When a file is opened with the **"`a`"** or **"`a+`"** access type, all write op
 If **`t`** or **`b`** isn't given in *`mode`*, the translation mode is defined by the default-mode variable **`_fmode`**. If **`t`** or **`b`** is prefixed to the argument, the function fails and returns `NULL`. For a discussion of text and binary modes, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md).
 
 Regarding `T` and `D`:
-- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](https://learn.microsoft.com/archive/blogs/larryosterman/its-only-temporary).
+- `T` avoids writing the file to disk as long as memory pressure doesn't require it. For more information, see `FILE_ATTRIBUTE_TEMPORARY` in [File attribute constants](/windows/win32/fileio/file-attribute-constants), and also this blog post [It's only temporary](/archive/blogs/larryosterman/its-only-temporary).
 - `D` specifies a regular file that is written to disk. The difference is that it's automatically deleted when it's closed.
 You can combine `TD` to get both semantics.
 
diff --git a/docs/c-runtime-library/reference/fwide.md b/docs/c-runtime-library/reference/fwide.md
index f21511e106..71113cfe48 100644
--- a/docs/c-runtime-library/reference/fwide.md
+++ b/docs/c-runtime-library/reference/fwide.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: fwide"
 title: "fwide"
-ms.date: "11/04/2016"
+description: "Learn more about: fwide"
+ms.date: 11/04/2016
 api_name: ["fwide"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["fwide"]
 helpviewer_keywords: ["fwide function"]
-ms.assetid: a4641f5b-d74f-4946-95d5-53a64610d28d
 ---
 # `fwide`
 
@@ -19,7 +18,7 @@ Unimplemented.
 ```C
 int fwide(
    FILE *stream,
-   int mode;
+   int mode
 );
 ```
 
diff --git a/docs/c-runtime-library/reference/get-printf-count-output.md b/docs/c-runtime-library/reference/get-printf-count-output.md
index dfa9d74278..14046943fa 100644
--- a/docs/c-runtime-library/reference/get-printf-count-output.md
+++ b/docs/c-runtime-library/reference/get-printf-count-output.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _get_printf_count_output"
 title: "_get_printf_count_output"
-ms.date: "3/9/2021"
+description: "Learn more about: _get_printf_count_output"
+ms.date: 3/9/2021
 api_name: ["_get_printf_count_output"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -28,7 +28,7 @@ Non-zero if **`%n`** is supported; 0 if **`%n`** isn't supported.
 If **`%n`** isn't supported (the default), any **`%n`** found in the format string of one of the `printf` functions invokes the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md). If **`%n`** support is enabled (see [`_set_printf_count_output`](set-printf-count-output.md)), then **`%n`** behaves as described in [Format specification syntax: `printf` and `wprintf` functions](../format-specification-syntax-printf-and-wprintf-functions.md).
 
 > [!IMPORTANT]
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ## Requirements
 
diff --git a/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md b/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
index 4f49114531..22aa485c22 100644
--- a/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
+++ b/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _get_purecall_handler, _set_purecall_handler"
 title: "_get_purecall_handler, _set_purecall_handler"
-ms.date: "1/14/2021"
+description: "Learn more about: _get_purecall_handler, _set_purecall_handler"
+ms.date: 1/14/2021
 api_name: ["_set_purecall_handler", "_set_purecall_handler_m", "_get_purecall_handler"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_set_purecall_handler", "_set_purecall_handler_m", "set_purecall_handler_m", "set_purecall_handler", "stdlib/_set_purecall_handler", "stdlib/_get_purecall_handler", "_get_purecall_handler"]
 helpviewer_keywords: ["_set_purecall_handler function", "set_purecall_handler function", "purecall_handler", "set_purecall_handler_m function", "_purecall_handler", "_set_purecall_handler_m function", "_get_purecall_handler function"]
-ms.assetid: 2759b878-8afa-4129-86e7-72afc2153d9c
 ---
 # `_get_purecall_handler`, `_set_purecall_handler`
 
@@ -64,7 +63,7 @@ class CDerived;
 class CBase
 {
 public:
-   CBase(CDerived *derived): m_pDerived(derived) {};
+   CBase(CDerived *derived): m_pDerived(derived) {}
    ~CBase();
    virtual void function(void) = 0;
 
@@ -74,8 +73,8 @@ public:
 class CDerived : public CBase
 {
 public:
-   CDerived() : CBase(this) {};   // C4355
-   virtual void function(void) {};
+   CDerived() : CBase(this) {}   // C4355
+   virtual void function(void) {}
 };
 
 CBase::~CBase()
diff --git a/docs/c-runtime-library/reference/heapchk.md b/docs/c-runtime-library/reference/heapchk.md
index 589d119aef..4e77c83690 100644
--- a/docs/c-runtime-library/reference/heapchk.md
+++ b/docs/c-runtime-library/reference/heapchk.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _heapchk"
 title: "_heapchk"
+description: "Learn more about: _heapchk"
 ms.date: "4/2/2020"
 api_name: ["_heapchk", "_o__heapchk"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_heapchk", "heapchk"]
 helpviewer_keywords: ["debugging [CRT], heap-related problems", "consistency checking of heaps", "heapchk function", "heaps, checking consistency", "_heapchk function"]
-ms.assetid: 859619a5-1e35-4f02-9e09-11d9fa266ec0
 ---
 # `_heapchk`
 
@@ -36,7 +35,7 @@ In addition, if an error occurs, **`_heapchk`** sets `errno` to `ENOSYS`.
 
 ## Remarks
 
-The **`_heapchk`** function helps debug heap-related problems by checking for minimal consistency of the heap. If the operating system doesn't support **`_heapchk`**(for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`.
+The **`_heapchk`** function helps debug heap-related problems by checking for minimal consistency of the heap. If the operating system doesn't support **`_heapchk`** (for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`.
 
 By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
 
diff --git a/docs/c-runtime-library/reference/heapmin.md b/docs/c-runtime-library/reference/heapmin.md
index ffee2908c1..f5f5e5671a 100644
--- a/docs/c-runtime-library/reference/heapmin.md
+++ b/docs/c-runtime-library/reference/heapmin.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _heapmin"
 title: "_heapmin"
+description: "Learn more about: _heapmin"
 ms.date: "4/2/2020"
 api_name: ["_heapmin", "_o__heapmin"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_heapmin", "heapmin"]
 helpviewer_keywords: ["heap memory", "minimizing heaps", "memory, releasing", "heaps, releasing unused memory", "_heapmin function", "heapmin function"]
-ms.assetid: c0bccdf6-2d14-4d7b-a7ff-d6a17bdb410f
 ---
 # `_heapmin`
 
@@ -28,7 +27,7 @@ For more information about this and other return codes, see [`errno`, `_doserrno
 
 ## Remarks
 
-The **`_heapmin`** function minimizes the heap by releasing unused heap memory to the operating system. If the operating system doesn't support **`_heapmin`**(for example, Windows 98), the function returns -1 and sets `errno` to `ENOSYS`.
+The **`_heapmin`** function minimizes the heap by releasing unused heap memory to the operating system. If the operating system doesn't support **`_heapmin`** (for example, Windows 98), the function returns -1 and sets `errno` to `ENOSYS`.
 
 By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
 
diff --git a/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md b/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
index d447ac7df1..93c84bd8b8 100644
--- a/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
+++ b/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
@@ -1,14 +1,13 @@
 ---
 title: "hypot, hypotf, hypotl, _hypot, _hypotf, _hypotl"
 description: "API reference for hypot, hypotf, hypotl, _hypot, _hypotf, and _hypotl; which calculate the hypotenuse."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["_hypotf", "hypot", "hypotf", "_hypot", "_hypotl", "hypotl", "_o__hypot", "_o__hypotf", "_o_hypot"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["hypotf", "hypotl", "_hypotl", "hypot", "_hypot", "_hypotf"]
 helpviewer_keywords: ["hypotenuse calculation", "hypot function", "hypotf function", "triangles, calculating hypotenuse", "hypotl function", "calculating hypotenuses", "_hypot function"]
-ms.assetid: 6a13887f-bd53-43fc-9d77-5b42d6e49925
 ---
 # `hypot`, `hypotf`, `hypotl`, `_hypot`, `_hypotf`, `_hypotl`
 
@@ -41,7 +40,7 @@ long double _hypotl(
    long double x,
    long double y
 );
-#define hypotf(X, Y) // Requires C11 or higher
+#define hypotf(X, Y) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md b/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
index b75d22d40b..c666ef5b99 100644
--- a/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
+++ b/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
@@ -1,14 +1,13 @@
 ---
 title: "ilogb, ilogbf, ilogbl2"
 description: "API reference for ilogb, ilogbf, and ilogbl2; which retrieve an integer that represents the unbiased base-2 exponent of the specified value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["ilogb", "ilogbf", "ilogbl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["ilogb", "ilogbf", "ilogbl", "math/ilogb", "math/ilogbf", "math/ilogbl"]
 helpviewer_keywords: ["ilogb function", "ilogbf function", "ilogbl function"]
-ms.assetid: 9ef19d57-1caa-41d5-8233-2faad3562fcb
 ---
 # `ilogb`, `ilogbf`, `ilogbl`
 
@@ -37,7 +36,7 @@ int ilogbl(
    long double x
 );
 
-#define ilogbl(X) // Requires C11 or higher
+#define ilogbl(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md b/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
index 02dded213e..f95d12c979 100644
--- a/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
+++ b/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: islower, iswlower, _islower_l, _iswlower_l"
 title: "islower, iswlower, _islower_l, _iswlower_l"
-ms.date: "4/2/2020"
+description: "Learn more about: islower, iswlower, _islower_l, _iswlower_l"
+ms.date: 4/2/2020
 api_name: ["iswlower", "_islower_l", "islower", "_iswlower_l", "_o_islower", "_o_iswlower"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_istlower", "islower", "_ismbclower_l", "_liswlower_l", "_istlower_l", "_iswlower_l", "_islower _l", "_islower_l", "iswlower"]
 helpviewer_keywords: ["_islower _l function", "_ismbclower_l function", "islower function", "_iswlower_l function", "_liswlower_l function", "_istlower_l function", "istlower function", "_istlower function", "iswlower function", "_islower_l function"]
-ms.assetid: fcc3b70a-2b47-45fd-944d-e5c1942e6457
 ---
 # `islower`, `iswlower`, `_islower_l`, `_iswlower_l`
 
@@ -54,7 +53,7 @@ The behavior of **`islower`** and **`_islower_l`** is undefined if *`c`* isn't E
 | TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined |
 |---|---|---|---|
 | `_istlower` | **`islower`** | [`_ismbclower`](ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | **`iswlower`** |
-| **`_istlower_l`** | `_islower _l` | [`_ismbclower_l`](ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | **`_liswlower_l`** |
+| **`_istlower_l`** | `_islower_l` | [`_ismbclower_l`](ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md) | **`_liswlower_l`** |
 
 ## Remarks
 
@@ -64,10 +63,10 @@ By default, this function's global state is scoped to the application. To change
 
 | Routine | Required header |
 |---|---|
-| **`islower`** | \<ctype.h> |
-| **`iswlower`** | \<ctype.h> or \<wchar.h> |
-| **`_islower_l`** | \<ctype.h> |
-| **`_swlower_l`** | \<ctype.h> or \<wchar.h> |
+| **`islower`** | `<ctype.h>` |
+| **`iswlower`** | `<ctype.h>` or `<wchar.h>` |
+| **`_islower_l`** | `<ctype.h>` |
+| **`_swlower_l`** | `<ctype.h>` or `<wchar.h>` |
 
 For more compatibility information, see [Compatibility](../compatibility.md).
 
diff --git a/docs/c-runtime-library/reference/itoa-itow.md b/docs/c-runtime-library/reference/itoa-itow.md
index 48046135b6..1f03714208 100644
--- a/docs/c-runtime-library/reference/itoa-itow.md
+++ b/docs/c-runtime-library/reference/itoa-itow.md
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_itoa", "_ltoa", "_ultoa", "_i64toa", "_ui64toa", "_itow", "_ltow", "_ultow", "_i64tow", "_ui64tow", "itoa", "ltoa", "ultoa", "i64toa", "ui64toa", "itow", "ltow", "ultow", "i64tow", "ui64tow", "itot", "_itot", "ltot", "_ltot", "ultot", "_ultot", "i64tot", "_i64tot", "ui64tot", "_ui64tot", "_MAX_ITOSTR_BASE16_COUNT", "_MAX_ITOSTR_BASE10_COUNT", "_MAX_ITOSTR_BASE8_COUNT", "_MAX_ITOSTR_BASE2_COUNT", "_MAX_LTOSTR_BASE16_COUNT", "_MAX_LTOSTR_BASE10_COUNT", "_MAX_LTOSTR_BASE8_COUNT", "_MAX_LTOSTR_BASE2_COUNT", "_MAX_ULTOSTR_BASE16_COUNT", "_MAX_ULTOSTR_BASE10_COUNT", "_MAX_ULTOSTR_BASE8_COUNT", "_MAX_ULTOSTR_BASE2_COUNT", "_MAX_I64TOSTR_BASE16_COUNT", "_MAX_I64TOSTR_BASE10_COUNT", "_MAX_I64TOSTR_BASE8_COUNT", "_MAX_I64TOSTR_BASE2_COUNT", "_MAX_U64TOSTR_BASE16_COUNT", "_MAX_U64TOSTR_BASE10_COUNT", "_MAX_U64TOSTR_BASE8_COUNT", "_MAX_U64TOSTR_BASE2_COUNT"]
 helpviewer_keywords: ["_itot function", "ui64toa function", "_ui64toa function", "converting integers", "itot function", "_i64tow function", "_i64toa function", "_itow function", "ui64tow function", "integers, converting", "itoa function", "_ui64tow function", "i64tow function", "itow function", "i64toa function", "converting numbers, to strings", "_itoa function"]
-ms.assetid: 46592a00-77bb-4e73-98c0-bf629d96cea6
 ---
 # `itoa`, `_itoa`, `ltoa`, `_ltoa`, `ultoa`, `_ultoa`, `_i64toa`, `_ui64toa`, `_itow`, `_ltow`, `_ultow`, `_i64tow`, `_ui64tow`
 
@@ -137,7 +136,7 @@ This example uses a conversion count macro to define a buffer large enough to co
 int main()
 {
     wchar_t buffer[_MAX_U64TOSTR_BASE2_COUNT];
-    std:wcout << _ui64tow(0xFFFFFFFFFFFFFFFFull, buffer, 2) << std::endl;
+    std::wcout << _ui64tow(0xFFFFFFFFFFFFFFFFull, buffer, 2) << std::endl;
 }
 ```
 
diff --git a/docs/c-runtime-library/reference/itoa-s-itow-s.md b/docs/c-runtime-library/reference/itoa-s-itow-s.md
index bd52ce7408..8625968ea0 100644
--- a/docs/c-runtime-library/reference/itoa-s-itow-s.md
+++ b/docs/c-runtime-library/reference/itoa-s-itow-s.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: _itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s, _itow_s,  _ltow_s,  _ultow_s, _i64tow_s, _ui64tow_s"
 title: "_itoa_s, _itow_s functions"
-ms.date: "4/2/2020"
+description: "Learn more about: _itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s, _itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s"
+ms.date: 4/2/2020
 api_name: ["_itoa_s", "_ltoa_s", "_ultoa_s", "_i64toa_s", "_ui64toa_s", "_itow_s", "_ltow_s", "_ultow_s", "_i64tow_s", "_ui64tow_s", "_o__i64toa_s", "_o__i64tow_s", "_o__itoa_s", "_o__itow_s", "_o__ltoa_s", "_o__ltow_s", "_o__ui64toa_s", "_o__ui64tow_s", "_o__ultoa_s", "_o__ultow_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_itoa_s", "_ltoa_s", "_ultoa_s", "_i64toa_s", "_ui64toa_s", "_itow_s", "_ltow_s", "_ultow_s", "_i64tow_s", "_ui64tow_s", "_itot_s", "_ltot_s", "_ultot_s", "_i64tot_s", "_ui64tot_s", "itoa_s", "ltoa_s", "ultoa_s", "i64toa_s", "ui64toa_s", "itow_s", "ltow_s", "ultow_s", "i64tow_s", "ui64tow_s", "itot_s", "ltot_s", "ultot_s", "i64tot_s", "ui64tot_s"]
 helpviewer_keywords: ["_ui64toa_s function", "_itow_s function", "_i64tow_s function", "_itot_s function", "converting integers", "itow_s function", "i64toa_s function", "_ui64tow_s function", "integers, converting", "_i64tot_s function", "itoa_s function", "_itoa_s function", "ui64toa_s function", "i64tow_s function", "converting numbers, to strings", "_ui64tot_s function", "_i64toa_s function"]
-ms.assetid: eb746581-bff3-48b5-a973-bfc0a4478ecf
 ---
-# `_itoa_s`, `_ltoa_s`, `_ultoa_s`, `_i64toa_s`, `_ui64toa_s`, `_itow_s`,  `_ltow_s`,  `_ultow_s`, `_i64tow_s`, `_ui64tow_s`
+# `_itoa_s`, `_ltoa_s`, `_ultoa_s`, `_i64toa_s`, `_ui64toa_s`, `_itow_s`, `_ltow_s`, `_ultow_s`, `_i64tow_s`, `_ui64tow_s`
 
 Converts an integer to a string. These functions are versions of the [`_itoa`, `_itow` functions](itoa-itow.md) with security enhancements as described in [Security features in the CRT](../security-features-in-the-crt.md).
 
diff --git a/docs/c-runtime-library/reference/kbhit.md b/docs/c-runtime-library/reference/kbhit.md
index e4f1f9cfb7..3d89e65caa 100644
--- a/docs/c-runtime-library/reference/kbhit.md
+++ b/docs/c-runtime-library/reference/kbhit.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _kbhit"
 title: "_kbhit"
+description: "Learn more about: _kbhit"
 ms.date: "4/2/2020"
 api_name: ["_kbhit", "_o__kbhit"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_kbhit", "conio/_kbhit"]
 helpviewer_keywords: ["keyboard input", "user input, checking for keyboard", "kbhit function", "console", "console, checking", "keyboards, keyboard input", "_kbhit function", "keyboards, checking input"]
-ms.assetid: e82a1cc9-bbec-4150-b678-a7e433220fe4
 ---
 # `_kbhit`
 
@@ -20,7 +19,6 @@ Checks the console for keyboard input.
 ## Syntax
 
 ```C
-
 int _kbhit( void );
 ```
 
diff --git a/docs/c-runtime-library/reference/ldexp.md b/docs/c-runtime-library/reference/ldexp.md
index 8cb4fae046..b5b2b0ac17 100644
--- a/docs/c-runtime-library/reference/ldexp.md
+++ b/docs/c-runtime-library/reference/ldexp.md
@@ -1,14 +1,13 @@
 ---
 title: "ldexp, ldexpf, ldexpl"
 description: "API reference for ldexp, ldexpf, and ldexpl; which multiplies a floating-point number by an integral power of two."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["ldexp", "ldexpf", "ldexpl", "_ldexpl", "_o_ldexp"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["ldexp", "ldexpf", "ldexpl", "_ldexpl"]
 helpviewer_keywords: ["calculating real numbers", "computing real numbers", "mantissas, floating-point variables", "ldexp function", "ldexpf function", "ldexpl function", "exponent, floating-point numbers", "floating-point functions, mantissa and exponent"]
-ms.assetid: aa7f5310-3879-4f63-ae74-86a39fbdedfa
 ---
 # `ldexp`, `ldexpf`, `ldexpl`
 
@@ -29,7 +28,7 @@ long double ldexpl(
    long double x,
    int exp
 );
-#define ldexp(X, INT) // Requires C11 or higher
+#define ldexp(X, INT) // Requires C11 or later
 
 float ldexp(
    float x,
diff --git a/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md b/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
index e23d3050a2..cd6eac9110 100644
--- a/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
+++ b/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
@@ -1,14 +1,13 @@
 ---
 title: "lgamma, lgammaf, lgammal"
 description: "API reference for lgamma, lgammaf, and lgammal; which determines the natural logarithm of the absolute value of the gamma function of the specified value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["lgamma", "lgammaf", "lgammal", "_o_lgamma", "_o_lgammaf", "_o_lgammal"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["lgamma", "lgammaf", "lgammal", "math/lgamma", "math/lgammaf", "math/lgammal"]
 helpviewer_keywords: ["lgamma function", "lgammal function", "lgammaf function"]
-ms.assetid: 6e326c58-7077-481a-a329-c82ae56ae9e6
 ---
 # `lgamma`, `lgammaf`, `lgammal`
 
@@ -20,7 +19,7 @@ Determines the natural logarithm of the absolute value of the gamma function of
 double lgamma( double x );
 float lgammaf( float x );
 long double lgammal( long double x );
-#define lgammal(X) // Requires C11 or higher
+#define lgammal(X) // Requires C11 or later
 
 float lgamma( float x ); //C++ only
 long double lgamma( long double x ); //C++ only
diff --git a/docs/c-runtime-library/reference/log-logf-log10-log10f.md b/docs/c-runtime-library/reference/log-logf-log10-log10f.md
index 475f466870..ba904c50ab 100644
--- a/docs/c-runtime-library/reference/log-logf-log10-log10f.md
+++ b/docs/c-runtime-library/reference/log-logf-log10-log10f.md
@@ -1,7 +1,7 @@
 ---
 title: "log, logf, logl, log10, log10f, log10l"
 description: "API reference for log, logf, logl, log10, log10f, and log10l; which calculate logarithms."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["log10f", "logf", "log10", "log", "log10l", "logl", "_o_log", "_o_log10", "_o_log10f", "_o_logf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -22,8 +22,8 @@ long double logl(double x);
 double log10(double x);
 float log10f (float x);
 long double log10l(double x);
-#define log(X) // Requires C11 or higher
-#define log10(X) // Requires C11 or higher
+#define log(X) // Requires C11 or later
+#define log10(X) // Requires C11 or later
 
 float log(float x);  // C++ only
 long double log(long double x);  // C++ only
@@ -122,9 +122,9 @@ Log base 2 of 65536.000000 is 16.000000
 
 ## See also
 
-[Math and floating-point support](../floating-point-support.md) \
-[`exp`, `expf`, `expl`](exp-expf.md) \
-[`_matherr`](matherr.md) \
-[`pow`, `powf`, `powl`](pow-powf-powl.md) \
-[`_CIlog`](../cilog.md) \
-[`_CIlog10`](../cilog10.md)\
+[Math and floating-point support](../floating-point-support.md)\
+[`exp`, `expf`, `expl`](exp-expf.md)\
+[`_matherr`](matherr.md)\
+[`pow`, `powf`, `powl`](pow-powf-powl.md)\
+[`_CIlog`](../cilog.md)\
+[`_CIlog10`](../cilog10.md)
diff --git a/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md b/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
index 4b73bb4062..ae3103f60c 100644
--- a/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
+++ b/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
@@ -1,7 +1,7 @@
 ---
 title: "log1p, log1pf, log1pl2"
 description: "API reference for log1p, log1pf, log1pl2; which compute the natural logarithm of 1 plus the specified value."
-ms.date: "2/1/2023"
+ms.date: 2/1/2023
 api_name: ["log1p", "log1pf", "log1pl", "_o_log1p", "_o_log1pf", "_o_log1pl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -20,7 +20,7 @@ double log1p(double x);
 float log1pf(float x);
 long double log1pl(long double x);
 
-#define log1p(X) // Requires C11 or higher
+#define log1p(X) // Requires C11 or later
 
 float log1p(float x); //C++ only
 long double log1p(long double x); //C++ only
diff --git a/docs/c-runtime-library/reference/log2-log2f-log2l.md b/docs/c-runtime-library/reference/log2-log2f-log2l.md
index 9a70db2e0c..329ca699d0 100644
--- a/docs/c-runtime-library/reference/log2-log2f-log2l.md
+++ b/docs/c-runtime-library/reference/log2-log2f-log2l.md
@@ -1,12 +1,11 @@
 ---
 title: "log2, log2f, log2l"
 description: "API reference for log2, log2f, and log2l; which determine the binary (base-2) logarithm of the specified value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["log2", "log2l", "log2f", "_o_log2", "_o_log2f", "_o_log2l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
-ms.assetid: 94d11b38-70b7-4d3a-94ac-523153c92b2e
 ---
 # `log2`, `log2f`, `log2l`
 
@@ -35,7 +34,7 @@ long double log2l(
    long double x
 );
 
-#define log2(X) // Requires C11 or higher
+#define log2(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md b/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
index 30a4afeca7..cec043552f 100644
--- a/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
+++ b/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
@@ -1,7 +1,7 @@
 ---
 title: "logb, logbf, logbl, _logb, _logbf"
 description: "API reference for logb, logbf, logbl, _logb, and _logbf; which extract the exponent value of a floating-point argument."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["logb", "_logb", "_logbl", "logbf", "_logbf", "logbl", "_o__logb", "_o_logb", "_o_logbf", "_o_logbl", "_o__logbf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -37,7 +37,7 @@ double _logb(
 float _logbf(
    float x
 );
-#define logb(X) // Requires C11 or higher
+#define logb(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/longjmp.md b/docs/c-runtime-library/reference/longjmp.md
index e94b1110c1..da78b65d11 100644
--- a/docs/c-runtime-library/reference/longjmp.md
+++ b/docs/c-runtime-library/reference/longjmp.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: longjmp"
 title: "longjmp"
+description: "Learn more about: longjmp"
 ms.date: "1/14/2021"
 api_name: ["longjmp"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["longjmp"]
 helpviewer_keywords: ["restoring stack environment and execution locale", "longjmp function"]
-ms.assetid: 0e13670a-5130-45c1-ad69-6862505b7a2f
 ---
 # `longjmp`
 
@@ -75,5 +74,5 @@ See the example for [`_fpreset`](fpreset.md).
 
 ## See also
 
-[Process and environment control](../process-and-environment-control.md)
+[Process and environment control](../process-and-environment-control.md)\
 [`setjmp`](setjmp.md)
diff --git a/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md b/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
index 9c9b491590..732c7abe85 100644
--- a/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
+++ b/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
@@ -1,14 +1,13 @@
 ---
 title: "lrint, lrintf, lrintl, llrint, llrintf, llrintl"
 description: "API reference for lrint(), lrintf(), lrintl(), llrint(), llrintf(), and llrintl(); which rounds the specified floating-point value to the nearest integral value, by using the current rounding mode and direction."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["lrint", "lrintl", "lrintf", "llrint", "llrintf", "llrintl", "_o_llrint", "_o_llrintf", "_o_llrintl", "_o_lrint", "_o_lrintf", "_o_lrintl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["lrint", "lrintf", "lrintl", "llrint", "llrintf", "llrintl", "math/lrint", "math/lrintf", "math/lrintl", "math/llrint", "math/llrintf", "math/llrintl"]
 helpviewer_keywords: ["lrint function", "lrintf function", "lrintl function", "llrint function", "llrintf function", "llrintl function"]
-ms.assetid: 28ccd5b3-5e6f-434f-997d-a21d51b8ce7f
 ---
 # `lrint`, `lrintf`, `lrintl`, `llrint`, `llrintf`, `llrintl`
 
@@ -57,7 +56,7 @@ long long int llrintl(
    long double x
 );
 
-#define lrint(X) // Requires C11 or higher
+#define lrint(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md b/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
index 4233c51110..d9ff713ffd 100644
--- a/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
+++ b/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
@@ -1,14 +1,13 @@
 ---
 title: "lround, lroundf, lroundl, llround, llroundf, llroundl"
 description: "API reference for lround, lroundf, lroundl, llround, llroundf, and llroundl; which rounds a floating-point value to the nearest integer."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["llround", "llroundf", "llroundl", "lroundf", "lround", "lroundl", "_o_llround", "_o_llroundf", "_o_llroundl", "_o_lround", "_o_lroundf", "_o_lroundl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["lround", "lroundl", "llroundl", "llround", "lroundf", "llroundf"]
 helpviewer_keywords: ["lround function", "llroundl function", "llround function", "lroundf function", "llroundf function", "lroundl function"]
-ms.assetid: cfb88a35-54c6-469f-85af-f7d695dcfdd8
 ---
 # `lround`, `lroundf`, `lroundl`, `llround`, `llroundf`, `llroundl`
 
@@ -47,7 +46,7 @@ long long llroundf(
 long long llroundl(
    long double x
 );
-#define lround(X) // Requires C11 or higher
+#define lround(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/malloca.md b/docs/c-runtime-library/reference/malloca.md
index 9953a91657..56b67ffeb9 100644
--- a/docs/c-runtime-library/reference/malloca.md
+++ b/docs/c-runtime-library/reference/malloca.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _malloca"
 title: "_malloca"
-ms.date: "11/04/2016"
+description: "Learn more about: _malloca"
+ms.date: 11/04/2016
 api_name: ["_malloca"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -38,7 +38,7 @@ If *`size`* is greater than `_ALLOCA_S_THRESHOLD`, then **`_malloca`** attempts
 
 There are restrictions to explicitly calling **`_malloca`** in an exception handler (EH). EH routines that run on x86-class processors operate in their own memory frame: They perform their tasks in memory space that isn't based on the current location of the stack pointer of the enclosing function. The most common implementations include Windows NT structured exception handling (SEH) and C++ catch clause expressions. Therefore, explicitly calling **`_malloca`** in any of the following scenarios results in program failure during the return to the calling EH routine:
 
-- Windows SEH exception filter expression: **`__except`** (`_malloca ()` )
+- Windows SEH exception filter expression: **`__except`** (`_malloca ()`)
 
 - Windows SEH final exception handler: **`__finally`** {`_malloca ()` }
 
diff --git a/docs/c-runtime-library/reference/mbrtowc.md b/docs/c-runtime-library/reference/mbrtowc.md
index b8634e50a7..7c64576e18 100644
--- a/docs/c-runtime-library/reference/mbrtowc.md
+++ b/docs/c-runtime-library/reference/mbrtowc.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: mbrtowc"
 title: "mbrtowc"
-ms.date: "4/2/2020"
+description: "Learn more about: mbrtowc"
+ms.date: 4/2/2020
 api_name: ["mbrtowc", "_o_mbrtowc"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["mbrtowc"]
 helpviewer_keywords: ["mbrtowc function"]
-ms.assetid: a1e87fcc-6de0-4ca1-bf26-508d28490286
 ---
 # `mbrtowc`
 
@@ -100,7 +99,7 @@ int Sample(char* szIn, wchar_t* wcOut, int nMax)
     szLocal = setlocale(LC_ALL, "French_Canada.1252");
     if (!szLocal)
     {
-        printf("The fuction setlocale(LC_ALL, \"French_Canada.1252\") failed!\n");
+        printf("The function setlocale(LC_ALL, \"French_Canada.1252\") failed!\n");
         return 1;
     }
 
@@ -110,7 +109,7 @@ int Sample(char* szIn, wchar_t* wcOut, int nMax)
     // from a previous call to setlocale.
     if (_setmbcp(_MB_CP_SBCS) == -1)
     {
-        printf("The fuction _setmbcp(_MB_CP_SBCS) failed!");
+        printf("The function _setmbcp(_MB_CP_SBCS) failed!");
         return 1;
     }
 
diff --git a/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md b/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
index 903e87992a..9fa6a973f5 100644
--- a/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
+++ b/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _mbsnbset_s, _mbsnbset_s_l"
 title: "_mbsnbset_s, _mbsnbset_s_l"
-ms.date: "4/2/2020"
+description: "Learn more about: _mbsnbset_s, _mbsnbset_s_l"
+ms.date: 4/2/2020
 api_name: ["_mbsnbset_s_l", "_mbsnbset_s", "_o__mbsnbset_s", "_o__mbsnbset_s_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["mbsnbset_s", "_mbsnbset_s_l", "_mbsnbset_s", "mbsnbset_s_l"]
 helpviewer_keywords: ["tcsnset_s function", "mbsnbset_s function", "mbsnbset_s_l function", "_mbsnbset_s_l function", "_tcsnset_s_l function", "_mbsnbset_s function", "_tcsnset_s function", "tcsnset_s_l function"]
-ms.assetid: 811f92c9-cc31-4bbd-8017-2d1bfc6fb96f
 ---
 # `_mbsnbset_s`, `_mbsnbset_s_l`
 
@@ -90,14 +89,14 @@ By default, this function's global state is scoped to the application. To change
 | Tchar.h routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined |
 |---|---|---|---|
 | `_tcsnset_s` | `_strnset_s` | **`_mbsnbset_s`** | `_wcsnset_s` |
-| `_tcsnset_s_l` | `_strnset_s _l` | **`_mbsnbset_s_l`** | `_wcsnset_s_l` |
+| `_tcsnset_s_l` | `_strnset_s_l` | **`_mbsnbset_s_l`** | `_wcsnset_s_l` |
 
 ## Requirements
 
 | Routine | Required header |
 |---|---|
-| **`_mbsnbset_s`** | \<mbstring.h> |
-| **`_mbsnbset_s_l`** | \<mbstring.h> |
+| **`_mbsnbset_s`** | `<mbstring.h>` |
+| **`_mbsnbset_s_l`** | `<mbstring.h>` |
 
 For more compatibility information, see [Compatibility](../compatibility.md).
 
diff --git a/docs/c-runtime-library/reference/mkdir-wmkdir.md b/docs/c-runtime-library/reference/mkdir-wmkdir.md
index 43a9a54ba6..f01bf458e6 100644
--- a/docs/c-runtime-library/reference/mkdir-wmkdir.md
+++ b/docs/c-runtime-library/reference/mkdir-wmkdir.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _mkdir, _wmkdir"
 title: "_mkdir, _wmkdir"
+description: "Learn more about: _mkdir, _wmkdir"
 ms.date: "4/2/2020"
 api_name: ["_wmkdir", "_mkdir", "_o__mkdir", "_o__wmkdir"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_mkdir", "tmkdir", "_tmkdir", "wmkdir", "_wmkdir"]
 helpviewer_keywords: ["_wmkdir function", "folders [C++], creating", "wmkdir function", "directories [C++], creating", "mkdir function", "tmkdir function", "_mkdir function", "_tmkdir function"]
-ms.assetid: 7f22d01d-63a5-4712-a6e7-d34878b2d840
 ---
 # `_mkdir`, `_wmkdir`
 
@@ -17,7 +16,6 @@ Creates a new directory.
 ## Syntax
 
 ```C
-
 int _mkdir(
    const char *dirname
 );
diff --git a/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md b/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
index 17a159e822..e94c9df070 100644
--- a/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
+++ b/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
@@ -1,14 +1,13 @@
 ---
 title: "nearbyint, nearbyintf, nearbyintl"
 description: "API reference for nearbyint, nearbyintf, and nearbyintl; which rounds the specified floating-point value to an integer, and returns that value in a floating-point format."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["nearbyint", "nearbyintf", "nearbyintl", "_o_nearbyint", "_o_nearbyintf", "_o_nearbyintl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["nearbyint", "nearbyintf", "nearbyintl", "math/nearbyint", "math/narbyintf", "math/narbyintl"]
 helpviewer_keywords: ["nearbyint function", "nearbyintf function", "nearbyintl function"]
-ms.assetid: dd39cb68-96b0-434b-820f-6ff2ea65584f
 ---
 # `nearbyint`, `nearbyintf`, `nearbyintl`
 
@@ -20,7 +19,7 @@ Rounds the specified floating-point value to an integer, and returns that value
 double nearbyint( double x );
 float nearbyintf( float x );
 long double nearbyintl( long double x );
-#define nearbyint( X ) // Requires C11 or higher
+#define nearbyint( X ) // Requires C11 or later
 
 float nearbyint( float x ); //C++ only
 long double nearbyint( long double x ); //C++ only
diff --git a/docs/c-runtime-library/reference/nextafter-functions.md b/docs/c-runtime-library/reference/nextafter-functions.md
index f4945d818e..e2b6758121 100644
--- a/docs/c-runtime-library/reference/nextafter-functions.md
+++ b/docs/c-runtime-library/reference/nextafter-functions.md
@@ -1,7 +1,7 @@
 ---
 title: "nextafter, nextafterf, nextafterl, _nextafter, _nextafterf, nexttoward, nexttowardf, nexttowardl"
 description: "API reference for nextafter, nextafterf, nextafterl, _nextafter, _nextafterf, nexttoward, nexttowardf, and nexttowardl; which return the next representable floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["nextafterf", "_nextafterf", "nextafter", "nextafterl", "_nextafter", "nexttoward", "nexttowardf", "nexttowardl", "_o__nextafter", "_o_nextafter", "_o_nextafterf", "_o_nextafterl", "_o_nexttoward", "_o_nexttowardf", "_o_nexttowardl", "_o__nextafterf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -23,13 +23,13 @@ long double nextafterl( long double x, long double y );
 double _nextafter( double x, double y );
 float _nextafterf( float x, float y ); /* x64 only */
 
-#define nextafter(X, Y) // Requires C11 or higher
+#define nextafter(X, Y) // Requires C11 or later
 
 double nexttoward( double x, long double y );
 float nexttowardf( float x, long double y );
 long double nexttowardl( long double x, long double y );
 
-#define nexttoward(X, Y) // Requires C11 or higher
+#define nexttoward(X, Y) // Requires C11 or later
 
 float nextafter( float x, float y ); /* C++ only, requires <cmath> */
 long double nextafter( long double x, long double y ); /* C++ only, requires <cmath> */
diff --git a/docs/c-runtime-library/reference/not.md b/docs/c-runtime-library/reference/not.md
index 54b1235ef3..a878828337 100644
--- a/docs/c-runtime-library/reference/not.md
+++ b/docs/c-runtime-library/reference/not.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: not"
 title: "not"
+description: "Learn more about: not"
 ms.date: "11/04/2016"
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["std::not", "std.not", "ISO646/not", "not"]
 helpviewer_keywords: ["not function"]
-ms.assetid: d2ddbd5c-33c0-4aff-8961-feac155b4ba1
 ---
 # `not`
 
@@ -16,7 +15,6 @@ An alternative to the **`!`** operator.
 ## Syntax
 
 ```C
-
 #define not !
 ```
 
diff --git a/docs/c-runtime-library/reference/or-eq.md b/docs/c-runtime-library/reference/or-eq.md
index f9861186e4..86d34f9fb7 100644
--- a/docs/c-runtime-library/reference/or-eq.md
+++ b/docs/c-runtime-library/reference/or-eq.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: or_eq"
 title: "or_eq"
+description: "Learn more about: or_eq"
 ms.date: "11/04/2016"
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["std::or_eq", "ISO646/or_eq", "or_eq", "std.or_eq"]
 helpviewer_keywords: ["or_eq function"]
-ms.assetid: 1eb92464-ed58-40d8-a30e-f0a6aa2f4318
 ---
 # `or_eq`
 
@@ -16,7 +15,6 @@ An alternative to the `|=` operator.
 ## Syntax
 
 ```C
-
 #define or_eq |=
 ```
 
diff --git a/docs/c-runtime-library/reference/pow-powf-powl.md b/docs/c-runtime-library/reference/pow-powf-powl.md
index bedf5a9dcf..dbc3247460 100644
--- a/docs/c-runtime-library/reference/pow-powf-powl.md
+++ b/docs/c-runtime-library/reference/pow-powf-powl.md
@@ -1,14 +1,13 @@
 ---
 title: "pow, powf, powl"
 description: "API reference for pow, powf, and powl; which calculate exponents."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["powl", "pow", "powf", "_o_pow", "_o_powf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["powl", "pow", "_powl", "powf"]
 helpviewer_keywords: ["exponential calculations", "powl function", "_powl function", "exponentiation", "powers, calculating", "calculating exponentials", "powf function", "pow function"]
-ms.assetid: e75c33ed-2e59-48b1-be40-81da917324f1
 ---
 # `pow`, `powf`, `powl`
 
@@ -20,7 +19,7 @@ Calculates *`x`* raised to the power of *`y`*.
 double pow( double x, double y );
 float powf( float x, float y );
 long double powl( long double x, long double y );
-define pow(X, Y) // Requires C11 or higher
+define pow(X, Y) // Requires C11 or later
 
 double pow( double x, int y );  // C++ only
 float pow( float x, float y );  // C++ only
diff --git a/docs/c-runtime-library/reference/raise.md b/docs/c-runtime-library/reference/raise.md
index 2b33716eae..e3fe3e05b6 100644
--- a/docs/c-runtime-library/reference/raise.md
+++ b/docs/c-runtime-library/reference/raise.md
@@ -14,7 +14,7 @@ helpviewer_keywords: ["signals, sending to executing programs", "raise function"
 Sends a signal to the executing program.
 
 > [!NOTE]
-> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
+> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
 
 ## Syntax
 
diff --git a/docs/c-runtime-library/reference/recalloc.md b/docs/c-runtime-library/reference/recalloc.md
index 2e10f1ee09..09cd09dea3 100644
--- a/docs/c-runtime-library/reference/recalloc.md
+++ b/docs/c-runtime-library/reference/recalloc.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _recalloc"
 title: "_recalloc"
+description: "Learn more about: _recalloc"
 ms.date: "4/2/2020"
 api_name: ["_recalloc", "_o__recalloc"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_recalloc", "recalloc"]
 helpviewer_keywords: ["_recalloc function", "recalloc function"]
-ms.assetid: 1db8305a-3f03-418c-8844-bf9149f63046
 ---
 # `_recalloc`
 
@@ -18,7 +17,7 @@ A combination of `realloc` and `calloc`. Reallocates an array in memory and init
 
 ```C
 void *_recalloc(
-   void *memblock
+   void *memblock,
    size_t num,
    size_t size
 );
diff --git a/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md b/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
index 2d6f85d7ed..807e001cd3 100644
--- a/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
+++ b/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
@@ -1,14 +1,13 @@
 ---
 title: "remainder, remainderf, remainderl"
 description: "API reference for remainder, remainderf, and remainderl; which compute the remainder of the quotient of two floating-point values, rounded to the nearest integral value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["remainderl", "remainder", "remainderf", "_o_remainder", "_o_remainderf", "_o_remainderl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["remainderf", "remainder", "remainderl"]
 helpviewer_keywords: ["remainderf", "remainderl", "remainder"]
-ms.assetid: 5f721fb3-8b78-4597-9bc0-ca9bcd1f1d0e
 ---
 # `remainder`, `remainderf`, `remainderl`
 
@@ -20,7 +19,7 @@ Computes the remainder of the quotient of two floating-point values, rounded to
 double remainder( double x, double y );
 float remainderf( float x, float y );
 long double remainderl( long double x, long double y );
-#define remainder(X, Y) // Requires C11 or higher
+#define remainder(X, Y) // Requires C11 or later
 
 float remainder( float x, float y ); /* C++ only */
 long double remainder( long double x, long double y ); /* C++ only */
diff --git a/docs/c-runtime-library/reference/remquo-remquof-remquol.md b/docs/c-runtime-library/reference/remquo-remquof-remquol.md
index 9aa9613702..d756c829f0 100644
--- a/docs/c-runtime-library/reference/remquo-remquof-remquol.md
+++ b/docs/c-runtime-library/reference/remquo-remquof-remquol.md
@@ -1,14 +1,13 @@
 ---
 title: "remquo, remquof, remquol"
 description: "API reference for remquo, remquof, and remquol, which compute the remainder of two integer values, and store the sign and approximate magnitude of the quotient."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["remquof", "remquo", "remquol", "_o_remquo", "_o_remquof", "_o_remquol"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["remquof", "remquol", "remquo"]
 helpviewer_keywords: ["remquol function", "remquof function", "remquo function"]
-ms.assetid: a1d3cb8b-8027-4cd3-8deb-04eb17f299fc
 ---
 # `remquo`, `remquof`, `remquol`
 
@@ -20,7 +19,7 @@ Computes the remainder of two integer values, and stores an integer value with t
 double remquo( double numer, double denom, int* quo );
 float remquof( float numer, float denom, int* quo );
 long double remquol( long double numer, long double denom, int* quo );
-#define remquo(X, Y, INT_PTR) // Requires C11 or higher
+#define remquo(X, Y, INT_PTR) // Requires C11 or later
 
 float remquo( float numer, float denom, int* quo ); /* C++ only */
 long double remquo( long double numer, long double denom, int* quo ); /* C++ only */
@@ -43,7 +42,7 @@ A pointer to an integer to store a value that has the sign and approximate magni
 
 ## Remarks
 
-The **`remquo`** function calculates the floating-point remainder `f` of *`x`* / *`y`* such that *`x`* = `n` \* *`y`* + `f`*, where `n` is an integer, `f` has the same sign as *`x`*, and the absolute value of `f` is less than the absolute value of *`y`*.
+The **`remquo`** function calculates the floating-point remainder `f` of *`x`* / *`y`* such that *`x`* = `n` \* *`y`* + *`f`*, where `n` is an integer, `f` has the same sign as *`x`*, and the absolute value of `f` is less than the absolute value of *`y`*.
 
 C++ allows overloading, so you can call overloads of **`remquo`** that take and return **`float`** or **`long double`** values. In a C program, unless you're using the \<tgmath.h> macro to call this function, **`remquo`** always takes two **`double`** arguments and returns a **`double`**.
 
diff --git a/docs/c-runtime-library/reference/rint-rintf-rintl.md b/docs/c-runtime-library/reference/rint-rintf-rintl.md
index 9b129700c9..ac703cb135 100644
--- a/docs/c-runtime-library/reference/rint-rintf-rintl.md
+++ b/docs/c-runtime-library/reference/rint-rintf-rintl.md
@@ -1,14 +1,13 @@
 ---
 title: "rint, rintf, rintl"
 description: "API reference for rint, rintf, and rintl; which round a floating-point value to the nearest integer in floating-point format."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["rintf", "rintl", "rint", "_o_rint", "_o_rintf", "_o_rintl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["rintf", "rintl", "rint"]
 helpviewer_keywords: ["rintf function", "rint function", "rintl function"]
-ms.assetid: 312ae3e6-278c-459a-9393-11b8f87d9184
 ---
 # `rint`, `rintf`, `rintl`
 
@@ -20,7 +19,7 @@ Rounds a floating-point value to the nearest integer in floating-point format.
 double rint( double x );
 float rintf( float x );
 long double rintl( long double x );
-#define rint(X) // Requires C11 or higher
+#define rint(X) // Requires C11 or later
 
 float rint( float x );  // C++ only
 long double rint( long double x );  // C++ only
diff --git a/docs/c-runtime-library/reference/rmtmp.md b/docs/c-runtime-library/reference/rmtmp.md
index 857dc4c035..7fac6abd1a 100644
--- a/docs/c-runtime-library/reference/rmtmp.md
+++ b/docs/c-runtime-library/reference/rmtmp.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _rmtmp"
 title: "_rmtmp"
+description: "Learn more about: _rmtmp"
 ms.date: "4/2/2020"
 api_name: ["_rmtmp", "_o__rmtmp"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_rmtmp"]
 helpviewer_keywords: ["removing temporary files", "_rmtmp function", "files [C++], temporary", "rmtmp function", "files [C++], removing", "temporary files [C++], removing"]
-ms.assetid: 7419501e-2587-4f2a-b469-0dca07f84736
 ---
 # `_rmtmp`
 
@@ -17,7 +16,6 @@ Removes temporary files.
 ## Syntax
 
 ```C
-
 int _rmtmp( void );
 ```
 
diff --git a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
index dfdbaae96f..c095e8cada 100644
--- a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
+++ b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_rotr64", "rotl64", "_rotl64", "rotr64", "rotr", "_rotr", "_rotl", "rotl"]
 helpviewer_keywords: ["rotl64 function", "_rotl function", "rotr function", "rotr64 function", "_rotr function", "rotl function", "_rotl64 function", "rotating bits", "_rotr64 function", "bits, rotating"]
-ms.assetid: cfce439b-366f-4584-8ab1-d527b13fcfc6
 ---
 # `_rotl`, `_rotl64`, `_rotr`, `_rotr64`
 
@@ -17,7 +16,6 @@ Rotates bits to the left (**`_rotl`**) or right (**`_rotr`**).
 ## Syntax
 
 ```C
-
 unsigned int _rotl(
    unsigned int value,
    int shift
diff --git a/docs/c-runtime-library/reference/round-roundf-roundl.md b/docs/c-runtime-library/reference/round-roundf-roundl.md
index a5a0f37b5f..df753b8e60 100644
--- a/docs/c-runtime-library/reference/round-roundf-roundl.md
+++ b/docs/c-runtime-library/reference/round-roundf-roundl.md
@@ -1,14 +1,13 @@
 ---
 title: "round, roundf, roundl"
 description: "API reference for round, roundf, and roundl; which round a floating-point value to the nearest integer value."
-ms.date: "09/25/2020"
+ms.date: 09/25/2020
 api_name: ["round", "roundl", "roundf", "_o_round", "_o_roundf", "_o_roundl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["roundf", "roundl", "round"]
 helpviewer_keywords: ["roundl function", "round function", "roundf function"]
-ms.assetid: 6be90877-193c-4b80-a32b-c3eca33f9c6f
 ---
 # `round`, `roundf`, `roundl`
 
@@ -32,7 +31,7 @@ float roundf(
 long double roundl(
    long double x
 );
-#define round(X) // Requires C11 or higher
+#define round(X) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/rtc-numerrors.md b/docs/c-runtime-library/reference/rtc-numerrors.md
index d512c8f402..f2428d8e7a 100644
--- a/docs/c-runtime-library/reference/rtc-numerrors.md
+++ b/docs/c-runtime-library/reference/rtc-numerrors.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _RTC_NumErrors"
 title: "_RTC_NumErrors"
+description: "Learn more about: _RTC_NumErrors"
 ms.date: "11/04/2016"
 api_name: ["_RTC_NumErrors"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_RTC_NumErrors", "RTC_NumErrors"]
 helpviewer_keywords: ["run-time errors", "_RTC_NumErrors function", "RTC_NumErrors function"]
-ms.assetid: 7e82adae-38e2-4f8b-bc0b-37bda8109fd1
 ---
 # `_RTC_NumErrors`
 
@@ -17,7 +16,6 @@ Returns the total number of errors that can be detected by run-time error checks
 ## Syntax
 
 ```C
-
 int _RTC_NumErrors( void );
 ```
 
diff --git a/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md b/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
index 53eccc387b..e8633ee008 100644
--- a/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
+++ b/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
@@ -1,14 +1,13 @@
 ---
 title: "scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl"
 description: "API reference for scalbn, scalbnf, scalbnl, scalbln, scalblnf, and scalblnl; which multiplies a floating-point number by an integral power of `FLT_RADIX`."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["scalblnl", "scalbnl", "scalbnf", "scalblnf", "scalbn", "scalbln", "_o_scalbln", "_o_scalblnf", "_o_scalblnl", "_o_scalbn", "_o_scalbnf", "_o_scalbnl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["scalblnf", "scalbnl", "scalblnl", "scalbln", "scalbn", "scalbnf"]
 helpviewer_keywords: ["scalbn function", "scalbln function", "scalblnl function", "scalbnl function", "scalbnf function", "scalblnf function"]
-ms.assetid: df2f1543-8e39-4af4-a5cf-29307e64807d
 ---
 # `scalbn`, `scalbnf`, `scalbnl`, `scalbln`, `scalblnf`, `scalblnl`
 
@@ -38,7 +37,7 @@ long double scalbnl(
    int exp
 );
 
-#define scalbn(X, INT) // Requires C11 or higher
+#define scalbn(X, INT) // Requires C11 or later
 
 double scalbln(
    double x,
@@ -54,7 +53,7 @@ long double scalblnl(
    long exp
 );
 
-#define scalbln(X, LONG) // Requires C11 or higher
+#define scalbln(X, LONG) // Requires C11 or later
 
 float scalbln(
    float x,
diff --git a/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md b/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
index 8456b644e9..8067e1ed05 100644
--- a/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l"
 title: "_scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_scwprintf_p", "_scprintf_p_l", "_scwprintf_p_l", "_scprintf_p"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -66,7 +66,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md b/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
index 49789f506d..0d2d23af0d 100644
--- a/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
+++ b/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _scprintf, _scprintf_l, _scwprintf, _scwprintf_l"
 title: "_scprintf, _scprintf_l, _scwprintf, _scwprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _scprintf, _scprintf_l, _scwprintf, _scwprintf_l"
+ms.date: 3/9/2021
 api_name: ["_scprintf_l", "_scwprintf", "_scwprintf_l", "_scprintf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -66,7 +66,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/set-abort-behavior.md b/docs/c-runtime-library/reference/set-abort-behavior.md
index 1abfb48f28..957edb7430 100644
--- a/docs/c-runtime-library/reference/set-abort-behavior.md
+++ b/docs/c-runtime-library/reference/set-abort-behavior.md
@@ -14,7 +14,7 @@ helpviewer_keywords: ["aborting programs", "_set_abort_behavior function", "set_
 Specifies the action to be taken when a program is abnormally terminated.
 
 > [!NOTE]
-> Do not use the [`abort`](abort.md) function to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
+> Do not use the [`abort`](abort.md) function to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
 
 ## Syntax
 
diff --git a/docs/c-runtime-library/reference/signal.md b/docs/c-runtime-library/reference/signal.md
index a9c623188f..ad4bd650a1 100644
--- a/docs/c-runtime-library/reference/signal.md
+++ b/docs/c-runtime-library/reference/signal.md
@@ -14,7 +14,7 @@ helpviewer_keywords: ["signal function"]
 Sets interrupt signal handling.
 
 > [!IMPORTANT]
-> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
+> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle).
 
 ## Syntax
 
diff --git a/docs/c-runtime-library/reference/sin-sinf-sinl.md b/docs/c-runtime-library/reference/sin-sinf-sinl.md
index 841be1e4a4..ae1f2d1e35 100644
--- a/docs/c-runtime-library/reference/sin-sinf-sinl.md
+++ b/docs/c-runtime-library/reference/sin-sinf-sinl.md
@@ -1,7 +1,7 @@
 ---
 title: "sin, sinf, sinl"
 description: "API reference for sin, sinf, and sinl; which calculate the sine of a floating-point value."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["sinl", "sinf", "sin", "_o_sin", "_o_sinf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the sine of a floating-point value.
 double sin(double x);
 float sinf(float x);
 long double sinl(long double x);
-#define sin(x) // Requires C11 or higher
+#define sin(x) // Requires C11 or later
 ```
 
 ```cpp
diff --git a/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md b/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
index 3a4456374e..161a0998f1 100644
--- a/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
+++ b/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
@@ -1,7 +1,7 @@
 ---
 title: "sinh, sinhf, sinhl"
 description: "API reference for calculating the hyperbolic sine of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["sinh", "sinhl", "sinhf", "sinhl", "_o_sinh", "_o_sinhf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the hyperbolic sine.
 double sinh(double x);
 float sinhf(float x);
 long double sinhl(long double x);
-#define sinh(x) // Requires C11 or higher
+#define sinh(x) // Requires C11 or later
 
 float sinh(float x);  // C++ only
 long double sinh(long double x);  // C++ only
diff --git a/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md b/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
index 548a9fccf6..9b0fce0a47 100644
--- a/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l"
 title: "_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l"
+description: "Learn more about: _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l"
 ms.date: 06/27/2023
 api_name: ["_snprintf_s", "_snprintf_s_l", "_snwprintf_s", "_snwprintf_s_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
@@ -126,7 +126,7 @@ For information about these and other error codes, see [`_doserrno`, `errno`, `_
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 **`_snwprintf_s`** is a wide-character version of **`_snprintf_s`**; the pointer arguments to **`_snwprintf_s`** are wide-character strings. Detection of encoding errors in **`_snwprintf_s`** might differ from that in **`_snprintf_s`**. **`_snwprintf_s`**, like **`swprintf_s`**, writes output to a string rather than to a destination of type **`FILE`**.
 
diff --git a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
index 6adfc17e2e..6043ec459e 100644
--- a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
+++ b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
@@ -120,7 +120,7 @@ See [Behavior summary](#behavior-summary) for details.
 
 ## Remarks
 
-Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`snprintf`** is no longer identical to **`_snprintf`**. The **`snprintf`** behavior is now C99 standard conformant. The difference is that if you run out of buffer, `snprintf` null-terminates the end of the buffer and returns the number of characters that would have been required whereas `_snprintf` doesn't null-terminate the buffer and returns -1. Also, `snprintf()` includes one more character in the output because it doesn't null-terminate the buffer.
+Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`snprintf`** is no longer identical to **`_snprintf`**. The **`snprintf`** behavior is now C99 standard conformant. The difference is that if you run out of buffer, `snprintf` null-terminates the end of the buffer and returns the number of characters that would have been required whereas `_snprintf` doesn't null-terminate the buffer and returns -1. Also, `_snprintf()` includes one more character in the output because it doesn't null-terminate the buffer.
 
 - **`snprintf`** and the **`_snprintf`** family of functions format and store *`count`* or fewer characters in *`buffer`*.
 - **`snprintf`** always stores a terminating `NULL` character, truncating the output if necessary.
diff --git a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
index 3b1480c69a..04f2bd984a 100644
--- a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
+++ b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _sopen_s, _wsopen_s"
 title: "_sopen_s, _wsopen_s"
+description: "Learn more about: _sopen_s, _wsopen_s"
 ms.date: 05/18/2022
 api_name: ["_sopen_s", "_wsopen_s", "_o__sopen_s", "_o__wsopen_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CORECRT_IO/_sopen_s", "CORECRT_WIO/_wsopen_s", "TCHAR/_tsopen_s", "_sopen_s", "_wsopen_s", "_tsopen_s", "sopen_s", "wsopen_s"]
 helpviewer_keywords: ["sopen_s function", "_wsopen_s function", "wsopen_s function", "opening files, for sharing", "files [C++], opening", "_sopen_s function", "files [C++], sharing"]
-ms.assetid: 059a0084-d08c-4973-9174-55e391b72aa2
 ---
 # `_sopen_s`, `_wsopen_s`
 
@@ -29,7 +28,7 @@ errno_t _wsopen_s(
    const wchar_t *filename,
    int oflag,
    int shflag,
-   int pmode,
+   int pmode
 );
 ```
 
diff --git a/docs/c-runtime-library/reference/splitpath-wsplitpath.md b/docs/c-runtime-library/reference/splitpath-wsplitpath.md
index 7f0a8c3122..f11ecc1e6d 100644
--- a/docs/c-runtime-library/reference/splitpath-wsplitpath.md
+++ b/docs/c-runtime-library/reference/splitpath-wsplitpath.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _splitpath, _wsplitpath"
 title: "_splitpath, _wsplitpath"
+description: "Learn more about: _splitpath, _wsplitpath"
 ms.date: 11/30/2023
 api_name: ["_wsplitpath", "_splitpath", "_o__splitpath", "_o__wsplitpath"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
@@ -41,7 +41,7 @@ Full path.
 Drive letter, followed by a colon (**:**). You can pass `NULL` for this parameter if you don't need the drive letter.
 
 *`dir`*\
-Directory path, including trailing slash. Forward slashes ( `/` ), backslashes ( `\` ), or both may be used. Pass `NULL` for this parameter if you don't need the directory path.
+Directory path, including trailing slash. Forward slashes (`/`), backslashes (`\`), or both may be used. Pass `NULL` for this parameter if you don't need the directory path.
 
 *`fname`*\
 Base filename (no extension). Pass `NULL` for this parameter if you don't need the filename.
diff --git a/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md b/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
index 030e72c577..2d9abe9944 100644
--- a/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
+++ b/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l"
 title: "_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_sprintf_p", "_swprintf_p_l", "_swprintf_p", "_sprintf_p_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -76,7 +76,7 @@ The **`_sprintf_p`** function formats and stores a series of characters and valu
 **`_sprintf_p`** returns the number of bytes stored in *`buffer`*, not counting the terminating null character. **`_swprintf_p`** returns the number of wide characters stored in *`buffer`*, not counting the terminating null wide character. If *`buffer`* or *`format`* is a null pointer, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, these functions return -1 and set `errno` to `EINVAL`.
 
 > [!IMPORTANT]
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md b/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
index 5e3ff04ff2..f78c0ea9df 100644
--- a/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
+++ b/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l"
 title: "sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["_swprintf_s_l", "_sprintf_s_l", "swprintf_s", "sprintf_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
@@ -96,7 +96,7 @@ In C++, use of these functions is simplified by template overloads. The overload
 There are versions of **`sprintf_s`** that offer more control over what happens if the buffer is too small. For more information, see [`_snprintf_s`, `_snprintf_s_l`, `_snwprintf_s`, `_snwprintf_s_l`](snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md).
 
 > [!IMPORTANT]
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md b/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
index 960c47657c..f386fc7dfd 100644
--- a/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
+++ b/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: sprintf, _sprintf_l, swprintf, _swprintf, _swprintf_l, __swprintf_l"
 title: "sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: sprintf, _sprintf_l, swprintf, _swprintf, _swprintf_l, __swprintf_l"
+ms.date: 3/9/2021
 api_name: ["__swprintf_l", "sprintf", "_sprintf_l", "_swprintf_l", "swprintf", "_swprintf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
@@ -105,7 +105,7 @@ The **`sprintf`** function formats and stores a series of characters and values
 > [!IMPORTANT]
 > Using **`sprintf`**, there is no way to limit the number of characters written, which means that code using **`sprintf`** is susceptible to buffer overruns. Consider using the related function [`snprintf`](snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md), which specifies a maximum number of characters to write to *`buffer`*, or use [`_scprintf`](scprintf-scprintf-l-scwprintf-scwprintf-l.md) to determine how large a buffer is required. Also, ensure that *`format`* is not a user-defined string.
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 **`swprintf`** is a wide-character version of **`sprintf`**; the pointer arguments to **`swprintf`** are wide-character strings. Detection of encoding errors in **`swprintf`** may differ from **`sprintf`**. **`swprintf`** and **`fwprintf`** behave identically except **`swprintf`** writes output to a string rather than to a destination of type `FILE`, and **`swprintf`** requires the *`count`* parameter to specify the maximum number of characters to write. The versions of these functions with the **`_l`** suffix are identical except they use the locale parameter passed in instead of the current thread locale.
 
diff --git a/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md b/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
index ef2221147e..2e1c685b8e 100644
--- a/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
+++ b/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
@@ -1,7 +1,7 @@
 ---
 title: "sqrt, sqrtf, sqrtl"
 description: "API reference for sqrt, sqrtf, and sqrtl; which calculate a square root of a floating point number."
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 api_name: ["sqrtl", "sqrtf", "sqrt", "_o_sqrt", "_o_sqrtf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
@@ -31,7 +31,7 @@ float sqrtf(
 long double sqrtl(
    long double x
 );
-#define sqrt(x) // Requires C11 or higher
+#define sqrt(x) // Requires C11 or later
 ```
 
 ### Parameters
diff --git a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
index 4ca437d019..2c9cdcfed2 100644
--- a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
+++ b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: _strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l"
 title: "_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l"
+description: "Learn more about: _strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l"
 ms.date: "4/2/2020"
 api_name: ["_mbsnbcnt_l", "_mbsnccnt", "_wcsncnt", "_strncnt", "_mbsnccnt_l", "_mbsnbcnt", "_o__mbsnbcnt", "_o__mbsnbcnt_l", "_o__mbsnccnt", "_o__mbsnccnt_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
@@ -8,7 +8,6 @@ api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["_mbsnbcnt", "wcsncnt", "_tcsnbcnt", "_mbsnccnt", "_ftcsnbcnt", "mbsnbcnt", "strncnt", "mbsnbcnt_l", "mbsnccnt_l", "mbsnccnt", "_strncnt", "_wcsncnt"]
 helpviewer_keywords: ["_strncnt function", "_mbsnbcnt function", "_mbsnbcnt_l function", "_mbsnccnt_l function", "mbsnbcnt_l function", "mbsnbcnt function", "tcsnbcnt function", "mbsnccnt_l function", "strncnt function", "_tcsnbcnt function", "mbsnccnt function", "wcsncnt function", "_mbsnccnt function", "_wcsncnt function"]
-ms.assetid: 2a022e9e-a307-4acb-a66b-e56e5357f848
 ---
 # `_strncnt`, `_wcsncnt`, `_mbsnbcnt`, `_mbsnbcnt_l`, `_mbsnccnt`, `_mbsnccnt_l`
 
@@ -105,8 +104,8 @@ For more compatibility information, see [Compatibility](../compatibility.md).
 ```C
 // crt_mbsnbcnt.c
 
-#include  <mbstring.h>
-#include  <stdio.h>
+#include <mbstring.h>
+#include <stdio.h>
 
 int main( void )
 {
diff --git a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
index 90ada77650..9c8d760c68 100644
--- a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
+++ b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: strrchr, wcsrchr, _mbsrchr, _mbsrchr_l"
 title: "strrchr, wcsrchr, _mbsrchr, _mbsrchr_l"
+description: "Learn more about: strrchr, wcsrchr, _mbsrchr, _mbsrchr_l"
 ms.date: "4/2/2020"
 api_name: ["strrchr", "wcsrchr", "_mbsrchr", "_mbsrchr_l", "_o__mbsrchr", "_o__mbsrchr_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
@@ -131,4 +131,4 @@ For an example of using **`strrchr`**, see [`strchr`](strchr-wcschr-mbschr-mbsch
 [`strcspn`, `wcscspn`, `_mbscspn`, `_mbscspn_l`](strcspn-wcscspn-mbscspn-mbscspn-l.md)\
 [`_strnicmp`, `_wcsnicmp`, `_mbsnicmp`, `_strnicmp_l`, `_wcsnicmp_l`, `_mbsnicmp_l`](strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md)\
 [`strpbrk`, `wcspbrk`, `_mbspbrk`, `_mbspbrk_l`](strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md)\
-[`strspn`, `wcsspn`, `_mbsspn`, `_mbsspn_l`](strspn-wcsspn-mbsspn-mbsspn-l.md)\
+[`strspn`, `wcsspn`, `_mbsspn`, `_mbsspn_l`](strspn-wcsspn-mbsspn-mbsspn-l.md)
diff --git a/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md b/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
index c6bcf88b3f..288b4dcce8 100644
--- a/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
+++ b/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l"
 title: "strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l"
-ms.date: "11/04/2016"
+description: "Learn more about: strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l"
+ms.date: 11/04/2016
 api_name: ["wcstoimax", "_wcstoimax_l", "_strtoimax_l", "strtoimax"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["wcstoimax", "_tcstoimax", "strtoimax", "_wcstoimax_l", "_strtoimax_l", "_tcstoimax_l"]
-helpviewer_keywords: ["strtoimax funciton", "conversion functions", "_strtoimax_l function", "_wcstoimax_l function", "wcstoimax function"]
-ms.assetid: 4530d3dc-aaac-4a76-b7cf-29ae3c98d0ae
+helpviewer_keywords: ["strtoimax function", "conversion functions", "_strtoimax_l function", "_wcstoimax_l function", "wcstoimax function"]
 ---
 # `strtoimax`, `_strtoimax_l`, `wcstoimax`, `_wcstoimax_l`
 
diff --git a/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md b/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
index 4ae62a70e1..1b09754591 100644
--- a/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
+++ b/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: strtol, wcstol, _strtol_l, _wcstol_l"
 title: "strtol, wcstol, _strtol_l, _wcstol_l"
-ms.date: "4/2/2020"
+description: "Learn more about: strtol, wcstol, _strtol_l, _wcstol_l"
+ms.date: 4/2/2020
 api_name: ["strtol", "wcstol", "_strtol_l", "_wcstol_l", "_o__strtol_l", "_o__wcstol_l", "_o_strtol", "_o_wcstol"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -65,7 +65,7 @@ Locale to use.
 
 The **`strtol`**, **`wcstol`**, **`_strtol_l`**, and **`_wcstol_l`** functions convert *`string`* to a **`long`**. They stop reading *`string`* at the first character not recognized as part of a number. It may be the terminating-null character, or the first alphanumeric character greater than or equal to *`base`*.
 
-**`wcstol`** and **`_wcstol_l`** are wide-character versions of **`strtol`** and **`_strtol_l`**. Their *`string`* argument is a wide-character string. These functions behave identically to **`strtol`** and **`_strtol_l`** otherwise. The locale's `LC_NUMERIC` category setting determines recognition of the radix character (the fractional marker or decimal point) in *`string`*. The functions **`strtol`** and **`wcstol`** use the current locale. **`_strtol_l`** and **`_wcstol_l`** use the locale passed in instead. For more information, see [`setlocale`] and [Locale](../locale.md).
+**`wcstol`** and **`_wcstol_l`** are wide-character versions of **`strtol`** and **`_strtol_l`**. Their *`string`* argument is a wide-character string. These functions behave identically to **`strtol`** and **`_strtol_l`** otherwise. The locale's `LC_NUMERIC` category setting determines recognition of the radix character (the fractional marker or decimal point) in *`string`*. The functions **`strtol`** and **`wcstol`** use the current locale. **`_strtol_l`** and **`_wcstol_l`** use the locale passed in instead. For more information, see [`setlocale`](setlocale-wsetlocale.md) and [Locale](../locale.md).
 
 When *`end_ptr`* is `NULL`, it's ignored. Otherwise, a pointer to the character that stopped the scan is stored at the location pointed to by *`end_ptr`*. No conversion is possible if no valid digits are found, or an invalid base is specified. The value of *`string`* is then stored at the location pointed to by *`end_ptr`*.
 
diff --git a/docs/c-runtime-library/reference/tan-tanf-tanl.md b/docs/c-runtime-library/reference/tan-tanf-tanl.md
index 815d0b95a9..58e1563bf1 100644
--- a/docs/c-runtime-library/reference/tan-tanf-tanl.md
+++ b/docs/c-runtime-library/reference/tan-tanf-tanl.md
@@ -1,14 +1,13 @@
 ---
 title: "tan, tanf, tanl"
 description: "API reference for tan, tanf, and tanl; which calculate the tangent of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["tan", "tanf", "tanl", "_o_tan", "_o_tanf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CORECRT_MATH/tan", "CORECRT_MATH/tanf", "CORECRT_MATH/tanl", "tan", "tanf", "tanl"]
 helpviewer_keywords: ["tanl function", "tan function", "calculating tangents", "tangent", "tanf function", "trigonometric functions"]
-ms.assetid: 36cc0ce8-9c80-4653-b354-ddb3b378b6bd
 ---
 # `tan`, `tanf`, `tanl`
 
@@ -20,7 +19,7 @@ Calculates the tangent.
 double tan( double x );
 float tanf( float x );
 long double tanl( long double x );
-#define tan(x) // Requires C11 or higher
+#define tan(x) // Requires C11 or later
 ```
 
 ```cpp
diff --git a/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md b/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
index de71ee3178..069c1a809f 100644
--- a/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
+++ b/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
@@ -1,7 +1,7 @@
 ---
 title: "tanh, tanhf, tanhl"
 description: "API reference for tanh, tanhf, and tanhl; which calculate the hyperbolic tangent of a floating-point value."
-ms.date: "1/15/2021"
+ms.date: 1/15/2021
 api_name: ["tanh", "tanhf", "tanhl", "_o_tanh", "_o_tanhf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
@@ -19,7 +19,7 @@ Calculates the hyperbolic tangent.
 double tanh( double x );
 float tanhf( float x );
 long double tanhl( long double x );
-#define tanh(x) // Requires C11 or higher
+#define tanh(x) // Requires C11 or later
 ```
 
 ```cpp
diff --git a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
index eb9595efd4..820761ba8b 100644
--- a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
+++ b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
@@ -1,14 +1,13 @@
 ---
 title: "tgamma, tgammaf, tgammal"
 description: "API reference for tgamma, tgammaf, and tgammal; which determine the gamma function of the specified value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["tgamma", "tgammaf", "tgammal", "_o_tgamma", "_o_tgammaf", "_o_tgammal"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CORECRT_MATH/tgamma", "CORECRT_MATH/tgammaf", "CORECRT_MATH/tgammal", "tgamma", "tgammaf", "tgammal"]
 helpviewer_keywords: ["tgamma function", "tgammaf function", "tgammal function"]
-ms.assetid: f1bd2681-8af2-48a9-919d-5358fd068acd
 ---
 # `tgamma`, `tgammaf`, `tgammal`
 
@@ -29,7 +28,7 @@ long double tgammal(
    long double x
 );
 
-#define tgamma(X) // Requires C11 or higher
+#define tgamma(X) // Requires C11 or later
 
 float tgamma(
    float x
diff --git a/docs/c-runtime-library/reference/trunc-truncf-truncl.md b/docs/c-runtime-library/reference/trunc-truncf-truncl.md
index 19c7bc0414..1920550576 100644
--- a/docs/c-runtime-library/reference/trunc-truncf-truncl.md
+++ b/docs/c-runtime-library/reference/trunc-truncf-truncl.md
@@ -1,14 +1,13 @@
 ---
 title: "trunc, truncf, truncl"
 description: "API reference for trunc, truncf, truncl; which determine the nearest integer that is less than or equal to the specified floating-point value."
-ms.date: "9/1/2020"
+ms.date: 9/1/2020
 api_name: ["trunc", "truncf", "truncl"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
 api_type: ["DLLExport"]
 topic_type: ["apiref"]
 f1_keywords: ["CORECRT_MATH/trunc", "CORECRT_MATH/truncf", "CORECRT_MATH/truncl", "math/trunc", "math/truncf", "math/truncl", "trunc", "truncf", "truncl"]
 helpviewer_keywords: ["trunc function", "truncf function", "truncl function"]
-ms.assetid: de2038ac-ac0b-483e-870c-e8992dcd4fd0
 ---
 # `trunc`, `truncf`, `truncl`
 
@@ -19,7 +18,7 @@ Determines the nearest integer that is less than or equal to the specified float
 ```C
 double trunc( double x );
 long double truncl( long double x );
-#define trunc(X) // Requires C11 or higher
+#define trunc(X) // Requires C11 or later
 
 long double trunc( long double x ); //C++ only
 float trunc( float x ); //C++ only
diff --git a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
index 48dc1f6a5f..236d8685be 100644
--- a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
+++ b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l"
 title: "_vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l"
+ms.date: 3/9/2021
 api_name: ["_vcwprintf", "_vcprintf_l", "_vcwprintf_l", "_vcprintf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -65,7 +65,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
 >
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md b/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
index 0d8c50f0a3..1da2fe9b48 100644
--- a/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l"
 title: "_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_vfprintf_p", "_vfwprintf_p", "_vfprintf_p_l", "_vfwprintf_p_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -70,7 +70,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 If either *`stream`* or *`format`* is a null pointer, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
diff --git a/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md b/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
index ffb2bfde12..5b805440d0 100644
--- a/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l"
 title: "vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["vfwprintf_s", "_vfprintf_s_l", "vfprintf_s", "_vfwprintf_s_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -74,7 +74,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md b/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
index f4860772c9..3c06a9bf53 100644
--- a/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l"
 title: "vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l"
+ms.date: 3/9/2021
 api_name: ["_vfprintf_l", "vfprintf", "vfwprintf", "_vfwprintf_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -72,7 +72,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md b/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
index e3ea98113a..239ea8e1b5 100644
--- a/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l"
 title: "_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_vwprintf_p", "_vprintf_p", "_vprintf_p_l", "_vwprintf_p_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -63,7 +63,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 If *`format`* is a null pointer, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
diff --git a/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md b/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
index 9b7f90e5ef..b1a404e8fc 100644
--- a/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l"
 title: "vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["_vwprintf_s_l", "vwprintf_s", "_vprintf_s_l", "vprintf_s"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -67,7 +67,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md b/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
index 4575ef26d7..e91e6092ae 100644
--- a/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
+++ b/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vprintf, _vprintf_l, vwprintf, _vwprintf_l"
 title: "vprintf, _vprintf_l, vwprintf, _vwprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vprintf, _vprintf_l, vwprintf, _vwprintf_l"
+ms.date: 3/9/2021
 api_name: ["vprintf", "_vwprintf_l", "_vprintf_l", "vwprintf"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -65,7 +65,7 @@ The versions of these functions with the `_l` suffix are identical except that t
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns). Invalid format strings are detected and result in an error.
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
index c2185baab2..388f6f46a2 100644
--- a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
 title: "_vscprintf_p, _vscprintf_p_l, _vscwprintf_p, _vscwprintf_p_l"
 description: "Learn more about: _vscprintf_p, _vscprintf_p_l, _vscwprintf_p, _vscwprintf_p_l"
-ms.date: "10/21/2021"
+ms.date: 10/21/2021
 api_name: ["_vscprintf_p_l", "_vscprintf_p", "_vscwprintf_p_l", "_vscwprintf_p"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -59,11 +59,14 @@ These functions differ from **`_vscprintf`** and **`_vscwprintf`** only in that
 
 The versions of these functions with the **`_l`** suffix are identical except that they use the locale parameter passed in instead of the current thread locale.
 
+Return Value is the size of the formatted data. If the function takes a `char` buffer, the size is in bytes. If the function takes a `wchar_t` buffer, the size specifies the number of 16-bit words.
+Characters refer to `char` characters for functions that take a `char` buffer, and to `wchar_t` characters for functions that take a `wchar_t` buffer.
+
 If *`format`* is a null pointer, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
 > [!IMPORTANT]
 > Ensure that if *`format`* is a user-defined string, it is null terminated and has the correct number and type of parameters. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
index 080aed3268..ac02613e06 100644
--- a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
+++ b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
@@ -59,6 +59,9 @@ If *`format`* is a null pointer, the invalid parameter handler is invoked, as de
 
 ## Remarks
 
+Return Value is the size of the formatted data. If the function takes a `char` buffer, the size is in bytes. If the function takes a `wchar_t` buffer, the size specifies the number of 16-bit words.
+Characters refer to `char` characters for functions that take a `char` buffer, and to `wchar_t` characters for functions that take a `wchar_t` buffer.
+
 Each *`argument`* (if any) is converted according to the corresponding format specification in *`format`*. The format consists of ordinary characters and has the same form and function as the *`format`* argument for [`printf`](printf-printf-l-wprintf-wprintf-l.md).
 
 > [!IMPORTANT]
diff --git a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
index 690566a0fc..341e63eaa5 100644
--- a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l"
 title: "vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l"
+description: "Learn more about: vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l"
 ms.date: 06/27/2023
 api_name: ["_vsnwprintf_s", "_vsnwprintf_s_l", "_vsnprintf_s", "vsnprintf_s", "_vsnprintf_s_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
@@ -105,12 +105,14 @@ See [Behavior summary](#behavior-summary) for details.
 
 ## Remarks
 
-**`vsnprintf_s`** is identical to **`_vsnprintf_s`** and is included for conformance to the ANSI standard. **`_vnsprintf`** is retained for backward compatibility.
+Each of these functions takes a pointer to an argument list, then formats and writes up to *`count`* characters of the given data to the memory pointed to by *`buffer`* and appends a terminating `NULL`.
 
-Each of these functions takes a pointer to an argument list, then formats and writes up to *`count`* characters of the given data to the memory pointed to by *`buffer`* and appends a terminating null.
+In debug builds, the remaining `sizeOfBuffer` bytes following the terminating `NULL` are filled with 'xFE' as described in [`_CrtSetDebugFillThreshold`](crtsetdebugfillthreshold.md).
 
 The versions of these functions with the **`_l`** suffix are identical except that they use the locale parameter passed in instead of the current thread locale.
 
+**`vsnprintf_s`** is identical to **`_vsnprintf_s`** and is included for conformance to the ANSI standard. **`_vnsprintf`** is retained for backward compatibility.
+
 ### Behavior summary
 
 For the following table:
@@ -127,6 +129,7 @@ For the following table:
 | `buffer == NULL` and `sizeOfBuffer == 0` and `count == 0` | No data is written. | 0 | N/A | No |
 | `buffer == NULL` and either `sizeOfBuffer != 0` or `count != 0` | If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value.| -1 | `EINVAL` (22) | Yes |
 | `buffer != NULL` and `sizeOfBuffer == 0` | No data is written. If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value. | -1 | `EINVAL` (22) | Yes |
+| `buffer != NULL` and `sizeOfBuffer != 0` and `count == 0` | The buffer is `NULL` terminated. | -1 | N/A | No |
 | `count == 0`| Doesn't write any data and returns the number of characters that would have been written, not including the terminating `NULL`. | The number of characters that would have been written not including the terminating `NULL`. | N/A | No |
 | `count < 0` | Unsafe: the value is treated as unsigned, likely creating a large value that results in overwriting the memory that follows the buffer. | The number of characters written, not including the terminating `NULL`. | N/A | No |
 | `count < sizeOfBuffer` and `len <= count`  | All of the data is written and a terminating `NULL` is appended. | The number of characters written. | N/A | No |
@@ -141,10 +144,10 @@ For information about these and other error codes, see [`_doserrno`, `errno`, `_
 
 > [!IMPORTANT]
 > Ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 > [!NOTE]
-> To ensure that there is room for the terminating null, be sure that *`count`* is strictly less than the buffer length, or use `_TRUNCATE`.
+> To ensure that there is room for the terminating `NULL`, be sure that *`count`* is strictly less than the buffer length, or use `_TRUNCATE`.
 
 In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure template overloads](../secure-template-overloads.md).
 
@@ -209,4 +212,4 @@ nSize: -1, buff: Hi there!
 [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](fprintf-fprintf-l-fwprintf-fwprintf-l.md)\
 [`printf`, `_printf_l`, `wprintf`, `_wprintf_l`](printf-printf-l-wprintf-wprintf-l.md)\
 [`sprintf`, `_sprintf_l`, `swprintf`, `_swprintf_l`, `__swprintf_l`](sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md)\
-[`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)
\ No newline at end of file
+[`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)
diff --git a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
index b4a5f31213..7a90fece02 100644
--- a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
+++ b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
@@ -129,7 +129,7 @@ Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`vsnprintf`** is
 
 > [!IMPORTANT]
 > To prevent certain kinds of security risks, ensure that *`format`* isn't a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 > [!NOTE]
 > To ensure that there's room for the terminating null when calling **`_vsnprintf`**, **`_vsnprintf_l`**, **`_vsnwprintf`** and **`_vsnwprintf_l`**, be sure that *`count`* is strictly less than the buffer length and initialize the buffer to null prior to calling the function.
@@ -155,7 +155,8 @@ For the following table:
 | Encoding error during formatting | If processing string specifier `s`, `S`, or `Z`, format specification processing stops. | -1 | `EILSEQ` (42) | No |
 | Encoding error during formatting | If processing character specifier `c` or `C`, the invalid character is skipped. The number of characters written isn't incremented for the skipped character, nor is any data written for it. Processing the format specification continues after skipping the specifier with the encoding error. | The number of characters written, not including the terminating `NULL`. | `EILSEQ` (42) | No |
 | `buffer == NULL` and `count != 0` | If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value.| -1 | `EINVAL` (22) | Yes |
-| `count == 0` | No data is written | The number of characters that would have been written, not including the terminating `NULL`. You can use this result to allocate sufficient buffer space for the string and a terminating `NULL`, and then call the function again to fill the buffer. | N/A | No |
+| `buffer == NULL` and `count == 0` | No data is written | The number of characters that would have been written, not including the terminating `NULL`. You can use this result to allocate sufficient buffer space for the string and a terminating `NULL`, and then call the function again to fill the buffer. | N/A | No |
+| `count == 0` | No data is written | -1 | `ERANGE` (34) | No |
 | `count < 0`| Unsafe: the value is treated as unsigned, likely creating a large value that results in overwriting the memory that follows the buffer. | The number of characters written. | N/A | No |
 | `count < sizeOfBuffer` and `len <= count` | All of the data is written and a terminating `NULL` is appended. | The number of characters written, not including the terminating `NULL`. | N/A | No |
 | `count < sizeOfBuffer` and `len > count` | The first *`count-1`* characters are written followed by a null-terminator. | The number of characters that would have been written had `count` matched the number of characters to output, not including the null-terminator. | N/A | No |
diff --git a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
index a5ab73d417..7b74d3eb27 100644
--- a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: _vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l"
 title: "_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l"
-ms.date: "3/9/2021"
+description: "Learn more about: _vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l"
+ms.date: 3/9/2021
 api_name: ["_vsprintf_p", "_vswprintf_p", "_vsprintf_p_l", "_vswprintf_p_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
 api_type: ["DLLExport"]
@@ -66,7 +66,9 @@ The locale to use.
 
 ## Return value
 
-**`_vsprintf_p`** and **`_vswprintf_p`** return the number of characters written, not including the terminating null character, or a negative value if an output error occurs.
+**`_vsprintf_p`** and **`_vswprintf_p`** return the number of characters written, not including the terminating `NULL` character, or a negative value if an output error occurs.
+If the *`buffer`* is a `NULL` pointer and *`sizeInBytes`* or *`count`* are zero, functions return the number of characters that would have been written not including the terminating `NULL`. 
+If the *`buffer`* is valid and *`sizeInBytes`* or *`count`* are zero, returns -1.
 
 ## Remarks
 
@@ -76,10 +78,10 @@ These functions differ from the `vsprintf_s` and `vswprintf_s` only in that they
 
 The versions of these functions with the `_l` suffix are identical except that they use the locale parameter passed in instead of the current thread locale.
 
-If the *`buffer`* or *`format`* parameters are `NULL` pointers, if count is zero, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
+If the *`buffer`* or *`format`* parameters are `NULL` pointers, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`.
 
 > [!IMPORTANT]
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text routine mappings
 
diff --git a/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md b/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
index 991b132063..94c4dc3632 100644
--- a/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l"
 title: "vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l, _vstprintf_s, _vstprintf_s_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l"
+ms.date: 3/9/2021
 api_name: ["_vswprintf_s_l", "vsprintf_s", "vswprintf_s", "_vsprintf_s_l", _vstprintf_s, _vstprintf_s_l]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
@@ -94,7 +94,7 @@ The versions of these functions with the **`_l`** suffix are identical except th
 In C++, using these functions is simplified by template overloads. The overloads can infer buffer length automatically, eliminating the need to specify a size argument. And, they can automatically replace non-secure functions with their secure counterparts. For more information, see [Secure template overloads](../secure-template-overloads.md).
 
 > [!IMPORTANT]
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 ### Generic-text function mappings
 
diff --git a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
index 0d197f9619..e5eadb3323 100644
--- a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l"
 title: "vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l"
-ms.date: "3/9/2021"
+description: "Learn more about: vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l"
+ms.date: 3/9/2021
 api_name: ["_vswprintf_l", "_vsprintf_l", "vsprintf", "vswprintf", "__vswprintf_l"]
 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
 api_type: ["DLLExport"]
@@ -95,6 +95,10 @@ The locale to use.
 
 **`vsprintf`** and **`vswprintf`** return the number of characters written, not including the terminating `NULL` character, or a negative value if an output error occurs. If *`buffer`* or *`format`* is a `NULL` pointer, these functions invoke the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, these functions return -1 and set `errno` to `EINVAL`.
 
+If *`buffer`* is a `NULL` pointer and *`count`* is zero, **`vswprintf`** and **`_vswprintf_l`** return the number of characters that would have been written not including the terminating NULL.
+
+If *`buffer`* is valid and *`count`* is zero, **`vswprintf`** and **`_vswprintf_l`** return -1. The contents of *`buffer`* are unchanged.
+
 For information on these and other error codes, see [`errno`, `_doserrno`, `_sys_errlist`, and `_sys_nerr`](../errno-doserrno-sys-errlist-and-sys-nerr.md).
 
 ## Remarks
@@ -105,7 +109,7 @@ The versions of these functions with the **`_l`** suffix are identical except th
 
 > [!IMPORTANT]
 > Using **`vsprintf`**, there is no way to limit the number of characters written, which means that code using this function is susceptible to buffer overruns. Use [`_vsnprintf`](vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md) instead, or call [`_vscprintf`](vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md) to determine how large a buffer is needed. Also, ensure that *`format`* is not a user-defined string. For more information, see [Avoiding buffer overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
-> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md).
+> Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with [`legacy_stdio_float_rounding.obj`](../link-options.md).
 
 **`vswprintf`** conforms to the ISO C Standard, which requires the second parameter, *`count`*, of type **`size_t`**. To force the old nonstandard behavior, define `_CRT_NON_CONFORMING_SWPRINTFS`. The old behavior may not be in a future version, so code should be changed to use the new conformant behavior.
 
diff --git a/docs/c-runtime-library/required-and-optional-header-files.md b/docs/c-runtime-library/required-and-optional-header-files.md
index 679afb5450..13fb797a27 100644
--- a/docs/c-runtime-library/required-and-optional-header-files.md
+++ b/docs/c-runtime-library/required-and-optional-header-files.md
@@ -2,7 +2,7 @@
 title: "Required and Optional Header Files"
 description: "When to use required versus optional header files from the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["c.headers"]
 helpviewer_keywords: ["include files, required in run time", "header files, required in run time"]
 ms.assetid: f64d0bf5-e2c3-4b42-97d0-443b3d901d9f
diff --git a/docs/c-runtime-library/sal-annotations.md b/docs/c-runtime-library/sal-annotations.md
index 1307e5f0a2..3b7f7b2499 100644
--- a/docs/c-runtime-library/sal-annotations.md
+++ b/docs/c-runtime-library/sal-annotations.md
@@ -2,7 +2,7 @@
 title: "SAL Annotations"
 description: "A brief description of the Microsoft source-code annotation language (SAL)."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["__z annotation", "ref annotation", "_opt annotation", "__checkreturn annotatioin", "__deref_opt annotation", "deref_opt annotation", "__deref annotation", "__in annotation", "annotations [C++]", "z annotation", "_inout annotation", "__ref annotation", "full annotation", "_in annotation", "_ref annotation", "__out annotation", "_ecount annotation", "SAL annotations", "__opt annotation", "inout annotation", "in annotation", "_CA_SHOULD_CHECK_RETURN", "__bcount annotation", "_full annotation", "_bcount annotation", "deref annotation", "part annotation", "_out annotation", "__nz annotation", "__part annotation", "opt annotation", "__full annotation", "_nz annotation", "_z annotation", "out annotation", "__ecount annotation", "__inout annotation", "SAL annotations, _CA_SHOULD_CHECK_RETURN", "_deref_opt annotation", "_deref annotation", "nz annotation", "_part annotation", "ecount annotation", "bcount annotation"]
 ms.assetid: 81893638-010c-41a0-9cb3-666fe360f3e0
 ---
diff --git a/docs/c-runtime-library/sbcs-and-mbcs-data-types.md b/docs/c-runtime-library/sbcs-and-mbcs-data-types.md
index 71473d9c2b..c2111a54b4 100644
--- a/docs/c-runtime-library/sbcs-and-mbcs-data-types.md
+++ b/docs/c-runtime-library/sbcs-and-mbcs-data-types.md
@@ -1,7 +1,7 @@
 ---
 title: "SBCS and MBCS Data Types"
 description: "How to represent single and multibyte characters in the Microsoft C runtime."
-ms.topic: "conceptual"
+ms.topic: "how-to"
 ms.date: "04/11/2018"
 f1_keywords: ["_MBCS", "MBCS", "SBCS"]
 helpviewer_keywords: ["SBCS and MBCS data types", "data types [C], MBCS and SBCS"]
diff --git a/docs/c-runtime-library/secure-template-overloads.md b/docs/c-runtime-library/secure-template-overloads.md
index 865c43c2ab..99f5ab2d92 100644
--- a/docs/c-runtime-library/secure-template-overloads.md
+++ b/docs/c-runtime-library/secure-template-overloads.md
@@ -2,7 +2,7 @@
 title: "Secure Template Overloads"
 description: "A description of Microsoft C runtime template overloads that provide security-enhanced functions."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES", "_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES", "_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT"]
 helpviewer_keywords: ["_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES", "_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES", "_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT", "secure template overloads"]
 ms.assetid: 562741d0-39c0-485e-8529-73d740f29f8f
diff --git a/docs/c-runtime-library/security-features-in-the-crt.md b/docs/c-runtime-library/security-features-in-the-crt.md
index d1dc77a81a..624d6d1b9e 100644
--- a/docs/c-runtime-library/security-features-in-the-crt.md
+++ b/docs/c-runtime-library/security-features-in-the-crt.md
@@ -2,10 +2,9 @@
 title: "Security Features in the CRT"
 description: "An overview of secure CRT functions in the Microsoft C runtime."
 ms.date: "09/29/2020"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["_CRT_SECURE_NO_DEPRECATE", "_CRT_NONSTDC_NO_DEPRECATE", "_CRT_NONSTDC_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"]
 helpviewer_keywords: ["security deprecation warnings [C++]", "CRT_NONSTDC_NO_DEPRECATE", "buffers [C++], buffer overruns", "deprecation warnings (security-related), disabling", "_CRT_NONSTDC_NO_WARNINGS", "security [CRT]", "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE", "_CRT_SECURE_NO_DEPRECATE", "security-enhanced CRT", "CRT_SECURE_NO_WARNINGS", "CRT_SECURE_NO_DEPRECATE", "deprecation warnings (security-related)", "buffer overruns", "CRT_NONSTDC_NO_WARNINGS", "CRT, security enhancements", "parameters [C++], validation"]
-ms.assetid: d9568b08-9514-49cd-b3dc-2454ded195a3
 ---
 # Security Features in the CRT
 
@@ -19,7 +18,7 @@ For example, the `strcpy` function can't tell if the string it copies is too lar
 
 ## Eliminating deprecation warnings
 
-There are several ways to eliminate deprecation warnings for the older, less secure functions. The simplest is simply to define `_CRT_SECURE_NO_WARNINGS` or use the [`warning`](../preprocessor/warning.md) pragma. Either will disable deprecation warnings, but the security issues that caused the warnings still exist. It's better to leave deprecation warnings enabled and take advantage of the new CRT security features.
+There are several ways to eliminate deprecation warnings for the older, less secure functions. The simplest is simply to define `_CRT_SECURE_NO_WARNINGS` or use the [`warning`](../preprocessor/warning.md) pragma. Either disables deprecation warnings, but the security issues that caused the warnings still exist. It's better to leave deprecation warnings enabled and take advantage of the new CRT security features.
 
 In C++, the easiest way to eliminate the deprecation warnings is to use [Secure template overloads](./secure-template-overloads.md). The overloads eliminate deprecation warnings in many cases. They replace calls to deprecated functions with calls to secure versions of the functions. For example, consider this deprecated call to `strcpy`:
 
@@ -54,13 +53,15 @@ Some of the security features include:
 
   You must pass the buffer size to any secure function that writes to a buffer. The secure versions validate that the buffer is large enough before writing to it. The validation helps avoid dangerous buffer overrun errors that could allow malicious code to execute. These functions usually return an `errno` error code and invoke the invalid parameter handler if the size of the buffer is too small. Functions that read from input buffers, such as `gets`, have secure versions that require you to specify a maximum size.
 
+  The debug versions of *some* security-enhanced CRT functions fill the buffer passed to them with a special character (0xFE). This fill character helps to find cases where the incorrect size was passed to the function. Unfortunately, it also reduces performance. To improve performance, use **`_CrtSetDebugFillThreshold`** to disable buffer-filling. For more information, and a list of functions that have this behavior, see [`_CrtSetDebugFillThreshold`](./reference/crtsetdebugfillthreshold.md).
+
 - **Null termination**
 
-  Some functions that left potentially non-terminated strings have secure versions, which ensure that strings are properly null-terminated.
+  Some functions that left potentially nonterminated strings have secure versions, which ensure that strings are properly null-terminated.
 
 - **Enhanced error reporting**
 
-  The secure functions return error codes with more error information than was available with the pre-existing functions. The secure functions and many of the pre-existing functions now set `errno` and often return an `errno` code type as well, to provide better error reporting.
+  The secure functions return error codes with more error information than was available with the preexisting functions. The secure functions and many of the preexisting functions now set `errno` and often return an `errno` code type as well, to provide better error reporting.
 
 - **Filesystem security**
 
diff --git a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md
index 7828ab3cc9..7d409c365c 100644
--- a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md
+++ b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md
@@ -1,7 +1,7 @@
 ---
 title: "Single-Byte and Multibyte Character Sets"
 description: "An introduction to single and multi-byte character sets in the Microsoft runtime library."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["SBCS (single byte character set)", "MBCS [C++], about MBCS", "character sets [C++], multibyte", "character sets [C++], single byte"]
 ms.assetid: 2cbc78ea-33c0-4cfb-b0df-7ce2458431ce
diff --git a/docs/c-runtime-library/stream-i-o.md b/docs/c-runtime-library/stream-i-o.md
index 180ecf2b1f..e91fcfdda2 100644
--- a/docs/c-runtime-library/stream-i-o.md
+++ b/docs/c-runtime-library/stream-i-o.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Stream I/O"
 title: "Stream I/O"
-ms.date: "11/04/2016"
+description: "Learn more about: Stream I/O"
+ms.date: 11/04/2016
 helpviewer_keywords: ["I/O routines, stream I/O", "I/O [CRT], stream", "stream I/O"]
-ms.assetid: dc7874d3-a91b-456a-9015-4748bb358217
 ---
 # Stream I/O
 
@@ -13,61 +12,61 @@ These functions process data in different sizes and formats, from single charact
 
 | Routine | Use |
 |---|---|
-| [`clearerr`](./reference/clearerr.md), [`clearerr_s`](./reference/clearerr-s.md) | Clear error indicator for stream |
-| [`fclose`](./reference/fclose-fcloseall.md) | Close stream |
-| [`_fcloseall`](./reference/fclose-fcloseall.md) | Close all open streams except **`stdin`**, **`stdout`**, and **`stderr`** |
-| [`_fdopen`, `wfdopen`](./reference/fdopen-wfdopen.md) | Associate stream with file descriptor of open file |
-| [`feof`](./reference/feof.md) | Test for end of file on stream |
-| [`ferror`](./reference/ferror.md) | Test for error on stream |
-| [`fflush`](./reference/fflush.md) | Flush stream to buffer or storage device |
-| [`fgetc`, `fgetwc`](./reference/fgetc-fgetwc.md) | Read character from stream (function versions of **`getc`** and **`getwc`**) |
-| [`_fgetchar`, `_fgetwchar`](./reference/fgetc-fgetwc.md) | Read character from **`stdin`** (function versions of **`getchar`** and **`getwchar`**) |
-| [`fgetpos`](./reference/fgetpos.md) | Get position indicator of stream |
-| [`fgets`, `fgetws`](./reference/fgets-fgetws.md) | Read string from stream |
-| [`_fileno`](./reference/fileno.md) | Get file descriptor associated with stream |
-| [`_flushall`](./reference/flushall.md) | Flush all streams to buffer or storage device |
-| [`fopen`, `_wfopen`](./reference/fopen-wfopen.md), [`fopen_s`, `_wfopen_s`](./reference/fopen-s-wfopen-s.md) | Open stream |
-| [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](./reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md), [`fprintf_s`, `_fprintf_s_l`, `fwprintf_s`, `_fwprintf_s_l`](./reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md) | Write formatted data to stream |
-| [`fputc`, `fputwc`](./reference/fputc-fputwc.md) | Write a character to a stream (function versions of **`putc`** and **`putwc`**) |
-| [`_fputchar`, `_fputwchar`](./reference/fputc-fputwc.md) | Write character to **`stdout`** (function versions of **`putchar`** and **`putwchar`**) |
-| [`fputs`, `fputws`](./reference/fputs-fputws.md) | Write string to stream |
-| [`fread`](./reference/fread.md) | Read unformatted data from stream |
-| [`freopen`, `_wfreopen`](./reference/freopen-wfreopen.md), [`freopen_s`, `_wfreopen_s`](./reference/freopen-s-wfreopen-s.md) | Reassign `FILE` stream pointer to new file or device |
-| [`fscanf`, `fwscanf`](./reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md), [`fscanf_s`, `_fscanf_s_l`, `fwscanf_s`, `_fwscanf_s_l`](./reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md) | Read formatted data from stream |
-| [`fseek`, `_fseeki64`](./reference/fseek-fseeki64.md) | Move file position to given location |
-| [`fsetpos`](./reference/fsetpos.md) | Set position indicator of stream |
-| [`_fsopen`, `_wfsopen`](./reference/fsopen-wfsopen.md) | Open stream with file sharing |
-| [`ftell`, `_ftelli64`](./reference/ftell-ftelli64.md) | Get current file position |
-| [`fwrite`](./reference/fwrite.md) | Write unformatted data items to stream |
-| [`getc`, `getwc`](./reference/getc-getwc.md) | Read character from stream (macro versions of **`fgetc`** and **`fgetwc`**) |
-| [`getchar`, `getwchar`](./reference/getc-getwc.md) | Read character from **`stdin`** (macro versions of **`fgetchar`** and **`fgetwchar`**) |
-| [`_getmaxstdio`](./reference/getmaxstdio.md) | Returns the number of simultaneously open files permitted at the stream I/O level. |
-| [`gets_s`, `_getws_s`](./reference/gets-s-getws-s.md) | Read line from **`stdin`** |
-| [`_getw`](./reference/getw.md) | Read binary **`int`** from stream |
-| [`printf`, `_printf_l`, `wprintf`, `_wprintf_l`](./reference/printf-printf-l-wprintf-wprintf-l.md),[`printf_s`, `_printf_s_l`, `wprintf_s`, `_wprintf_s_l`](./reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md) | Write formatted data to **`stdout`** |
-| [`putc`, `putwc`](./reference/putc-putwc.md) | Write character to a stream (macro versions of **`fputc`** and **`fputwc`**) |
-| [`putchar`, `putwchar`](./reference/putc-putwc.md) | Write character to **`stdout`** (macro versions of **`fputchar`** and **`fputwchar`**) |
-| [`puts`, `_putws`](./reference/puts-putws.md) | Write line to stream |
-| [`_putw`](./reference/putw.md) | Write binary **`int`** to stream |
-| [`rewind`](./reference/rewind.md) | Move file position to beginning of stream |
-| [`_rmtmp`](./reference/rmtmp.md) | Remove temporary files created by **`tmpfile`** |
-| [`scanf`, `_scanf_l`, `wscanf`, `_wscanf_l`](./reference/scanf-scanf-l-wscanf-wscanf-l.md),[`scanf_s`, `_scanf_s_l`, `wscanf_s`, `_wscanf_s_l`](./reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md) | Read formatted data from **`stdin`** |
-| [`setbuf`](./reference/setbuf.md) | Control stream buffering |
-| [`_setmaxstdio`](./reference/setmaxstdio.md) | Set a maximum for the number of simultaneously open files at the stream I/O level. |
-| [`setvbuf`](./reference/setvbuf.md) | Control stream buffering and buffer size |
-| [`_snprintf`, `_snwprintf`](./reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md), [`_snprintf_s`, `_snprintf_s_l`, `_snwprintf_s`, `_snwprintf_s_l`](./reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md) | Write formatted data of specified length to string |
-| [`_snscanf`, `_snwscanf`](./reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md), [`_snscanf_s`, `_snscanf_s_l`, `_snwscanf_s`, `_snwscanf_s_l`](./reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md) | Read formatted data of a specified length from the standard input stream. |
-| [`sprintf`, `swprintf`](./reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md), [`sprintf_s`, `_sprintf_s_l`, `swprintf_s`, `_swprintf_s_l`](./reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md) | Write formatted data to string |
-| [`sscanf`, `swscanf`](./reference/sscanf-sscanf-l-swscanf-swscanf-l.md), [`sscanf_s`, _sscanf_s_l, `swscanf_s`, `_swscanf_s_l`](./reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md) | Read formatted data from string |
-| [`_tempnam`, `_wtempnam`](./reference/tempnam-wtempnam-tmpnam-wtmpnam.md) | Generate temporary filename in given directory |
-| [`tmpfile`](./reference/tmpfile.md), [`tmpfile_s`](./reference/tmpfile-s.md) | Create temporary file |
-| [`tmpnam`, `_wtmpnam`](./reference/tempnam-wtempnam-tmpnam-wtmpnam.md), [`tmpnam_s`, `_wtmpnam_s`](./reference/tmpnam-s-wtmpnam-s.md) | Generate temporary filename |
-| [`ungetc`, `ungetwc`](./reference/ungetc-ungetwc.md) | Push character back onto stream |
-| [`_vcprintf`, `_vcwprintf`](./reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md), [`_vcprintf_s`, `_vcprintf_s_l`, `_vcwprintf_s`, `_vcwprintf_s_l`](./reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md) | Write formatted data to the console. |
-| [`vfprintf`, `vfwprintf`](./reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md), [`vfprintf_s`, `_vfprintf_s_l`, `vfwprintf_s`, `_vfwprintf_s_l`](./reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md) | Write formatted data to stream |
-| [`vprintf`, `vwprintf`](./reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md), [`vprintf_s`, `_vprintf_s_l`, `vwprintf_s`, `_vwprintf_s_l`](./reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md) | Write formatted data to **`stdout`** |
-| [`_vsnprintf`, `_vsnwprintf`](./reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md), [`vsnprintf_s`, `_vsnprintf_s`, `_vsnprintf_s_l`, `_vsnwprintf_s`, `_vsnwprintf_s_l`](./reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md) | Write formatted data of specified length to buffer |
-| [`vsprintf`, `vswprintf`](./reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md), [`vsprintf_s`, `_vsprintf_s_l`, `vswprintf_s`, `_vswprintf_s_l`](./reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md) | Write formatted data to buffer |
+| [`clearerr`](reference/clearerr.md), [`clearerr_s`](reference/clearerr-s.md) | Clear error indicator for stream |
+| [`fclose`](reference/fclose-fcloseall.md) | Close stream |
+| [`_fcloseall`](reference/fclose-fcloseall.md) | Close all open streams except **`stdin`**, **`stdout`**, and **`stderr`** |
+| [`_fdopen`, `wfdopen`](reference/fdopen-wfdopen.md) | Associate stream with file descriptor of open file |
+| [`feof`](reference/feof.md) | Test for end of file on stream |
+| [`ferror`](reference/ferror.md) | Test for error on stream |
+| [`fflush`](reference/fflush.md) | Flush stream to buffer or storage device |
+| [`fgetc`, `fgetwc`](reference/fgetc-fgetwc.md) | Read character from stream (function versions of **`getc`** and **`getwc`**) |
+| [`_fgetchar`, `_fgetwchar`](reference/fgetc-fgetwc.md) | Read character from **`stdin`** (function versions of **`getchar`** and **`getwchar`**) |
+| [`fgetpos`](reference/fgetpos.md) | Get position indicator of stream |
+| [`fgets`, `fgetws`](reference/fgets-fgetws.md) | Read string from stream |
+| [`_fileno`](reference/fileno.md) | Get file descriptor associated with stream |
+| [`_flushall`](reference/flushall.md) | Flush all streams to buffer or storage device |
+| [`fopen`, `_wfopen`](reference/fopen-wfopen.md), [`fopen_s`, `_wfopen_s`](reference/fopen-s-wfopen-s.md) | Open stream |
+| [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md), [`fprintf_s`, `_fprintf_s_l`, `fwprintf_s`, `_fwprintf_s_l`](reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md) | Write formatted data to stream |
+| [`fputc`, `fputwc`](reference/fputc-fputwc.md) | Write a character to a stream (function versions of **`putc`** and **`putwc`**) |
+| [`_fputchar`, `_fputwchar`](reference/fputc-fputwc.md) | Write character to **`stdout`** (function versions of **`putchar`** and **`putwchar`**) |
+| [`fputs`, `fputws`](reference/fputs-fputws.md) | Write string to stream |
+| [`fread`](reference/fread.md) | Read unformatted data from stream |
+| [`freopen`, `_wfreopen`](reference/freopen-wfreopen.md), [`freopen_s`, `_wfreopen_s`](reference/freopen-s-wfreopen-s.md) | Reassign `FILE` stream pointer to new file or device |
+| [`fscanf`, `fwscanf`](reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md), [`fscanf_s`, `_fscanf_s_l`, `fwscanf_s`, `_fwscanf_s_l`](reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md) | Read formatted data from stream |
+| [`fseek`, `_fseeki64`](reference/fseek-fseeki64.md) | Move file position to given location |
+| [`fsetpos`](reference/fsetpos.md) | Set position indicator of stream |
+| [`_fsopen`, `_wfsopen`](reference/fsopen-wfsopen.md) | Open stream with file sharing |
+| [`ftell`, `_ftelli64`](reference/ftell-ftelli64.md) | Get current file position |
+| [`fwrite`](reference/fwrite.md) | Write unformatted data items to stream |
+| [`getc`, `getwc`](reference/getc-getwc.md) | Read character from stream (macro versions of **`fgetc`** and **`fgetwc`**) |
+| [`getchar`, `getwchar`](reference/getc-getwc.md) | Read character from **`stdin`** (macro versions of **`fgetchar`** and **`fgetwchar`**) |
+| [`_getmaxstdio`](reference/getmaxstdio.md) | Returns the number of simultaneously open files permitted at the stream I/O level. |
+| [`gets_s`, `_getws_s`](reference/gets-s-getws-s.md) | Read line from **`stdin`** |
+| [`_getw`](reference/getw.md) | Read binary **`int`** from stream |
+| [`printf`, `_printf_l`, `wprintf`, `_wprintf_l`](reference/printf-printf-l-wprintf-wprintf-l.md), [`printf_s`, `_printf_s_l`, `wprintf_s`, `_wprintf_s_l`](reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md) | Write formatted data to **`stdout`** |
+| [`putc`, `putwc`](reference/putc-putwc.md) | Write character to a stream (macro versions of **`fputc`** and **`fputwc`**) |
+| [`putchar`, `putwchar`](reference/putc-putwc.md) | Write character to **`stdout`** (macro versions of **`fputchar`** and **`fputwchar`**) |
+| [`puts`, `_putws`](reference/puts-putws.md) | Write line to stream |
+| [`_putw`](reference/putw.md) | Write binary **`int`** to stream |
+| [`rewind`](reference/rewind.md) | Move file position to beginning of stream |
+| [`_rmtmp`](reference/rmtmp.md) | Remove temporary files created by **`tmpfile`** |
+| [`scanf`, `_scanf_l`, `wscanf`, `_wscanf_l`](reference/scanf-scanf-l-wscanf-wscanf-l.md), [`scanf_s`, `_scanf_s_l`, `wscanf_s`, `_wscanf_s_l`](reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md) | Read formatted data from **`stdin`** |
+| [`setbuf`](reference/setbuf.md) | Control stream buffering |
+| [`_setmaxstdio`](reference/setmaxstdio.md) | Set a maximum for the number of simultaneously open files at the stream I/O level. |
+| [`setvbuf`](reference/setvbuf.md) | Control stream buffering and buffer size |
+| [`_snprintf`, `_snwprintf`](reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md), [`_snprintf_s`, `_snprintf_s_l`, `_snwprintf_s`, `_snwprintf_s_l`](reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md) | Write formatted data of specified length to string |
+| [`_snscanf`, `_snwscanf`](reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md), [`_snscanf_s`, `_snscanf_s_l`, `_snwscanf_s`, `_snwscanf_s_l`](reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md) | Read formatted data of a specified length from the standard input stream. |
+| [`sprintf`, `swprintf`](reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md), [`sprintf_s`, `_sprintf_s_l`, `swprintf_s`, `_swprintf_s_l`](reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md) | Write formatted data to string |
+| [`sscanf`, `swscanf`](reference/sscanf-sscanf-l-swscanf-swscanf-l.md), [`sscanf_s`, _sscanf_s_l, `swscanf_s`, `_swscanf_s_l`](reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md) | Read formatted data from string |
+| [`_tempnam`, `_wtempnam`](reference/tempnam-wtempnam-tmpnam-wtmpnam.md) | Generate temporary filename in given directory |
+| [`tmpfile`](reference/tmpfile.md), [`tmpfile_s`](reference/tmpfile-s.md) | Create temporary file |
+| [`tmpnam`, `_wtmpnam`](reference/tempnam-wtempnam-tmpnam-wtmpnam.md), [`tmpnam_s`, `_wtmpnam_s`](reference/tmpnam-s-wtmpnam-s.md) | Generate temporary filename |
+| [`ungetc`, `ungetwc`](reference/ungetc-ungetwc.md) | Push character back onto stream |
+| [`_vcprintf`, `_vcwprintf`](reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md), [`_vcprintf_s`, `_vcprintf_s_l`, `_vcwprintf_s`, `_vcwprintf_s_l`](reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md) | Write formatted data to the console. |
+| [`vfprintf`, `vfwprintf`](reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md), [`vfprintf_s`, `_vfprintf_s_l`, `vfwprintf_s`, `_vfwprintf_s_l`](reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md) | Write formatted data to stream |
+| [`vprintf`, `vwprintf`](reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md), [`vprintf_s`, `_vprintf_s_l`, `vwprintf_s`, `_vwprintf_s_l`](reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md) | Write formatted data to **`stdout`** |
+| [`_vsnprintf`, `_vsnwprintf`](reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md), [`vsnprintf_s`, `_vsnprintf_s`, `_vsnprintf_s_l`, `_vsnwprintf_s`, `_vsnwprintf_s_l`](reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md) | Write formatted data of specified length to buffer |
+| [`vsprintf`, `vswprintf`](reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md), [`vsprintf_s`, `_vsprintf_s_l`, `vswprintf_s`, `_vswprintf_s_l`](reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md) | Write formatted data to buffer |
 
 When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by **`stdin`**), standard output (pointed to by **`stdout`**), and standard error (pointed to by **`stderr`**). These streams are directed to the console (keyboard and screen) by default. Use **`freopen`** to redirect **`stdin`**, **`stdout`**, or **`stderr`** to a disk file or a device.
 
@@ -76,16 +75,15 @@ Files opened using the stream routines are buffered by default. The **`stdout`**
 There are two ways to commit buffer contents to disk:
 
 - Link with the file COMMODE.OBJ to set a global commit flag. The default setting of the global flag is **`n`**, for "no-commit."
-
 - Set the mode flag to **`c`** with **`fopen`** or **`_fdopen`**.
 
 Any file specifically opened with either the **`c`** or the **`n`** flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.
 
-If your program doesn't explicitly close a stream, the stream is automatically closed when the program terminates. However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. See [`_setmaxstdio`](./reference/setmaxstdio.md) for information on this limit.
+If your program doesn't explicitly close a stream, the stream is automatically closed when the program terminates. However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. See [`_setmaxstdio`](reference/setmaxstdio.md) for information on this limit.
 
 Input can follow output directly only with an intervening call to **`fflush`** or to a file-positioning function (**`fseek`**, **`fsetpos`**, or **`rewind`**). Input can be followed by output without an intervening call to a file-positioning function, if the input operation encounters the end of the file.
 
 ## See also
 
-[Input and output](./input-and-output.md)\
-[Universal C runtime routines by category](./run-time-routines-by-category.md)
+[Input and output](input-and-output.md)\
+[Universal C runtime routines by category](run-time-routines-by-category.md)
diff --git a/docs/c-runtime-library/text-and-binary-streams.md b/docs/c-runtime-library/text-and-binary-streams.md
index 5150344ec6..6faf1178a3 100644
--- a/docs/c-runtime-library/text-and-binary-streams.md
+++ b/docs/c-runtime-library/text-and-binary-streams.md
@@ -2,7 +2,7 @@
 title: "Text and Binary Streams"
 description: "A description of text and binary streams in the Microsoft C runtime library."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["binary streams", "text streams"]
 ms.assetid: 57035e4a-955d-4e04-a560-fcf67ce68b4e
 ---
diff --git a/docs/c-runtime-library/tgmath.md b/docs/c-runtime-library/tgmath.md
index dff2a61f16..87240aaa4d 100644
--- a/docs/c-runtime-library/tgmath.md
+++ b/docs/c-runtime-library/tgmath.md
@@ -1,7 +1,7 @@
 ---
 title: "Type-generic math"
 description: "Describes macros in <tgmath.h> that make it easier to write C code that calls the correct math function, based on argument type." 
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "6/28/2021"
 helpviewer_keywords: ["CRT tgmath.h"]
 ---
diff --git a/docs/c-runtime-library/time-management.md b/docs/c-runtime-library/time-management.md
index 784c4b009a..619798b3cc 100644
--- a/docs/c-runtime-library/time-management.md
+++ b/docs/c-runtime-library/time-management.md
@@ -1,42 +1,42 @@
 ---
-description: "Learn more about: Time Management"
 title: "Time Management"
-ms.date: "11/04/2016"
+description: "Learn more about: Time Management"
+ms.date: 11/04/2016
 helpviewer_keywords: ["dates, run-time library members", "time, time management", "date functions", "time functions"]
 ---
 # Time management
 
 Use these functions to get the current time and convert, adjust, and store it as necessary. The current time is the system time.
 
-The **`_ftime`** and **`localtime`** routines use the **`TZ`** environment variable. If **`TZ`** isn't set, the run-time library attempts to use the time-zone information specified by the operating system. If this information is unavailable, these functions use the default value of PST8PDT. For more information on **`TZ`**, see [`_tzset`](./reference/tzset.md); also see [`_daylight`, `timezone`, and `_tzname`](./daylight-dstbias-timezone-and-tzname.md).
+The **`_ftime`** and **`localtime`** routines use the **`TZ`** environment variable. If **`TZ`** isn't set, the run-time library attempts to use the time-zone information specified by the operating system. If this information is unavailable, these functions use the default value of PST8PDT. For more information on **`TZ`**, see [`_tzset`](reference/tzset.md); also see [`_daylight`, `timezone`, and `_tzname`](daylight-dstbias-timezone-and-tzname.md).
 
 ### Time routines
 
 | Function | Use |
 |---|---|
-| [`asctime`, `_wasctime`](./reference/asctime-wasctime.md), [`asctime_s`, `_wasctime_s`](./reference/asctime-s-wasctime-s.md) | Convert time from type **`struct tm`** to character string. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`clock`](./reference/clock.md) | Return elapsed wall-clock time for process. |
-| [`ctime`, `_ctime32`, `_ctime64`, `_wctime`, `_wctime32`, `_wctime64`](./reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md), [`_ctime_s`, `_ctime32_s`, `_ctime64_s`, `_wctime_s`, `_wctime32_s`, `_wctime64_s`](./reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md) | Convert time from type **`time_t`**, **`__time32_t`** or **`__time64_t`** to character string. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`difftime`, `_difftime32`, `_difftime64`](./reference/difftime-difftime32-difftime64.md) | Compute difference between two times. |
-| [`_ftime`, `_ftime32`, `_ftime64`](./reference/ftime-ftime32-ftime64.md),[`_ftime_s`, `_ftime32_s`, _ftime64_s](./reference/ftime-s-ftime32-s-ftime64-s.md) | Store current system time in variable of type **`struct _timeb`** or type **`struct __timeb64`** The versions of these functions with the **`_s`** suffix are more secure. |
-| [`_futime`, `_futime32`, `_futime64`](./reference/futime-futime32-futime64.md) | Set modification time on open file |
-| [`gmtime`, `_gmtime32`, `_gmtime64`](./reference/gmtime-gmtime32-gmtime64.md), [`gmtime_s`, `_gmtime32_s`, `_gmtime64_s`](./reference/gmtime-s-gmtime32-s-gmtime64-s.md) | Convert time from type **`time_t`** to **`struct tm`** or from type **`__time64_t`** to **`struct tm`**. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`localtime`, `_localtime32`, `_localtime64`](./reference/localtime-localtime32-localtime64.md), [`localtime_s`, `_localtime32_s`, `_localtime64_s`](./reference/localtime-s-localtime32-s-localtime64-s.md) | Convert time from type **`time_t`** to **`struct tm`** or from type **`__time64_t`** to **`struct tm`** with local correction. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`_mkgmtime`, `_mkgmtime32`, `_mkgmtime64`](./reference/mkgmtime-mkgmtime32-mkgmtime64.md) | Convert time to calendar value in Greenwich Mean Time. |
-| [`mktime`, `_mktime32`, `_mktime64`](./reference/mktime-mktime32-mktime64.md) | Convert time to calendar value. |
-| [`_strdate`, `_wstrdate`](./reference/strdate-wstrdate.md), [`_strdate_s`, `_wstrdate_s`](./reference/strdate-s-wstrdate-s.md) | Return current system date as string. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`strftime`, `wcsftime`, `_strftime_l`, `_wcsftime_l`](./reference/strftime-wcsftime-strftime-l-wcsftime-l.md) | Format date-and-time string for international use. |
-| [`_strtime`, `_wstrtime`](./reference/strtime-wstrtime.md), [`_strtime_s`, `_wstrtime_s`](./reference/strtime-s-wstrtime-s.md) | Return current system time as string. The versions of these functions with the **`_s`** suffix are more secure. |
-| [`time`, `_time32`, `_time64`](./reference/time-time32-time64.md) | Get current system time as type **`time_t`**, **`__time32_t`** or as type **`__time64_t`**. |
-| [`_tzset`](./reference/tzset.md) | Set external time variables from environment time variable **`TZ`**. |
-| [`_utime`, `_utime32`, `_utime64`, `_wutime`, `_wutime32`, `_wutime64`](./reference/utime-utime32-utime64-wutime-wutime32-wutime64.md) | Set modification time for specified file using either current time or time value stored in structure. |
+| [`asctime`, `_wasctime`](reference/asctime-wasctime.md), [`asctime_s`, `_wasctime_s`](reference/asctime-s-wasctime-s.md) | Convert time from type **`struct tm`** to character string. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`clock`](reference/clock.md) | Return elapsed wall-clock time for process. |
+| [`ctime`, `_ctime32`, `_ctime64`, `_wctime`, `_wctime32`, `_wctime64`](reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md), [`_ctime_s`, `_ctime32_s`, `_ctime64_s`, `_wctime_s`, `_wctime32_s`, `_wctime64_s`](reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md) | Convert time from type **`time_t`**, **`__time32_t`** or **`__time64_t`** to character string. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`difftime`, `_difftime32`, `_difftime64`](reference/difftime-difftime32-difftime64.md) | Compute difference between two times. |
+| [`_ftime`, `_ftime32`, `_ftime64`](reference/ftime-ftime32-ftime64.md), [`_ftime_s`, `_ftime32_s`, _ftime64_s](reference/ftime-s-ftime32-s-ftime64-s.md) | Store current system time in variable of type **`struct _timeb`** or type **`struct __timeb64`** The versions of these functions with the **`_s`** suffix are more secure. |
+| [`_futime`, `_futime32`, `_futime64`](reference/futime-futime32-futime64.md) | Set modification time on open file |
+| [`gmtime`, `_gmtime32`, `_gmtime64`](reference/gmtime-gmtime32-gmtime64.md), [`gmtime_s`, `_gmtime32_s`, `_gmtime64_s`](reference/gmtime-s-gmtime32-s-gmtime64-s.md) | Convert time from type **`time_t`** to **`struct tm`** or from type **`__time64_t`** to **`struct tm`**. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`localtime`, `_localtime32`, `_localtime64`](reference/localtime-localtime32-localtime64.md), [`localtime_s`, `_localtime32_s`, `_localtime64_s`](reference/localtime-s-localtime32-s-localtime64-s.md) | Convert time from type **`time_t`** to **`struct tm`** or from type **`__time64_t`** to **`struct tm`** with local correction. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`_mkgmtime`, `_mkgmtime32`, `_mkgmtime64`](reference/mkgmtime-mkgmtime32-mkgmtime64.md) | Convert time to calendar value in Greenwich Mean Time. |
+| [`mktime`, `_mktime32`, `_mktime64`](reference/mktime-mktime32-mktime64.md) | Convert time to calendar value. |
+| [`_strdate`, `_wstrdate`](reference/strdate-wstrdate.md), [`_strdate_s`, `_wstrdate_s`](reference/strdate-s-wstrdate-s.md) | Return current system date as string. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`strftime`, `wcsftime`, `_strftime_l`, `_wcsftime_l`](reference/strftime-wcsftime-strftime-l-wcsftime-l.md) | Format date-and-time string for international use. |
+| [`_strtime`, `_wstrtime`](reference/strtime-wstrtime.md), [`_strtime_s`, `_wstrtime_s`](reference/strtime-s-wstrtime-s.md) | Return current system time as string. The versions of these functions with the **`_s`** suffix are more secure. |
+| [`time`, `_time32`, `_time64`](reference/time-time32-time64.md) | Get current system time as type **`time_t`**, **`__time32_t`** or as type **`__time64_t`**. |
+| [`_tzset`](reference/tzset.md) | Set external time variables from environment time variable **`TZ`**. |
+| [`_utime`, `_utime32`, `_utime64`, `_wutime`, `_wutime32`, `_wutime64`](reference/utime-utime32-utime64-wutime-wutime32-wutime64.md) | Set modification time for specified file using either current time or time value stored in structure. |
 
 > [!NOTE]
 > In all versions of Microsoft C/C++ except Microsoft C/C++ version 7.0, and in all versions of Visual C++, the time function returns the current time as the number of seconds elapsed since midnight on January 1, 1970. In Microsoft C/C++ version 7.0, **`time`** returned the current time as the number of seconds elapsed since midnight on December 31, 1899.
 
 > [!NOTE]
-> In versions of Visual C++ and Microsoft C/C++ before Visual Studio 2005, **`time_t`** was a **`long int`** (32 bits) and hence could not be used for dates past 3:14:07 January 19, 2038, UTC. **`time_t`** is now equivalent to **`__time64_t`** by default, but defining `_USE_32BIT_TIME_T` changes **`time_t`** to **`__time32_t`** and forces many time functions to call versions that take the 32-bit **`time_t`**. For more information, see [Standard types](./standard-types.md) and comments in the documentation for the individual time functions.
+> In versions of Visual C++ and Microsoft C/C++ before Visual Studio 2005, **`time_t`** was a **`long int`** (32 bits) and hence could not be used for dates past 3:14:07 January 19, 2038, UTC. **`time_t`** is now equivalent to **`__time64_t`** by default, but defining `_USE_32BIT_TIME_T` changes **`time_t`** to **`__time32_t`** and forces many time functions to call versions that take the 32-bit **`time_t`**. For more information, see [Standard types](standard-types.md) and comments in the documentation for the individual time functions.
 
 ## See also
 
-[Universal C runtime routines by category](./run-time-routines-by-category.md)
+[Universal C runtime routines by category](run-time-routines-by-category.md)
diff --git a/docs/c-runtime-library/toc.yml b/docs/c-runtime-library/toc.yml
index 4eb9c708b3..926d9dd23f 100644
--- a/docs/c-runtime-library/toc.yml
+++ b/docs/c-runtime-library/toc.yml
@@ -75,7 +75,7 @@ items:
     - name: Global state in the CRT
       href: ../c-runtime-library/global-state.md
     - name: Type-generic math
-      href: ../c-runtime-library/tgmath.md 
+      href: ../c-runtime-library/tgmath.md
     - name: C runtime (CRT) and C++ Standard Library (STL) .lib files
       href: ../c-runtime-library/crt-library-features.md
 - name: Universal C runtime routines by category
diff --git a/docs/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes.md b/docs/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes.md
index c6c1034d8e..2a38a3ec73 100644
--- a/docs/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes.md
+++ b/docs/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes.md
@@ -1,7 +1,7 @@
 ---
 title: "Unicode Stream I/O in Text and Binary Modes"
 description: "A description of character conversions with Unicode stream I/O."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["stream I/O routines", "I/O [CRT], unicode stream", "Unicode, stream I/O routines", "Unicode stream I/O"]
 ms.assetid: 68be0c3e-a9e6-4fd5-b34a-1b5207f0e7d6
diff --git a/docs/c-runtime-library/unicode-the-wide-character-set.md b/docs/c-runtime-library/unicode-the-wide-character-set.md
index 9fbde6648e..b78b180c2a 100644
--- a/docs/c-runtime-library/unicode-the-wide-character-set.md
+++ b/docs/c-runtime-library/unicode-the-wide-character-set.md
@@ -1,7 +1,7 @@
 ---
 title: "Unicode: The Wide-Character Set"
 description: "An introduction to the Unicode wide character set in the Microsoft C runtime."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Unicode [C++], wide character set", "wide characters [C++], Unicode"]
 ms.assetid: b6a05a21-59a5-4d30-8c85-2dbe185f7a74
diff --git a/docs/c-runtime-library/unix.md b/docs/c-runtime-library/unix.md
index 5d63b80fd2..e8aec36694 100644
--- a/docs/c-runtime-library/unix.md
+++ b/docs/c-runtime-library/unix.md
@@ -2,7 +2,7 @@
 title: "UNIX"
 description: "Guidelines for porting your program to Unix."
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["unix"]
 helpviewer_keywords: ["UNIX", "POSIX compatibility", "POSIX file names", "UNIX, compatibility"]
 ms.assetid: 40792414-7a5b-415d-bfa8-2bfb1ebb3731
diff --git a/docs/c-runtime-library/using-generic-text-mappings.md b/docs/c-runtime-library/using-generic-text-mappings.md
index 357e8f4a54..388ffd3397 100644
--- a/docs/c-runtime-library/using-generic-text-mappings.md
+++ b/docs/c-runtime-library/using-generic-text-mappings.md
@@ -1,7 +1,7 @@
 ---
 title: "Using Generic-Text Mappings"
 description: "An introduction to Microsoft-specific mappings for data types, routines, and other objects in the C runtime."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 f1_keywords: ["_UNICODE"]
 helpviewer_keywords: ["_TXCHAR type", "TINT type", "_TCHAR type", "TSCHAR type", "TEXT type", "TCHAR type", "TCHAR.H data types, mappings defined in", "generic-text data types", "_TINT type", "TUCHAR type", "_UNICODE constant", "TXCHAR type", "generic-text mappings", "_TSCHAR type", "T type", "mappings, generic-text", "_TUCHAR type", "MBCS data type", "_MBCS data type", "_TEXT type", "UNICODE constant", "_T type"]
diff --git a/docs/c-runtime-library/using-tchar-h-data-types-with-mbcs.md b/docs/c-runtime-library/using-tchar-h-data-types-with-mbcs.md
index 2a18a51678..9a6ab1ceff 100644
--- a/docs/c-runtime-library/using-tchar-h-data-types-with-mbcs.md
+++ b/docs/c-runtime-library/using-tchar-h-data-types-with-mbcs.md
@@ -1,7 +1,7 @@
 ---
 title: "Using TCHAR.H Data Types with _MBCS"
 description: "An overview of how Microsoft C runtime text routines are mapped when you use TCHAR.H data types with the multibyte constant _MBCS."
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["TCHAR.H data types", "MBCS data type", "_MBCS data type"]
 ms.assetid: 48f471e7-9d2b-4a39-b841-16a0e15c0a18
diff --git a/docs/c-runtime-library/vprintf-functions.md b/docs/c-runtime-library/vprintf-functions.md
index bc1cb41d24..6119ea7428 100644
--- a/docs/c-runtime-library/vprintf-functions.md
+++ b/docs/c-runtime-library/vprintf-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: vprintf Functions"
 title: "vprintf Functions"
+description: "Learn more about: vprintf Functions"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["vprintf functions", "formatted text [C++]"]
-ms.assetid: 02ac7c51-eab1-4bf0-bf4c-77065e3fa744
 ---
 # `vprintf` functions
 
@@ -17,7 +16,7 @@ Each of the `vprintf` functions takes a pointer to an argument list, then format
 [`_vprintf_p`, `_vprintf_p_l`, `_vwprintf_p`, `_vwprintf_p_l`](./reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md)\
 [`vprintf_s`, `_vprintf_s_l`, `vwprintf_s`, `_vwprintf_s_l`](./reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md)\
 [`_vscprintf`, `_vscprintf_l`, `_vscwprintf`, `_vscwprintf_l`](./reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md)\
-[`_vsnprintf`, `_vsnwprintf`](./reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md)
+[`_vsnprintf`, `_vsnwprintf`](./reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md)\
 [`vsprintf`, `vswprintf`](./reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md)\
 [`_vsprintf_p`, `_vsprintf_p_l`, `_vswprintf_p`, `_vswprintf_p_l`](./reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md)\
 [`vsprintf_s`, `_vsprintf_s_l`, `vswprintf_s`, `_vswprintf_s_l`](./reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md)
diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
index 8ae34ccfbc..f2c9b0519b 100644
--- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
+++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
@@ -1,8 +1,7 @@
 ---
-description: "Learn more about: Cloud and Web Programming in Visual C++"
 title: "Cloud and Web Programming in Visual C++"
+description: "Learn more about: Cloud and Web Programming in Visual C++"
 ms.date: "05/14/2019"
-ms.assetid: b63611f1-9723-44d0-ba7f-c3ebef341313
 ms.topic: "overview"
 ms.custom: intro-overview
 ---
@@ -43,7 +42,7 @@ In C++, you have several options for connecting to the web and the cloud.
 
 - [Windows::Web::Http::HttpClient](/uwp/api/windows.web.http.httpclient)
 
-  A Windows Runtime HTTP client class modeled on the .NET Framework class of the same name in the System.Web namespace. `HttpClient` fully supports asynchronous upload and download over HTTP, and pipeline filters that enable the insertion of custom HTTP handlers into the pipeline. The Windows SDK includes sample filters for metered networks, OAuth authentication, and more. For apps that target only Universal Windows Platform, we recommend that you use the `Windows::Web:HttpClient` class.
+  A Windows Runtime HTTP client class modeled on the .NET Framework class of the same name in the System.Web namespace. `HttpClient` fully supports asynchronous upload and download over HTTP, and pipeline filters that enable the insertion of custom HTTP handlers into the pipeline. The Windows SDK includes sample filters for metered networks, OAuth authentication, and more. For apps that target only Universal Windows Platform, we recommend that you use the `Windows::Web::Http::HttpClient` class.
 
 - [IXMLHTTPRequest2 interface](/windows/win32/api/msxml6/nn-msxml6-ixmlhttprequest2)
 
@@ -55,6 +54,6 @@ In C++, you have several options for connecting to the web and the cloud.
 
 ## See also
 
-[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md) <br/>
-[Microsoft Azure C and C++ Developer Center](https://azure.microsoft.com/develop/cpp/) <br/>
+[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)\
+[Microsoft Azure C and C++ Developer Center](https://azure.microsoft.com/develop/cpp/)\
 [Networks and web services (UWP)](/windows/uwp/networking/)
diff --git a/docs/code-quality/annotating-function-behavior.md b/docs/code-quality/annotating-function-behavior.md
index 4458f342c2..98a9bf99f6 100644
--- a/docs/code-quality/annotating-function-behavior.md
+++ b/docs/code-quality/annotating-function-behavior.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Annotating function behavior"
 title: Annotating function behavior
 ms.date: 11/04/2016
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_On_failure_"
   - "_Return_type_success_"
diff --git a/docs/code-quality/annotating-function-parameters-and-return-values.md b/docs/code-quality/annotating-function-parameters-and-return-values.md
index bd9ffdd453..5c0a0531f0 100644
--- a/docs/code-quality/annotating-function-parameters-and-return-values.md
+++ b/docs/code-quality/annotating-function-parameters-and-return-values.md
@@ -2,7 +2,7 @@
 title: Annotating function parameters and return values
 description: "Reference guide to function parameter and return value annotations."
 ms.date: 10/15/2019
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_Outptr_opt_result_bytebuffer_to_"
   - "_Inout_updates_all_opt_"
diff --git a/docs/code-quality/annotating-locking-behavior.md b/docs/code-quality/annotating-locking-behavior.md
index a362074bad..99bb3bf25e 100644
--- a/docs/code-quality/annotating-locking-behavior.md
+++ b/docs/code-quality/annotating-locking-behavior.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Annotating Locking Behavior"
 title: Annotating Locking Behavior
 ms.date: 08/24/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_Releases_nonreentrant_lock_"
   - "_Lock_kind_mutex_"
diff --git a/docs/code-quality/annotating-structs-and-classes.md b/docs/code-quality/annotating-structs-and-classes.md
index 32669912be..fdc83bc210 100644
--- a/docs/code-quality/annotating-structs-and-classes.md
+++ b/docs/code-quality/annotating-structs-and-classes.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: Annotating Structs and Classes"
 title: Annotating Structs and Classes
+description: "Learn more about: Annotating Structs and Classes"
 ms.date: 06/28/2019
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_Field_size_bytes_part_"
   - "_Field_size_bytes_full_opt_"
@@ -19,7 +19,6 @@ f1_keywords:
   - "_Field_size_full_"
   - "_Field_size_full_opt_"
   - "_Field_z_"
-ms.assetid: b8278a4a-c86e-4845-aa2a-70da21a1dd52
 ---
 # Annotating Structs and Classes
 
@@ -52,13 +51,11 @@ You can annotate struct and class members by using annotations that act like inv
      Applies to struct or class declaration.  Indicates that a valid object of that type may be larger than the declared type, with the number of bytes being specified by `size`.  For example:
 
     ```cpp
-
     typedef _Struct_size_bytes_(nSize)
     struct MyStruct {
         size_t nSize;
         ...
     };
-
     ```
 
      The buffer size in bytes of a parameter `pM` of type `MyStruct *` is then taken to be:
diff --git a/docs/code-quality/best-practices-and-examples-sal.md b/docs/code-quality/best-practices-and-examples-sal.md
index 320b8100d3..aa2b6e986b 100644
--- a/docs/code-quality/best-practices-and-examples-sal.md
+++ b/docs/code-quality/best-practices-and-examples-sal.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Best practices and examples (SAL)"
 title: Best practices and examples (SAL)
 ms.date: 03/30/2023
-ms.topic: "conceptual"
+ms.topic: "best-practice"
 ---
 # Best practices and examples (SAL)
 
diff --git a/docs/code-quality/build-reliable-secure-programs.md b/docs/code-quality/build-reliable-secure-programs.md
index 13341b3094..94181eb5c9 100644
--- a/docs/code-quality/build-reliable-secure-programs.md
+++ b/docs/code-quality/build-reliable-secure-programs.md
@@ -1,8 +1,8 @@
 ---
 title: Build reliable and secure C++ programs
 description: "Learn more about: Building reliable and secure C++ programs by applying NISTIR 8397 guidelines."
-ms.date: 09/28/2023
-ms.topic: "conceptual"
+ms.date: 04/25/2025
+ms.topic: "concept-article"
 ---
 
 # Build reliable and secure C++ programs
@@ -182,7 +182,7 @@ Remove the now-invalidated secrets from your source code, and replace them with
 
 **Azure DevOps (AzDO)**
 
-AzDO users can scan their code through GitHub Advanced Security for Azure DevOps (GHAzDO). GHAzDO also allows users to prevent secret exposures by enabling Push Protection on their repositories, catching potential exposures before they're ever leaked. For more information on how to detect hardcoded secrets in code in Azure DevOps, see *Secret Scanning for Github Advanced Security for Azure DevOps* in each of the following links:
+AzDO users can scan their code through GitHub Advanced Security for Azure DevOps (GHAzDO). GHAzDO also allows users to prevent secret exposures by enabling Push Protection on their repositories, catching potential exposures before they're ever leaked. For more information on how to detect hardcoded secrets in code in Azure DevOps, see *Secret Scanning for GitHub Advanced Security for Azure DevOps* in each of the following links:
 
 - [GitHub advanced security for Azure DevOps](https://azure.microsoft.com/products/devops/github-advanced-security)
 - [Secret Scanning for GitHub Advanced Security for Azure DevOps](/azure/devops/repos/security/github-advanced-security-secret-scanning)
@@ -205,11 +205,11 @@ GitHub provides known patterns of secrets for partners and users that can be con
 
 **Additional resources**
 
-- [Credential Scanning | Microsoft Code With Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/credential_scanning/).
-- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets/) - an aptly named module for detecting secrets within a code base.
-- [Running detect-secrets in Azure Pipelines](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/).
+- [Credential Scanning | Microsoft Code With Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/credential_scanning/).
+- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets/) - an aptly named module for detecting secrets within a code base.
+- [Running detect-secrets in Azure Pipelines](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets-ado/).
 - [Git-secrets | GitHub awslabs](https://github.com/awslabs/git-secrets) - prevents you from committing passwords and other sensitive information to a git repository.
-- [Secrets Management | Microsoft Code with Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/continuous-delivery/secrets-management/) - provides general guidelines on how secrets should be managed.
+- [Secrets Management | Microsoft Code with Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/) - provides general guidelines on how secrets should be managed.
 
 ## 2.5 Run with language- and OS-provided checks and protection
 
@@ -395,7 +395,7 @@ When using both sanitizers such as [Address Sanitizer (ASan)](../sanitizers/asan
 
 **Azure and GitHub CI/CD**
 
-Modify your build(s) to support continuous creation of executables that use LibFuzzer or AFL++. You can add extra computing resources required for fuzzing at services like  OSS-Fuzz or OneFuzz.
+Modify your build(s) to support continuous creation of executables that use LibFuzzer or AFL++. You can add extra computing resources required for fuzzing at services like  OSS-Fuzz.
 
 ## 2.10 Web Application Scanning
 
diff --git a/docs/code-quality/c1250.md b/docs/code-quality/c1250.md
index 26582cfe00..593bf2fe4d 100644
--- a/docs/code-quality/c1250.md
+++ b/docs/code-quality/c1250.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1250"
 description: "Learn more about: Fatal error C1250"
-title: Fatal error C1250
 ms.date: 10/04/2022
 f1_keywords: ["C1250", "FATALERROR_UnableToLoadPlugin"]
 helpviewer_keywords: ["C1250"]
-ms.assetid: 3f2385d7-e0d6-4574-8cea-342e82d0aea4
 ---
 # Fatal error C1250
 
 > Unable to load plug-in '*plugin-name*'.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin, not in the code being analyzed.
diff --git a/docs/code-quality/c1251.md b/docs/code-quality/c1251.md
index ca58d7858b..369f49e98e 100644
--- a/docs/code-quality/c1251.md
+++ b/docs/code-quality/c1251.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1251"
 description: "Learn more about: Fatal error C1251"
-title: Fatal error C1251
 ms.date: 10/04/2022
 f1_keywords: ["C1251", "FATALERROR_UnableToLoadModel"]
 helpviewer_keywords: ["C1251"]
-ms.assetid: 0b46e0a5-c290-48d8-ba4e-f526ae68993b
 ---
 # Fatal error C1251
 
 > Unable to load models.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the model file, not in the code being analyzed.
diff --git a/docs/code-quality/c1252.md b/docs/code-quality/c1252.md
index 4cdf0a1612..3e679ec2d3 100644
--- a/docs/code-quality/c1252.md
+++ b/docs/code-quality/c1252.md
@@ -1,15 +1,16 @@
 ---
+title: "Fatal error C1252"
 description: "Learn more about: Fatal error C1252"
-title: Fatal error C1252
 ms.date: 10/04/2022
 f1_keywords: ["C1252", "FATALERROR_CircularDependency"]
 helpviewer_keywords: ["C1252"]
-ms.assetid: e88bf199-890d-4582-bb5c-c1238797145b
 ---
 # Fatal error C1252
 
 > Circular or missing dependency between plugins: '*plugin-name*' requires GUID '*globally-unique-identifier*'
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin dependencies. It's not caused by an issue in the code being analyzed.
 
 In some cases, it's possible to work around this issue by disabling the **Enable Code Analysis on Build** property. To disable this build property, open the Property pages dialog for your project. In the **Solution Explorer** window, right-click on the project (not the solution) and select **Properties** in the shortcut menu. Set the **Configuration** to **All Configurations** and the **Platform** to **All Platforms**. Open the **Configuration Properties** > **Code Analysis** > **General** property page. Modify the **Enable Code Analysis on Build** property to **No**. Choose **OK** to save your changes, and then save your project files. Rebuild your project to verify that the issue no longer occurs.
diff --git a/docs/code-quality/c1253.md b/docs/code-quality/c1253.md
index 3276546314..568be82155 100644
--- a/docs/code-quality/c1253.md
+++ b/docs/code-quality/c1253.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1253"
 description: "Learn more about: Fatal error C1253"
-title: Fatal error C1253
 ms.date: 10/04/2022
 f1_keywords: ["C1253", "FATALERROR_UnableToLoadModelFile"]
 helpviewer_keywords: ["C1253"]
-ms.assetid: 21a4062f-fde8-40e5-8dbd-6f892926d3d2
 ---
 # Fatal error C1253
 
 > Unable to load model file.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the model file, not in the code being analyzed.
diff --git a/docs/code-quality/c1254.md b/docs/code-quality/c1254.md
index e584d07eee..b77f3f40da 100644
--- a/docs/code-quality/c1254.md
+++ b/docs/code-quality/c1254.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1254"
 description: "Learn more about: Fatal error C1254"
-title: Fatal error C1254
 ms.date: 10/04/2022
 f1_keywords: ["C1254", "FATALERROR_PluginVersionMismatch"]
 helpviewer_keywords: ["C1254"]
-ms.assetid: cb1377cf-869e-432d-941f-71f77134f97a
 ---
 # Fatal error C1254
 
 > Plugin version mismatch: '*module*' version '*version-number*' doesn't match the version '*version-number*' of the PREfast driver
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error with the plugin version, not in the code being analyzed.
diff --git a/docs/code-quality/c1255.md b/docs/code-quality/c1255.md
index 9480c693e1..1f3b9d92e5 100644
--- a/docs/code-quality/c1255.md
+++ b/docs/code-quality/c1255.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1255"
 description: "Learn more about: Fatal error C1255"
-title: Fatal error C1255
 ms.date: 10/04/2022
 f1_keywords: ["C1255", "FATALERROR_PCHSyncLost"]
 helpviewer_keywords: ["C1255"]
-ms.assetid: a97da6bd-06dc-42bf-9158-0de1ebb90d4a
 ---
 # Fatal error C1255
 
 > PCH data for plugin '*plugin-name*' has incorrect length.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the tool, not in the code being analyzed.
diff --git a/docs/code-quality/c1256.md b/docs/code-quality/c1256.md
index 54a456fa9e..bdf7af0eff 100644
--- a/docs/code-quality/c1256.md
+++ b/docs/code-quality/c1256.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1256"
 description: "Learn more about: Fatal error C1256"
-title: Fatal error C1256
 ms.date: 10/04/2022
 f1_keywords: ["C1256", "FATALERROR_PCHInconsistent"]
 helpviewer_keywords: ["C1256"]
-ms.assetid: 4d65e495-f9d9-435c-ba51-1cf5b4cc2309
 ---
 # Fatal error C1256
 
 > '*plugin-name*': PCH must be both written and read.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the tool, not in the code being analyzed.
diff --git a/docs/code-quality/c1257.md b/docs/code-quality/c1257.md
index c104af70b7..b4e698c29b 100644
--- a/docs/code-quality/c1257.md
+++ b/docs/code-quality/c1257.md
@@ -1,13 +1,14 @@
 ---
+title: "Fatal error C1257"
 description: "Learn more about: Fatal error C1257"
-title: Fatal error C1257
 ms.date: 10/04/2022
 f1_keywords: ["C1257", "FATALERROR_InitFailure"]
 helpviewer_keywords: ["C1257"]
-ms.assetid: 38d3ec05-01ba-42b3-aac6-077e92bf2ded
 ---
 # Fatal error C1257
 
 > '*Plugin-name*': Initialization Failure.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin, not in the code being analyzed.
diff --git a/docs/code-quality/c1258.md b/docs/code-quality/c1258.md
index accca5c1d8..46de1a74a7 100644
--- a/docs/code-quality/c1258.md
+++ b/docs/code-quality/c1258.md
@@ -1,6 +1,6 @@
 ---
+title: "Fatal error C1258"
 description: "Learn more about: Fatal error C1258"
-title: Fatal error C1258
 ms.date: 10/04/2022
 f1_keywords: ["C1258", "FATALERROR_SaveToXmlFailed"]
 helpviewer_keywords: ["C1258"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1258"]
 
 > Failed to save XML Log file '*filename*'. *Message*.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin, not in the code being analyzed.
diff --git a/docs/code-quality/c1259.md b/docs/code-quality/c1259.md
index 0d22874e87..0dd892f8ae 100644
--- a/docs/code-quality/c1259.md
+++ b/docs/code-quality/c1259.md
@@ -1,6 +1,6 @@
 ---
+title: "Fatal error C1259"
 description: "Learn more about: Fatal error C1259"
-title: Fatal error C1259
 ms.date: 10/04/2022
 f1_keywords: ["C1259", "FATALERROR_FatalError"]
 helpviewer_keywords: ["C1259"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1259"]
 
 > A fatal error was issued by a plugin.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin, not in the code being analyzed.
diff --git a/docs/code-quality/c1260.md b/docs/code-quality/c1260.md
index 6cf3642c1d..8142771589 100644
--- a/docs/code-quality/c1260.md
+++ b/docs/code-quality/c1260.md
@@ -1,6 +1,6 @@
 ---
+title: "Fatal error C1260"
 description: "Learn more about: Fatal error C1260"
-title: Fatal error C1260
 ms.date: 10/04/2022
 f1_keywords: ["C1260", "FATALERROR_DuplicateId"]
 helpviewer_keywords: ["C1260"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1260"]
 
 > The plugins '*plugin-1*' and '*plugin-2*' share the same id. It is not supported to load the same plugin twice.
 
+## Remarks
+
 The Code Analysis tool reports this error when there's an internal error in the plugin, not in the code being analyzed.
diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md
new file mode 100644
index 0000000000..487cad505f
--- /dev/null
+++ b/docs/code-quality/c26132.md
@@ -0,0 +1,73 @@
+---
+title: Warning C26132
+description: Documentation on static analysis warning C26132
+author:      Rastaban
+ms.author:   philc
+ms.service: visual-cpp
+ms.topic: concept-article
+ms.date:     02/11/2025
+---
+# Warning C26132
+
+> Variable '*variable name*' should be protected by '*lock 1*', but '*lock 2*' is held instead. Possible annotation mismatch.
+
+The analyzer issues Warning C26132 when it detects that a lock, which is annotated to protect a value, isn't held while accessing the value. However, a related lock is held. The code may be thread-safe, so you might need to update the annotations.
+
+This diagnostic usually doesn't indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If so, the diagnostic should be resolved as there may be other static analysis issues that aren't being reported due to the inconsistent annotations.
+
+## Examples
+
+In the following example, C26132 is emitted when `data` is used.
+
+ The annotation specifies that `customLock01` should protect the variable `data`, but `CustomLockAcquire` is responsible for acquiring the related lock `customLock01->cs`.
+
+```cpp
+#include <sal.h>
+struct CustomLock 
+{
+    int cs; // "Critical Section" lock
+};
+
+_Acquires_exclusive_lock_(criticalSection->cs) // notice the `->` indirection
+void CustomLockAcquire(CustomLock* criticalSection);
+
+_Releases_lock_(criticalSection->cs) // notice the `->` indirection
+void CustomLockRelease(CustomLock* criticalSection);
+
+// global lock
+CustomLock customLock01;
+
+void Initialize(_Guarded_by_(customLock01) int* data)
+{
+    CustomLockAcquire(&customLock01);
+    *data = 1; // C26132
+    CustomLockRelease(&customLock01);
+}
+```
+
+In this example, the `Initialize` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. The warning could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`.
+
+```cpp
+#include <sal.h>
+struct CustomLock 
+{
+    int cs; // "Critical Section" lock
+};
+
+_Acquires_exclusive_lock_(criticalSection)
+void CustomLockAcquire(CustomLock* criticalSection);
+
+_Releases_lock_(criticalSection)
+void CustomLockRelease(CustomLock* criticalSection);
+
+// global lock
+CustomLock customLock01;
+
+void Initialize(_Guarded_by_(customLock01) int* data)
+{
+    CustomLockAcquire(&customLock01);
+    *data = 1;
+    CustomLockRelease(&customLock01);
+}
+```
+
diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md
new file mode 100644
index 0000000000..e1067f9c3a
--- /dev/null
+++ b/docs/code-quality/c26133.md
@@ -0,0 +1,76 @@
+---
+title: Warning C26133
+description: Documentation on static analysis warning C26133
+author:      Rastaban
+ms.author:   philc
+ms.service: visual-cpp
+ms.topic: concept-article
+ms.date:     02/19/2025
+---
+# Warning C26133
+
+> Caller failing to hold lock '*lock 1*' before calling function '*function name*', but '*lock 2*' is held instead. Possible annotation mismatch.
+
+Warning C26133 is issued when the analyzer detects that the lock required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It's possible the code is thread-safe, and the annotations need to be updated.
+
+This diagnostic usually doesn't indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If so, the diagnostic should be resolved as there may be other static analysis issues that aren't being reported due to the inconsistent annotations.
+
+## Examples
+
+In the following example, C26133 is emitted when `DoTaskWithCustomLock` is called.
+
+>  warning C26133: Caller failing to hold lock 'customLock01' before calling function 'DoTaskWithCustomLock', but '(&customLock01)->cs' is held instead. Possible annotation mismatch.
+
+```cpp
+#include <sal.h>
+
+struct CustomLock
+{
+    int cs; // "Critical Section"
+};
+
+_Acquires_exclusive_lock_(criticalSection->cs) // notice the `->` indirection
+void CustomLockAcquire(CustomLock* criticalSection);
+
+_Releases_lock_(criticalSection->cs) // notice the `->` indirection
+void CustomLockRelease(CustomLock* criticalSection);
+
+CustomLock customLock01;
+
+_Requires_lock_held_(customLock01) void DoTaskWithCustomLock();
+
+void DoTask()
+{
+    CustomLockAcquire(&customLock01);
+    DoTaskWithCustomLock(); // C26133
+    CustomLockRelease(&customLock01);
+}
+```
+
+In this example, the `DoTask` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. The warning could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`.
+
+```cpp
+#include <sal.h>
+
+struct CustomLock
+{
+    int cs; // "Critical Section"
+};
+
+_Acquires_exclusive_lock_(criticalSection)
+void CustomLockAcquire(CustomLock* criticalSection);
+
+_Releases_lock_(criticalSection)
+void CustomLockRelease(CustomLock* criticalSection);
+
+CustomLock customLock01;
+
+_Requires_lock_held_(customLock01) void DoTaskWithCustomLock();
+
+void DoTask()
+{
+    CustomLockAcquire(&customLock01);
+    DoTaskWithCustomLock();
+    CustomLockRelease(&customLock01);
+}
+```
\ No newline at end of file
diff --git a/docs/code-quality/c26135.md b/docs/code-quality/c26135.md
index bbd4c04054..96db147d01 100644
--- a/docs/code-quality/c26135.md
+++ b/docs/code-quality/c26135.md
@@ -25,14 +25,14 @@ typedef struct _DATA
 void MyEnter(DATA* p)
 {
     // Warning C26135:
-    // Missing side effect annotation _Acquires_lock_(&p->cs)
+    // Missing side effect annotation _Acquires_lock_(p->cs)
     EnterCriticalSection(&p->cs);
 }
 
 void MyLeave(DATA* p)
 {
     // warning C26135:
-    // Missing side effect annotation _Releases_lock_(&p->cs)
+    // Missing side effect annotation _Releases_lock_(p->cs)
     LeaveCriticalSection(&p->cs);
 }
 ```
diff --git a/docs/code-quality/c26400.md b/docs/code-quality/c26400.md
index ccdd3a65e3..e4819ceeaa 100644
--- a/docs/code-quality/c26400.md
+++ b/docs/code-quality/c26400.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26400"]
 
 ## Remarks
 
-This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner<T>` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).
+This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner<T>` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource).
 
 The easiest way to fix this warning is to use **`auto`** declaration if the resource is assigned immediately at the variable declaration. If this fix isn't possible, then we suggest that you use the type `gsl::owner<T>`. The **`auto`** declarations initialized with operator **`new`** are "owners" because we assume that the result of any allocation is implicitly an owner pointer. We transfer this assumption to the **`auto`** variable and treat it as `owner<T>`.
 
diff --git a/docs/code-quality/c26401.md b/docs/code-quality/c26401.md
index ef45225be5..0029e443d5 100644
--- a/docs/code-quality/c26401.md
+++ b/docs/code-quality/c26401.md
@@ -20,7 +20,7 @@ Code analysis name: `DONT_DELETE_NON_OWNER`
 
 ## See also
 
-[C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t)
+[C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw)
 
 ## Examples
 
@@ -63,7 +63,7 @@ public:
         ref_count_--;
         if (ref_count_ == 0)
         {
-            [[gsl::suppress(i.11)]]
+            [[gsl::suppress("i.11")]]
             delete this; 
         }
     }
diff --git a/docs/code-quality/c26402.md b/docs/code-quality/c26402.md
index b79483f914..16f0f248d2 100644
--- a/docs/code-quality/c26402.md
+++ b/docs/code-quality/c26402.md
@@ -12,7 +12,7 @@ ms.assetid: b9d3d398-697a-4a5d-8bfe-9c667dffb90b
 
 ## Remarks
 
-To avoid confusion about whether a pointer owns an object, a function that returns a movable object should allocate it on the stack. It should then return the object by value instead of returning a heap-allocated object. If pointer semantics are required, return a smart pointer instead of a raw pointer. For more information, see [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr): *Warn if a function returns an object that was allocated within the function but has a move constructor. Suggest considering returning it by value instead.*
+To avoid confusion about whether a pointer owns an object, a function that returns a movable object should allocate it on the stack. It should then return the object by value instead of returning a heap-allocated object. If pointer semantics are required, return a smart pointer instead of a raw pointer. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr): *Warn if a function returns an object that was allocated within the function but has a move constructor. Suggest considering returning it by value instead.*
 
 ## Example
 
diff --git a/docs/code-quality/c26403.md b/docs/code-quality/c26403.md
index 2501899487..801e33dce9 100644
--- a/docs/code-quality/c26403.md
+++ b/docs/code-quality/c26403.md
@@ -12,7 +12,7 @@ ms.assetid: 7e14868d-df86-4df3-98d3-71b1e80ba14e
 
 Owner pointers are like unique pointers: they own a resource exclusively, and manage release of the resource, or its transfers to other owners. This check validates that a local owner pointer properly maintains its resource through all execution paths in a function. If the resource wasn't transferred to another owner, or wasn't explicitly release, the checker warns, and points to the declaration of the pointer variable.
 
-For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).
+For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource).
 
 ## Remarks
 
diff --git a/docs/code-quality/c26405.md b/docs/code-quality/c26405.md
index cf14b63ea6..8c8d2b45eb 100644
--- a/docs/code-quality/c26405.md
+++ b/docs/code-quality/c26405.md
@@ -12,7 +12,7 @@ ms.assetid: 2034d961-3ec5-4184-bbef-aa792e4c03c0
 
 ## Remarks
 
-If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r3-a-raw-pointer-a-t-is-non-owning).
+If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 Code analysis name: `DONT_ASSIGN_TO_VALID`
 
diff --git a/docs/code-quality/c26406.md b/docs/code-quality/c26406.md
index 1dc0b113bf..3027afd728 100644
--- a/docs/code-quality/c26406.md
+++ b/docs/code-quality/c26406.md
@@ -10,7 +10,7 @@ ms.assetid: 02fb8e23-1989-4e24-a5a5-e30f71d00325
 
 > Do not assign a raw pointer to an `owner<T>` (r.3)
 
-This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r3-a-raw-pointer-a-t-is-non-owning).
+This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 ## Remarks
 
diff --git a/docs/code-quality/c26407.md b/docs/code-quality/c26407.md
index d082e56681..79022356f0 100644
--- a/docs/code-quality/c26407.md
+++ b/docs/code-quality/c26407.md
@@ -10,7 +10,7 @@ ms.assetid: 5539907a-bfa0-40db-82a6-b860c97209e1
 
 > Prefer scoped objects, don't heap-allocate unnecessarily (r.5)
 
-To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r5-prefer-scoped-objects-dont-heap-allocate-unnecessarily): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better.
+To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better.
 
 ## Remarks
 
diff --git a/docs/code-quality/c26408.md b/docs/code-quality/c26408.md
index 159c8cbfb0..423b99d972 100644
--- a/docs/code-quality/c26408.md
+++ b/docs/code-quality/c26408.md
@@ -22,7 +22,7 @@ Code analysis name: `NO_MALLOC_FREE`
 
 ## See also
 
-[C++ Core Guidelines R.10](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r10-avoid-malloc-and-free)
+[C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-mallocfree)
 
 ## Example
 
diff --git a/docs/code-quality/c26409.md b/docs/code-quality/c26409.md
index 8939a08776..459ce8cf92 100644
--- a/docs/code-quality/c26409.md
+++ b/docs/code-quality/c26409.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about CppCoreCheck rule C26409: avoid explicit new and delete."
 title: Warning C26409
+description: "Learn more about CppCoreCheck rule C26409: avoid explicit new and delete."
 ms.date: 12/14/2020
 f1_keywords: ["C26409", "NO_NEW_DELETE"]
 helpviewer_keywords: ["C26409"]
-ms.assetid: a3b3a229-d566-4be3-bd28-2876ccc8dc37
 ---
 # Warning C26409
 
@@ -13,7 +12,7 @@ ms.assetid: a3b3a229-d566-4be3-bd28-2876ccc8dc37
 Even if code is clean of calls to `malloc` and `free`, we still suggest that you consider better options than explicit use of operators [`new` and `delete`](../cpp/new-and-delete-operators.md).
 
 **C++ Core Guidelines**:\
-[R.11: Avoid calling new and delete explicitly](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r11-avoid-calling-new-and-delete-explicitly)
+[R.11: Avoid calling `new` and `delete` explicitly](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-newdelete)
 
 The ultimate fix is to use smart pointers and appropriate factory functions, such as [`std::make_unique`](../standard-library/memory-functions.md#make_unique).
 
@@ -49,7 +48,7 @@ public:
         ref_count_--;
         if (ref_count_ == 0)
         {
-            [[gsl::suppress(i.11)]]
+            [[gsl::suppress("i.11")]]
             delete this; 
         }
     }
diff --git a/docs/code-quality/c26410.md b/docs/code-quality/c26410.md
index ea77c9e0df..6a8429c1ec 100644
--- a/docs/code-quality/c26410.md
+++ b/docs/code-quality/c26410.md
@@ -10,11 +10,11 @@ ms.assetid: d1547faf-96c6-48da-90f5-841154d0e878
 
 > The parameter '*parameter*' is a reference to const unique pointer, use `const T*` or `const T&` instead (r.32)
 
-Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget).
+Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-uniqueptrparam).
 
 ## Remarks
 
-- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r31-if-you-have-non-std-smart-pointers-follow-the-basic-pattern-from-std): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter.
+- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smart): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter.
 
 - Template code may produce noisy warnings. Keep in mind that templates can be instantiated with various type parameters with different levels of indirection, including references. Some warnings may not be obvious and fixes may require some rework of templates (for example, explicit removal of reference indirection). If template code is intentionally generic, the warning can be suppressed.
 
diff --git a/docs/code-quality/c26411.md b/docs/code-quality/c26411.md
index d0ff131460..cf66a21b4d 100644
--- a/docs/code-quality/c26411.md
+++ b/docs/code-quality/c26411.md
@@ -10,7 +10,7 @@ ms.assetid: 5134e51e-8b92-4ee7-94c3-022e318a0e24
 
 > The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use `T*` or `T&` instead (r.33)
 
-When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r33-take-a-unique_ptrwidget-parameter-to-express-that-a-function-reseats-thewidget): *Take a unique_ptr\<widget\>& parameter to express that a function reseats the widget*.
+When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-reseat): *Take a unique_ptr\<widget\>& parameter to express that a function reseats the widget*.
 
 ## Remarks
 
diff --git a/docs/code-quality/c26414.md b/docs/code-quality/c26414.md
index 471b69d1d9..704a57d4e8 100644
--- a/docs/code-quality/c26414.md
+++ b/docs/code-quality/c26414.md
@@ -4,7 +4,6 @@ description: "Reference for Visual Studio C++ Core Guidelines code analysis warn
 ms.date: 01/29/2020
 f1_keywords: ["C26414", "RESET_LOCAL_SMART_PTR"]
 helpviewer_keywords: ["C26414"]
-ms.assetid: dd875d0c-6752-4491-a533-3e8831795fbc
 ---
 # Warning C26414
 
diff --git a/docs/code-quality/c26415.md b/docs/code-quality/c26415.md
index 8dfc40ae41..93c445fc29 100644
--- a/docs/code-quality/c26415.md
+++ b/docs/code-quality/c26415.md
@@ -11,7 +11,7 @@ ms.assetid: 4165f70a-78ae-4a03-b256-c4bd74b02d09
 > Smart pointer parameter is used only to access contained pointer. Use T* or T& instead.
 
 **C++ Core Guidelines**:
-[R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r30-take-smart-pointers-as-parameters-only-to-explicitly-express-lifetime-semantics): Take smart pointers as parameters only to explicitly express lifetime semantics
+[R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam): Take smart pointers as parameters only to explicitly express lifetime semantics
 
 Using a smart pointer type to pass data to a function indicates that the target function needs to manage the lifetime of the contained object. However, say the function only uses the smart pointer to access the contained object and never actually calls any code that may lead to its deallocation (that is, never affects its lifetime). Then there's usually no need to complicate the interface with smart pointers. A plain pointer or reference to the contained object is preferred.
 
diff --git a/docs/code-quality/c26416.md b/docs/code-quality/c26416.md
index 1bd6192adc..c658471dc4 100644
--- a/docs/code-quality/c26416.md
+++ b/docs/code-quality/c26416.md
@@ -11,7 +11,7 @@ ms.assetid: f158207b-45cf-44cf-8e4b-b5b75b56ea0e
 > Shared pointer parameter is passed by rvalue reference. Pass by value instead.
 
 **C++ Core Guidelines**:
-[R.34](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r34-take-a-shared_ptrwidget-parameter-to-express-that-a-function-is-part-owner): Take a shared_ptr\<widget> parameter to express that a function is part owner
+[R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-owner): Take a shared_ptr\<widget> parameter to express shared ownership
 
 Passing a shared pointer by rvalue reference is rarely necessary. Unless it's an implementation of move semantics for a shared pointer type itself, shared pointer objects can be safely passed by value. Using rvalue reference may be also an indication that unique pointer is more appropriate since it clearly transfers unique ownership from caller to callee.
 
diff --git a/docs/code-quality/c26417.md b/docs/code-quality/c26417.md
index 7659d01250..b8138b42ab 100644
--- a/docs/code-quality/c26417.md
+++ b/docs/code-quality/c26417.md
@@ -11,7 +11,7 @@ ms.assetid: 0e09fcc6-f9eb-4404-b51e-5815705c6afb
 > Shared pointer parameter is passed by reference and not reset or reassigned. Use T* or T& instead.
 
 **C++ Core Guidelines**:
-[R.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r35-take-a-shared_ptrwidget-parameter-to-express-that-a-function-might-reseat-the-shared-pointer): Take a shared_ptr\<widget>& parameter to express that a function might reseat the shared pointer
+[R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam): Take a shared_ptr\<widget>& parameter to express that a function might reseat the shared pointer
 
 Passing shared pointers by reference may be useful in scenarios where called code updates the target of the smart pointer object, and its caller expects to see such updates. Using a reference solely to reduce costs of passing a shared pointer is questionable. If called code only accesses the target object and never manages its lifetime, it's safer to pass a raw pointer or reference, rather than to expose resource management details.
 
diff --git a/docs/code-quality/c26418.md b/docs/code-quality/c26418.md
index d1a07d1b8d..d29c62c865 100644
--- a/docs/code-quality/c26418.md
+++ b/docs/code-quality/c26418.md
@@ -11,7 +11,7 @@ ms.assetid: d2c84a40-8a5d-4018-92c2-6498cdd9b541
 > Shared pointer parameter is not copied or moved. Use T* or T& instead.
 
 **C++ Core Guidelines**:
-[R.36](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r36-take-a-const-shared_ptrwidget-parameter-to-express-that-it-might-retain-a-reference-count-to-the-object-): Take a const shared_ptr\<widget>& parameter to express that it might retain a reference count to the object
+[R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-const): Take a const shared_ptr\<widget>& parameter to express that it might retain a reference count to the object
 
 If a shared pointer parameter is passed by value or by reference to a constant object, the function is expected to take control of the target object's lifetime without affecting the caller. The code should either copy or move the shared pointer parameter to another shared pointer object, or pass it along to other code by invoking functions that accept shared pointers. Otherwise, a plain pointer or reference may be feasible.
 
diff --git a/docs/code-quality/c26426.md b/docs/code-quality/c26426.md
index 818d76d22d..15289f08c7 100644
--- a/docs/code-quality/c26426.md
+++ b/docs/code-quality/c26426.md
@@ -12,7 +12,7 @@ ms.assetid: 6fb5f6d2-b097-47f8-8b49-f2fd4e9bef0e
 
 ## C++ Core Guidelines
 
-[I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects
+[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init): Avoid complex initialization of global objects
 
 The order of execution of initializers for global objects may be inconsistent or undefined, which can lead to issues that are hard to reproduce and investigate. To avoid such problems, global initializers shouldn't depend on external code that's executed at run time, and that may depend on data that's not yet initialized. This rule flags cases where global objects call functions to obtain their initial values.
 
diff --git a/docs/code-quality/c26427.md b/docs/code-quality/c26427.md
index 556e26de75..5586e4d46a 100644
--- a/docs/code-quality/c26427.md
+++ b/docs/code-quality/c26427.md
@@ -11,7 +11,7 @@ ms.assetid: 8fb95a44-8704-45b1-bc55-eccd59b1db2f
 > Global initializer accesses extern object '*symbol*' (i.22)
 
 **C++ Core Guidelines**:
-[I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects
+[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init): Avoid complex initialization of global objects
 
 Global objects may be initialized in an inconsistent or undefined order, which means that interdependency between them is risky and should be avoided. This guideline is applicable when initializers refer to another object that's considered to be **`extern`**.
 
diff --git a/docs/code-quality/c26429.md b/docs/code-quality/c26429.md
index 9543595243..857bffecf9 100644
--- a/docs/code-quality/c26429.md
+++ b/docs/code-quality/c26429.md
@@ -11,7 +11,7 @@ ms.assetid: 4e1c74d5-7307-436c-927b-f74ae863282c
 > Symbol is never tested for nullness, it can be marked as `gsl::not_null`.
 
 **C++ Core Guidelines**:
-[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a `not_null<T>` to indicate that "null" isn't a valid value
+[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a `not_null<T>` to indicate that "null" is not a valid value
 
 It's a common practice to use asserts to enforce assumptions about the validity of pointer values. The problem is, asserts don't expose assumptions through the interface (such as in return types or parameters). Asserts are also harder to maintain and keep in sync with other code changes. The recommendation is to use `gsl::not_null` from the Guidelines Support Library to mark resources that should never have a null value. The rule `USE_NOTNULL` helps to identify places that omit checks for null and hence can be updated to use `gsl::not_null`.
 
diff --git a/docs/code-quality/c26430.md b/docs/code-quality/c26430.md
index 230352b2e9..92fa6af1ec 100644
--- a/docs/code-quality/c26430.md
+++ b/docs/code-quality/c26430.md
@@ -11,7 +11,7 @@ ms.assetid: 3dca2626-8102-4eed-8ff3-73eb3d5c328c
 > Symbol is not tested for nullness on all paths.
 
 **C++ Core Guidelines**:
-[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\<T> to indicate that "null" isn't a valid value
+[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a not_null\<T> to indicate that "null" is not a valid value
 
 If code ever checks pointer variables for null, it should do so consistently and validate pointers on all paths. Sometimes overaggressive checking for null is still better than the possibility of a hard crash in one of the complicated branches. Ideally, such code should be refactored to be less complex (by splitting it into multiple functions), and to rely on markers like `gsl::not_null`. These markers allow the code to isolate parts of the algorithm that can make safe assumptions about valid pointer values. The rule `TEST_ON_ALL_PATHS` helps to find places where null checks are inconsistent (meaning assumptions may require review). Or, it finds actual bugs where a potential null value can bypass null checks in some of the code paths.
 
diff --git a/docs/code-quality/c26431.md b/docs/code-quality/c26431.md
index 4b78314a6d..ae48a3ac66 100644
--- a/docs/code-quality/c26431.md
+++ b/docs/code-quality/c26431.md
@@ -11,7 +11,7 @@ ms.assetid: 40be6032-c8de-49ab-8e43-e8eedc0ca0ba
 > The type of expression '*expr*' is already `gsl::not_null`. Do not test it for nullness (f.23)
 
 **C++ Core Guidelines**:
-[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\<T> to indicate that "null" isn't a valid value
+[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a not_null\<T> to indicate that "null" is not a valid value
 
 The marker type `gsl::not_null` from the Guidelines Support Library is used to clearly indicate values that are never null pointers. It causes a hard failure if the assumption doesn't hold at run time. So, obviously, there's no need to check for null if an expression evaluates to a result of type `gsl::not_null`.
 
diff --git a/docs/code-quality/c26432.md b/docs/code-quality/c26432.md
index 51dba4ebdc..98a45f3475 100644
--- a/docs/code-quality/c26432.md
+++ b/docs/code-quality/c26432.md
@@ -4,14 +4,13 @@ description: "Microsoft C++ Code Analysis warning C26432 for the C++ Core Guidel
 ms.date: 11/15/2017
 f1_keywords: ["C26432", "DEFINE_OR_DELETE_SPECIAL_OPS"]
 helpviewer_keywords: ["C26432"]
-ms.assetid: f587b05a-5c69-4176-baa6-fcb79d228b24
 ---
 # Warning C26432
 
 > `If you define or delete any default operation in the type 'type-name', define or delete them all (c.21).`
 
 **C++ Core Guidelines**:\
-[C.21: If you define or =delete any default operation, define or =delete them all](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all)
+[C.21: If you define or `=delete` any copy, move, or destructor function, define or `=delete` them all](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-five)
 
 Special operations such as constructors are assumed to alter the behavior of types so they rely more on language mechanisms to automatically enforce specific scenarios. The canonical example is resource management. If you explicitly define, default, or delete any of these special operations, it signals you want to avoid any special handling of a type. It's inconsistent to leave the other operations unspecified, that is, implicitly defined as deleted by the compiler.
 
diff --git a/docs/code-quality/c26433.md b/docs/code-quality/c26433.md
index ed350b445d..20d866f966 100644
--- a/docs/code-quality/c26433.md
+++ b/docs/code-quality/c26433.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C26433 OVERRIDE_EXPLICITLY"
 title: Warning C26433
+description: "Learn more about: Warning C26433 OVERRIDE_EXPLICITLY"
 ms.date: 01/18/2017
 f1_keywords: ["C26433", "OVERRIDE_EXPLICITLY"]
 helpviewer_keywords: ["C26433"]
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26433"]
 
 ## C++ Core Guidelines
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
 
 It's not required by the compiler to clearly state that a virtual function overrides its base. Not specifying `override` can cause subtle issues during maintenance if the virtual specification ever changes in the class hierarchy. It also lowers readability and makes an interface's polymorphic behavior less obvious. If a function is clearly marked as `override`, the compiler can check the consistency of the interface, and help to spot issues before they manifest themselves at run time.
 
@@ -25,7 +25,7 @@ Warnings show up on function definitions, not declarations. It may be confusing,
 
 Code analysis name: `OVERRIDE_EXPLICITLY`
 
-## Example:  Implicit overriding
+## Example: Implicit overriding
 
 ```cpp
 class Shape {
@@ -44,4 +44,4 @@ public:
 
 ## See also
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
diff --git a/docs/code-quality/c26434.md b/docs/code-quality/c26434.md
index 7db222af1a..197a57cbcf 100644
--- a/docs/code-quality/c26434.md
+++ b/docs/code-quality/c26434.md
@@ -4,7 +4,6 @@ description: "Microsoft C++ Code Analysis warning C26434 for the C++ Core Guidel
 ms.date: 08/21/2020
 f1_keywords: ["C26434", "DONT_HIDE_METHODS"]
 helpviewer_keywords: ["C26434"]
-ms.assetid: 7f66477f-da66-444a-a6e3-44513d7d7e31
 ---
 # Warning C26434
 
@@ -12,7 +11,7 @@ ms.assetid: 7f66477f-da66-444a-a6e3-44513d7d7e31
 
 ## C++ Core Guidelines
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
 
 ## Remarks
 
@@ -44,5 +43,4 @@ struct Derived : Base
     void not_virtual() noexcept {}              // C26434, hides a non-virtual function
     virtual void not_virtual(int i) noexcept {} // C26434, and parameters ignored
 };
-
 ```
diff --git a/docs/code-quality/c26435.md b/docs/code-quality/c26435.md
index ab4ec78c93..61b57161dc 100644
--- a/docs/code-quality/c26435.md
+++ b/docs/code-quality/c26435.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26435"]
 
 ## C++ Core Guidelines
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
 
 To improve readability, the kind of virtual behavior should be stated clearly and without unnecessary redundancy. Even though multiple virtual specifiers can be used simultaneously, it's better to specify one at a time to emphasize the most important aspect of virtual behavior. The following order of importance is apparent:
 
@@ -49,4 +49,4 @@ public:
 
 ## See also
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)
diff --git a/docs/code-quality/c26436.md b/docs/code-quality/c26436.md
index 222d58fb20..f2c433854f 100644
--- a/docs/code-quality/c26436.md
+++ b/docs/code-quality/c26436.md
@@ -10,7 +10,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines C.35
 
 > The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor (c.35)
 
-[**C++ Core Guidelines**: C.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-non-virtual): A base class destructor should be either public and virtual, or protected and nonvirtual
+[**C++ Core Guidelines**: C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual): A base class destructor should be either public and virtual, or protected and non-virtual
 
 If a class defines a virtual function it becomes polymorphic, which implies that derived classes can change its behavior including resource management and destruction logic. Because client code may call polymorphic types via pointers to base classes, there's no way a client can explicitly choose which behavior is appropriate without downcasting. To make sure that resources are managed consistently and destruction occurs according to the actual type's rules, you should define a public virtual destructor. If the type hierarchy is designed to disallow client code to destroy objects directly, destructors should be defined as protected non-virtual.
 
diff --git a/docs/code-quality/c26437.md b/docs/code-quality/c26437.md
index 5757f17f66..1ec3dbc432 100644
--- a/docs/code-quality/c26437.md
+++ b/docs/code-quality/c26437.md
@@ -4,7 +4,6 @@ description: "Learn more about: Warning C26437 DONT_SLICE"
 ms.date: 05/17/2023
 f1_keywords: ["C26437", "DONT_SLICE"]
 helpviewer_keywords: ["C26437"]
-ms.assetid: ed2f55bc-a6d8-4cc4-8069-5c96e581a96a
 ---
 # Warning C26437
 
diff --git a/docs/code-quality/c26438.md b/docs/code-quality/c26438.md
index e6c696ca31..dd7f16b4eb 100644
--- a/docs/code-quality/c26438.md
+++ b/docs/code-quality/c26438.md
@@ -11,7 +11,7 @@ ms.assetid: c7b3f59c-fb2f-4816-bda4-0fad23c80d83
 > Avoid `goto` (es.76)
 
 **C++ Core Guidelines**:\
-[ES.76](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es76-avoid-goto): Avoid goto
+[ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto): Avoid goto
 
 The use of **`goto`** is widely considered a dangerous and error-prone practice. It's acceptable only in generated code, such as in a parser generated from a grammar. With modern C++ features and utilities provided by the Guidelines Support Library, it should be easy to avoid **`goto`** altogether.
 
diff --git a/docs/code-quality/c26439.md b/docs/code-quality/c26439.md
index 68ee27f512..385f65ca54 100644
--- a/docs/code-quality/c26439.md
+++ b/docs/code-quality/c26439.md
@@ -4,13 +4,12 @@ description: CppCoreCheck rule C26439 that enforces C++ Core Guidelines F.6
 ms.date: 05/17/2023
 f1_keywords: ["C26439", "SPECIAL_NOEXCEPT"]
 helpviewer_keywords: ["C26439"]
-ms.assetid: 9df2a1b0-ea94-4884-9d28-c1522ec33a1b
 ---
 # Warning C26439
 
 > This kind of function may not throw. Declare it 'noexcept'.
 
-[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept): If your function must not throw, declare it `noexcept`
+[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept)
 
 Some operations should never throw exceptions. Their implementations should be reliable and should handle possible errors conditions gracefully. They shouldn't use exceptions to indicate failure. This rule flags cases where such operations aren't explicitly marked as `noexcept`, which means that they may throw exceptions and consumers can't make assumptions about its reliability.
 
@@ -63,5 +62,5 @@ struct S
 
 ## See also
 
-[C26455](./c26455.md)\
-[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept)
\ No newline at end of file
+[C26455](c26455.md)\
+[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept)
diff --git a/docs/code-quality/c26440.md b/docs/code-quality/c26440.md
index edeb1db827..62a9c87e53 100644
--- a/docs/code-quality/c26440.md
+++ b/docs/code-quality/c26440.md
@@ -10,7 +10,7 @@ description: CppCoreCheck rule C26440 that enforces C++ Core Guidelines F.6
 
 > Function can be declared 'noexcept'.
 
-[**C++ Core Guidelines** F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept): If your function may not throw, declare it `noexcept`
+[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept): If your function must not throw, declare it `noexcept`
 
 If code isn't supposed to cause any exceptions, it should be marked by using the `noexcept` specifier. This annotation helps to simplify error handling on the client code side, and enables the compiler to do more optimizations.
 
diff --git a/docs/code-quality/c26441.md b/docs/code-quality/c26441.md
index 75b08a780d..a91a41ff87 100644
--- a/docs/code-quality/c26441.md
+++ b/docs/code-quality/c26441.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26441"]
 
 ## C++ Core Guidelines
 
-[CP.44](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cp44-remember-to-name-your-lock_guards-and-unique_locks): Remember to name your `lock_guard`s and `unique_lock`s
+[CP.44: Remember to name your `lock_guard`s and `unique_lock`s](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-name)
 
 ## Remarks
 
diff --git a/docs/code-quality/c26443.md b/docs/code-quality/c26443.md
index 090995ebda..e07e15b419 100644
--- a/docs/code-quality/c26443.md
+++ b/docs/code-quality/c26443.md
@@ -13,7 +13,7 @@ This warning was removed in Visual Studio 16.8 to reflect [changes to C.128 in t
 
 ## C++ Core Guidelines
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override).
 
 The current consensus on the Core Guidelines is to exclude destructors from the 'override explicitly' recommendation.
 
@@ -44,4 +44,4 @@ public:
 
 ## See also
 
-[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
+[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
diff --git a/docs/code-quality/c26444.md b/docs/code-quality/c26444.md
index 86c5a32949..cca16a240b 100644
--- a/docs/code-quality/c26444.md
+++ b/docs/code-quality/c26444.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26444"]
 
 ## C++ Core Guidelines
 
-[ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname)
+[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname)
 
 An unnamed variable declaration creates a temporary object that is discarded at the end of the statement. Such temporary objects with nontrivial behavior may point to either inefficient code that allocates and immediately throws away resources or to the code that unintentionally ignores nonprimitive data. Sometimes it may also indicate plainly wrong declaration.
 
@@ -46,4 +46,4 @@ void Foo()
 ## See also
 
 [C26441](C26441.md)\
-[ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname)
+[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname)
diff --git a/docs/code-quality/c26445.md b/docs/code-quality/c26445.md
index 2602c8bfa5..2269f7e065 100644
--- a/docs/code-quality/c26445.md
+++ b/docs/code-quality/c26445.md
@@ -13,7 +13,7 @@ A reference to `gsl::span` or `std::string_view` may be an indication of a lifet
 
 ## C++ Core Guidelines
 
-[GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views)
+[GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views)
 
 This rule catches subtle lifetime issues that may occur in code migrated from standard containers to new span and view types. Such types can be considered as "references to buffers." Using a reference to a span or view creates an extra layer of indirection. Such indirection is often unnecessary and can be confusing for maintainers. Spans are cheap to copy and can be returned by value from function calls. Obviously, such call results should never be referenced.
 
diff --git a/docs/code-quality/c26446.md b/docs/code-quality/c26446.md
index 39091ddfde..c8e7f37213 100644
--- a/docs/code-quality/c26446.md
+++ b/docs/code-quality/c26446.md
@@ -9,7 +9,7 @@ helpviewer_keywords: ["C26446"]
 
 > Prefer to use gsl::at() instead of unchecked subscript operator (bounds.4).
 
-C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile).
+C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds).
 
 ## Remarks
 
diff --git a/docs/code-quality/c26447.md b/docs/code-quality/c26447.md
index 8c4c2ef820..1835053be8 100644
--- a/docs/code-quality/c26447.md
+++ b/docs/code-quality/c26447.md
@@ -10,7 +10,7 @@ helpviewer_keywords: ["C26447"]
 > The function is declared `noexcept` but calls function *function_name* that may throw exceptions (f.6).
 
 C++ Core Guidelines:\
-[F.6: If your function may not throw, declare it noexcept](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept).
+[F.6: If your function must not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept).
 
 ## Remarks
 
diff --git a/docs/code-quality/c26448.md b/docs/code-quality/c26448.md
index 6173ec82b5..3da19b9eca 100644
--- a/docs/code-quality/c26448.md
+++ b/docs/code-quality/c26448.md
@@ -9,7 +9,7 @@ helpviewer_keywords: ["C26448"]
 
 > Consider using `gsl::finally` if final action is intended (gsl.util)
 
-C++ Core Guidelines: [GSL.util: Utilities](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-utilities)
+C++ Core Guidelines: [GSL.util: Utilities](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-utilities)
 
 The Guidelines Support Library provides a convenient utility to implement the *final action* concept. Since the C++ language doesn't support **try-finally** constructs, it became common to implement custom cleanup types that would invoke arbitrary actions on destruction. The `gsl::finally` utility is implemented in this way and provides a more uniform way to perform final actions across a code base.
 
diff --git a/docs/code-quality/c26450.md b/docs/code-quality/c26450.md
index ec01abc830..2f4d1f351d 100644
--- a/docs/code-quality/c26450.md
+++ b/docs/code-quality/c26450.md
@@ -43,8 +43,8 @@ long long multiply()
 
 ## See also
 
-[26451](c26451.md)\
-[26452](c26452.md)\
-[26453](c26453.md)\
-[26454](c26454.md)\
+[C26451](c26451.md)\
+[C26452](c26452.md)\
+[C26453](c26453.md)\
+[C26454](c26454.md)\
 [ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow)
diff --git a/docs/code-quality/c26451.md b/docs/code-quality/c26451.md
index 725ce91a6c..3a2246a977 100644
--- a/docs/code-quality/c26451.md
+++ b/docs/code-quality/c26451.md
@@ -45,8 +45,8 @@ void leftshift(int i) noexcept
 
 ## See also
 
-[26450](c26450.md)\
-[26452](c26452.md)\
-[26453](c26453.md)\
-[26454](c26454.md)\
-[ES.103: Don't overflow](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-overflow)
+[C26450](c26450.md)\
+[C26452](c26452.md)\
+[C26453](c26453.md)\
+[C26454](c26454.md)\
+[ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow)
diff --git a/docs/code-quality/c26452.md b/docs/code-quality/c26452.md
index d6f004eaa5..14a7f7d727 100644
--- a/docs/code-quality/c26452.md
+++ b/docs/code-quality/c26452.md
@@ -37,9 +37,9 @@ unsigned long long combine(unsigned lo, unsigned hi)
 
 ## See also
 
-[26450](c26450.md)\
-[26451](c26451.md)\
-[26453](c26453.md)\
-[26454](c26454.md)\
+[C26450](c26450.md)\
+[C26451](c26451.md)\
+[C26453](c26453.md)\
+[C26454](c26454.md)\
 [ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\
 [ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed)
diff --git a/docs/code-quality/c26453.md b/docs/code-quality/c26453.md
index 7012f697ae..f7a44f29ab 100644
--- a/docs/code-quality/c26453.md
+++ b/docs/code-quality/c26453.md
@@ -39,9 +39,9 @@ void leftshift(int shiftCount)
 
 ## See also
 
-[26450](c26450.md)\
-[26451](c26451.md)\
-[26452](c26452.md)\
-[26454](c26454.md)\
+[C26450](c26450.md)\
+[C26451](c26451.md)\
+[C26452](c26452.md)\
+[C26454](c26454.md)\
 [ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\
 [ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed)
diff --git a/docs/code-quality/c26454.md b/docs/code-quality/c26454.md
index 15940afe9e..59e6c58c51 100644
--- a/docs/code-quality/c26454.md
+++ b/docs/code-quality/c26454.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Arithmetic overflow: 'operator' operation produces a negative unsigned result at compile time"
 title: Warning C26454
+description: "Learn more about: Arithmetic overflow: 'operator' operation produces a negative unsigned result at compile time"
 ms.date: 01/08/2017
 f1_keywords: ["C26454", "RESULT_OF_ARITHMETIC_OPERATION_NEGATIVE_UNSIGNED"]
 helpviewer_keywords: ["C26454"]
@@ -37,8 +37,8 @@ unsigned int negativeunsigned()
 
 ## See also
 
-[26450](c26450.md)\
-[26451](c26451.md)\
-[26452](c26452.md)\
-[26453](c26453.md)\
-[ES.106: Don't try to avoid negative values by using unsigned](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative)
+[C26450](c26450.md)\
+[C26451](c26451.md)\
+[C26452](c26452.md)\
+[C26453](c26453.md)\
+[ES.106: Don't try to avoid negative values by using `unsigned`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative)
diff --git a/docs/code-quality/c26455.md b/docs/code-quality/c26455.md
index ca27f3e0e2..756871cae8 100644
--- a/docs/code-quality/c26455.md
+++ b/docs/code-quality/c26455.md
@@ -4,7 +4,6 @@ description: "Learn more about the C26455 DEFAULT_CTOR_NOEXCEPT"
 ms.date: 04/29/2022
 f1_keywords: ["C26455", "DEFAULT_CTOR_NOEXCEPT"]
 helpviewer_keywords: ["C26455"]
-ms.assetid: 27e86063-d969-49d8-8912-dcc2dc57249f
 author: kylereedmsft
 ms.author: kylereed
 ms.custom: kr2b-contr-experiment
@@ -24,4 +23,4 @@ Code analysis name: `DEFAULT_CTOR_NOEXCEPT`
 ## See also
 
 [C26439](./c26439.md)\
-[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept)
+[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexceptt)
diff --git a/docs/code-quality/c26456.md b/docs/code-quality/c26456.md
index 0abedce51b..74456141ad 100644
--- a/docs/code-quality/c26456.md
+++ b/docs/code-quality/c26456.md
@@ -21,4 +21,4 @@ Code analysis name: `DONT_HIDE_OPERATORS`
 
 ## See also
 
-[C++ Core Guideline c.128](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final)
+[C++ Core Guideline c.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override)
diff --git a/docs/code-quality/c26457.md b/docs/code-quality/c26457.md
index e1a5560feb..17430f1830 100644
--- a/docs/code-quality/c26457.md
+++ b/docs/code-quality/c26457.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26457"]
 
 ## Remarks
 
-Excerpt from the [C++ Core Guideline ES.48](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es48-avoid-casts):
+Excerpt from the [C++ Core Guideline ES.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts):
 
 > Never cast to `(void)` to ignore a `[[nodiscard]]` return value. If you deliberately want to discard such a result, first think hard about whether that is really a good idea (there is usually a good reason the author of the function or of the return type used `[[nodiscard]]` in the first place). If you still think it's appropriate and your code reviewer agrees, use `std::ignore =` to turn off the warning which is simple, portable, and easy to grep.
 
diff --git a/docs/code-quality/c26460.md b/docs/code-quality/c26460.md
index 2307b0d592..008786d1a0 100644
--- a/docs/code-quality/c26460.md
+++ b/docs/code-quality/c26460.md
@@ -39,4 +39,4 @@ void Function2(MyStruct& myStruct)
 
 ## See also
 
-[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
+[C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref).
diff --git a/docs/code-quality/c26461.md b/docs/code-quality/c26461.md
index 85cd180b56..eb18934fd4 100644
--- a/docs/code-quality/c26461.md
+++ b/docs/code-quality/c26461.md
@@ -45,4 +45,4 @@ void Function2(MyStruct* myStruct)
 
 ## See also
 
-[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
+[C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref).
diff --git a/docs/code-quality/c26462.md b/docs/code-quality/c26462.md
index f39a230769..8f9adfd83d 100644
--- a/docs/code-quality/c26462.md
+++ b/docs/code-quality/c26462.md
@@ -31,4 +31,4 @@ void function1(int* ptr)
 
 ## See also
 
-[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
diff --git a/docs/code-quality/c26463.md b/docs/code-quality/c26463.md
index a23cd9d028..1da69c4f32 100644
--- a/docs/code-quality/c26463.md
+++ b/docs/code-quality/c26463.md
@@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_FOR_ELEMENTS`
 
 ## See also
 
-[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
diff --git a/docs/code-quality/c26464.md b/docs/code-quality/c26464.md
index c96634aba1..aa5d02d128 100644
--- a/docs/code-quality/c26464.md
+++ b/docs/code-quality/c26464.md
@@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_POINTER_FOR_ELEMENTS`
 
 ## See also
 
-[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
diff --git a/docs/code-quality/c26465.md b/docs/code-quality/c26465.md
index d6b7fa8316..1ca3fee5d1 100644
--- a/docs/code-quality/c26465.md
+++ b/docs/code-quality/c26465.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26465 that enforces C++ Core Guidelines Type.3
 
 ## See also
 
-[C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-constcast)
+[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast)
 
 ## Example
 
diff --git a/docs/code-quality/c26466.md b/docs/code-quality/c26466.md
index 13c4d70db4..786d95159b 100644
--- a/docs/code-quality/c26466.md
+++ b/docs/code-quality/c26466.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines Type.2
 
 ## See also
 
-[C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-downcast)
+[C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast)
 
 ## Example
 
diff --git a/docs/code-quality/c26471.md b/docs/code-quality/c26471.md
index e525394288..f44d8335af 100644
--- a/docs/code-quality/c26471.md
+++ b/docs/code-quality/c26471.md
@@ -29,4 +29,4 @@ void function(void* pValue)
 
 ## See also
 
-[C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast)
+[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast)
diff --git a/docs/code-quality/c26472.md b/docs/code-quality/c26472.md
index 3a18f09f0e..67a2f80fd1 100644
--- a/docs/code-quality/c26472.md
+++ b/docs/code-quality/c26472.md
@@ -11,7 +11,7 @@ ms.assetid: 51e215a7-0e0a-4e6c-bff1-805bf5b1af29
 > Don't use a static_cast for arithmetic conversions. Use brace initialization, `gsl::narrow_cast`, or `gsl::narrow`.
 
 **C++ Core Guidelines**:
-[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts
+[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-arithmeticcast): Avoid casts
 
 This rule helps to find places where static casts are used to convert between integral types. These casts are unsafe because the compiler wouldn't warn if any data loss occurs. Brace initializers are better for the cases where constants are used, and a compiler error is desired. There are also utilities from the Guidelines Support Library that help to describe intentions clearly:
 
diff --git a/docs/code-quality/c26473.md b/docs/code-quality/c26473.md
index 6ff7913be8..410129d326 100644
--- a/docs/code-quality/c26473.md
+++ b/docs/code-quality/c26473.md
@@ -11,7 +11,7 @@ ms.assetid: d88aaa57-0003-421f-8377-4e6a5c27f2df
 > Don't cast between pointer types where the source type and the target type are the same.
 
 **C++ Core Guidelines**:
-[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts
+[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-identitycast): Avoid casts
 
 This rule helps to remove unnecessary or suspicious casts. Obviously, when a type is converted to itself, such a conversion is ineffective. Yet the fact that the cast is used may indicate a subtle design issue or a potential for regression if types change in future. It's always safer to use as few casts as possible.
 
diff --git a/docs/code-quality/c26474.md b/docs/code-quality/c26474.md
index 30fbf70bef..fd62d069f6 100644
--- a/docs/code-quality/c26474.md
+++ b/docs/code-quality/c26474.md
@@ -11,7 +11,7 @@ ms.assetid: 1e23a8e6-97fa-47f5-a279-b52aa2efafa4
 > Don't cast between pointer types when the conversion could be implicit.
 
 **C++ Core Guidelines**:\
-[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts
+[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-implicitpointercast): Avoid casts
 
 In some cases, implicit casts between pointer types are safe and don't require you to write a specific cast expression. This rule finds instances of unnecessary casts you can safely remove.
 
diff --git a/docs/code-quality/c26475.md b/docs/code-quality/c26475.md
index b3856c661f..b44baae8a8 100644
--- a/docs/code-quality/c26475.md
+++ b/docs/code-quality/c26475.md
@@ -11,7 +11,7 @@ ms.assetid: 4ed71cf8-f155-4961-b4fe-77feb3b880c3
 > Do not use function style C-casts.
 
 **C++ Core Guidelines**:
-[ES.49](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es49-if-you-must-use-a-cast-use-a-named-cast): If you must use a cast, use a named cast
+[ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts-named): If you must use a cast, use a named cast
 
 Function-style casts (for example, `int(1.1)`) are another form of C-style casts (like `(int)1.1`), which have questionable safety. Specifically, the compiler doesn't try to check if any data loss can occur either in C-casts or in function casts. In both cases, it's better either to avoid casting or to use a braced initializer if possible. If neither works, static casts may be suitable, but it's still better to use utilities from the Guidelines Support Library:
 
diff --git a/docs/code-quality/c26476.md b/docs/code-quality/c26476.md
index d942009432..b07cb80eea 100644
--- a/docs/code-quality/c26476.md
+++ b/docs/code-quality/c26476.md
@@ -21,4 +21,4 @@ Code analysis name: `USE_VARIANT`
 
 ## See also
 
-[C++ Core Guideline C.181](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ru-naked)
+[C++ Core Guideline C.181](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ru-naked)
diff --git a/docs/code-quality/c26477.md b/docs/code-quality/c26477.md
index fe713f5618..7da0611abf 100644
--- a/docs/code-quality/c26477.md
+++ b/docs/code-quality/c26477.md
@@ -21,4 +21,4 @@ Code analysis name: `USE_NULLPTR_NOT_CONSTANT`
 
 ## See also
 
-[C++ Core Guideline ES.47](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-nullptr)
+[C++ Core Guideline ES.47](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nullptr)
diff --git a/docs/code-quality/c26478.md b/docs/code-quality/c26478.md
index e9c680bfad..47dc1d62bf 100644
--- a/docs/code-quality/c26478.md
+++ b/docs/code-quality/c26478.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C26478: Don't use std::move on constant variables. (es.56)"
 title: Warning C26478
+description: "Learn more about: Warning C26478: Don't use std::move on constant variables. (es.56)"
 ms.date: 10/12/2023
 f1_keywords: ["C26478", "NO_MOVE_OP_ON_CONST"]
 helpviewer_keywords: ["C26478"]
@@ -37,4 +37,4 @@ To fix the issue, remove the redundant `std::move`.
 
 ## See also
 
-[ES.56 - Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move)
+[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move)
diff --git a/docs/code-quality/c26479.md b/docs/code-quality/c26479.md
index 336a12c33b..130adb11af 100644
--- a/docs/code-quality/c26479.md
+++ b/docs/code-quality/c26479.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C26479: Don't use std::move to return a local variable. (f.48)"
 title: Warning C26479
+description: "Learn more about: Warning C26479: Don't use std::move to return a local variable. (f.48)"
 ms.date: 10/12/2023
 f1_keywords: ["C26479", "NO_MOVE_RET_ON_LOCALS"]
 helpviewer_keywords: ["C26479"]
@@ -38,5 +38,5 @@ S foo()
 
 ## See also
 
-[F.48 - Don't return `std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-return-move-local)
-[ES.56 - Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move)
+[F.48: Don't `return std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-return-move-local)\
+[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move)
diff --git a/docs/code-quality/c26481.md b/docs/code-quality/c26481.md
index 051b2c96ee..31249a98f1 100644
--- a/docs/code-quality/c26481.md
+++ b/docs/code-quality/c26481.md
@@ -12,11 +12,11 @@ ms.assetid: 4fd8694d-b45b-4163-b2d5-88c4889d00ed
 
 ## Remarks
 
-This check supports the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rule [I.13](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-array): *Do not pass an array as a single pointer*. Whenever raw pointers are used in arithmetic operations they should be replaced with safer kinds of buffers, such as `span<T>` or `vector<T>`.
+This check supports the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rule [I.13](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-array): *Do not pass an array as a single pointer*. Whenever raw pointers are used in arithmetic operations they should be replaced with safer kinds of buffers, such as `span<T>` or `vector<T>`.
 
 This check is more restrictive than I.13: it doesn't skip `zstring` or `czstring` types.
 
-C26481 and [C26485](c26485.md) come from the [Bounds Safety Profile](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers.
+C26481 and [C26485](c26485.md) come from the [Bounds Safety Profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers.
 
 ## Example
 
diff --git a/docs/code-quality/c26482.md b/docs/code-quality/c26482.md
index e360a51d10..9fafb3b912 100644
--- a/docs/code-quality/c26482.md
+++ b/docs/code-quality/c26482.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26482 that enforces C++ Core Guidelines Bounds.2
 
 ## See also
 
-[C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex)
 
 ## Example
 
diff --git a/docs/code-quality/c26483.md b/docs/code-quality/c26483.md
index ea4c10c6b9..45fb0f2471 100644
--- a/docs/code-quality/c26483.md
+++ b/docs/code-quality/c26483.md
@@ -1,9 +1,9 @@
 ---
 title: Warning C26483
+description: CppCoreCheck rule C26483 that enforces C++ Core Guidelines Bounds.2
 ms.date: 03/22/2018
 f1_keywords: ["C26483", "STATIC_INDEX_OUT_OF_RANGE"]
 helpviewer_keywords: ["C26483"]
-description: CppCoreCheck rule C26483 that enforces C++ Core Guidelines Bounds.2
 ---
 # Warning C26483
 
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26483 that enforces C++ Core Guidelines Bounds.2
 
 ## See also
 
-[C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex)
 
 ## Example
 
@@ -24,5 +24,4 @@ void function()
     int arr2[] { 1, 2, 3 };
     arr2[3] = 4; // C26483, 3 is outside the bounds of the array
 }
-
 ```
diff --git a/docs/code-quality/c26485.md b/docs/code-quality/c26485.md
index e0aa010236..ef77b05790 100644
--- a/docs/code-quality/c26485.md
+++ b/docs/code-quality/c26485.md
@@ -12,9 +12,9 @@ ms.assetid: 8915ad2d-7fd6-4bbc-abe4-0b3292ea2170
 
 ## Remarks
 
-Like [C26481](c26481.md), this check helps to enforce the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rule [I.13](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-array): *Do not pass an array as a single pointer*. The rule detects places where static array type information is lost from decay to a raw pointer. The `zstring` and `czstring` types aren't excluded.
+Like [C26481](c26481.md), this check helps to enforce the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rule [I.13](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-array): *Do not pass an array as a single pointer*. The rule detects places where static array type information is lost from decay to a raw pointer. The `zstring` and `czstring` types aren't excluded.
 
-C26481 and C26485 come from the [Bounds Safety Profile](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers.
+C26481 and C26485 come from the [Bounds Safety Profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers.
 
 ## Example
 
diff --git a/docs/code-quality/c26488.md b/docs/code-quality/c26488.md
index b3ae0ce888..a54608facb 100644
--- a/docs/code-quality/c26488.md
+++ b/docs/code-quality/c26488.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C26488 LIFETIMES_DEREF_NULL_POINTER"
 title: Warning C26488
+description: "Learn more about: Warning C26488 LIFETIMES_DEREF_NULL_POINTER"
 ms.date: 12/14/2018
 f1_keywords: ["C26488", "LIFETIMES_DEREF_NULL_POINTER"]
 helpviewer_keywords: ["C26488"]
-ms.assetid: 2ade0d31-f259-49de-8676-cce6092fabfc
 author: kylereedmsft
 ms.author: kylereed
 ---
@@ -28,9 +27,9 @@ void ex1()
 
 The Lifetime guidelines from the C++ core guidelines outline a contract that code can follow which will enable more thorough static memory leak and dangling pointer detection. The basic ideas behind the guidelines are:
 
-1) Never dereference an invalid (dangling) or known-null pointer
-2) Never return (either formal return or out parameter) any pointer from a function.
-3) Never pass an invalid (dangling) pointer to any function.
+1. Never dereference an invalid (dangling) or known-null pointer.
+1. Never return (either formal return or out parameter) any pointer from a function.
+1. Never pass an invalid (dangling) pointer to any function.
 
 ## See also
 
diff --git a/docs/code-quality/c26489.md b/docs/code-quality/c26489.md
index 2f252dc766..85df9e569a 100644
--- a/docs/code-quality/c26489.md
+++ b/docs/code-quality/c26489.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C26489 LIFETIMES_DEREF_INVALID_POINTER"
 title: Warning C26489
+description: "Learn more about: Warning C26489 LIFETIMES_DEREF_INVALID_POINTER"
 ms.date: 12/14/2018
 f1_keywords: ["C26489", "LIFETIMES_DEREF_INVALID_POINTER"]
 helpviewer_keywords: ["C26489"]
-ms.assetid: 15983d4f-f615-42e7-8521-ee094b87d066
 author: kylereedmsft
 ms.author: kylereed
 ---
@@ -30,9 +29,9 @@ int ex1()
 
 The Lifetime guidelines from the C++ core guidelines outline a contract that code can follow which will enable more thorough static memory leak and dangling pointer detection. The basic ideas behind the guidelines are:
 
-1) Never dereference an invalid (dangling) or known-null pointer
-2) Never return (either formal return or out parameter) any pointer from a function.
-3) Never pass an invalid (dangling) pointer to any function.
+1. Never dereference an invalid (dangling) or known-null pointer.
+1. Never return (either formal return or out parameter) any pointer from a function.
+1. Never pass an invalid (dangling) pointer to any function.
 
 ## See also
 
diff --git a/docs/code-quality/c26490.md b/docs/code-quality/c26490.md
index 48e766138e..141a6a1941 100644
--- a/docs/code-quality/c26490.md
+++ b/docs/code-quality/c26490.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26490 that enforces C++ Core Guidelines Type.1
 
 ## See also
 
-[C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast).
 
 ## Example
 
diff --git a/docs/code-quality/c26491.md b/docs/code-quality/c26491.md
index b55c5b0f32..109c4dae5a 100644
--- a/docs/code-quality/c26491.md
+++ b/docs/code-quality/c26491.md
@@ -7,4 +7,4 @@ helpviewer_keywords: ["C26491"]
 ---
 # Warning C26491
 
-> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast).
diff --git a/docs/code-quality/c26492.md b/docs/code-quality/c26492.md
index 2e6ede538f..33735543dc 100644
--- a/docs/code-quality/c26492.md
+++ b/docs/code-quality/c26492.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26492 that enforces C++ Core Guidelines Type.3
 
 ## See also
 
-[C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast).
 
 ## Example
 
diff --git a/docs/code-quality/c26493.md b/docs/code-quality/c26493.md
index 34d7225070..c67d9ffdd5 100644
--- a/docs/code-quality/c26493.md
+++ b/docs/code-quality/c26493.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines Type.4
 
 ## See also
 
-[C++ Core Guidelines Type.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+[C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-cstylecast).
 
 ## Example
 
diff --git a/docs/code-quality/c26494.md b/docs/code-quality/c26494.md
index 100acee105..447b03a4c4 100644
--- a/docs/code-quality/c26494.md
+++ b/docs/code-quality/c26494.md
@@ -38,4 +38,4 @@ void function()
 ## See also
 
 [ES.20: Always initialize an object](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-always)\
-[C++ Core Guidelines Type.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile)
+[Pro.safety: Type-safety profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type)
diff --git a/docs/code-quality/c26495.md b/docs/code-quality/c26495.md
index f99e5697b8..5bfc3c1685 100644
--- a/docs/code-quality/c26495.md
+++ b/docs/code-quality/c26495.md
@@ -11,7 +11,7 @@ helpviewer_keywords: ["C26495"]
 
 ## Remarks
 
-A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type) and [C.48](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers).
+A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-memberinit) and [C.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-in-class-initializer).
 
 This check is intra-procedural. Whenever there's a function call to a nonconst member function, the check assumes that this member function initializes all of the members. This heuristic can result in missed errors and is in place to avoid false positive results. Moreover, when a member is passed by nonconst reference to a function, the check assumes that the function initializes the member.
 
diff --git a/docs/code-quality/c26496.md b/docs/code-quality/c26496.md
index b5ad576328..9fd6800df5 100644
--- a/docs/code-quality/c26496.md
+++ b/docs/code-quality/c26496.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule C26496 that enforces C++ Core Guidelines Con.4
 
 ## See also
 
-[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
 
 ## Example
 
diff --git a/docs/code-quality/c26497.md b/docs/code-quality/c26497.md
index 7a7cd3fc6c..36b52d3bfe 100644
--- a/docs/code-quality/c26497.md
+++ b/docs/code-quality/c26497.md
@@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines F.4
 
 ## See also
 
-[C++ Core Guidelines F.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rf-constexpr).
+[C++ Core Guidelines F.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-constexpr).
 
 ## Example
 
diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md
index 8277d9601c..417a425427 100644
--- a/docs/code-quality/c26498.md
+++ b/docs/code-quality/c26498.md
@@ -9,7 +9,7 @@ helpviewer_keywords: ["C26498"]
 
 > The function '*function*' is constexpr, mark variable '*variable*' constexpr if compile-time evaluation is desired (con.5)
 
-This rule helps to enforce Con.5 from the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr): use constexpr for values that can be computed at compile time.
+This rule helps to enforce [Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) in the C++ Core Guidelines.
 
 ## Remarks
 
@@ -58,6 +58,6 @@ void foo()
 
 ## See also
 
-[C26497](./c26407.md)\
-[C26814](./c26814.md)\
-[Con.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr)
\ No newline at end of file
+[C26497](c26407.md)\
+[C26814](c26814.md)\
+[Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr)
diff --git a/docs/code-quality/c26812.md b/docs/code-quality/c26812.md
index f5b54e1086..d7a3ef1038 100644
--- a/docs/code-quality/c26812.md
+++ b/docs/code-quality/c26812.md
@@ -47,4 +47,4 @@ Print_color(Product_info::Red);  // Error: cannot convert Product_info to int.
 
 ## See also
 
-[Enum.3 Prefer enum class over enum](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum3-prefer-class-enums-over-plain-enums)
+[Enum.3 Prefer enum class over enum](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Renum-class)
diff --git a/docs/code-quality/c26814.md b/docs/code-quality/c26814.md
index 0727406c7d..f446f2644b 100644
--- a/docs/code-quality/c26814.md
+++ b/docs/code-quality/c26814.md
@@ -33,4 +33,4 @@ void bar()
 
 ## See also
 
-[Con.5 Use constexpr for all variables that can be computed at compile time](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-constexpr)
+[Con.5 Use constexpr for all variables that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr)
diff --git a/docs/code-quality/c26817.md b/docs/code-quality/c26817.md
index fd72d2a527..470b699dd2 100644
--- a/docs/code-quality/c26817.md
+++ b/docs/code-quality/c26817.md
@@ -9,7 +9,7 @@ helpviewer_keywords: ["C26817"]
 
 > Potentially expensive copy of variable *name* in range-for loop. Consider making it a const reference (es.71).
 
-For more information, see [ES.71 notes](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-for-range) in the C++ Core Guidelines.
+For more information, see [ES.71: Prefer a range-`for`-statement to a `for`-statement when there is a choice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-for-range) in the C++ Core Guidelines.
 
 ## Example
 
diff --git a/docs/code-quality/c26818.md b/docs/code-quality/c26818.md
index aed557b6ad..52adf70f5b 100644
--- a/docs/code-quality/c26818.md
+++ b/docs/code-quality/c26818.md
@@ -14,7 +14,7 @@ no-loc: [ default, int, char ]
 
 This check covers the missing **`default`** label in switch statements that switch over a non-enumeration type, such as **`int`**, **`char`**, and so on.
 
-For more information, see [ES.79: Use default to handle common cases (only)](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es79-use-default-to-handle-common-cases-only) in the C++ Core Guidelines.
+For more information, see [ES.79: Use default to handle common cases (only)](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-default) in the C++ Core Guidelines.
 
 ## Example
 
diff --git a/docs/code-quality/c26819.md b/docs/code-quality/c26819.md
index 34dcd15ac7..2e2007c9ff 100644
--- a/docs/code-quality/c26819.md
+++ b/docs/code-quality/c26819.md
@@ -87,4 +87,4 @@ void foo(int a)
 
 ## See also
 
-[ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-break)
\ No newline at end of file
+[ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-break)
diff --git a/docs/code-quality/c26831.md b/docs/code-quality/c26831.md
index 0fe737b017..fba6057d2f 100644
--- a/docs/code-quality/c26831.md
+++ b/docs/code-quality/c26831.md
@@ -58,4 +58,6 @@ void foo(int i, int j)
 ## See also
 
 [`C26832`](c26832.md)\
-[`C26833`](c26833.md)
\ No newline at end of file
+[`C26833`](c26833.md)\
+[`C26838`](c26838.md)\
+[`C26839`](c26839.md)
\ No newline at end of file
diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md
new file mode 100644
index 0000000000..652ec704cd
--- /dev/null
+++ b/docs/code-quality/c26838.md
@@ -0,0 +1,62 @@
+---
+title: Warning C26838
+description: Learn about Microsoft C++ code analysis warning C26838.
+author: Rastaban
+ms.author: philc
+ms.topic: reference
+ms.date: 1/10/2025
+---
+# Warning C26838
+
+> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative.
+
+This warning was added in Visual Studio 2022 version 17.13.
+
+## Remarks
+
+Reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example:
+
+```cpp
+void* CustomAlloc(size_t);
+
+int* CreateIntArray(int numberOfElements)
+{
+    int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); // Warning: C26838
+
+    return p;
+}
+```
+
+The expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64-bit machines, `numberOfElements` is promoted to an unsigned value when multiplied
+by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`.
+
+This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name.
+
+This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative.
+
+## Example
+
+To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to ensure it won't. For example:
+
+```cpp
+void* CustomAlloc(size_t);
+
+int* CreateIntArray(int numberOfElements)
+{
+    if (numberOfElements < 0)
+        return nullptr;
+
+    int* p = (int*)CustomAlloc(numberOfElements * sizeof(int));
+    // ...
+    return p;
+}
+```
+
+In the previous example, checking for a negative value addresses the `C26832` warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). For example, on a 32-bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values.
+
+## See also
+
+[`C26831`](c26831.md)\
+[`C26832`](c26832.md)\
+[`C26833`](c26833.md)\
+[`C26833`](c26839.md)
\ No newline at end of file
diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md
new file mode 100644
index 0000000000..96d47c6df2
--- /dev/null
+++ b/docs/code-quality/c26839.md
@@ -0,0 +1,53 @@
+---
+title: Warning C26839
+description: Learn about Microsoft C++ code analysis warning C26839.
+author: Rastaban
+ms.author: philc
+ms.topic: reference
+ms.date: 1/10/2025
+---
+# Warning C26839
+
+> Array new allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative.
+
+This warning was added in Visual Studio 2022 version 17.13.
+
+## Remarks
+
+Reports that the size specified for an array `new` allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example:
+
+```cpp
+int* CreateIntArray(int size)
+{
+    int* intArray = new int[size];
+    return intArray;
+}
+```
+
+The expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes to be allocated for the array. When `size` is negative, the result of that calculation may overflow or have unexpected results when passed to `new`.
+
+This check is the same as [`C26838`](c26838.md), but applies only to `new T[]`.
+
+This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative.
+
+## Example
+
+To fix the previous code example in which the size calculation might overflow due to a negative signed value, introduce a check to ensure it won't. For example:
+
+```cpp
+int* CreateIntArray(int size)
+{
+    if (size < 0)
+        return nullptr;
+
+    int* intArray = new int[size];
+    return intArray;
+}
+```
+
+## See also
+
+[`C26831`](c26831.md)\
+[`C26832`](c26832.md)\
+[`C26838`](c26833.md)\
+[`C26838`](c26838.md)
\ No newline at end of file
diff --git a/docs/code-quality/c28020.md b/docs/code-quality/c28020.md
index d3597bd143..927e462bda 100644
--- a/docs/code-quality/c28020.md
+++ b/docs/code-quality/c28020.md
@@ -1,15 +1,32 @@
 ---
-description: "Learn more about: Warning C28020"
 title: Warning C28020
-ms.date: 11/04/2016
+description: "Learn more about: Warning C28020"
+ms.date: 03/25/2025
 f1_keywords: ["C28020"]
 helpviewer_keywords: ["C28020"]
-ms.assetid: 3612185a-0858-4ba9-b795-4a0681073cf7
 ---
 # Warning C28020
 
-> The expression '*expr*' is not true at this call
+> The expression '*expr*' is not true at this call.
 
 This warning is reported when the `_Satisfies_` expression listed isn't true. Frequently, the warning indicates an incorrect parameter.
 
 If this warning occurs on a function declaration, the annotations indicate an impossible condition.
+
+## Example
+
+The following example generates C28020:
+
+```cpp
+#include <sal.h>
+
+int func(_In_range_(0, 10) int value)
+{
+    return value;
+}
+
+int main()
+{
+    func(11);   // C28020
+}
+```
diff --git a/docs/code-quality/c28112.md b/docs/code-quality/c28112.md
index d717ffd596..61e0a5588e 100644
--- a/docs/code-quality/c28112.md
+++ b/docs/code-quality/c28112.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C28112"
 title: Warning C28112
+description: "Learn more about: Warning C28112"
 ms.date: 08/25/2022
 f1_keywords: ["C28112", "INTERLOCKED_ACCESS", "__WARNING_INTERLOCKED_ACCESS"]
 helpviewer_keywords: ["C28112"]
-ms.assetid: 2720a5dc-84e9-4f78-a8c7-a320c9f9216b
 ---
 # Warning C28112
 
@@ -16,7 +15,7 @@ A variable that is accessed by using the Interlocked executive support routines,
 
 `InterlockedXxx` functions are intended to provide atomic operations, but are only atomic with respect to other `InterlockedXxx` functions. Although certain ordinary assignments, accesses, and comparisons to variables that are used by the Interlocked\* routines can be safely accessed by using a different function, the risk is great enough to justify examining each instance.
 
-Code analysis name: INTERLOCKED_ACCESS
+Code analysis name: `INTERLOCKED_ACCESS`
 
 ## Example
 
@@ -36,7 +35,7 @@ InterlockedDecrement(&inter_var);
 InterlockedIncrement(&inter_var);
 ```
 
-## See Also
+## See also
 
 [InterlockedIncrement function (wdm.h)](/windows-hardware/drivers/ddi/wdm/nf-wdm-interlockedincrement)\
 [InterlockedDecrement function (wdm.h)](/windows-hardware/drivers/ddi/wdm/nf-wdm-interlockeddecrement)
diff --git a/docs/code-quality/c28159.md b/docs/code-quality/c28159.md
index e17a31ee6f..05fbe31944 100644
--- a/docs/code-quality/c28159.md
+++ b/docs/code-quality/c28159.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Warning C28159"
 title: Warning C28159
+description: "Learn more about: Warning C28159"
 ms.date: 09/08/2022
 f1_keywords: ["C28159", "USE_OTHER_FUNCTION", "__WARNING_USE_OTHER_FUNCTION"]
 helpviewer_keywords: ["C28159"]
-ms.assetid: fab6cd58-0985-4ef6-89a2-64ed04297437
 ---
 # Warning C28159
 
-> Consider using `*function_name_1*` instead of `*function_name_2*`. Reason: *reason*
+> Consider using *`function_name_1`* instead of *`function_name_2`*. Reason: *reason*
 
 This warning occurs when you use a function that is semantically equivalent to an alternative, preferred function call.
 
@@ -16,7 +15,7 @@ This warning occurs when you use a function that is semantically equivalent to a
 
 C28159 is a general warning message; the annotation `__drv_preferredFunction` was used (possibly with a conditional `__drv_when`() annotation) to flag a bad coding practice.
 
-Code analysis name: USE_OTHER_FUNCTION
+Code analysis name: `USE_OTHER_FUNCTION`
 
 ## Example
 
diff --git a/docs/code-quality/c28160.md b/docs/code-quality/c28160.md
index 38ea9be0b1..eeee7046da 100644
--- a/docs/code-quality/c28160.md
+++ b/docs/code-quality/c28160.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C28160"
 title: Warning C28160
+description: "Learn more about: Warning C28160"
 ms.date: 09/08/2022
 f1_keywords: ["C28160", "ERROR", "__WARNING_ERROR"]
 helpviewer_keywords: ["C28160"]
-ms.assetid: cab15f6b-909c-4cc8-81a0-c24ac7c91c7c
 ---
 # Warning C28160
 
@@ -16,4 +15,4 @@ This warning is reported when a `__drv_error` annotation has been encountered.
 
 This annotation is used to flag coding practices that should be fixed, and can be used with a `__drv_when` annotation to indicate specific combinations of parameters.
 
-Code analysis name: ERROR
+Code analysis name: `ERROR`
diff --git a/docs/code-quality/c28196.md b/docs/code-quality/c28196.md
index 4bd26b4162..388766230a 100644
--- a/docs/code-quality/c28196.md
+++ b/docs/code-quality/c28196.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C28196"
 title: Warning C28196
+description: "Learn more about: Warning C28196"
 ms.date: 11/04/2016
 f1_keywords: ["C28196", "RETURNING_BAD_RESULT", "__WARNING_RETURNING_BAD_RESULT"]
 helpviewer_keywords: ["C28196"]
-ms.assetid: 5ee89e96-2796-4316-a64c-702463ca1374
 ---
 # Warning C28196
 
@@ -51,4 +50,4 @@ Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) {
 ## See also
 
 [Annotating function parameters and return values](./annotating-function-parameters-and-return-values.md)\
-[Specifying When and Where an Annotation Applies](./specifying-when-and-where-an-annotation-applies.md)\
+[Specifying When and Where an Annotation Applies](./specifying-when-and-where-an-annotation-applies.md)
diff --git a/docs/code-quality/c28208.md b/docs/code-quality/c28208.md
index 1a9dc76e94..6d352f4247 100644
--- a/docs/code-quality/c28208.md
+++ b/docs/code-quality/c28208.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C28208"
 title: Warning C28208
+description: "Learn more about: Warning C28208"
 ms.date: 10/03/2022
 f1_keywords: ["C28208", "FUNCTION_TYPE_REDECLARATION", "__WARNING_FUNCTION_TYPE_REDECLARATION"]
 helpviewer_keywords: ["C28208"]
-ms.assetid: e9a8ce37-3b05-4202-b078-5570ae496d1d
 ---
 # Warning C28208
 
@@ -30,8 +29,8 @@ typedef void test_type(void*);
 #include "c28208_example.h"
 test_type my_test1;
 test_type my_test2;
-void my_test1(int* x){};  // Generates C28208
-void my_test2(void* x){};  // Doesn't generate C28208
+void my_test1(int* x){}  // Generates C28208
+void my_test2(void* x){}  // Doesn't generate C28208
 
 int main()
 {
diff --git a/docs/code-quality/c28310.md b/docs/code-quality/c28310.md
index 4b85718201..30aa4d8244 100644
--- a/docs/code-quality/c28310.md
+++ b/docs/code-quality/c28310.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C28310"
 title: Warning C28310
+description: "Learn more about: Warning C28310"
 ms.date: 11/04/2016
 f1_keywords: ["C28310"]
-ms.assetid: 51054ca8-01b6-454b-9853-f05f1c817b18
+helpviewer_keywords: ["C28310"]
 ---
 # Warning C28310
 
diff --git a/docs/code-quality/c28311.md b/docs/code-quality/c28311.md
index 70e03e716e..9d72006cae 100644
--- a/docs/code-quality/c28311.md
+++ b/docs/code-quality/c28311.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C28311"
 title: Warning C28311
+description: "Learn more about: Warning C28311"
 ms.date: 11/04/2016
 f1_keywords: ["C28311"]
-ms.assetid: 2c76e07a-4418-40ef-8a77-c62774bc3677
+helpviewer_keywords: ["C28311"]
 ---
 # Warning C28311
 
diff --git a/docs/code-quality/c28312.md b/docs/code-quality/c28312.md
index 55f6154d54..852d5bec16 100644
--- a/docs/code-quality/c28312.md
+++ b/docs/code-quality/c28312.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C28312"
 title: Warning C28312
+description: "Learn more about: Warning C28312"
 ms.date: 11/04/2016
 f1_keywords: ["C28312"]
-ms.assetid: 19828546-33c9-4373-b7df-2a362ca12637
+helpviewer_keywords: ["C28312"]
 ---
 # Warning C28312
 
diff --git a/docs/code-quality/c33001.md b/docs/code-quality/c33001.md
index d3208941b4..679ffc1e04 100644
--- a/docs/code-quality/c33001.md
+++ b/docs/code-quality/c33001.md
@@ -13,14 +13,23 @@ helpviewer_keywords: ["C33001"]
 
 ## Remarks
 
-This warning is triggered when an uninitialized `VARIANT` is passed to an API such as `VariantClear`
-that expects an initialized `VARIANT`.
+This warning is triggered when an uninitialized `VARIANT` is passed to an API, such as `VariantClear`, that clears the object. Initialize the `VARIANT` before passing it to these functions so it can be properly cleared.
+
+This warning applies to these functions:
+
+* `VariantClear`
+* `PropVariantClear`
+* `VariantCopy`
+* `VariantCopyInd`
+* `VariantChangeType`
+* `VariantChangeTypeEx`
+* `DestroyPropVariant`
 
 Code analysis name: `VARIANTCLEAR_UNINITIALIZED`
 
 ## Example
 
-The following sample code causes warning C33001:
+The following code causes warning C33001:
 
 ```cpp
 #include <Windows.h>
@@ -36,11 +45,11 @@ HRESULT foo(bool some_condition)
         //...
     }
 
-    VariantClear(&var);     // C33001
+    VariantClear(&var);  // C33001
 }
 ```
 
-These warnings are corrected by ensuring `VariantClear` is called only for a properly initialized `VARIANT`:
+In this example, the warning is corrected by calling `VariantClear` only after `var` has been initialized:
 
 ```cpp
 #include <Windows.h>
@@ -54,12 +63,12 @@ HRESULT foo(bool some_condition)
         //...
         VariantInit(&var);
         //...
-        VariantClear(&var);     // C33001
+        VariantClear(&var);  // OK
     }
 }
 ```
 
 ## See also
 
-[C33004](./c33004.md)
+[C33004](./c33004.md)\
 [C33005](./c33005.md)
diff --git a/docs/code-quality/c33004.md b/docs/code-quality/c33004.md
index 752103c945..44486d8ffc 100644
--- a/docs/code-quality/c33004.md
+++ b/docs/code-quality/c33004.md
@@ -49,5 +49,5 @@ void t2(_Out_ VARIANT* pv)
 
 ## See also
 
-[C33001](./c33001.md)
+[C33001](./c33001.md)\
 [C33005](./c33005.md)
diff --git a/docs/code-quality/c33005.md b/docs/code-quality/c33005.md
index 8c056ba671..41509513e3 100644
--- a/docs/code-quality/c33005.md
+++ b/docs/code-quality/c33005.md
@@ -55,5 +55,5 @@ void foo()
 
 ## See also
 
-[C33001](./c33001.md)
+[C33001](./c33001.md)\
 [C33004](./c33004.md)
diff --git a/docs/code-quality/c6029.md b/docs/code-quality/c6029.md
index 85829020b6..729f39ab08 100644
--- a/docs/code-quality/c6029.md
+++ b/docs/code-quality/c6029.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C6029"
 title: Warning C6029
+description: "Learn more about: Warning C6029"
 ms.date: 2/07/2023
 f1_keywords: ["C6029", "USING_TAINTED_DATA", "__WARNING_USING_TAINTED_DATA"]
 helpviewer_keywords: ["C6029"]
@@ -35,7 +35,7 @@ void processData(FILE* file)
 }
 ```
 
-The fix for the issue depends on the nature of the data and the behavior of the annotated function that triggers the diagnostic. For more information, see the documentation for that function. A straightforward fix is to check the size before the second call to `std:fread`. In the next example, we throw an exception to terminate the function. Most real-world code would instead have an error recovery strategy that's specific to the scenario.
+The fix for the issue depends on the nature of the data and the behavior of the annotated function that triggers the diagnostic. For more information, see the documentation for that function. A straightforward fix is to check the size before the second call to `std::fread`. In the next example, we throw an exception to terminate the function. Most real-world code would instead have an error recovery strategy that's specific to the scenario.
 
 ```cpp
 void processData(FILE* file)
@@ -55,7 +55,7 @@ void processData(FILE* file)
 }
 ```
 
-In `std:fread` and similar functions, the code may need to read large amounts of data. To handle large data, you can allocate the size of the buffer dynamically after the size becomes known. Or, you can call `std:fread` multiple times as needed to read in the rest of the data. If you allocate the buffer dynamically, we recommend you put a limit on the size to avoid introducing an out-of-memory exploit for large values. We don't use this approach in our example because it's already bounded by the size of `uint8_t`.
+In `std::fread` and similar functions, the code may need to read large amounts of data. To handle large data, you can allocate the size of the buffer dynamically after the size becomes known. Or, you can call `std::fread` multiple times as needed to read in the rest of the data. If you allocate the buffer dynamically, we recommend you put a limit on the size to avoid introducing an out-of-memory exploit for large values. We don't use this approach in our example because it's already bounded by the size of `uint8_t`.
 
 ```cpp
 void processDataDynamic(FILE* file)
diff --git a/docs/code-quality/c6030.md b/docs/code-quality/c6030.md
index 41d536acb3..d839858cfa 100644
--- a/docs/code-quality/c6030.md
+++ b/docs/code-quality/c6030.md
@@ -6,17 +6,18 @@ f1_keywords: ["C6030", "USE_ATTRIBUTE_NORETURN", "__WARNING_USE_ATTRIBUTE_NORETU
 helpviewer_keywords: ["C6030"]
 ---
 
-# Warning  C6030
+# Warning C6030
 
 > Use attribute [[noreturn]] over __declspec(noreturn) in function '*function-name*'
 
 ## Remarks
 
-This warning suggests using the C++11 standard attribute `[[noreturn]]` in place of the declspec variant `__declspec(noreturn)`. The standard attribute provides better cross-platform support because it doesn't rely on language extensions.
+This warning suggests using the C++11 standard attribute [`[[noreturn]]`](../cpp/attributes.md#noreturn) in place of the declspec variant [`__declspec(noreturn)`](../cpp/noreturn.md). The standard attribute provides better cross-platform support because it doesn't rely on language extensions.
 
 This warning is off by default and isn't part of the `All Rules` rule set. To enable this warning, it must be added to the rule set file being used.
 
 This check is available in Visual Studio 2022 version 17.0 and later versions.
+
 Code analysis name: `USE_ATTRIBUTE_NORETURN`
 
 ## Example
@@ -24,15 +25,13 @@ Code analysis name: `USE_ATTRIBUTE_NORETURN`
 The following code generates C6030:
 
 ```cpp
-__declspec(noreturn) void TerminateApplication();
-
+__declspec(noreturn) void terminate_application();
 ```
 
 Fix the issue by using the `[[noreturn]]` attribute:
 
 ```cpp
-[[ noreturn ]] void TerminateApplication();
-
+[[noreturn]] void terminate_application();
 ```
 
 ## See also
diff --git a/docs/code-quality/c6102.md b/docs/code-quality/c6102.md
index d1dd840a69..9c35f2bc5a 100644
--- a/docs/code-quality/c6102.md
+++ b/docs/code-quality/c6102.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6102"
 title: Warning C6102
+description: "Learn more about: Warning C6102"
 ms.date: 11/04/2016
 f1_keywords: ["C6102"]
-ms.assetid: cfd49a8c-df46-48de-8dcb-02ecf2450034
+helpviewer_keywords: ["C6102"]
 ---
 # Warning C6102
 
diff --git a/docs/code-quality/c6103.md b/docs/code-quality/c6103.md
index d348b72bd5..6c9dfdcfcd 100644
--- a/docs/code-quality/c6103.md
+++ b/docs/code-quality/c6103.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6103"
 title: Warning C6103
+description: "Learn more about: Warning C6103"
 ms.date: 11/04/2016
 f1_keywords: ["C6103"]
-ms.assetid: 22d1ab35-31a3-4ba9-8ef4-7a64bce66621
+helpviewer_keywords: ["C6103"]
 ---
 # Warning C6103
 
diff --git a/docs/code-quality/c6296.md b/docs/code-quality/c6296.md
index c5b5b21acb..e6f7da0340 100644
--- a/docs/code-quality/c6296.md
+++ b/docs/code-quality/c6296.md
@@ -1,47 +1,35 @@
 ---
-description: "Learn more about: Warning C6296"
 title: Warning C6296
-ms.date: 11/04/2016
+description: "Learn more about: Warning C6296"
+ms.date: 03/30/2025
 f1_keywords: ["C6296", "LOOP_ONLY_EXECUTED_ONCE", "__WARNING_LOOP_ONLY_EXECUTED_ONCE"]
 helpviewer_keywords: ["C6296"]
-ms.assetid: 226573e0-db18-4c44-8fc6-0bc09d1028bc
 ---
 # Warning C6296
 
-> Ill-defined for-loop: Loop body only executed once
+> Ill-defined for-loop.  Loop body only executed once.
 
 ## Remarks
 
-This warning indicates that a for-loop might not function as intended. When the index is unsigned and a loop counts down from zero, its body is run only once.
+This warning indicates that a for-loop might unintentionally execute only once. A loop with an unsigned index counting down from zero or a mistaken use of `==` might cause this warning.
 
 Code analysis name: `LOOP_ONLY_EXECUTED_ONCE`
 
 ## Example
 
-The following code generates this warning:
+The following example generates C6296. Each for-loop shown executes exactly once.
 
 ```cpp
-void f( )
+int main()
 {
-   unsigned int i;
+    for (unsigned int i = 0; i < 10; i--) {}   // C6296
+    // Use the following line to resolve the warning:
+    // for (unsigned int i = 0; i < 10; i++) {}
 
-   for (i = 0; i < 100; i--)
-   {
-      // code ...
-   }
-}
-```
+    for (int i = 0; i == 0; i++) {}   // C6296
 
-To correct this warning, use the following code:
-
-```cpp
-void f( )
-{
-   unsigned int i;
+    for (int i = 0; i < 1; i++) {}   // OK
 
-   for (i = 0; i < 100; i++)
-   {
-      // code ...
-   }
+    for (int i = 1; i > 0; i--) {}   // OK
 }
 ```
diff --git a/docs/code-quality/c6331.md b/docs/code-quality/c6331.md
index 8c3047f9cd..b0e322a1d4 100644
--- a/docs/code-quality/c6331.md
+++ b/docs/code-quality/c6331.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Warning C6331"
 title: Warning C6331
+description: "Learn more about: Warning C6331"
 ms.date: 10/03/2022
 f1_keywords: ["C6331", "VirtualFreeInvalidParam1", "__WARNING_VIRTUALFREEINVALIDPARAM1"]
 helpviewer_keywords: ["C6331"]
-ms.assetid: cb1ecc2c-29a5-4c57-acf2-0954a4c047b1
 ---
 # Warning C6331
 
-> Invalid parameter: passing MEM_RELEASE and MEM_DECOMMIT in conjunction to `*function*` is not allowed. This results in the failure of this call
+> Invalid parameter: passing MEM_RELEASE and MEM_DECOMMIT in conjunction to *`function`* is not allowed. This results in the failure of this call
 
 This message indicates that an invalid parameter is passed to `VirtualFree` or `VirtualFreeEx`. `VirtualFree` and `VirtualFreeEx` both reject the flags (`MEM_RELEASE | MEM_DECOMMIT`) in combination. Therefore, the values `MEM_DECOMMIT` and `MEM_RELEASE` may not be used together in the same call.
 
diff --git a/docs/code-quality/c6383.md b/docs/code-quality/c6383.md
index 84bf8c2737..72d0ef8b4f 100644
--- a/docs/code-quality/c6383.md
+++ b/docs/code-quality/c6383.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Warning C6383"
 title: Warning C6383
+description: "Learn more about: Warning C6383"
 ms.date: 09/07/2022
 f1_keywords: ["C6383", "ELEMENTS_TO_BYTES", "__WARNING_ELEMENTS_TO_BYTES"]
 helpviewer_keywords: ["C6383"]
-ms.assetid: f5ff7938-0fbe-4b71-b98f-098fe887799d
 ---
 # Warning C6383
 
-> Buffer overrun due to conversion of an element count into a byte count: an element count is expected for parameter `*parameter_name*` in call to `*function_name*`
+> Buffer overrun due to conversion of an element count into a byte count: an element count is expected for parameter *`parameter_name`* in call to *`function_name`*
 
 This warning indicates that a non-constant byte count is being passed when an element count is instead required.
 
diff --git a/docs/code-quality/c6386.md b/docs/code-quality/c6386.md
index 2419833b70..7aa56f9f9f 100644
--- a/docs/code-quality/c6386.md
+++ b/docs/code-quality/c6386.md
@@ -1,10 +1,9 @@
 ---
 description: "Learn more about: Warning C6386"
 title: Warning C6386
-ms.date: 11/04/2016
+ms.date: 4/30/2025
 f1_keywords: ["C6386", "WRITE_OVERRUN", "__WARNING_WRITE_OVERRUN"]
 helpviewer_keywords: ["C6386"]
-ms.assetid: 84e69fe8-8f03-4bb3-b194-e5551882e214
 ---
 # Warning C6386
 
@@ -23,15 +22,14 @@ The following code generates both this warning and [C6201](../code-quality/c6201
 ```cpp
 #define MAX 25
 
-void f ( )
+void f()
 {
-  char ar[MAX];
-  // code ...
-  ar[MAX] = '\0';
+  char a[MAX];
+  a[MAX] = '\0'; // this writes one element past the end of the buffer
 }
 ```
 
-To correct both warnings, use the following code:
+To correct the warning, use the following code which accounts for the fact that array indexes are zero-based. Thus `MAX - 1` is the last element in the buffer: 
 
 ```cpp
 #define MAX 25
@@ -39,8 +37,7 @@ To correct both warnings, use the following code:
 void f ( )
 {
    char a[MAX];
-   // code ...
-   a[MAX - 1] = '\0';
+   a[MAX-1] = '\0';
 }
 ```
 
diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md
index d96f377b6d..a925d0b397 100644
--- a/docs/code-quality/c6387.md
+++ b/docs/code-quality/c6387.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C6387"
 title: Warning C6387
+description: "Learn more about: Warning C6387"
 ms.date: 11/04/2016
 f1_keywords: ["C6387", "INVALID_PARAM_VALUE_1", "__WARNING_INVALID_PARAM_VALUE_1"]
 helpviewer_keywords: ["C6387"]
-ms.assetid: 3ea2fc4d-ffc3-4c3c-bfae-d42aa56235d8
 ---
 # Warning C6387
 
@@ -27,7 +26,7 @@ _Post_ _Null_ char * g();
 
 void f(_In_ char *pch);
 
-void main()
+int main()
 {
     char *pCh = g();
     f(pCh); // Warning C6387
@@ -43,7 +42,7 @@ _Post_ _Notnull_ char * g();
 
 void f(_In_ char *pch);
 
-void main()
+int main()
 {
     char *pCh = g();
     f(pCh);
diff --git a/docs/code-quality/c6393.md b/docs/code-quality/c6393.md
index 07f0c540f0..a905c012a2 100644
--- a/docs/code-quality/c6393.md
+++ b/docs/code-quality/c6393.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C6393"
 title: Warning C6393
+description: "Learn more about: Warning C6393"
 ms.date: 11/29/2023
 f1_keywords: ["C6393", "LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP", "__WARNING_LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP"]
 helpviewer_keywords: ["C6393"]
@@ -26,26 +26,25 @@ Code analysis name: `LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP`
 The following code creates a lookup table for the day of the year, assuming 365 days per year. However, this doesn't work if the year is a leap year:
 
 ```cpp
- 
-#include <vector> 
-  
-void foo(int year) 
-{ 
-    const std::vector<int> items(365);  // C6393 
-    // Initialize items and use it... 
+#include <vector>
+
+void foo(int year)
+{
+    const std::vector<int> items(365);   // C6393
+    // Initialize items and use it...
 }
 ```
 
 To fix the problem, adjust the size of the lookup table as the table is created according to the result of appropriate leap year check:
 
 ```cpp
-#include <vector> 
-  
-void foo(int year) 
-{ 
-    bool isLeapYear = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0); 
-    const std::vector<int> items(isLeapYear ? 366 : 365); 
-    // Initialize items and use it... 
+#include <vector>
+
+void foo(int year)
+{
+    bool isLeapYear = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
+    const std::vector<int> items(isLeapYear ? 366 : 365);
+    // Initialize items and use it...
 }
 ```
 
diff --git a/docs/code-quality/c6394.md b/docs/code-quality/c6394.md
index 7d5c7b4db2..d4a4fe6668 100644
--- a/docs/code-quality/c6394.md
+++ b/docs/code-quality/c6394.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Warning C6394"
 title: Warning C6394
+description: "Learn more about: Warning C6394"
 ms.date: 11/29/2023
 f1_keywords: ["C6394", "LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE", "__WARNING_LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE"]
 helpviewer_keywords: ["C6394"]
@@ -52,7 +52,7 @@ void foo(int year)
 
 ## Heuristics
 
-This rule is enforced by checking if a lookup table has an initial size of 365 elements, but can be expanded to 366. However, it doesn't check if the table’s size is adjusted through proper leap year check or not, and so is a low confidence warning.
+This rule is enforced by checking if a lookup table has an initial size of 365 elements, but can be expanded to 366. However, it doesn't check if the table's size is adjusted through proper leap year check or not, and so is a low confidence warning.
 
 ## See also
 
diff --git a/docs/code-quality/c6411.md b/docs/code-quality/c6411.md
index a24d5c9118..a4a99565a8 100644
--- a/docs/code-quality/c6411.md
+++ b/docs/code-quality/c6411.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6411"
 title: Warning C6411
+description: "Learn more about: Warning C6411"
 ms.date: 11/04/2016
 f1_keywords: ["C6411", "POTENTIAL_READ_OVERRUN"]
-ms.assetid: 6bbc1734-eec4-4ad6-9908-4ed2a5f025db
+helpviewer_keywords: ["C6411"]
 ---
 # Warning C6411
 
diff --git a/docs/code-quality/c6412.md b/docs/code-quality/c6412.md
index 5c29356882..230011ec6e 100644
--- a/docs/code-quality/c6412.md
+++ b/docs/code-quality/c6412.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6412"
 title: Warning C6412
+description: "Learn more about: Warning C6412"
 ms.date: 11/04/2016
 f1_keywords: ["C6412", "POTENTIAL_WRITE_OVERRUN"]
-ms.assetid: 6498f045-1bdc-4428-9d95-d9498de207bb
+helpviewer_keywords: ["C6412"]
 ---
 # Warning C6412
 
diff --git a/docs/code-quality/c6504.md b/docs/code-quality/c6504.md
index e77e99df28..d7683b709d 100644
--- a/docs/code-quality/c6504.md
+++ b/docs/code-quality/c6504.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C6504"
 title: Warning C6504
+description: "Learn more about: Warning C6504"
 ms.date: 10/03/2022
 f1_keywords: ["C6504", "NULL_ON_NON_POINTER", "__WARNING_NULL_ON_NON_POINTER"]
 helpviewer_keywords: ["C6504"]
-ms.assetid: 6baeed46-e73d-4974-af16-7487c55b3473
 ---
 # Warning C6504
 
@@ -60,6 +59,6 @@ void g(Point& pt)
 }
 ```
 
-## See Also
+## See also
 
 [Annotation Properties](using-sal-annotations-to-reduce-c-cpp-code-defects.md)
diff --git a/docs/code-quality/c6506.md b/docs/code-quality/c6506.md
index df143e3c84..377aef7813 100644
--- a/docs/code-quality/c6506.md
+++ b/docs/code-quality/c6506.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C6506"
 title: Warning C6506
+description: "Learn more about: Warning C6506"
 ms.date: 11/04/2016
 f1_keywords: ["C6506", "BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY", "__WARNING_BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY"]
 helpviewer_keywords: ["C6506"]
-ms.assetid: 20b87ee8-13ea-4d71-95a1-2b2d144d196a
 ---
 # Warning C6506
 
@@ -21,7 +20,7 @@ Code analysis name: `BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY`
 The following code generates this warning:
 
 ```cpp
-#include<sal.h>
+#include <sal.h>
 void f(_Out_ char c)
 {
     c = 'd';
@@ -31,7 +30,7 @@ void f(_Out_ char c)
 To correct this warning, use a pointer or an array type, as shown in the following sample code:
 
 ```cpp
-#include<sal.h>
+#include <sal.h>
 void f(_Out_ char *c)
 {
     *c = 'd';
diff --git a/docs/code-quality/c6701.md b/docs/code-quality/c6701.md
index bdbbdf6afa..386d29a099 100644
--- a/docs/code-quality/c6701.md
+++ b/docs/code-quality/c6701.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Warning C6701"
 title: Warning C6701
+description: "Learn more about: Warning C6701"
 ms.date: 11/04/2016
 f1_keywords: ["C6701"]
-helpviewer_keywords: ["C67901"]
-ms.assetid: c48484e2-542c-4f7b-93ea-98c6367cb3d9
+helpviewer_keywords: ["C6701"]
 ---
 # Warning C6701
 
diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md
index e4df96bfab..54f78c56c9 100644
--- a/docs/code-quality/c6993.md
+++ b/docs/code-quality/c6993.md
@@ -1,12 +1,14 @@
 ---
-description: "Learn more about: Warning C6993"
 title: Warning C6993
-ms.date: 11/04/2016
+description: "Learn more about: Warning C6993"
+ms.date: 2/25/2025
 f1_keywords: ["C6993"]
-ms.assetid: 7ea93bc6-b934-4b6b-b71a-a56e765fb4cd
+helpviewer_keywords: ["C6993"]
 ---
 # Warning C6993
 
 > Code analysis ignores OpenMP constructs; analyzing single-threaded code
 
-This warning indicates that the Code Analyzer has encountered Open MP pragmas that it can't analyze.
+This warning indicates that the static analysis tools don't support Open MP pragmas. The static analysis tools could generate incorrect results because they assume the code is single-threaded, not multi-threaded.
+
+Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what the toolset supports and not an issue with your code.
\ No newline at end of file
diff --git a/docs/code-quality/c6995.md b/docs/code-quality/c6995.md
index 6e5736bd79..4ca022014e 100644
--- a/docs/code-quality/c6995.md
+++ b/docs/code-quality/c6995.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6995"
 title: Warning C6995
+description: "Learn more about: Warning C6995"
 ms.date: 11/04/2016
 f1_keywords: ["C6995"]
-ms.assetid: 1e82e3ad-99fe-4a35-87d5-359c74b9658e
+helpviewer_keywords: ["C6995"]
 ---
 # Warning C6995
 
diff --git a/docs/code-quality/c6997.md b/docs/code-quality/c6997.md
index 4090bea051..8cbfc9bd5e 100644
--- a/docs/code-quality/c6997.md
+++ b/docs/code-quality/c6997.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Warning C6997"
 title: Warning C6997
+description: "Learn more about: Warning C6997"
 ms.date: 11/04/2016
 f1_keywords: ["C6997", "IGNORED_ANNOTATIONS"]
-ms.assetid: 48fd86a3-d57b-4ecb-979a-5d3a4186482e
+helpviewer_keywords: ["C6997"]
 ---
 # Warning C6997
 
diff --git a/docs/code-quality/clang-tidy.md b/docs/code-quality/clang-tidy.md
index 7427e96a45..3d731181ea 100644
--- a/docs/code-quality/clang-tidy.md
+++ b/docs/code-quality/clang-tidy.md
@@ -2,8 +2,8 @@
 title: Using Clang-Tidy in Visual Studio
 description: "How to use Clang-Tidy in Visual Studio for Microsoft C++ code analysis."
 ms.date: 03/1/2022
-ms.topic: "conceptual"
-f1_keywords: ["vs.codeanalysis.clangtidy","vs.codeanalysis.propertypages.ClangTidyToolPath"]
+ms.topic: "concept-article"
+f1_keywords: ["vs.codeanalysis.clangtidy","vs.codeanalysis.propertypages.ClangTidyToolPath","vs.codeanalysis.propertypages.AdditionalOptions","vs.codeanalysis.propertypages.MaxProcesses"]
 ---
 # Using Clang-Tidy in Visual Studio
 
@@ -94,6 +94,18 @@ By default, Clang-Tidy does not set any checks when enabled. To see the list of
 
 If you'd like to have custom rules built into your clang-tidy executable and run it in Microsoft Visual Studio, you can change the path to the executable that Visual Studio runs. In the project Property Pages dialog, open the **Configuration Properties** > **Code Analysis** > **Clang-Tidy** page. Manually type in the path or **Browse** and select the path under the **Clang-Tidy Tool Directory** property. The new executable is used once the change is saved, and the app is recompiled.
 
+## Clang-Tidy Additional Options
+
+The **Clang-Tidy Additional Options** property lets you specify additional compiler arguments that are passed to Clang-Tidy using the `--extra-args` command-line option. These arguments can be used to control how Clang-Tidy parses your code, such as defining macros, include paths, or language standards. Enter arguments as a semi-colon separated list. For example: `-std=c++20;-DMY_DEFINE=1;-Ipath\to\include`.
+
+## Clang-Tidy Prepend Additional Options
+
+The **Clang-Tidy Prepend Additional Options** property lets you specify compiler arguments that are passed to Clang-Tidy using the `--extra-args-before` command-line option. These arguments are inserted before the default compiler arguments when Clang-Tidy parses your code. Enter arguments as a semi-colon separated list. For example: `-std=c++20;-DMY_DEFINE=1;`.
+
+## Max Number of Processes
+
+The **Max Number of Processes** property lets you specify how many processes Clang-Tidy can use to run analysis in parallel. By default, Clang-Tidy runs serially. Set this property to enable parallel execution and specify the number of parallel processes. Set it to `0` to use all available logical processors on your system. Increasing the number of processes can improve analysis speed on multi-core machines.
+
 ## See also
 
 [Clang/LLVM support for MSBuild projects](https://devblogs.microsoft.com/cppblog/clang-llvm-support-for-msbuild-projects/)\
diff --git a/docs/code-quality/code-analysis-for-c-cpp-overview.md b/docs/code-quality/code-analysis-for-c-cpp-overview.md
index e9ef85e677..33c4a8e91e 100644
--- a/docs/code-quality/code-analysis-for-c-cpp-overview.md
+++ b/docs/code-quality/code-analysis-for-c-cpp-overview.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Code analysis for C/C++ overview"
 title: Code analysis for C/C++ overview
 ms.date: 04/28/2018
-ms.topic: conceptual
+ms.topic: concept-article
 helpviewer_keywords:
   - "annotations, code analysis"
   - "build integration, code analysis"
@@ -20,7 +20,7 @@ ms.assetid: 81f0c9e8-f471-4de5-aac4-99db336a8809
 ---
 # Code analysis for C/C++ overview
 
-The C/C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).
+The C/C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines).
 
 ## IDE (integrated development environment) integration
 
diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md
index ecae8ba0d0..82158f2233 100644
--- a/docs/code-quality/code-analysis-for-cpp-corecheck.md
+++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md
@@ -17,250 +17,250 @@ This section lists C++ Core Guidelines Checker warnings. For information about C
 ## OWNER_POINTER Group
 
 [C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT](C26402.md)\
-Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26403 RESET_OR_DELETE_OWNER](C26403.md)\
-Reset or explicitly delete an owner\<T> pointer '*variable*'. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Reset or explicitly delete an owner\<T> pointer '*variable*'. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26404 DONT_DELETE_INVALID](C26404.md)\
-Do not delete an owner\<T> that may be in invalid state. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Do not delete an owner\<T> that may be in invalid state. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26405 DONT_ASSIGN_TO_VALID](C26405.md)\
-Do not assign to an owner\<T> that may be in valid state. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Do not assign to an owner\<T> that may be in valid state. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26406 DONT_ASSIGN_RAW_TO_OWNER](C26406.md)\
-Do not assign a raw pointer to an owner\<T>. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Do not assign a raw pointer to an owner\<T>. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY](C26407.md)\
-Prefer scoped objects, don't heap-allocate unnecessarily. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped).
+Prefer scoped objects, don't heap-allocate unnecessarily. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped).
 
 [C26429 USE_NOTNULL](C26429.md)\
-Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 [C26430 TEST_ON_ALL_PATHS](C26430.md)\
-Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 [C26431 DONT_TEST_NOTNULL](C26431.md)\
-The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 ## RAW_POINTER Group
 
 [C26400 NO_RAW_POINTER_ASSIGNMENT](c26400.md)\
-Do not assign the result of an allocation or a function call with an owner\<T> return value to a raw pointer; use owner\<T> instead. See [C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-raw).
+Do not assign the result of an allocation or a function call with an owner\<T> return value to a raw pointer; use owner\<T> instead. See [C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw).
 
 [C26401 DONT_DELETE_NON_OWNER](c26401.md)\
-Do not delete a raw pointer that is not an owner\<T>. See [C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-raw).
+Do not delete a raw pointer that is not an owner\<T>. See [C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw).
 
 [C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT](C26402.md)\
-Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr).
+Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr).
 
 [C26408 NO_MALLOC_FREE](C26408.md)\
-Avoid malloc() and free(), prefer the nothrow version of new with delete. See [C++ Core Guidelines R.10](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-mallocfree).
+Avoid malloc() and free(), prefer the nothrow version of new with delete. See [C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-mallocfree).
 
 [C26409 NO_NEW_DELETE](C26409.md)\
-Avoid calling new and delete explicitly, use std::make_unique\<T> instead. See [C++ Core Guidelines R.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-newdelete).
+Avoid calling new and delete explicitly, use std::make_unique\<T> instead. See [C++ Core Guidelines R.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-newdelete).
 
 [C26429 USE_NOTNULL](C26429.md)\
-Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 [C26430 TEST_ON_ALL_PATHS](C26430.md)\
-Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 [C26431 DONT_TEST_NOTNULL](C26431.md)\
-The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value).
+The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr).
 
 [C26481 NO_POINTER_ARITHMETIC](C26481.md)\
-Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds).
+Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arithmetic).
 
 [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\
-Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds).
+Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-decay).
 
 ## UNIQUE_POINTER Group
 
 [C26410 NO_REF_TO_CONST_UNIQUE_PTR](C26410.md)\
-The parameter '*parameter*' is a reference to `const` unique pointer, use const T* or const T& instead. See [C++ Core Guidelines R.32](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-uniqueptrparam).
+The parameter '*parameter*' is a reference to `const` unique pointer, use const T* or const T& instead. See [C++ Core Guidelines R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-uniqueptrparam).
 
 [C26411 NO_REF_TO_UNIQUE_PTR](C26411.md)\
-The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use T* or T& instead. See [C++ Core Guidelines R.33](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-reseat).
+The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use T* or T& instead. See [C++ Core Guidelines R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-reseat).
 
 [C26414 RESET_LOCAL_SMART_PTR](C26414.md)\
-Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped).
+Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped).
 
 [C26415 SMART_PTR_NOT_NEEDED](C26415.md)\
-Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-smartptrparam).
+Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam).
 
 ## SHARED_POINTER Group
 
 [C26414 RESET_LOCAL_SMART_PTR](C26414.md)\
-Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped).
+Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped).
 
 [C26415 SMART_PTR_NOT_NEEDED](C26415.md)\
-Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-smartptrparam).
+Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam).
 
 [C26416 NO_RVALUE_REF_SHARED_PTR](C26416.md)\
-Shared pointer parameter '*symbol*' is passed by rvalue reference. Pass by value instead. See [C++ Core Guidelines R.34](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam-owner).
+Shared pointer parameter '*symbol*' is passed by rvalue reference. Pass by value instead. See [C++ Core Guidelines R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-owner).
 
 [C26417 NO_LVALUE_REF_SHARED_PTR](C26417.md)\
-Shared pointer parameter '*symbol*' is passed by reference and not reset or reassigned. Use T* or T& instead. See [C++ Core Guidelines R.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam).
+Shared pointer parameter '*symbol*' is passed by reference and not reset or reassigned. Use T* or T& instead. See [C++ Core Guidelines R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam).
 
 [C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR](C26418.md)\
-Shared pointer parameter '*symbol*' is not copied or moved. Use T* or T& instead. See [C++ Core Guidelines R.36](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam-const).
+Shared pointer parameter '*symbol*' is not copied or moved. Use T* or T& instead. See [C++ Core Guidelines R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-const).
 
 ## DECLARATION Group
 
 [C26426 NO_GLOBAL_INIT_CALLS](C26426.md)\
-Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects).
+Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init).
 
 [C26427 NO_GLOBAL_INIT_EXTERNS](C26427.md)\
-Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects).
+Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init).
 
 [C26444 NO_UNNAMED_RAII_OBJECTS](c26444.md)\
-Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).
+Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname).
 
 ## CLASS Group
 
 [C26432 DEFINE_OR_DELETE_SPECIAL_OPS](C26432.md)\
-If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all).
+If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-five).
 
 [C26433 OVERRIDE_EXPLICITLY](c26433.md)\
-Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final).
+Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override).
 
 [C26434 DONT_HIDE_METHODS](C26434.md)\
-Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final).
+Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override).
 
 [C26435 SINGLE_VIRTUAL_SPECIFICATION](c26435.md)\
-Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).
+Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override).
 
 [C26436 NEED_VIRTUAL_DTOR](C26436.md)\
-The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual).
+The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual).
 
 [C26443 NO_EXPLICIT_DTOR_OVERRIDE](c26443.md)\
-Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).
+Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override).
 
 ## STYLE Group
 
 [C26438 NO_GOTO](C26438.md)\
-Avoid `goto`. See [C++ Core Guidelines ES.76](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es76-avoid-goto).
+Avoid `goto`. See [C++ Core Guidelines ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto).
 
 ## FUNCTION Group
 
 [C26439 SPECIAL_NOEXCEPT](C26439.md)\
-This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept).
+This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept).
 
 [C26440 DECLARE_NOEXCEPT](C26440.md)\
-Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept).
+Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept).
 
 [C26447 DONT_THROW_IN_NOEXCEPT](c26447.md)\
 The function is declared **`noexcept`** but calls a function which may throw exceptions.
-See [C++ Core Guidelines:  F.6: If your function may not throw, declare it noexcept](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept).
+See [C++ Core Guidelines:  F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept).
 
 ## CONCURRENCY Group
 
 [C26441 NO_UNNAMED_GUARDS](C26441.md)\
-Guard objects must be named. See [C++ Core Guidelines cp.44](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#cp44-remember-to-name-your-lock_guards-and-unique_locks).
+Guard objects must be named. See [C++ Core Guidelines cp.44](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-name).
 
 ## CONST Group
 
 [C26460 USE_CONST_REFERENCE_ARGUMENTS](c26460.md)\
-The reference argument '*argument*' for function '*function*' can be marked as `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
+The reference argument '*argument*' for function '*function*' can be marked as `const`. See [C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref).
 
 [C26461 USE_CONST_POINTER_ARGUMENTS](c26461.md):\
-The pointer argument '*argument*' for function '*function*' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref).
+The pointer argument '*argument*' for function '*function*' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref).
 
 [C26462 USE_CONST_POINTER_FOR_VARIABLE](c26462.md)\
-The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
 
 [C26463 USE_CONST_FOR_ELEMENTS](c26463.md)\
-The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
 
 [C26464 USE_CONST_POINTER_FOR_ELEMENTS](c26464.md)\
-The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
 
 [C26496 USE_CONST_FOR_VARIABLE](c26496.md)\
-The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction).
+The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const).
 
 [C26497 USE_CONSTEXPR_FOR_FUNCTION](c26497.md)\
-This function *function* could be marked `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines F.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rf-constexpr).
+This function *function* could be marked `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines F.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-constexpr).
 
 [C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL](c26498.md)\
-This function call *function* can use `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines con.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-constexpr).
+This function call *function* can use `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines con.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr).
 
 ## TYPE Group
 
 [C26437 DONT_SLICE](C26437.md)\
-Do not slice. See [C++ Core Guidelines ES.63](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es63-dont-slice).
+Do not slice. See [C++ Core Guidelines ES.63](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-slice).
 
 [C26465 NO_CONST_CAST_UNNECESSARY](c26465.md)\
-Don't use `const_cast` to cast away `const`. `const_cast` is not required; constness or volatility is not being removed by this conversion. See [C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-constcast).
+Don't use `const_cast` to cast away `const`. `const_cast` is not required; constness or volatility is not being removed by this conversion. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast).
 
 [C26466 NO_STATIC_DOWNCAST_POLYMORPHIC](c26466.md)\
-Don't use `static_cast` downcasts. A cast from a polymorphic type should use dynamic_cast. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-downcast).
+Don't use `static_cast` downcasts. A cast from a polymorphic type should use dynamic_cast. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast).
 
 [C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR](c26471.md)\
-Don't use `reinterpret_cast`. A cast from void* can use `static_cast`. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast).
+Don't use `reinterpret_cast`. A cast from void* can use `static_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast).
 
 [C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION](C26472.md)\
-Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast).
+Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-arithmeticcast).
 
 [C26473 NO_IDENTITY_CAST](C26473.md)\
-Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast).
+Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-identitycast).
 
 [C26474 NO_IMPLICIT_CAST](C26474.md)\
-Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast).
+Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-implicitpointercast).
 
 [C26475 NO_FUNCTION_STYLE_CASTS](C26475.md)\
-Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es49-if-you-must-use-a-cast-use-a-named-cast).
+Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts-named).
 
 [C26490 NO_REINTERPRET_CAST](c26490.md)\
-Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast).
 
 [C26491 NO_STATIC_DOWNCAST](c26490.md)\
-Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast).
 
 [C26492 NO_CONST_CAST](c26492.md)\
-Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast).
 
 [C26493 NO_CSTYLE_CAST](c26493.md)\
-Don't use C-style casts. See [C++ Core Guidelines Type.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Don't use C-style casts. See [C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-cstylecast).
 
 [C26494 VAR_USE_BEFORE_INIT](c26494.md)\
-Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-init).
 
 [C26495 MEMBER_UNINIT](c26495.md)\
-Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type).
+Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-memberinit).
 
 ## BOUNDS Group
 
 [C26446 USE_GSL_AT](c26446.md)\
-Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines:  Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile).
+Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines:  Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-stdlib).
 
 [C26481 NO_POINTER_ARITHMETIC](C26481.md)\
-Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arithmetic)
 
 [C26482 NO_DYNAMIC_ARRAY_INDEXING](c26482.md)\
-Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex)
 
 [C26483 STATIC_INDEX_OUT_OF_RANGE](c26483.md)\
-Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex)
 
 [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\
-Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds)
+Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-decay)
 
 ## GSL Group
 
 [C26445 NO_SPAN_REF](c26445.md)\
 A reference to `gsl::span` or `std::string_view` may be an indication of a lifetime issue.
-See [C++ Core Guidelines GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views)
+See [C++ Core Guidelines GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views)
 
 [C26446 USE_GSL_AT](c26446.md)\
-Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines:  Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile).
+Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines:  Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-stdlib).
 
 [C26448 USE_GSL_FINALLY](c26448.md)\
-Consider using `gsl::finally` if final action is intended. See [C++ Core Guidelines:  GSL.util: Utilities](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-utilities).
+Consider using `gsl::finally` if final action is intended. See [C++ Core Guidelines:  GSL.util: Utilities](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-utilities).
 
 [C26449 NO_SPAN_FROM_TEMPORARY](c26449.md)\
 `gsl::span` or `std::string_view` created from a temporary will be invalid when the temporary is invalidated. See
-[C++ Core Guidelines: GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views).
+[C++ Core Guidelines: GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views).
 
 ## Deprecated Warnings
 
diff --git a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md
index cd25a57d26..d4b1e95e89 100644
--- a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md
+++ b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md
@@ -2,7 +2,6 @@
 description: "Learn more about: How to: Set Code Analysis Properties for C/C++ Projects"
 title: "How to: Set Code Analysis Properties for C/C++ Projects"
 ms.date: 11/04/2016
-ms.topic: "conceptual"
 f1_keywords:
   - "vs.codeanalysis.propertypages.native"
   - "VC.Project.VCCLCompilerTool.EnablePrefast"
diff --git a/docs/code-quality/how-to-specify-additional-code-information-by-using-analysis-assume.md b/docs/code-quality/how-to-specify-additional-code-information-by-using-analysis-assume.md
index cf2bac2dc3..16272c8e97 100644
--- a/docs/code-quality/how-to-specify-additional-code-information-by-using-analysis-assume.md
+++ b/docs/code-quality/how-to-specify-additional-code-information-by-using-analysis-assume.md
@@ -2,7 +2,6 @@
 description: "Learn more about how to specify additional code information by using _Analysis_assume_."
 title: "Use _Analysis_assume_ for code analysis hints"
 ms.date: 12/16/2020
-ms.topic: "conceptual"
 f1_keywords:
   - "_Analysis_assume_"
 helpviewer_keywords:
diff --git a/docs/code-quality/intrinsic-functions.md b/docs/code-quality/intrinsic-functions.md
index 7b9d3a334c..7a86f4a05c 100644
--- a/docs/code-quality/intrinsic-functions.md
+++ b/docs/code-quality/intrinsic-functions.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Intrinsic Functions"
 title: Intrinsic Functions
 ms.date: 11/04/2016
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_String_length_"
   - "_Param_"
diff --git a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md
index b54c5ce1d3..7c2a7c05f3 100644
--- a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md
+++ b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md
@@ -2,7 +2,7 @@
 title: "Quickstart: Code analysis for C/C++"
 description: "Run static analysis on C++ code in Visual Studio to detect common coding problems and defects."
 ms.date: 04/08/2020
-ms.topic: "conceptual"
+ms.topic: "quickstart"
 helpviewer_keywords:
   - "C/C++ code analysis"
   - "code analysis, C/C++"
@@ -19,7 +19,7 @@ You can improve the quality of your application by running code analysis regular
 
 1. To run code analysis every time the project is built using the selected configuration, select the **Enable Code Analysis on Build** check box. You can also run code analysis manually by opening the **Analyze** menu and then choosing **Run Code Analysis on** *ProjectName* or **Run Code Analysis on File**.
 
-1. Choose the [rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md) that you want to use or create a [custom rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md#to-create-a-rule-set-in-a-text-editor). If using LLVM/clang-cl, see [Using Clang-Tidy in Visual Studio](../code-quality/clang-tidy.md) to configure Clang-Tidy analysis options.
+1. Choose the [rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md) that you want to use or create a [custom rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md#to-create-a-rule-set-in-a-text-editor). If using LLVM/clang-cl, see [Using Clang-Tidy in Visual Studio](clang-tidy.md) to configure Clang-Tidy analysis options.
 
 ### Standard C/C++ rule sets
 
@@ -27,25 +27,25 @@ Visual Studio includes these standard sets of rules for native code:
 
 | Rule Set | Description |
 |--|--|
-| **C++ Core Check Arithmetic Rules** | These rules enforce checks related to [arithmetic operations from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es-expressions-and-statements). |
-| **C++ Core Check Bounds Rules** | These rules enforce the [Bounds profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile). |
-| **C++ Core Check Class Rules** | These rules enforce checks related to [classes from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-classes-and-class-hierarchies). |
-| **C++ Core Check Concurrency Rules** | These rules enforce checks related to [concurrency from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#cpcon-concurrency). |
-| **C++ Core Check Const Rules** | These rules enforce [const-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con-constants-and-immutability). |
-| **C++ Core Check Declaration Rules** | These rules enforce checks related to [declarations from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i-interfaces). |
-| **C++ Core Check Enum Rules** | These rules enforce [enum-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-enum). |
+| **C++ Core Check Arithmetic Rules** | These rules enforce checks related to [arithmetic operations from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es-expressions-and-statements). |
+| **C++ Core Check Bounds Rules** | These rules enforce the [Bounds profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). |
+| **C++ Core Check Class Rules** | These rules enforce checks related to [classes from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-classes-and-class-hierarchies). |
+| **C++ Core Check Concurrency Rules** | These rules enforce checks related to [concurrency from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cpcon-concurrency). |
+| **C++ Core Check Const Rules** | These rules enforce [const-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con-constants-and-immutability). |
+| **C++ Core Check Declaration Rules** | These rules enforce checks related to [declarations from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i-interfaces). |
+| **C++ Core Check Enum Rules** | These rules enforce [enum-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-enum). |
 | **C++ Core Check Experimental Rules** | These rules collect some experimental checks. Eventually, we expect these checks to be moved to other rulesets or removed completely. |
-| **C++ Core Check Function Rules** | These rules enforce checks related to [functions from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f-functions). |
-| **C++ Core Check GSL Rules** | These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-gsl). |
-| **C++ Core Check Lifetime Rules** | These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prolifetime-lifetime-safety-profile). |
-| **C++ Core Check Owner Pointer Rules** | These rules enforce resource-management checks related to [`owner<T>` from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). |
-| **C++ Core Check Raw Pointer Rules** | These rules enforce resource-management checks related to [raw pointers from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). |
-| **C++ Core Check Rules** | These rules enforce a subset of the checks from the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-core-guidelines). Use this ruleset to include all of the C++ Core Check rules except the Enum and Experimental rulesets. |
-| **C++ Core Check Shared Pointer Rules** | These rules enforce resource-management checks related to [types with shared pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). |
-| **C++ Core Check STL Rules** | These rules enforce checks related to the [C++ Standard Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-stdlib). |
-| **C++ Core Check Style Rules** | These rules enforce checks related to use of [expressions and statements from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es-expressions-and-statements). |
-| **C++ Core Check Type Rules** | These rules enforce the [Type profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile). |
-| **C++ Core Check Unique Pointer Rules** | These rules enforce resource-management checks related to types with [unique pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). |
+| **C++ Core Check Function Rules** | These rules enforce checks related to [functions from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f-functions). |
+| **C++ Core Check GSL Rules** | These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-gsl). |
+| **C++ Core Check Lifetime Rules** | These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prolifetime-lifetime-safety-profile). |
+| **C++ Core Check Owner Pointer Rules** | These rules enforce resource-management checks related to [`owner<T>` from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). |
+| **C++ Core Check Raw Pointer Rules** | These rules enforce resource-management checks related to [raw pointers from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). |
+| **C++ Core Check Rules** | These rules enforce a subset of the checks from the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-core-guidelines). Use this ruleset to include all of the C++ Core Check rules except the Enum and Experimental rulesets. |
+| **C++ Core Check Shared Pointer Rules** | These rules enforce resource-management checks related to [types with shared pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). |
+| **C++ Core Check STL Rules** | These rules enforce checks related to the [C++ Standard Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-stdlib). |
+| **C++ Core Check Style Rules** | These rules enforce checks related to use of [expressions and statements from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es-expressions-and-statements). |
+| **C++ Core Check Type Rules** | These rules enforce the [Type profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile). |
+| **C++ Core Check Unique Pointer Rules** | These rules enforce resource-management checks related to types with [unique pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). |
 | **Concurrency Check Rules** | These rules enforce a set of Win32 concurrency pattern checks in C++. |
 | **Concurrency Rules** | Adds concurrency rules from C++ Core Guidelines to **Concurrency Check Rules**. |
 | **Microsoft Native Minimum Rules** | These rules focus on the most critical problems in your native code, including potential security holes and application crashes. We recommend you include this rule set in any custom rule set you create for your native projects. |
@@ -100,7 +100,7 @@ The Error List window lists the code analysis warnings found. The results are di
 
 For detailed information about the warning, including possible solutions to the issue, choose the warning ID in the Code column to display its corresponding online help article.
 
-Double-click a warning to move the cursor to the line of code that caused the warning in the Visual Studio code editor. Or, press Enter on the selected warning.
+Double-click a warning to move the cursor to the line of code that caused the warning in the code editor. Or, press Enter on the selected warning.
 
 After you understand the problem, you can resolve it in your code. Then, rerun code analysis to make sure that the warning no longer appears in the Error List.
 
@@ -128,4 +128,4 @@ You can search long lists of warning messages and you can filter warnings in mul
 
 ## See also
 
-- [Code analysis for C/C++](../code-quality/code-analysis-for-c-cpp-overview.md)
+- [Code analysis for C/C++](code-analysis-for-c-cpp-overview.md)
diff --git a/docs/code-quality/specifying-when-and-where-an-annotation-applies.md b/docs/code-quality/specifying-when-and-where-an-annotation-applies.md
index d0849fc192..f01e08d991 100644
--- a/docs/code-quality/specifying-when-and-where-an-annotation-applies.md
+++ b/docs/code-quality/specifying-when-and-where-an-annotation-applies.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Specifying When and Where an Annotation Applies"
 title: Specifying When and Where an Annotation Applies
 ms.date: 11/04/2016
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords:
   - "_Group_"
   - "_At_"
diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml
index 049d6ad622..61bafc57ca 100644
--- a/docs/code-quality/toc.yml
+++ b/docs/code-quality/toc.yml
@@ -591,6 +591,10 @@ items:
     href: ../code-quality/c26117.md
   - name: Warning C26130
     href: ../code-quality/c26130.md
+  - name: Warning C26132
+    href: c26132.md
+  - name: Warning C26133
+    href: c26133.md
   - name: Warning C26135
     href: ../code-quality/c26135.md
   - name: Warning C26138
@@ -633,6 +637,10 @@ items:
     href: ../code-quality/c26830.md
   - name: Warning C26831
     href: ../code-quality/c26831.md
+  - name: Warning C26838
+    href: ../code-quality/c26838.md
+  - name: Warning C26839
+    href: ../code-quality/c26839.md
   - name: Warning C26832
     href: ../code-quality/c26832.md
   - name: Warning C26833
diff --git a/docs/code-quality/understanding-sal.md b/docs/code-quality/understanding-sal.md
index 8669d1689b..fea482553a 100644
--- a/docs/code-quality/understanding-sal.md
+++ b/docs/code-quality/understanding-sal.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Understanding SAL"
 title: Understanding SAL
+description: "Learn more about: Understanding SAL"
 ms.date: 11/04/2016
-ms.topic: "conceptual"
-ms.assetid: a94d6907-55f2-4874-9571-51d52d6edcfd
+ms.topic: "concept-article"
 ---
 # Understanding SAL
 
@@ -94,9 +93,9 @@ These annotations help identify possible uninitialized values and invalid null p
 
 This section shows code examples for the basic SAL annotations.
 
-### Using the Visual Studio Code Analysis Tool to Find Defects
+### Using the Visual Studio code analysis tool to find defects
 
-In the examples, the Visual Studio Code Analysis tool is used together with SAL annotations to find code defects. Here's how to do that.
+In the examples, the Visual Studio code analysis tool is used together with SAL annotations to find code defects. Here's how to do that.
 
 #### To use Visual Studio code analysis tools and SAL
 
@@ -145,7 +144,7 @@ void BadInCaller()
 }
 ```
 
-If you use Visual Studio Code Analysis on this example, it validates that the callers pass a non-Null pointer to an initialized buffer for `pInt`. In this case, `pInt` pointer cannot be NULL.
+If you use Visual Studio code analysis on this example, it validates that the callers pass a non-Null pointer to an initialized buffer for `pInt`. In this case, `pInt` pointer cannot be NULL.
 
 ### Example: The \_In\_opt\_ Annotation
 
@@ -172,7 +171,7 @@ void InOptCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that the function checks for NULL before it accesses the buffer.
+Visual Studio code analysis validates that the function checks for NULL before it accesses the buffer.
 
 ### Example: The \_Out\_ Annotation
 
@@ -198,7 +197,7 @@ void OutCaller()
 }
 ```
 
-Visual Studio Code Analysis Tool validates that the caller passes a non-NULL pointer to a buffer for `pInt` and that the buffer is initialized by the function before it returns.
+Visual Studio code analysis validates that the caller passes a non-NULL pointer to a buffer for `pInt` and that the buffer is initialized by the function before it returns.
 
 ### Example: The \_Out\_opt\_ Annotation
 
@@ -225,7 +224,7 @@ void OutOptCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that this function checks for NULL before `pInt` is dereferenced, and if `pInt` is not NULL, that the buffer is initialized by the function before it returns.
+Visual Studio code analysis validates that this function checks for NULL before `pInt` is dereferenced, and if `pInt` is not NULL, that the buffer is initialized by the function before it returns.
 
 ### Example: The \_Inout\_ Annotation
 
@@ -256,7 +255,7 @@ void BadInOutCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that callers pass a non-NULL pointer to an initialized buffer for `pInt`, and that, before return, `pInt` is still non-NULL and the buffer is initialized.
+Visual Studio code analysis validates that callers pass a non-NULL pointer to an initialized buffer for `pInt`, and that, before return, `pInt` is still non-NULL and the buffer is initialized.
 
 ### Example: The \_Inout\_opt\_ Annotation
 
@@ -285,7 +284,7 @@ void InOutOptCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that this function checks for NULL before it accesses the buffer, and if `pInt` is not NULL, that the buffer is initialized by the function before it returns.
+Visual Studio code analysis validates that this function checks for NULL before it accesses the buffer, and if `pInt` is not NULL, that the buffer is initialized by the function before it returns.
 
 ### Example: The \_Outptr\_ Annotation
 
@@ -315,7 +314,7 @@ void OutPtrCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that the caller passes a non-NULL pointer for `*pInt`, and that the buffer is initialized by the function before it returns.
+Visual Studio code analysis validates that the caller passes a non-NULL pointer for `*pInt`, and that the buffer is initialized by the function before it returns.
 
 ### Example: The \_Outptr\_opt\_ Annotation
 
@@ -347,7 +346,7 @@ void OutPtrOptCaller()
 }
 ```
 
-Visual Studio Code Analysis validates that this function checks for NULL before `*pInt` is dereferenced, and that the buffer is initialized by the function before it returns.
+Visual Studio code analysis validates that this function checks for NULL before `*pInt` is dereferenced, and that the buffer is initialized by the function before it returns.
 
 ### Example: The \_Success\_ Annotation in Combination with \_Out\_
 
@@ -366,7 +365,7 @@ bool GetValue(_Out_ int *pInt, bool flag)
 }
 ```
 
-The `_Out_` annotation causes Visual Studio Code Analysis to validate that the caller passes a non-NULL pointer to a buffer for `pInt`, and that the buffer is initialized by the function before it returns.
+The `_Out_` annotation causes Visual Studio code analysis to validate that the caller passes a non-NULL pointer to a buffer for `pInt`, and that the buffer is initialized by the function before it returns.
 
 ## SAL Best Practice
 
@@ -384,7 +383,7 @@ Here are some guidelines:
 
 - Annotate value-range annotations so that Code Analysis can ensure buffer and pointer safety.
 
-- Annotate locking rules and locking side effects. For more information, see [Annotating Locking Behavior](../code-quality/annotating-locking-behavior.md).
+- Annotate locking rules and locking side effects. For more information, see [Annotating Locking Behavior](annotating-locking-behavior.md).
 
 - Annotate driver properties and other domain-specific properties.
 
@@ -392,10 +391,10 @@ Or you can annotate all parameters to make your intent clear throughout and to m
 
 ## See also
 
-- [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md)
-- [Annotating Function Parameters and Return Values](../code-quality/annotating-function-parameters-and-return-values.md)
-- [Annotating Function Behavior](../code-quality/annotating-function-behavior.md)
-- [Annotating Structs and Classes](../code-quality/annotating-structs-and-classes.md)
-- [Annotating Locking Behavior](../code-quality/annotating-locking-behavior.md)
-- [Specifying When and Where an Annotation Applies](../code-quality/specifying-when-and-where-an-annotation-applies.md)
-- [Best Practices and Examples](../code-quality/best-practices-and-examples-sal.md)
+- [Using SAL Annotations to Reduce C/C++ Code Defects](using-sal-annotations-to-reduce-c-cpp-code-defects.md)
+- [Annotating Function Parameters and Return Values](annotating-function-parameters-and-return-values.md)
+- [Annotating Function Behavior](annotating-function-behavior.md)
+- [Annotating Structs and Classes](annotating-structs-and-classes.md)
+- [Annotating Locking Behavior](annotating-locking-behavior.md)
+- [Specifying When and Where an Annotation Applies](specifying-when-and-where-an-annotation-applies.md)
+- [Best Practices and Examples](best-practices-and-examples-sal.md)
diff --git a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md
index 545b52d184..363cce16f6 100644
--- a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md
+++ b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Use Rule Sets to Specify the C++ Rules to Run"
 title: Using Rule Sets to Specify the C++ Rules to Run
 ms.date: 07/27/2020
-ms.topic: "conceptual"
+ms.topic: "how-to"
 f1_keywords:
   - "vs.codeanalysis.rulesets.native"
 ---
diff --git a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md
index 80f88e1c27..3426d695a2 100644
--- a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md
+++ b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: Using SAL Annotations to Reduce C/C++ Code Defects"
 title: Using SAL Annotations to Reduce C/C++ Code Defects
+description: "Learn more about: Using SAL Annotations to Reduce C/C++ Code Defects"
 ms.date: 11/04/2016
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords:
   - "annotations"
   - "SAL annotations"
   - "code analysis, annotation"
-ms.assetid: a16e47d0-6f3e-4ed6-8883-459b2874e9a4
 ---
 # Using SAL Annotations to Reduce C/C++ Code Defects
 
@@ -47,6 +46,6 @@ The articles in this section of the documentation discuss aspects of SAL, provid
 
      Provides examples that show how to use SAL annotations. Also explains common pitfalls.
 
-## See Also
+## See also
 
 [SAL 2.0 Annotations for Windows Drivers](/windows-hardware/drivers/devtest/sal-2-annotations-for-windows-drivers)
diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md
index 3609f413ac..0010cfda98 100644
--- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md
+++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md
@@ -2,7 +2,7 @@
 title: Using the C++ Core Guidelines checkers
 description: "How to set up and use the Microsoft C++ Code Analysis rules for C++ Core Guidelines."
 ms.date: 06/21/2023
-ms.topic: "conceptual"
+ms.topic: "how-to"
 dev_langs:
  - CPP
 ---
@@ -74,7 +74,7 @@ int main()
     int arr[10];           // warning C26494
     int* p = arr;          // warning C26485
 
-    [[gsl::suppress(bounds.1)]] // This attribute suppresses Bounds rule #1
+    [[gsl::suppress("bounds.1", justification : "This attribute suppresses Bounds rules #1")]]
     {
         int* q = p + 1;    // warning C26481 (suppressed)
         p = q++;           // warning C26481 (suppressed)
@@ -104,50 +104,50 @@ c:\users\username\documents\visual studio 2015\projects\corecheckexample\coreche
 ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
 ```
 
-The C++ Core Guidelines are there to help you write better and safer code. However, you might find an instance where a rule or a profile shouldn't be applied. It's easy to suppress it directly in the code. You can use the `[[gsl::suppress]]` attribute to keep C++ Core Check from detecting and reporting any violation of a rule in the following code block. You can mark individual statements to suppress specific rules. You can even suppress the entire bounds profile by writing `[[gsl::suppress(bounds)]]` without including a specific rule number.
+The C++ Core Guidelines are there to help you write better and safer code. However, you might find an instance where a rule or a profile shouldn't be applied. It's easy to suppress it directly in the code. You can use the `[[gsl::suppress]]` attribute to keep C++ Core Check from detecting and reporting any violation of a rule in the following code block. You can mark individual statements to suppress specific rules. You can even suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number.
 
 ## Supported rule sets
 
 As new rules are added to the C++ Core Guidelines Checker, the number of warnings that are produced for pre-existing code might increase. You can use predefined rule sets to filter which kinds of rules to enable. You'll find reference articles for most rules under
 [Visual Studio C++ Core Check Reference](code-analysis-for-cpp-corecheck.md).
 
-- **Arithmetic Rules**: Rules to detect arithmetic [overflow](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-overflow), [signed-unsigned operations](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-unsigned), and [bit manipulation](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-nonnegative).<sup>15.6</sup>
+- **Arithmetic Rules**: Rules to detect arithmetic [overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow), [signed-unsigned operations](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned), and [bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative).<sup>15.6</sup>
 
-- **Bounds Rules**: Enforce the [Bounds profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile).<sup>15.3</sup>
+- **Bounds Rules**: Enforce the [Bounds profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile).<sup>15.3</sup>
 
-- **Class Rules**: A few rules that focus on proper use of special member functions and virtual specifications. They're a subset of the checks recommended for [classes and class hierarchies](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-class).<sup>15.5</sup>
+- **Class Rules**: A few rules that focus on proper use of special member functions and virtual specifications. They're a subset of the checks recommended for [classes and class hierarchies](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-class).<sup>15.5</sup>
 
-- **Concurrency Rules**: A single rule, which catches bad guard object declarations. For more information, see [guidelines related to concurrency](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-concurrency).<sup>15.5</sup>
+- **Concurrency Rules**: A single rule, which catches bad guard object declarations. For more information, see [guidelines related to concurrency](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-concurrency).<sup>15.5</sup>
 
-- **Const Rules**: Enforce [const-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con-constants-and-immutability).<sup>15.3</sup>
+- **Const Rules**: Enforce [const-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con-constants-and-immutability).<sup>15.3</sup>
 
-- **Declaration Rules**: A couple of rules from the [interfaces guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-interfaces) that focus on how global variables are declared.<sup>15.5</sup>
+- **Declaration Rules**: A couple of rules from the [interfaces guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-interfaces) that focus on how global variables are declared.<sup>15.5</sup>
 
-- **Enum Rules**: These rules enforce [enum-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-enum).<sup>16.3</sup>
+- **Enum Rules**: These rules enforce [enum-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-enum).<sup>16.3</sup>
 
 - **Experimental Rules** These are experimental C++ Core Check rules that are useful but not ready for everyday use. Try them out and [provide feedback](https://aka.ms/feedback/suggest?space=62).<sup>16.0</sup>
 
-- **Function Rules**: Two checks that help with adoption of the **`noexcept`** specifier. They're part of the guidelines for [clear function design and implementation](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-functions).<sup>15.5</sup>
+- **Function Rules**: Two checks that help with adoption of the **`noexcept`** specifier. They're part of the guidelines for [clear function design and implementation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-functions).<sup>15.5</sup>
 
-- **GSL Rules**: These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-gsl).<sup>15.7</sup>
+- **GSL Rules**: These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-gsl).<sup>15.7</sup>
 
-- **Lifetime Rules**: These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prolifetime-lifetime-safety-profile).<sup>15.7</sup>
+- **Lifetime Rules**: These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prolifetime-lifetime-safety-profile).<sup>15.7</sup>
 
-- **Owner Pointer Rules**: Enforce [resource-management checks related to owner\<T> from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).<sup>15.3</sup>
+- **Owner Pointer Rules**: Enforce [resource-management checks related to owner\<T> from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).<sup>15.3</sup>
 
-- **Raw Pointer Rules**: Enforce [resource-management checks related to raw pointers from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).<sup>15.3</sup>
+- **Raw Pointer Rules**: Enforce [resource-management checks related to raw pointers from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).<sup>15.3</sup>
 
-- **Shared pointer Rules**: It's part of [resource management](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-resource) guidelines enforcement.<sup>15.5</sup> We added a few rules specific to how shared pointers are passed into functions or used locally.
+- **Shared pointer Rules**: It's part of [resource management](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource) guidelines enforcement.<sup>15.5</sup> We added a few rules specific to how shared pointers are passed into functions or used locally.
 
-- **STL Rules**: These rules enforce checks related to the [C++ Standard Library (STL) from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-stdlib).<sup>15.7</sup>
+- **STL Rules**: These rules enforce checks related to the [C++ Standard Library (STL) from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-stdlib).<sup>15.7</sup>
 
-- **Style Rules**: One simple but important check, which bans use of [goto](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-goto).<sup>15.5</sup> It's the first step to improve your coding style and use of expressions and statements in C++.
+- **Style Rules**: One simple but important check, which bans use of [goto](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto).<sup>15.5</sup> It's the first step to improve your coding style and use of expressions and statements in C++.
 
-- **Type Rules**: Enforce the [Type profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile).<sup>15.3</sup>
+- **Type Rules**: Enforce the [Type profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile).<sup>15.3</sup>
 
-- **Unique Pointer Rules**: Enforce [resource-management checks related to types with unique pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).<sup>15.3</sup>
+- **Unique Pointer Rules**: Enforce [resource-management checks related to types with unique pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).<sup>15.3</sup>
 
-- **C++ Core Check Rules**: This rule set contains all the currently implemented checks from the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-core-guidelines), except for the Experimental rules.
+- **C++ Core Check Rules**: This rule set contains all the currently implemented checks from the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-core-guidelines), except for the Experimental rules.
 
 <sup>15.3</sup> These rules first appeared in Visual Studio 2017 version 15.3\
 <sup>15.5</sup> These rules first appeared in Visual Studio 2017 version 15.5\
@@ -197,10 +197,10 @@ The Microsoft C++ compiler has limited support for the `[[gsl::suppress]]` attri
 
 ```cpp
 // Suppress only warnings from the 'r.11' rule in expression.
-[[gsl::suppress(r.11)]] new int;
+[[gsl::suppress("r.11")]] new int;
 
 // Suppress all warnings from the 'r' rule group (resource management) in block.
-[[gsl::suppress(r)]]
+[[gsl::suppress("r")]]
 {
     new int;
 }
@@ -209,7 +209,7 @@ The Microsoft C++ compiler has limited support for the `[[gsl::suppress]]` attri
 // For declarations, you might need to use the surrounding block.
 // Macros are not expanded inside of attributes.
 // Use plain numbers instead of macros from the warnings.h.
-[[gsl::suppress(26400)]]
+[[gsl::suppress("26400")]]
 {
     int *p = new int;
 }
@@ -317,11 +317,11 @@ Because of the way the code analysis rules get loaded within Visual Studio 2015,
 
 1. In the **NuGet Package Manager** window, search for Microsoft.CppCoreCheck.
 
-    ![Nuget Package Manager window showing the CppCoreCheck package.](../code-quality/media/cppcorecheck_nuget_window.png)
+    ![Nuget Package Manager window showing the CppCoreCheck package.](media/cppcorecheck_nuget_window.png)
 
 1. Select the Microsoft.CppCoreCheck package and then choose the **Install** button to add the rules to your project.
 
-   The NuGet package adds an MSBuild *`.targets`* file to your project that is invoked when you enable code analysis on your project. The *`.targets`* file adds the C++ Core Check rules as another extension to the Visual Studio Code analysis tool. When the package is installed, you can use the Property Pages dialog to enable or disable the released and experimental rules.
+   The NuGet package adds an MSBuild *`.targets`* file to your project that is invoked when you enable code analysis on your project. The *`.targets`* file adds the C++ Core Check rules as another extension to the Visual Studio code analysis tool. When the package is installed, you can use the Property Pages dialog to enable or disable the released and experimental rules.
 
 ::: moniker-end
 
diff --git a/docs/code-quality/walkthrough-analyzing-c-cpp-code-for-defects.md b/docs/code-quality/walkthrough-analyzing-c-cpp-code-for-defects.md
index 0332306aa5..384584b365 100644
--- a/docs/code-quality/walkthrough-analyzing-c-cpp-code-for-defects.md
+++ b/docs/code-quality/walkthrough-analyzing-c-cpp-code-for-defects.md
@@ -2,7 +2,7 @@
 title: "Walkthrough: Analyzing C/C++ code for defects"
 description: "Demonstrates how to use code analysis with Microsoft C++ in Visual Studio."
 ms.date: 04/14/2020
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["C/C++, code analysis", "code analysis, walkthroughs", "code, analyzing C/C++", "code analysis tool, walkthroughs"]
 ---
 # Walkthrough: Analyzing C/C++ code for defects
diff --git a/docs/cpp/arrays-cpp.md b/docs/cpp/arrays-cpp.md
index e32eaab9fa..48563141ee 100644
--- a/docs/cpp/arrays-cpp.md
+++ b/docs/cpp/arrays-cpp.md
@@ -161,10 +161,9 @@ int i2[5][7];
 
 It specifies an array of type **`int`**, conceptually arranged in a two-dimensional matrix of five rows and seven columns, as shown in the following figure:
 
-:::image type="content" source="../cpp/media/vc38rc1.gif" alt-text="Conceptual layout of a multidimensional array.":::
-
+:::image type="complex" source="../cpp/media/vc38rc1.gif" alt-text="Conceptual layout of a multidimensional array.":::
 The image is a grid 7 cells wide and 5 cells high. Each cell contains the index of the cell. The first cell index is labeled 0,0. The next cell in that row is 0,1 and so on to the last cell in that row which is 0,6. The next row starts with the index 1,0. The cell after that has an index of 1,1. The last cell in that row is 1,6. This pattern repeats until the last row, which starts with the index 4,0. The last cell in the last row has an index of 4,6.
-:::image-end
+:::image-end:::
 
 You can declare multidimensioned arrays that have an initializer list (as described in [Initializers](../cpp/initializers.md)). In these declarations, the constant expression that specifies the bounds for the first dimension can be omitted. For example:
 
diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md
index 961f2945bb..8ed976529a 100644
--- a/docs/cpp/attributes.md
+++ b/docs/cpp/attributes.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: Attributes in C++"
 title: "Attributes in C++"
-f1_keywords: ["deprecated", "no_return", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::intrinsic", "msvc::no_tls_guard"]
-helpviewer_keywords: ["deprecated", "no_return", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::intrinsic", "msvc::no_tls_guard"]
+description: "Learn more about: Attributes in C++"
+f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard"]
+helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard"]
 ms.date: 4/13/2023
 ---
 
@@ -77,16 +77,18 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w
 
 ## Microsoft-specific attributes
 
-### `[[gsl::suppress(rules)]]`
+### `[[gsl::suppress(<tag> [, justification: <narrow-string-literal>])]]`
+
+`<tag>` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. The `[[gsl::suppress]]` attribute is available in Visual Studio 2022 version 17.14 and later versions.
 
-The Microsoft-specific `[[gsl::suppress(rules)]]` attribute is used to suppress warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet:
+The Microsoft-specific `[[gsl::suppress]]` attribute is used to suppress warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet:
 
 ```cpp
 int main()
 {
     int arr[10]; // GSL warning C26494 will be fired
     int* p = arr; // GSL warning C26485 will be fired
-    [[gsl::suppress(bounds.1)]] // This attribute suppresses Bounds rule #1
+    [[gsl::suppress("bounds.1", justification: "This attribute suppresses Bounds rule #1")]]
     {
         int* q = p + 1; // GSL warning C26481 suppressed
         p = q--; // GSL warning C26481 suppressed
@@ -102,7 +104,7 @@ The example raises these warnings:
 
 - [C26481](../code-quality/c26481.md) (Bounds Rule 1: Don't use pointer arithmetic. Use span instead.)
 
-The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress(bounds)]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted.
+The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted.
 
 ### `[[msvc::flatten]]`
 
diff --git a/docs/cpp/basic-concepts-cpp.md b/docs/cpp/basic-concepts-cpp.md
index 7102a6a9f7..a60b27fef4 100644
--- a/docs/cpp/basic-concepts-cpp.md
+++ b/docs/cpp/basic-concepts-cpp.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Basic Concepts  (C++)"
-title: "Basic Concepts  (C++)"
+title: "Basic Concepts (C++)"
+description: "Learn more about: Basic Concepts (C++)"
 ms.custom: "index-page"
-ms.date: "12/11/2019"
+ms.date: 12/11/2019
 helpviewer_keywords: ["C++, basic language concepts"]
-ms.assetid: 961801e6-2ffd-4bf1-bb71-7f55e48d9c79
 ---
-# Basic Concepts  (C++)
+# Basic Concepts (C++)
 
 This section explains concepts that are critical to understanding C++. C programmers will be familiar with many of these concepts, but there are some subtle differences that can cause unexpected program results. The following topics are included:
 
diff --git a/docs/cpp/bstr-t-assign.md b/docs/cpp/bstr-t-assign.md
index 565b248630..801be55d0a 100644
--- a/docs/cpp/bstr-t-assign.md
+++ b/docs/cpp/bstr-t-assign.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: _bstr_t::Assign"
 title: "_bstr_t::Assign"
+description: "Learn more about: _bstr_t::Assign"
 ms.date: 02/02/2021
 f1_keywords: ["_bstr_t::Assign"]
 helpviewer_keywords: ["Assign method [C++]"]
 ---
-# _`bstr_t::Assign`
+# `_bstr_t::Assign`
 
 **Microsoft Specific**
 
diff --git a/docs/cpp/c-cpp-language-and-standard-libraries.md b/docs/cpp/c-cpp-language-and-standard-libraries.md
index 69a5e4afc8..59218ff5e3 100644
--- a/docs/cpp/c-cpp-language-and-standard-libraries.md
+++ b/docs/cpp/c-cpp-language-and-standard-libraries.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: C/C++ language and standard libraries reference"
 title: "C/C++ language and standard libraries reference"
+description: "Learn more about: C/C++ language and standard libraries reference"
 ms.date: 09/11/2024
 ms.topic: "overview"
 ms.custom: intro-overview
@@ -16,7 +16,7 @@ You'll also find documentation for the C runtime library, the C++ standard libra
 [C language](../c-language/c-language-reference.md)\
 Reference content for the Microsoft implementation of the C language.
 
-[C++ language](../cpp/cpp-language-reference.md)\
+[C++ language](cpp-language-reference.md)\
 Reference content for the Microsoft implementation of the C++ language.
 
 [C/C++ preprocessor](../preprocessor/c-cpp-preprocessor-reference.md)\
@@ -66,7 +66,7 @@ A header-only C++20 library for using polymorphism in C++ without inheritance. F
 [SafeInt library](../safeint/safeint-library.md)\
 A portable library that can be used with MSVC, GCC, or Clang to help prevent integer overflows.
 
-[Data Access Libraries](../data/data-access-in-cpp.md)
+[Data Access Libraries](../data/data-access-in-cpp.md)\
 Libraries to support data access using ATL or MFC, and legacy services such as OLE DB and ODBC.
 
 ## Related articles
diff --git a/docs/cpp/casting.md b/docs/cpp/casting.md
index 17830ed970..1a74c49398 100644
--- a/docs/cpp/casting.md
+++ b/docs/cpp/casting.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Casting in C++"
 title: "Casting"
+description: "Learn more about: Casting in C++"
 ms.date: 6/11/2024
 helpviewer_keywords: ["casting [C++]", "coercion [C++]", "virtual functions [C++], in derived classes [C++]", "static cast operator", "dynamic cast operator", "polymorphic classes [C++]", "classes [C++], polymorphism"]
 ai-usage: ai-assisted
@@ -9,21 +9,21 @@ ai-usage: ai-assisted
 
 In C++, if a class is derived from a base class containing one or more virtual functions, a pointer to that base class type can be used to call virtual functions in the derived class object. A class containing virtual functions is sometimes called a "polymorphic class."
 
-![Diagram of a class hierarchy where C derives from B, which derives from A.](../cpp/media/vc38zz1.gif "Class hierarchy")<br/>
+![Diagram of a class hierarchy where C derives from B, which derives from A.](media/vc38zz1.gif "Class hierarchy")\
 Class hierarchy
 
 An object of type `C` can be visualized as follows:
 
-![Diagram of Class C with subobjects B and A.](../cpp/media/vc38zz2.gif "Class C with subobjects B and A") <br/>
+![Diagram of Class C with subobjects B and A.](media/vc38zz2.gif "Class C with subobjects B and A")\
 Class C with subobjects B and A
 
 Given an instance of class `C`, there's a `B` subobject and an `A` subobject. The instance of `C`, including the `A` and `B` subobjects, is the "complete object."
 
 Because a derived class completely contains the definitions of all the base classes from which it's derived, it's safe to cast a pointer to any of its base classes (also called an upcast). Given a pointer to a base class, it may be safe to cast the pointer to an instance of a derived class (also called a downcast).
 
-Using run-time type information, it's possible to check whether a pointer actually points to a complete object and can be safely cast to point to another object in its hierarchy. The [dynamic_cast](../cpp/dynamic-cast-operator.md) operator performs a run-time check to ensure that the operation is safe. It's better to design your class hierarchy so that you can use virtual functions to avoid the need for downcasting. However, if you must downcast, use `dynamic_cast` to ensure that the operation is safe.
+Using run-time type information, it's possible to check whether a pointer actually points to a complete object and can be safely cast to point to another object in its hierarchy. The [dynamic_cast](dynamic-cast-operator.md) operator performs a run-time check to ensure that the operation is safe. It's better to design your class hierarchy so that you can use virtual functions to avoid the need for downcasting. However, if you must downcast, use `dynamic_cast` to ensure that the operation is safe.
 
-For conversion of nonpolymorphic types, you can use the [static_cast](../cpp/static-cast-operator.md) operator (this topic explains the difference between static and dynamic casting conversions, and when it's appropriate to use each).
+For conversion of nonpolymorphic types, you can use the [static_cast](static-cast-operator.md) operator (this topic explains the difference between static and dynamic casting conversions, and when it's appropriate to use each).
 
 The following example demonstrates the use of `dynamic_cast` and `static_cast`:
 
@@ -72,9 +72,9 @@ int main() {
 
 This section covers the following topics:
 
-- [Casting operators](../cpp/casting-operators.md)\
-- [Run-time type information](../cpp/run-time-type-information.md)
+- [Casting operators](casting-operators.md)
+- [Run-time type information](run-time-type-information.md)
 
 ## See also
 
-[Expressions](../cpp/expressions-cpp.md)
+[Expressions](expressions-cpp.md)
diff --git a/docs/cpp/class-member-overview.md b/docs/cpp/class-member-overview.md
index 54f6191224..3d97b74bea 100644
--- a/docs/cpp/class-member-overview.md
+++ b/docs/cpp/class-member-overview.md
@@ -17,7 +17,7 @@ The full list of member categories is as follows:
 
 - [Overview of member functions](overview-of-member-functions.md).
 
-- [Mutable](static-members-cpp.md) and [static](static-members-cpp.md) data members, including built-in types and other user defined types.
+- [Mutable](mutable-data-members-cpp.md) and [static](static-members-cpp.md) data members, including built-in types and other user defined types.
 
 - Operators
 
diff --git a/docs/cpp/class-templates.md b/docs/cpp/class-templates.md
index 42bb8d2539..4d0d7b7ce6 100644
--- a/docs/cpp/class-templates.md
+++ b/docs/cpp/class-templates.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Class Templates"
 title: "Class Templates"
+description: "Learn more about: Class Templates"
 ms.date: 06/30/2022
 helpviewer_keywords: ["classes [C++], operating on type", "class templates", "templates, class templates"]
-ms.assetid: 633a53c8-24ee-4c23-8c88-e7c3cb0b7ac3
 ---
 # Class Templates
 
@@ -28,15 +27,15 @@ public:
 
 template< class T, int i > MyStack< T, i >::MyStack( void )
 {
-};
+}
 
 template< class T, int i > void MyStack< T, i >::push( const T item )
 {
-};
+}
 
 template< class T, int i > T& MyStack< T, i >::pop( void )
 {
-};
+}
 
 int main()
 {
diff --git a/docs/cpp/clrcall.md b/docs/cpp/clrcall.md
index e0271e971a..c368132c78 100644
--- a/docs/cpp/clrcall.md
+++ b/docs/cpp/clrcall.md
@@ -38,7 +38,7 @@ int __clrcall Func1() {
 }
 
 // Func1 hasn't been used at this point (code has not been generated),
-// so runtime returns the adddress of a stub to the function
+// so runtime returns the address of a stub to the function
 int (__clrcall *pf)() = &Func1;
 
 // code calls the function, code generated at difference address
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp
index af736b0495..753367555e 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp
@@ -1,4 +1,3 @@
-
     // Use make_shared function when possible.
     auto sp1 = make_shared<Song>(L"The Beatles", L"Im Happy Just to Dance With You");
 
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp
index 551c3f2f5b..2c02d593fb 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp
@@ -1,4 +1,3 @@
-
     // Initialize two separate raw pointers.
     // Note that they contain the same values.
     auto song1 = new Song(L"Village People", L"YMCA");
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp
index e7ad81c8d5..29baefa191 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp
@@ -1,4 +1,3 @@
-
 class MyClass
 {
 private:
diff --git a/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp b/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp
index 10ac9aab95..2c7e2716ed 100644
--- a/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp
+++ b/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp
@@ -1,4 +1,3 @@
-
 class LargeObject
 {
 public:
diff --git a/docs/cpp/com-ptr-t-extractors.md b/docs/cpp/com-ptr-t-extractors.md
index 416c396712..305a593e87 100644
--- a/docs/cpp/com-ptr-t-extractors.md
+++ b/docs/cpp/com-ptr-t-extractors.md
@@ -4,7 +4,6 @@ description: "Describes the extraction operators for the _com_ptr_t class."
 ms.date: 07/07/2020
 f1_keywords: ["_com_ptr_t::operatorInterface&", "_com_ptr_t::operatorbool", "_com_ptr_t::operator->", "_com_ptr_t::operator*"]
 helpviewer_keywords: ["operator Interface& [C++]", "* operator [C++], with specific objects", "operator& [C++]", "operator* [C++]", "-> operator [C++], with specific objects", "& operator [C++], with specific objects", "operator Interface* [C++]", "operator * [C++]", "operator->", "operator bool", "extractors, _com_ptr_t class", "extractors [C++]"]
-ms.assetid: 194b9e0e-123c-49ff-a187-0a7fcd68145a
 ---
 # `_com_ptr_t` Extractors
 
@@ -14,7 +13,7 @@ Extract the encapsulated COM interface pointer.
 
 ## Syntax
 
-```c++
+```cpp
 operator Interface*( ) const throw( );
 operator Interface&( ) const;
 Interface& operator*( ) const;
diff --git a/docs/cpp/compiler-limits.md b/docs/cpp/compiler-limits.md
index c1926cd274..4fcdd08cfc 100644
--- a/docs/cpp/compiler-limits.md
+++ b/docs/cpp/compiler-limits.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Limits"
 title: "Compiler Limits"
+description: "Learn more about: Compiler Limits"
 ms.date: "06/05/2023"
 helpviewer_keywords: ["cl.exe compiler, limits for language constructs"]
 ---
@@ -22,7 +22,7 @@ The C++ standard recommends limits for various language constructs. The followin
 
 - Scope qualifications of one identifier - C++ standard: 256, Microsoft C++ compiler: 127.
 
-- Nested **`extern`** specifications - C++ standard: 1024, Microsoft C++ compiler: 9 (not counting the implicit **`extern`** specification in global scope, or 10, if you count the implicit **`extern`** specification in global scope..
+- Nested **`extern`** specifications - C++ standard: 1024, Microsoft C++ compiler: 9 (not counting the implicit **`extern`** specification in global scope, or 10, if you count the implicit **`extern`** specification in global scope.
 
 - Template arguments in a template declaration - C++ standard: 1024, Microsoft C++ compiler: 2046.
 
diff --git a/docs/cpp/const-and-volatile-pointers.md b/docs/cpp/const-and-volatile-pointers.md
index cca4371b50..b786fcb6b4 100644
--- a/docs/cpp/const-and-volatile-pointers.md
+++ b/docs/cpp/const-and-volatile-pointers.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: const and volatile pointers"
 title: "const and volatile pointers"
+description: "Learn more about: const and volatile pointers"
 ms.date: "11/19/2019"
 helpviewer_keywords: ["volatile keyword [C++], and pointers", "pointers, and const", "pointers, and volatile", "const keyword [C++], volatile pointers"]
-ms.assetid: 0c92dc6c-400e-4342-b345-63ddfe649d7e
 ---
 # const and volatile pointers
 
@@ -117,5 +116,5 @@ int main() {
 
 ## See also
 
-[Pointers](pointers-cpp.md)
+[Pointers](pointers-cpp.md)\
 [Raw pointers](raw-pointers.md)
diff --git a/docs/cpp/cpp-language-reference.md b/docs/cpp/cpp-language-reference.md
index f5316639df..7165a7aa29 100644
--- a/docs/cpp/cpp-language-reference.md
+++ b/docs/cpp/cpp-language-reference.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: C++ Language Reference"
 title: "C++ Language Reference"
+description: "Learn more about: C++ Language Reference"
 ms.custom: "index-page"
-ms.date: "12/10/2019"
+ms.date: 12/10/2019
 helpviewer_keywords: ["C++, language reference"]
-ms.assetid: 4be9cacb-c862-4391-894a-3a118c9c93ce
 ---
 # C++ Language Reference
 
@@ -14,96 +13,95 @@ For an overview of Modern C++ programming practices, see [Welcome Back to C++](w
 
 See the following tables to quickly find a keyword or operator:
 
-- [C++ Keywords](../cpp/keywords-cpp.md)
-
-- [C++ Operators](../cpp/cpp-built-in-operators-precedence-and-associativity.md)
+- [C++ Keywords](keywords-cpp.md)
+- [C++ Operators](cpp-built-in-operators-precedence-and-associativity.md)
 
 ## In This Section
 
-[Lexical Conventions](../cpp/lexical-conventions.md)<br/>
+[Lexical Conventions](lexical-conventions.md)\
 Fundamental lexical elements of a C++ program: tokens, comments, operators, keywords, punctuators, literals. Also, file translation, operator precedence/associativity.
 
-[Basic Concepts](../cpp/basic-concepts-cpp.md)<br/>
+[Basic Concepts](basic-concepts-cpp.md)\
 Scope, linkage, program startup and termination, storage classes, and types.
 
-[Built-in types](fundamental-types-cpp.md)
+[Built-in types](fundamental-types-cpp.md)\
 The fundamental types that are built into the C++ compiler and their value ranges.
 
-[Standard Conversions](../cpp/standard-conversions.md)<br/>
+[Standard Conversions](standard-conversions.md)\
 Type conversions between built-in types. Also, arithmetic conversions and conversions among pointer, reference, and pointer-to-member types.
 
-[Declarations and definitions](declarations-and-definitions-cpp.md)
+[Declarations and definitions](declarations-and-definitions-cpp.md)\
 Declaring and defining variables, types and functions.
 
-[Operators, Precedence and Associativity](../cpp/cpp-built-in-operators-precedence-and-associativity.md)<br/>
+[Operators, Precedence and Associativity](cpp-built-in-operators-precedence-and-associativity.md)\
 The operators in C++.
 
-[Expressions](../cpp/expressions-cpp.md)<br/>
+[Expressions](expressions-cpp.md)\
 Types of expressions, semantics of expressions, reference topics on operators, casting and casting operators, run-time type information.
 
-[Lambda Expressions](../cpp/lambda-expressions-in-cpp.md)<br/>
+[Lambda Expressions](lambda-expressions-in-cpp.md)\
 A programming technique that implicitly defines a function object class and constructs a function object of that class type.
 
-[Statements](../cpp/statements-cpp.md)<br/>
+[Statements](statements-cpp.md)\
 Expression, null, compound, selection, iteration, jump, and declaration statements.
 
-[Classes and structs](../cpp/classes-and-structs-cpp.md)<br/>
+[Classes and structs](classes-and-structs-cpp.md)\
 Introduction to classes, structures, and unions. Also, member functions, special member functions, data members, bit fields, **`this`** pointer, nested classes.
 
-[Unions](unions.md)<br/>
+[Unions](unions.md)\
 User-defined types in which all members share the same memory location.
 
-[Derived Classes](../cpp/inheritance-cpp.md)<br/>
+[Derived Classes](inheritance-cpp.md)\
 Single and multiple inheritance, **`virtual`** functions, multiple base classes, **abstract** classes, scope rules. Also, the **`__super`** and **`__interface`** keywords.
 
-[Member-Access Control](../cpp/member-access-control-cpp.md)<br/>
+[Member-Access Control](member-access-control-cpp.md)\
 Controlling access to class members: **`public`**, **`private`**, and **`protected`** keywords. Friend functions and classes.
 
-[Overloading](operator-overloading.md)<br/>
+[Overloading](operator-overloading.md)\
 Overloaded operators, rules for operator overloading.
 
-[Exception Handling](../cpp/exception-handling-in-visual-cpp.md)<br/>
+[Exception Handling](exception-handling-in-visual-cpp.md)\
 C++ exception handling, structured exception handling (SEH), keywords used in writing exception handling statements.
 
-[Assertion and User-Supplied Messages](../cpp/assertion-and-user-supplied-messages-cpp.md)<br/>
+[Assertion and User-Supplied Messages](assertion-and-user-supplied-messages-cpp.md)\
 `#error` directive, the **`static_assert`** keyword, the `assert` macro.
 
-[Templates](../cpp/templates-cpp.md)<br/>
+[Templates](templates-cpp.md)\
 Template specifications, function templates, class templates, **`typename`** keyword, templates vs. macros, templates and smart pointers.
 
-[Event Handling](../cpp/event-handling.md)<br/>
+[Event Handling](event-handling.md)\
 Declaring events and event handlers.
 
-[Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md)<br/>
+[Microsoft-Specific Modifiers](microsoft-specific-modifiers.md)\
 Modifiers specific to Microsoft C++. Memory addressing, calling conventions, **`naked`** functions, extended storage-class attributes (**`__declspec`**), **`__w64`**.
 
-[Inline Assembler](../assembler/inline/inline-assembler.md)<br/>
+[Inline Assembler](../assembler/inline/inline-assembler.md)\
 Using assembly language and C++ in **`__asm`** blocks.
 
-[Compiler COM Support](../cpp/compiler-com-support.md)<br/>
+[Compiler COM Support](compiler-com-support.md)\
 A reference to Microsoft-specific classes and global functions used to support COM types.
 
-[Microsoft Extensions](../cpp/microsoft-extensions.md)<br/>
+[Microsoft Extensions](microsoft-extensions.md)\
 Microsoft extensions to C++.
 
-[Nonstandard Behavior](../cpp/nonstandard-behavior.md)<br/>
+[Nonstandard Behavior](nonstandard-behavior.md)\
 Information about nonstandard behavior of the Microsoft C++ compiler.
 
-[Welcome Back to C++](welcome-back-to-cpp-modern-cpp.md)<br/>
+[Welcome Back to C++](welcome-back-to-cpp-modern-cpp.md)\
 An overview of modern C++ programming practices for writing safe, correct and efficient programs.
 
 ## Related Sections
 
-[Component Extensions for Runtime Platforms](../extensions/component-extensions-for-runtime-platforms.md)<br/>
+[Component Extensions for Runtime Platforms](../extensions/component-extensions-for-runtime-platforms.md)\
 Reference material on using the Microsoft C++ compiler to target .NET.
 
-[C/C++ Building Reference](../build/reference/c-cpp-building-reference.md)<br/>
+[C/C++ Building Reference](../build/reference/c-cpp-building-reference.md)\
 Compiler options, linker options, and other build tools.
 
-[C/C++ Preprocessor Reference](../preprocessor/c-cpp-preprocessor-reference.md)<br/>
+[C/C++ Preprocessor Reference](../preprocessor/c-cpp-preprocessor-reference.md)\
 Reference material on pragmas, preprocessor directives, predefined macros, and the preprocessor.
 
-[Visual C++ Libraries](../standard-library/cpp-standard-library-reference.md)<br/>
+[Visual C++ Libraries](../standard-library/cpp-standard-library-reference.md)\
 A list of links to the reference start pages for the various Microsoft C++ libraries.
 
 ## See also
diff --git a/docs/cpp/cpp-type-system-modern-cpp.md b/docs/cpp/cpp-type-system-modern-cpp.md
index ad5f425f45..a624541147 100644
--- a/docs/cpp/cpp-type-system-modern-cpp.md
+++ b/docs/cpp/cpp-type-system-modern-cpp.md
@@ -2,7 +2,7 @@
 description: "Learn more about: C++ type system"
 title: "C++ type system"
 ms.date: 11/04/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: 553c0ed6-77c4-43e9-87b1-c903eec53e80
 ---
 # C++ type system
diff --git a/docs/cpp/declspec.md b/docs/cpp/declspec.md
index 253de9e94d..443a140a7c 100644
--- a/docs/cpp/declspec.md
+++ b/docs/cpp/declspec.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: `__declspec`"
 title: "__declspec"
-ms.date: 03/01/2022
+description: "Learn more about: `__declspec`"
+ms.date: 1/14/2025
 f1_keywords: ["__declspec_cpp", "__declspec", "_declspec"]
 helpviewer_keywords: ["__declspec keyword [C++]"]
 ---
@@ -9,7 +9,7 @@ helpviewer_keywords: ["__declspec keyword [C++]"]
 
 **Microsoft Specific**
 
-The extended attribute syntax for specifying storage-class information uses the **`__declspec`** keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute listed below. Examples of other storage-class modifiers include the **`static`** and **`extern`** keywords. However, these keywords are part of the ANSI specification of the C and C++ languages, and as such aren't covered by extended attribute syntax. The extended attribute syntax simplifies and standardizes Microsoft-specific extensions to the C and C++ languages.
+The extended attribute syntax for specifying storage-class information uses the `__declspec` keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute listed below. Examples of other storage-class modifiers include the `static` and `extern` keywords. However, these keywords are part of the ANSI specification of the C and C++ languages, and as such aren't covered by extended attribute syntax. The extended attribute syntax simplifies and standardizes Microsoft-specific extensions to the C and C++ languages.
 
 ## Grammar
 
@@ -30,6 +30,7 @@ The extended attribute syntax for specifying storage-class information uses the
 &emsp;**`dllimport`**\
 &emsp;**`dllexport`**\
 &emsp;**`empty_bases`**\
+&emsp;**`hybrid_patchable`**\
 &emsp;**`jitintrinsic`**\
 &emsp;**`naked`**\
 &emsp;**`noalias`**\
@@ -49,7 +50,7 @@ The extended attribute syntax for specifying storage-class information uses the
 
 White space separates the declaration modifier sequence. Examples appear in later sections.
 
-Extended attribute grammar supports these Microsoft-specific storage-class attributes: [`align`](../cpp/align-cpp.md), [`allocate`](../cpp/allocate.md), [`allocator`](../cpp/allocator.md), [`appdomain`](../cpp/appdomain.md), [`code_seg`](../cpp/code-seg-declspec.md), [`deprecated`](../cpp/deprecated-cpp.md), [`dllexport`](../cpp/dllexport-dllimport.md), [`dllimport`](../cpp/dllexport-dllimport.md), [`empty_bases`](../cpp/empty-bases.md), [`jitintrinsic`](../cpp/jitintrinsic.md), [`naked`](../cpp/naked-cpp.md), [`noalias`](../cpp/noalias.md), [`noinline`](../cpp/noinline.md), [`noreturn`](../cpp/noreturn.md), [`nothrow`](../cpp/nothrow-cpp.md), [`novtable`](../cpp/novtable.md), [`no_sanitize_address`](../cpp/no-sanitize-address.md),[`process`](../cpp/process.md), [`restrict`](../cpp/restrict.md), [`safebuffers`](../cpp/safebuffers.md), [`selectany`](../cpp/selectany.md), [`spectre`](../cpp/spectre.md), and [`thread`](../cpp/thread.md). It also supports these COM-object attributes: [`property`](../cpp/property-cpp.md) and [`uuid`](../cpp/uuid-cpp.md).
+Extended attribute grammar supports these Microsoft-specific storage-class attributes: [`align`](align-cpp.md), [`allocate`](allocate.md), [`allocator`](allocator.md), [`appdomain`](appdomain.md), [`code_seg`](code-seg-declspec.md), [`deprecated`](deprecated-cpp.md), [`dllexport`](dllexport-dllimport.md), [`dllimport`](dllexport-dllimport.md), [`empty_bases`](empty-bases.md), [`jitintrinsic`](jitintrinsic.md), [`naked`](naked-cpp.md), [`noalias`](noalias.md), [`noinline`](noinline.md), [`noreturn`](noreturn.md), [`nothrow`](nothrow-cpp.md), [`novtable`](novtable.md), [`no_sanitize_address`](no-sanitize-address.md), [`process`](process.md), [`restrict`](restrict.md), [`safebuffers`](safebuffers.md), [`selectany`](selectany.md), [`spectre`](spectre.md), and [`thread`](thread.md). It also supports these COM-object attributes: [`property`](property-cpp.md) and [`uuid`](uuid-cpp.md).
 
 The **`code_seg`**, **`dllexport`**, **`dllimport`**, **`empty_bases`**, **`naked`**, **`noalias`**, **`nothrow`**, **`no_sanitize_address`**, **`property`**, **`restrict`**, **`selectany`**, **`thread`**, and **`uuid`** storage-class attributes are properties only of the declaration of the object or function to which they're applied. The **`thread`** attribute affects data and objects only. The **`naked`** and **`spectre`** attributes affect functions only. The **`dllimport`** and **`dllexport`** attributes affect functions, data, and objects. The **`property`**, **`selectany`**, and **`uuid`** attributes affect COM objects.
 
@@ -94,5 +95,5 @@ __declspec( thread ) int tls_i = 1;
 
 ## See also
 
-[Keywords](../cpp/keywords-cpp.md)\
+[Keywords](keywords-cpp.md)\
 [C extended storage-class attributes](../c-language/c-extended-storage-class-attributes.md)
diff --git a/docs/cpp/decltype-cpp.md b/docs/cpp/decltype-cpp.md
index 2b387820ce..a223db3db5 100644
--- a/docs/cpp/decltype-cpp.md
+++ b/docs/cpp/decltype-cpp.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: decltype (C++)"
 title: "decltype (C++)"
+description: "Learn more about: decltype (C++)"
 ms.date: 09/14/2023
 f1_keywords: ["decltype_cpp"]
 helpviewer_keywords: ["operators [C++], decltype", "decltype operator", "operators [C++], type of an expression", "operators [C++], deduce expression type"]
@@ -60,7 +60,7 @@ In C++11, you can use the **`decltype`** type specifier on a trailing return typ
 
 ```cpp
 template<typename T, typename U>
-UNKNOWN func(T&& t, U&& u){ return t + u; };
+UNKNOWN func(T&& t, U&& u){ return t + u; }
 ```
 
 The introduction of the **`decltype`** type specifier enables a developer to obtain the type of the expression that the function template returns. Use the *alternative function declaration syntax* that is shown later, the **`auto`** keyword, and the **`decltype`** type specifier to declare a *late-specified* return type. The late-specified return type is determined when the declaration is compiled, instead of when it's coded.
@@ -75,12 +75,12 @@ In the following code example, the late-specified return type of the `myFunc` fu
 //C++11
 template<typename T, typename U>
 auto myFunc(T&& t, U&& u) -> decltype (forward<T>(t) + forward<U>(u))
-        { return forward<T>(t) + forward<U>(u); };
+        { return forward<T>(t) + forward<U>(u); }
 
 //C++14
 template<typename T, typename U>
 decltype(auto) myFunc(T&& t, U&& u)
-        { return forward<T>(t) + forward<U>(u); };
+        { return forward<T>(t) + forward<U>(u); }
 ```
 
 ## `decltype` and forwarding functions (C++11)
diff --git a/docs/cpp/errors-and-exception-handling-modern-cpp.md b/docs/cpp/errors-and-exception-handling-modern-cpp.md
index 486a271ba8..3140848fae 100644
--- a/docs/cpp/errors-and-exception-handling-modern-cpp.md
+++ b/docs/cpp/errors-and-exception-handling-modern-cpp.md
@@ -2,7 +2,7 @@
 title: "Modern C++ best practices for exceptions and error handling"
 description: "How Modern C++ supports exceptional programming styles over error codes."
 ms.date: 03/22/2024
-ms.topic: "conceptual"
+ms.topic: "best-practice"
 ---
 # Modern C++ best practices for exceptions and error handling
 
diff --git a/docs/cpp/explicit-specialization-of-function-templates.md b/docs/cpp/explicit-specialization-of-function-templates.md
index 5842f4e767..769315f149 100644
--- a/docs/cpp/explicit-specialization-of-function-templates.md
+++ b/docs/cpp/explicit-specialization-of-function-templates.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Explicit Specialization of Function Templates"
 title: "Explicit Specialization of Function Templates"
-ms.date: "11/04/2016"
+description: "Learn more about: Explicit Specialization of Function Templates"
+ms.date: 11/04/2016
 helpviewer_keywords: ["overriding, functions", "function templates, specialization", "explicit specialization of function templates", "declaring functions [C++], specialization of function template", "specialization of function templates"]
-ms.assetid: eb0fcb73-eaed-42a1-9b83-14b055a34bf8
 ---
 # Explicit Specialization of Function Templates
 
@@ -21,7 +20,7 @@ This declaration enables you to define a different function for **`double`** var
 // explicit_specialization.cpp
 template<class T> void f(T t)
 {
-};
+}
 
 // Explicit specialization of f with 'char' with the
 // template argument explicitly specified:
diff --git a/docs/cpp/explicitly-defaulted-and-deleted-functions.md b/docs/cpp/explicitly-defaulted-and-deleted-functions.md
index 13daddcfc3..78904c4e76 100644
--- a/docs/cpp/explicitly-defaulted-and-deleted-functions.md
+++ b/docs/cpp/explicitly-defaulted-and-deleted-functions.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Explicitly Defaulted and Deleted Functions"
 title: "Explicitly Defaulted and Deleted Functions"
-ms.date: "11/04/2016"
+description: "Learn more about: Explicitly Defaulted and Deleted Functions"
+ms.date: 11/04/2016
 ---
 # Explicitly Defaulted and Deleted Functions
 
@@ -44,7 +44,7 @@ These rules can complicate the implementation of what should be straight-forward
 ```cpp
 struct noncopyable
 {
-  noncopyable() {};
+  noncopyable() {}
 
 private:
   noncopyable(const noncopyable&);
diff --git a/docs/cpp/function-overloading.md b/docs/cpp/function-overloading.md
index 694aa6e3d1..8f8c24a61a 100644
--- a/docs/cpp/function-overloading.md
+++ b/docs/cpp/function-overloading.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Function Overloading"
 title: "Function Overloading"
+description: "Learn more about: Function Overloading"
 ms.date: 02/01/2023
 helpviewer_keywords: ["function overloading [C++], about function overloading", "function overloading", "declaring functions [C++], overloading"]
 ---
@@ -307,7 +307,7 @@ public:
 
 void Print( int i )
 {
-};
+}
 
 UDC udc;
 
diff --git a/docs/cpp/functions-cpp.md b/docs/cpp/functions-cpp.md
index 92c4ee5158..58670206a1 100644
--- a/docs/cpp/functions-cpp.md
+++ b/docs/cpp/functions-cpp.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Functions (C++)"
 title: "Functions (C++)"
-ms.date: "11/19/2018"
+description: "Learn more about: Functions (C++)"
+ms.date: 11/19/2018
 helpviewer_keywords: ["defaults, arguments", "function definitions", "function definitions, about function definitions", "default arguments", "declarators, functions"]
 ---
 # Functions (C++)
@@ -77,7 +77,6 @@ Optional parts of a function declaration are:
     ```cpp
     //Declare printf with C linkage.
     extern "C" int printf( const char *fmt, ... );
-
     ```
 
    For more information, see [Translation units and linkage](../cpp/program-and-linkage-cpp.md).
diff --git a/docs/cpp/functions-with-variable-argument-lists-cpp.md b/docs/cpp/functions-with-variable-argument-lists-cpp.md
index 1fb884942d..59316d6993 100644
--- a/docs/cpp/functions-with-variable-argument-lists-cpp.md
+++ b/docs/cpp/functions-with-variable-argument-lists-cpp.md
@@ -1,66 +1,68 @@
 ---
-description: "Learn more about: Functions with Variable Argument Lists  (C++)"
-title: "Functions with Variable Argument Lists  (C++)"
-ms.date: "11/04/2016"
+title: "Functions with Variable Argument Lists (C++)"
+description: "Learn more about: Functions with Variable Argument Lists (C++)"
+ms.date: 05/01/2025
 helpviewer_keywords: ["arguments [C++], variable number of", "variable argument lists", "declarators, functions", "argument lists [C++], variable number of", "declaring functions [C++], variables", "function calls, variable number of arguments"]
-ms.assetid: 27c2f83a-21dd-44c6-913c-2834cb944703
 ---
-# Functions with Variable Argument Lists  (C++)
+# Functions with Variable Argument Lists (C++)
 
-Function declarations in which the last member of  is the ellipsis (...) can take a variable number of arguments. In these cases, C++ provides type checking only for the explicitly declared arguments. You can use variable argument lists when you need to make a function so general that even the number and types of arguments can vary. The  family of functions is an example of functions that use variable argument lists.`printf`*argument-declaration-list*
+Function declarations that have ellipsis (...) as the last argument take a variable number of arguments. C++ provides type checking only for the explicitly declared arguments. You can use variable argument lists when the number and types of arguments to the function can vary. The `printf` family of functions is an example of functions that have variable argument lists.
 
 ## Functions with variable arguments
 
-To access arguments after those declared, use the macros contained in the standard include file \<stdarg.h> as described below.
+To access arguments after those declared, use the macros contained in the standard include file `<stdarg.h>` as explained in this article.
 
 **Microsoft Specific**
 
-Microsoft C++ allows the ellipsis to be specified as an argument if the ellipsis is the last argument and the ellipsis is preceded by a comma. Therefore, the declaration `int Func( int i, ... );` is legal, but `int Func( int i ... );` is not.
+Microsoft C++ allows the ellipsis to be specified as an argument if the ellipsis is the last argument and a comma comes before the ellipsis. Therefore, the declaration `int Func( int i, ... );` is legal, but `int Func( int i ... );` isn't.
 
 **END Microsoft Specific**
 
-Declaration of a function that takes a variable number of arguments requires at least one placeholder argument, even if it is not used. If this placeholder argument is not supplied, there is no way to access the remaining arguments.
+Declaration of a function that takes a variable number of arguments requires at least one placeholder argument, even if it isn't used. If this placeholder argument isn't supplied, there's no way to access the remaining arguments.
 
-When arguments of type **`char`** are passed as variable arguments, they are converted to type **`int`**. Similarly, when arguments of type **`float`** are passed as variable arguments, they are converted to type **`double`**. Arguments of other types are subject to the usual integral and floating-point promotions. See [Standard Conversions](standard-conversions.md) for more information.
+When arguments of type **`char`** are passed as variable arguments, they're converted to type **`int`**. Similarly, when arguments of type **`float`** are passed as variable arguments, they're converted to type **`double`**. Arguments of other types are subject to the usual integral and floating-point promotions. For more information, see [Standard Conversions](standard-conversions.md).
 
-Functions that require variable lists are declared by using the ellipsis (...) in the argument list. Use the types and macros that are described in the \<stdarg.h> include file to access arguments that are passed by a variable list. For more information about these macros, see [va_arg, va_copy, va_end, va_start](../c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md). in the documentation for the C Run-Time Library.
+Functions that require variable lists are declared by using the ellipsis (...) in the argument list. Use the types and macros that are described in the `<stdarg.h>` include file to access arguments that are passed by a variable list. For more information about these macros, see [va_arg, va_copy, va_end, va_start](../c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md).
 
-The following example shows how the macros work together with the type (declared in \<stdarg.h>):
+The following example shows how to use the macros to process a variable argument list:
 
 ```cpp
 // variable_argument_lists.cpp
+
 #include <stdio.h>
 #include <stdarg.h>
 
 //  Declaration, but not definition, of ShowVar.
 void ShowVar( char *szTypes, ... );
+
 int main() {
    ShowVar( "fcsi", 32.4f, 'a', "Test string", 4 );
 }
 
-//  ShowVar takes a format string of the form
-//   "ifcs", where each character specifies the
-//   type of the argument in that position.
+// ShowVar takes a format string of the form
+// "ifcs", where each character specifies the
+// type of the argument in that position.
 //
-//  i = int
-//  f = float
-//  c = char
-//  s = string (char *)
+// i = int
+// f = float
+// c = char
+// s = string (char *)
 //
-//  Following the format specification is a variable
-//  list of arguments. Each argument corresponds to
-//  a format character in the format string to which
+// Following the format specification is a variable
+// list of arguments. Each argument corresponds to
+// a format character in the format string to which
 // the szTypes parameter points
 void ShowVar( char *szTypes, ... ) {
    va_list vl;
    int i;
 
-   //  szTypes is the last argument specified; you must access
-   //  all others using the variable-argument macros.
+   // szTypes is the last argument specified; you must access
+   // all others using the variable-argument macros.
    va_start( vl, szTypes );
 
    // Step through the list.
    for( i = 0; szTypes[i] != '\0'; ++i ) {
+      
       union Printable_t {
          int     i;
          float   f;
@@ -68,45 +70,44 @@ void ShowVar( char *szTypes, ... ) {
          char   *s;
       } Printable;
 
-      switch( szTypes[i] ) {   // Type to expect.
+      switch( szTypes[i] ) {   // Type to expect
          case 'i':
             Printable.i = va_arg( vl, int );
             printf_s( "%i\n", Printable.i );
-         break;
+            break;
 
          case 'f':
              Printable.f = va_arg( vl, double );
              printf_s( "%f\n", Printable.f );
-         break;
+             break;
 
          case 'c':
              Printable.c = va_arg( vl, char );
              printf_s( "%c\n", Printable.c );
-         break;
+             break;
 
          case 's':
              Printable.s = va_arg( vl, char * );
              printf_s( "%s\n", Printable.s );
-         break;
+             break;
 
          default:
-         break;
+             break;
       }
    }
    va_end( vl );
 }
-//Output:
-// 32.400002
-// a
-// Test string
+```
+
+```Output
+32.400002
+a
+Test string
 ```
 
 The previous example illustrates these important concepts:
 
 1. You must establish a list marker as a variable of type `va_list` before any variable arguments are accessed. In the previous example, the marker is called `vl`.
-
 1. The individual arguments are accessed by using the `va_arg` macro. You must tell the `va_arg` macro the type of argument to retrieve so that it can transfer the correct number of bytes from the stack. If you specify an incorrect type of a size different from that supplied by the calling program to `va_arg`, the results are unpredictable.
-
 1. You should explicitly cast the result obtained by using the `va_arg` macro to the type that you want.
-
-You must call the  macro to terminate variable-argument processing.`va_end`
+1. You must call the `va_end` macro to terminate variable-argument processing.
\ No newline at end of file
diff --git a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md
index c25e220009..a780106d81 100644
--- a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md
+++ b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md
@@ -3,8 +3,6 @@ description: "Learn more about: How to: Create and use CComPtr and CComQIPtr ins
 title: "How to: Create and use CComPtr and CComQIPtr instances"
 ms.custom: "how-to"
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
-ms.assetid: b0356cfb-12cc-4ee8-b988-8311ed1ab5e0
 ---
 # How to: Create and use CComPtr and CComQIPtr instances
 
@@ -20,7 +18,7 @@ The following example shows how to use `CComPtr` to instantiate a COM object and
 
 `CComPtr` and its relatives are part of the ATL and are defined in \<atlcomcli.h>. `_com_ptr_t` is declared in \<comip.h>. The compiler creates specializations of `_com_ptr_t` when it generates wrapper classes for type libraries.
 
-## Example: CComQIPt
+## Example: CComQIPtr
 
 ATL also provides `CComQIPtr`, which has a simpler syntax for querying a COM object to retrieve an additional interface. However, we recommend `CComPtr` because it does everything that `CComQIPtr` can do and is semantically more consistent with raw COM interface pointers. If you use a `CComPtr` to query for an interface, the new interface pointer is placed in an out parameter. If the call fails, an HRESULT is returned, which is the typical COM pattern. With `CComQIPtr`, the return value is the pointer itself, and if the call fails, the internal HRESULT return value cannot be accessed. The following two lines show how the error handling mechanisms in `CComPtr` and `CComQIPtr` differ.
 
diff --git a/docs/cpp/how-to-create-and-use-shared-ptr-instances.md b/docs/cpp/how-to-create-and-use-shared-ptr-instances.md
index 28e2e78d4a..cc993258bd 100644
--- a/docs/cpp/how-to-create-and-use-shared-ptr-instances.md
+++ b/docs/cpp/how-to-create-and-use-shared-ptr-instances.md
@@ -3,7 +3,6 @@ description: "Learn more about: How to: Create and Use shared_ptr instances"
 title: "How to: Create and use shared_ptr instances"
 ms.custom: "how-to"
 ms.date: "12/4/2024"
-ms.topic: "conceptual"
 ---
 # How to: Create and Use shared_ptr instances
 
diff --git a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md
index 4621600bd1..b679190aee 100644
--- a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md
+++ b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md
@@ -3,7 +3,6 @@ description: "Learn more about: How to: Create and use unique_ptr instances"
 title: "How to: Create and use unique_ptr instances"
 ms.custom: "how-to"
 ms.date: "11/19/2018"
-ms.topic: "conceptual"
 ms.assetid: 9a373030-e587-452f-b9a5-c5f9d58b7673
 ---
 # How to: Create and use unique_ptr instances
diff --git a/docs/cpp/how-to-create-and-use-weak-ptr-instances.md b/docs/cpp/how-to-create-and-use-weak-ptr-instances.md
index 0f5cf8724c..0947a8d9be 100644
--- a/docs/cpp/how-to-create-and-use-weak-ptr-instances.md
+++ b/docs/cpp/how-to-create-and-use-weak-ptr-instances.md
@@ -3,7 +3,6 @@ description: "Learn more about: How to: Create and use weak_ptr instances"
 title: "How to: Create and use weak_ptr instances"
 ms.custom: "how-to"
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
 ms.assetid: 8dd6909b-b070-4afa-9696-f2fc94579c65
 ---
 # How to: Create and use weak_ptr instances
diff --git a/docs/cpp/how-to-design-for-exception-safety.md b/docs/cpp/how-to-design-for-exception-safety.md
index 8d6a8c270d..588c564ebd 100644
--- a/docs/cpp/how-to-design-for-exception-safety.md
+++ b/docs/cpp/how-to-design-for-exception-safety.md
@@ -3,7 +3,6 @@ description: "Learn more about: How to: Design for exception safety"
 title: "How to: Design for exception safety"
 ms.custom: "how-to"
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
 ms.assetid: 19ecc5d4-297d-4c4e-b4f3-4fccab890b3d
 ---
 # How to: Design for exception safety
diff --git a/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md b/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md
index 75d4de4934..2c4f1b4b12 100644
--- a/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md
+++ b/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md
@@ -3,7 +3,6 @@ description: "Learn more about: How to: Interface between exceptional and non-ex
 title: "How to: Interface between exceptional and non-exceptional code"
 ms.custom: "how-to"
 ms.date: 03/02/2022
-ms.topic: "conceptual"
 ---
 # How to: Interface between exceptional and non-exceptional code
 
diff --git a/docs/cpp/hybrid-patchable.md b/docs/cpp/hybrid-patchable.md
new file mode 100644
index 0000000000..49dc470455
--- /dev/null
+++ b/docs/cpp/hybrid-patchable.md
@@ -0,0 +1,49 @@
+---
+description: "Learn more about: hybrid_patchable (C++)"
+title: "hybrid_patchable (C++)"
+ms.date: 1/15/2025
+f1_keywords: ["hybrid_patchable"]
+helpviewer_keywords: ["__declspec keyword [C++], hybrid_patchable", "hybrid_patchable __declspec keyword"]
+---
+# `hybrid_patchable` (C++)
+
+**Microsoft Specific**
+
+Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute generates a fast-forward sequence. Fast-forward sequences are small x64 functions which contain no real logic, and tail-call the real Arm64EC function. Because fast-forward sequences are primarily used for hooking, if they are unaltered, execution is transferred directly to the Arm64EC function.
+
+## Syntax
+
+> `__declspec(hybrid_patchable)`
+
+## Remarks
+
+`__declspec(hybrid_patchable)` is an ARM64EC-only feature.
+
+**Example:**
+
+```cpp
+__declspec(hybrid_patchable) int Example()
+{
+    return 1;
+}
+```
+
+Generates the following fast-forward sequence:
+
+```
+EXP+#Example:
+  00000001400CE000: 48 8B C4           mov         rax,rsp
+  00000001400CE003: 48 89 58 20        mov         qword ptr [rax+20h],rbx
+  00000001400CE007: 55                 push        rbp
+  00000001400CE008: 5D                 pop         rbp
+  00000001400CE009: E9 BA 7A F3 FF     jmp         #Example
+  00000001400CE00E: CC                 int         3
+  00000001400CE00F: CC                 int         3 
+```
+
+**END Microsoft Specific**
+
+## See also
+
+[`__declspec`](../cpp/declspec.md)\
+[Fast-Forward sequences](/windows/arm/arm64ec-abi#fast-forward-sequences)
\ No newline at end of file
diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md
index 349708fa55..360717d20f 100644
--- a/docs/cpp/import-export-module.md
+++ b/docs/cpp/import-export-module.md
@@ -1,13 +1,13 @@
 ---
 title: "module, import, export"
-ms.date: 02/14/2022
+description: Use import and export declarations to access and to publish types and functions defined in the specified module.
+ms.date: 02/13/2025
 f1_keywords: ["module_cpp", "import_cpp", "export_cpp"]
 helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"]
-description: Use import and export declarations to access and to publish types and functions defined in the specified module.
 ---
 # `module`, `import`, `export`
 
-The **`module`**, **`import`**, and **`export`** declarations are available in C++20 and require the [`/experimental:module`](../build/reference/experimental-module.md) compiler switch along with [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later (such as **`/std:c++latest`**). For more information, see [Overview of modules in C++](modules-cpp.md).
+The **`module`**, **`import`**, and **`export`** declarations are available in C++20 and require the compiler switch [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later. For more information, see [Overview of modules in C++](modules-cpp.md).
 
 ## `module`
 
@@ -19,7 +19,7 @@ module ModuleA;
 
 ## `export`
 
-Use an **`export module`** declaration for the module's primary interface file, which must have extension *`.ixx`*:
+Use an **`export module`** declaration for the module's primary interface file, which has an extension *`.ixx`* by default. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface.
 
 ```cpp
 export module ModuleA;
@@ -40,11 +40,9 @@ namespace ModuleA_NS
 }
 ```
 
-Non-exported names aren't visible to code that imports the module:
+Nonexported names aren't visible to code that imports the module:
 
 ```cpp
-//MyProgram.cpp
-
 import ModuleA;
 
 int main() {
@@ -64,9 +62,8 @@ Use an **`import`** declaration to make a module's names visible in your program
 module ModuleA;
 
 #include "custom-lib.h"
-import std.core;
-import std.regex;
-import ModuleB;
+import std;
+import myModule;
 
 // begin declarations here:
 template <class T>
@@ -112,6 +109,7 @@ import // Always an identifier, never a keyword
 
 **End Microsoft Specific**
 
-## See Also
+## See also
 
-[Overview of modules in C++](modules-cpp.md)
+[Overview of modules in C++](modules-cpp.md)\
+[Import the C++ standard library using modules](tutorial-import-stl-named-module.md)
\ No newline at end of file
diff --git a/docs/cpp/inheritance-cpp.md b/docs/cpp/inheritance-cpp.md
index c024fafdcf..14660d3866 100644
--- a/docs/cpp/inheritance-cpp.md
+++ b/docs/cpp/inheritance-cpp.md
@@ -1,50 +1,54 @@
 ---
-description: "Learn more about: Inheritance  (C++)"
-title: "Inheritance  (C++)"
+title: "Inheritance (C++)"
+description: "Learn more about: Inheritance (C++)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["derived classes [C++]", "derived classes [C++], about derived classes", "classes [C++], derived"]
-ms.assetid: 3534ca19-d9ed-4a40-be1b-b921ad0e6956
 ---
-# Inheritance  (C++)
+# Inheritance (C++)
 
 This section explains how to use derived classes to produce extensible programs.
 
 ## Overview
 
-New classes can be derived from existing classes using a mechanism called "inheritance" (see the information beginning in [Single Inheritance](../cpp/single-inheritance.md)). Classes that are used for derivation are called "base classes" of a particular derived class. A derived class is declared using the following syntax:
+New classes can be derived from existing classes using a mechanism called "inheritance" (see the information beginning in [Single Inheritance](single-inheritance.md)). Classes that are used for derivation are called "base classes" of a particular derived class. A derived class is declared using the following syntax:
 
 ```cpp
-class Derived : [virtual] [access-specifier] Base
+class DerivedSingleBase : [virtual] [access-specifier] Base
 {
-   // member list
+    // member list
 };
-class Derived : [virtual] [access-specifier] Base1,
-   [virtual] [access-specifier] Base2, . . .
+
+class DerivedMultipleBases : [virtual] [access-specifier] Base1,
+    [virtual] [access-specifier] Base2, ...
 {
-   // member list
+    // member list
 };
 ```
 
-After the tag (name) for the class, a colon appears followed by a list of base specifications.  The base classes so named must have been declared previously.  The base specifications may contain an access specifier, which is one of the keywords **`public`**, **`protected`** or **`private`**.  These access specifiers appear before the base class name and apply only to that base class.  These specifiers control the derived class's permission to use to members of the base class.  See [Member-Access Control](../cpp/member-access-control-cpp.md) for information on access to base class members.  If the access specifier is omitted, the access to that base is considered **`private`**.  The base specifications may contain the keyword **`virtual`** to indicate virtual inheritance.  This keyword may appear before or after the access specifier, if any.  If virtual inheritance is used, the base class is referred to as a virtual base class.
+After the tag (name) for the class, a colon appears followed by a list of base specifications. The base classes so named must have been declared previously. The base specifications may contain an access specifier, which is one of the keywords [**`public`**](public-cpp.md), [**`protected`**](protected-cpp.md) or [**`private`**](private-cpp.md). These access specifiers appear before the base class name and apply only to that base class. These specifiers control the derived class's permission to use members of the base class. See [Member-Access Control](member-access-control-cpp.md) for information on access to base class members. If the access specifier is omitted, the access to that base is considered **`private`**. The base specifications may contain the keyword [**`virtual`**](virtual-cpp.md) to indicate virtual inheritance. This keyword may appear before or after the access specifier, if any. If virtual inheritance is used, the base class is referred to as a virtual base class.
 
-Multiple base classes can be specified, separated by commas.  If a single base class is specified, the inheritance model is [Single inheritance](../cpp/single-inheritance.md). If more than one base class is specified, the inheritance model is called [Multiple inheritance](../cpp/multiple-base-classes.md).
+Multiple base classes can be specified, separated by commas. If a single base class is specified, the inheritance model is [Single inheritance](single-inheritance.md). If more than one base class is specified, the inheritance model is called [Multiple inheritance](multiple-base-classes.md).
 
 The following topics are included:
 
-- [Single inheritance](../cpp/single-inheritance.md)
+- [Single inheritance](single-inheritance.md)
+
+- [Multiple base classes](multiple-base-classes.md)
+
+- [Virtual functions](virtual-functions.md)
 
-- [Multiple base classes](../cpp/multiple-base-classes.md)
+- [Explicit overrides](explicit-overrides-cpp.md)
 
-- [Virtual functions](../cpp/virtual-functions.md)
+- [Abstract classes](abstract-classes-cpp.md)
 
-- [Explicit overrides](../cpp/explicit-overrides-cpp.md)
+- [Summary of scope rules](summary-of-scope-rules.md)
 
-- [Abstract classes](../cpp/abstract-classes-cpp.md)
+**Microsoft Specific**
 
-- [Summary of scope rules](../cpp/summary-of-scope-rules.md)
+The [`__super`](super.md) and [`__interface`](interface.md) keywords are documented in this section.
 
-The [__super](../cpp/super.md) and [__interface](../cpp/interface.md) keywords are documented in this section.
+**END Microsoft Specific**
 
 ## See also
 
-[C++ Language Reference](../cpp/cpp-language-reference.md)
+[C++ Language Reference](cpp-language-reference.md)
diff --git a/docs/cpp/initializers.md b/docs/cpp/initializers.md
index 48c7f624d1..465e8537f7 100644
--- a/docs/cpp/initializers.md
+++ b/docs/cpp/initializers.md
@@ -1,7 +1,7 @@
 ---
 title: "Initializers"
-ms.date: "07/29/2019"
 description: "How to initialize classes, structs, arrays and fundamental types in C++."
+ms.date: 07/29/2019
 helpviewer_keywords: ["arrays [C++], array-element initializers", "aggregate initializers [C++]"]
 ---
 # Initializers
@@ -51,8 +51,8 @@ Initializers may take these forms:
     };
     class PointConsumer{
     public:
-        void set_point(Point p){};
-        void set_points(initializer_list<Point> my_list){};
+        void set_point(Point p){}
+        void set_points(initializer_list<Point> my_list){}
     };
     int main() {
         PointConsumer pc{};
diff --git a/docs/cpp/keywords-cpp.md b/docs/cpp/keywords-cpp.md
index 5c0b32ebda..0bb5fff6c0 100644
--- a/docs/cpp/keywords-cpp.md
+++ b/docs/cpp/keywords-cpp.md
@@ -4,7 +4,6 @@ description: "Lists the C++ standard language keywords, Microsoft-specific keywo
 ms.custom: "index-page"
 ms.date: 07/25/2020
 helpviewer_keywords: ["keywords [C++]"]
-ms.assetid: d7ca94a8-f785-41ce-9f73-d3c4fd508489
 ---
 # Keywords (C++)
 
@@ -79,7 +78,7 @@ Keywords are predefined reserved identifiers that have special meanings. They ca
         [`private`](private-cpp.md)\
         [`protected`](protected-cpp.md)\
         [`public`](public-cpp.md)\
-        [`register`](storage-classes-cpp.md#register)
+        [`register`](storage-classes-cpp.md#register)\
         [`reinterpret_cast`](reinterpret-cast-operator.md)\
         **`requires`** <sup>c</sup>\
         [`return`](return-statement-cpp.md)\
@@ -287,5 +286,5 @@ These identifiers are extended attributes for the **`__declspec`** modifier. The
 
 ## See also
 
-[Lexical conventions](lexical-conventions.md)<br/>
+[Lexical conventions](lexical-conventions.md)\
 [C++ built-in operators, precedence, and associativity](cpp-built-in-operators-precedence-and-associativity.md)
diff --git a/docs/cpp/lvalues-and-rvalues-visual-cpp.md b/docs/cpp/lvalues-and-rvalues-visual-cpp.md
index 0fb47aa4e2..ad2e8ebae4 100644
--- a/docs/cpp/lvalues-and-rvalues-visual-cpp.md
+++ b/docs/cpp/lvalues-and-rvalues-visual-cpp.md
@@ -27,7 +27,7 @@ An lvalue has an address that your program can access. Examples of lvalue expres
 
 A prvalue expression has no address that is accessible by your program. Examples of prvalue expressions include literals, function calls that return a nonreference type, and temporary objects that are created during expression evaluation but accessible only by the compiler.
 
-An xvalue expression has an address that no longer accessible by your program but can be used to initialize an rvalue reference, which provides access to the expression. Examples include function calls that return an rvalue reference, and the array subscript, member and pointer to member expressions where the array or object is an rvalue reference.
+An xvalue expression has an address that is no longer accessible by your program but can be used to initialize an rvalue reference, which provides access to the expression. Examples include function calls that return an rvalue reference, and the array subscript, member and pointer to member expressions where the array or object is an rvalue reference.
 
 ## Example
 
diff --git a/docs/cpp/m64.md b/docs/cpp/m64.md
index 74c415036c..66800090f6 100644
--- a/docs/cpp/m64.md
+++ b/docs/cpp/m64.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: __m64"
 title: "__m64"
+description: "Learn more about: __m64"
 ms.date: "11/04/2016"
 f1_keywords: ["__m64_cpp"]
 helpviewer_keywords: ["__m64 keyword [C++]"]
-ms.assetid: df0410e8-67c9-4954-88c8-fe2653575252
 ---
-# __m64
+# `__m64`
 
 **Microsoft Specific**
 
@@ -15,9 +14,10 @@ The **`__m64`** data type is for use with the MMX and 3DNow! intrinsics, and is
 ```cpp
 // data_types__m64.cpp
 #include <xmmintrin.h>
+
 int main()
 {
-   __m64 x;
+    __m64 x;
 }
 ```
 
@@ -25,14 +25,14 @@ int main()
 
 You should not access the **`__m64`** fields directly. You can, however, see these types in the debugger. A variable of type **`__m64`** maps to the MM[0-7] registers.
 
-Variables of type **_m64** are automatically aligned on 8-byte boundaries.
+Variables of type **`__m64`** are automatically aligned on 8-byte boundaries.
 
-The **`__m64`** data type is not supported on x64 processors. Applications that use __m64 as part of MMX intrinsics must be rewritten to use equivalent SSE and SSE2 intrinsics.
+The **`__m64`** data type is not supported on x64 processors. Applications that use **`__m64`** as part of MMX intrinsics must be rewritten to use equivalent SSE and SSE2 intrinsics.
 
 **END Microsoft Specific**
 
 ## See also
 
-[Keywords](../cpp/keywords-cpp.md)<br/>
-[Built-in types](../cpp/fundamental-types-cpp.md)<br/>
-[Data Type Ranges](../cpp/data-type-ranges.md)
+[Keywords](keywords-cpp.md)\
+[Built-in types](fundamental-types-cpp.md)\
+[Data Type Ranges](data-type-ranges.md)
diff --git a/docs/cpp/microsoft-specific-modifiers.md b/docs/cpp/microsoft-specific-modifiers.md
index 3d8fc86562..fda7e96615 100644
--- a/docs/cpp/microsoft-specific-modifiers.md
+++ b/docs/cpp/microsoft-specific-modifiers.md
@@ -1,8 +1,7 @@
 ---
-description: "Learn more about: Microsoft-specific modifiers"
 title: "Microsoft-specific modifiers"
+description: "Learn more about: Microsoft-specific modifiers"
 ms.date: "08/16/2018"
-ms.assetid: 22c7178c-f854-47fa-9de6-07d23fda58e1
 ---
 # Microsoft-specific modifiers
 
@@ -29,7 +28,7 @@ Many of the Microsoft-specific keywords can be used to modify declarators to for
 |[__restrict](extension-restrict.md)|Similar to __declspec([restrict](restrict.md)), but for use on variables.|No|
 |[__stdcall](stdcall.md)|The name that follows specifies a function that observes the standard calling convention.|Yes|
 |[__w64](w64.md)|Marks a data type as being larger on a 64-bit compiler.|No|
-|[__unaligned](unaligned.md)|Specifies that a pointer to a type or other data is not aligned..|No|
+|[__unaligned](unaligned.md)|Specifies that a pointer to a type or other data is not aligned.|No|
 |[__vectorcall](vectorcall.md)|The name that follows declares a function that uses registers, including SSE registers, when available, instead of the stack for argument passing.|Yes|
 
 ## See also
diff --git a/docs/cpp/modules-cpp.md b/docs/cpp/modules-cpp.md
index bfdbfb7346..333beca9b5 100644
--- a/docs/cpp/modules-cpp.md
+++ b/docs/cpp/modules-cpp.md
@@ -1,12 +1,12 @@
 ---
 title: "Overview of modules in C++"
-ms.date: 01/29/2024
-helpviewer_keywords: ["modules [C++]", "modules [C++], overview"]
 description: Modules in C++20 provide a modern alternative to header files.
+ms.date: 04/17/2025
+helpviewer_keywords: ["modules [C++]", "modules [C++], overview"]
 ---
 # Overview of modules in C++
 
-C++20 introduces *modules*. A *module* is a set of source code files that are compiled independently of the source files (or more precisely, the [translation units](https://wikipedia.org/wiki/Translation_unit_(programming)) that import them.
+C++20 introduces *modules*. A *module* is a set of source code files that are compiled independently of the source files (or more precisely, the [translation units](https://wikipedia.org/wiki/Translation_unit_(programming))) that import them.
 
 Modules eliminate or reduce many of the problems associated with the use of header files. They often reduce compilation times, sometimes significantly. Macros, preprocessor directives, and nonexported names declared in a module aren't visible outside the module. They have no effect on the compilation of the translation unit that imports the module. You can import modules in any order without concern for macro redefinitions. Declarations in the importing translation unit don't participate in overload resolution or name lookup in the imported module. After a module is compiled once, the results are stored in a binary file that describes all the exported types, functions, and templates. The compiler can process that file much faster than a header file. And, the compiler can reuse it every place where the module is imported in a project.
 
@@ -14,44 +14,15 @@ You can use modules side by side with header files. A C++ source file can `impor
 
 To contrast modules with other ways to import the standard library, see [Compare header units, modules, and precompiled headers](../build/compare-inclusion-methods.md).
 
-## Enable modules in the Microsoft C++ compiler
-
-As of Visual Studio 2022 version 17.1, C++20 standard modules are fully implemented in the Microsoft C++ compiler.
-
-Before it was specified by the C++20 standard, Microsoft had experimental support for modules. The compiler also supported importing prebuilt Standard Library modules, described below.
-
-Starting with Visual Studio 2022 version 17.5, importing the Standard Library as a module is both standardized and fully implemented in the Microsoft C++ compiler. This section describes the older, experimental method, which is still supported. For information about the new standardized way to import the Standard Library using modules, see [Import the C++ standard library using modules](tutorial-import-stl-named-module.md).
+Starting with Visual Studio 2022 version 17.5, importing the Standard Library as a module is both standardized and fully implemented in the Microsoft C++ compiler. To learn how to import the Standard Library using modules, see [Import the C++ standard library using modules](tutorial-import-stl-named-module.md).
 
-You can use the modules feature to create single-partition modules and to import the Standard Library modules provided by Microsoft. To enable support for Standard Library modules, compile with [`/experimental:module`](../build/reference/experimental-module.md) and [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md). In a Visual Studio project, right-click the project node in **Solution Explorer** and choose **Properties**. Set the **Configuration** drop-down to **All Configurations**, then choose **Configuration Properties** > **C/C++** > **Language** > **Enable C++ Modules (experimental)**.
+## Single-partition modules
 
-A module and the code that consumes it must be compiled with the same compiler options.
+A single-partition module is a module that consists of a single source file. The module interface and implementation are in the same file.
 
-## Consume C++ Standard Library as modules (experimental)
+The following single-partition module example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is the default extension for module interface files in Visual Studio. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. In this example, the interface file contains both the function definition and the declaration. You can also place the definitions in one or more separate module implementation files, as shown in a later example, but this is an example of a single-partition module.
 
-This section describes the experimental implementation, which is still supported. The new standardized way of consuming the C++ Standard Library as modules is described in [Import the C++ standard library using modules](tutorial-import-stl-named-module.md).
-
-By importing the C++ Standard Library as modules rather than including it through header files, you can potentially speed up compilation times depending on the size of your project. The experimental library is split into the following named modules:
-
-- `std.regex` provides the content of header `<regex>`
-- `std.filesystem` provides the content of header `<filesystem>`
-- `std.memory` provides the content of header `<memory>`
-- `std.threading` provides the contents of headers `<atomic>`, `<condition_variable>`, `<future>`, `<mutex>`, `<shared_mutex>`, and `<thread>`
-- `std.core` provides everything else in the C++ Standard Library
-
-To consume these modules, add an import declaration to the top of the source code file. For example:
-
-```cpp
-import std.core;
-import std.regex;
-```
-
-To consume the Microsoft Standard Library modules, compile your program with the [`/EHsc`](../build/reference/eh-exception-handling-model.md) and [`/MD`](../build/reference/md-mt-ld-use-run-time-library.md) options.
-
-## Example
-
-The following example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is required for module interface files in Visual Studio. In this example, the interface file contains both the function definition and the declaration. However, you can also place the definitions in one or more separate module implementation files, as shown in a later example.
-
-The `export module Example;` statement indicates that this file is the primary interface for a module called `Example`. The **`export`** modifier on `f()` indicates that this function is visible when another program or module imports `Example`.
+The `export module Example;` statement indicates that this file is the primary interface for a module called `Example`. The **`export`** modifier before `int f()` indicates that this function is visible when another program or module imports `Example`:
 
 ```cpp
 // Example.ixx
@@ -61,12 +32,14 @@ export module Example;
 
 namespace Example_NS
 {
-   int f_internal() {
-        return ANSWER;
-      }
+   int f_internal()
+   {
+     return ANSWER;
+   }
 
-   export int f() {
-      return f_internal();
+   export int f()
+   {
+     return f_internal();
    }
 }
 ```
@@ -75,8 +48,8 @@ The file *`MyProgram.cpp`* uses **`import`** to access the name exported by `Exa
 
 ```cpp
 // MyProgram.cpp
+import std;
 import Example;
-import std.core;
 
 using namespace std;
 
@@ -88,7 +61,7 @@ int main()
 }
 ```
 
-The `import` declaration can appear only at global scope.
+The `import` declaration can appear only at global scope.  A module and the code that consumes it must be compiled with the same compiler options.
 
 ## Module grammar
 
@@ -133,15 +106,16 @@ The **`export`** keyword is only used in interface files. An implementation file
 
 The rules for namespaces in modules are the same as any other code. If a declaration within a namespace is exported, the enclosing namespace (excluding members that aren't explicitly exported in that namespace) is also implicitly exported. If a namespace is explicitly exported, all declarations within that namespace definition are exported.
 
-When the compiler does argument-dependent lookup for overload resolutions in the importing translation unit, it considers functions declared in the same translation unit (including module interfaces) as where the type of the function's arguments are defined.
+When the compiler does argument-dependent lookup for overload resolution in the importing translation unit, it considers functions declared in the same translation unit (including module interfaces) as where the type of the function's arguments is defined.
 
 ### Module partitions
 
 A module partition is similar to a module, except:
+
 - It shares ownership of all declarations in the entire module.
 - All names exported by partition interface files are imported and exported by the primary interface file.
 - A partition's name must begin with the module name followed by a colon (`:`).
-- Declarations in any of the partitions are visible within the entire module.\
+- Declarations in any of the partitions are visible within the entire module.
 - No special precautions are needed to avoid one-definition-rule (ODR) errors. You can declare a name (function, class, and so on) in one partition and define it in another. 
 
 A partition implementation file begins like this, and is an internal partition from a C++ standards perspective:
@@ -182,7 +156,7 @@ You can include header files in a module source file by putting an `#include` di
 #include "customlib.h"
 #include "anotherlib.h"
 
-import std.core;
+import std;
 import MyModuleB;
 
 //... rest of file
@@ -192,9 +166,10 @@ You can use a traditional header file to control which modules are imported:
 
 ```cpp
 // MyProgram.h
-import std.core;
-#ifdef DEBUG_LOGGING
-import std.filesystem;
+#ifdef C_RUNTIME_GLOBALS
+import std.compat;
+#else
+import std;
 #endif
 ```
 
@@ -209,6 +184,7 @@ import "myheader.h";
 
 ## See also
 
+[Import the C++ standard library using modules](tutorial-import-stl-named-module.md)\
 [`module`, `import`, `export`](import-export-module.md)\
 [Named modules tutorial](tutorial-named-modules-cpp.md)\
 [Compare header units, modules, and precompiled headers](../build/compare-inclusion-methods.md)
diff --git a/docs/cpp/nothrow-cpp.md b/docs/cpp/nothrow-cpp.md
index b0749a32f4..fd5ebc478b 100644
--- a/docs/cpp/nothrow-cpp.md
+++ b/docs/cpp/nothrow-cpp.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: nothrow (C++)"
 title: "nothrow (C++)"
-ms.date: "01/03/2018"
+description: "Learn more about: nothrow (C++)"
+ms.date: 01/03/2018
 f1_keywords: ["nothrow_cpp"]
 helpviewer_keywords: ["__declspec keyword [C++], nothrow", "nothrow __declspec keyword"]
-ms.assetid: 0a475139-459c-4ec6-99e8-7ecd0d7f44a3
 ---
 # `nothrow` (C++)
 
@@ -20,7 +19,7 @@ A **`__declspec`** extended attribute which can be used in the declaration of fu
 
 We recommend that all new code use the [`noexcept`](noexcept-cpp.md) operator rather than `__declspec(nothrow)`.
 
-This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`.
+This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`/std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`.
 
 With the synchronous exception handling model, now the default, the compiler can eliminate the mechanics of tracking the lifetime of certain unwindable objects in such a function, and significantly reduce the code size. Given the following preprocessor directive, the three function declarations below are equivalent in **`/std:c++14`** mode:
 
diff --git a/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md b/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md
index b13d412b96..a4aa439b89 100644
--- a/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md
+++ b/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md
@@ -2,7 +2,7 @@
 title: "Object lifetime and resource management (RAII)"
 description: "Follow the principle of RAII in modern C++ to avoid resource leaks."
 ms.date: 06/02/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: 8aa0e1a1-e04d-46b1-acca-1d548490700f
 ---
 # Object lifetime and resource management (RAII)
diff --git a/docs/cpp/overload-resolution-of-function-template-calls.md b/docs/cpp/overload-resolution-of-function-template-calls.md
index 17455439ed..f8e8fc3031 100644
--- a/docs/cpp/overload-resolution-of-function-template-calls.md
+++ b/docs/cpp/overload-resolution-of-function-template-calls.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Overload resolution of function template calls"
 title: "Overload resolution of function template calls"
+description: "Learn more about: Overload resolution of function template calls"
 ms.date: 09/27/2022
 helpviewer_keywords: ["function templates overload resolution"]
-ms.assetid: a2918748-2cbb-4fc6-a176-e256f120bee4
 ---
 # Overload resolution of function template calls
 
@@ -26,7 +25,7 @@ template <class T1, class T2>
 void f(T1, T2)
 {
    cout << "void f(T1, T2)" << endl;
-};
+}
 
 int main()
 {
@@ -58,7 +57,7 @@ template <class T1, class T2>
 void f(T1, T2)
 {
    cout << "void f(T1, T2)" << endl;
-};
+}
 
 int main()
 {
diff --git a/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md b/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md
index 5aede48b9b..3865266d99 100644
--- a/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md
+++ b/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Pimpl For Compile-Time Encapsulation (Modern C++)"
 title: "Pimpl For Compile-Time Encapsulation (Modern C++)"
 ms.date: "11/04/2016"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: c3e8a90a-b328-4990-82bb-e1b147f76e07
 ---
 # Pimpl For Compile-Time Encapsulation (Modern C++)
diff --git a/docs/cpp/portability-at-abi-boundaries-modern-cpp.md b/docs/cpp/portability-at-abi-boundaries-modern-cpp.md
index 28caf182d0..09249b99cd 100644
--- a/docs/cpp/portability-at-abi-boundaries-modern-cpp.md
+++ b/docs/cpp/portability-at-abi-boundaries-modern-cpp.md
@@ -2,7 +2,7 @@
 title: "Portability at ABI boundaries"
 description: "Flatten C++ interfaces to C calling conventions at binary interface boundaries."
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: abbd405e-3038-427c-8c24-e00598f0936a
 ---
 # Portability at ABI boundaries
diff --git a/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md b/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md
index beb76735fa..4d06719b10 100644
--- a/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md
+++ b/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Postfix Increment and Decrement Operators: ++ and --"
 title: "Postfix Increment and Decrement Operators: ++ and --"
-ms.date: "11/04/2016"
+description: "Learn more about: Postfix Increment and Decrement Operators: ++ and --"
+ms.date: 11/04/2016
 f1_keywords: ["--", "++"]
 helpviewer_keywords: ["increment operators [C++], syntax", "member-selection operators [C++]", "-- operator [C++], postfix decrement operators", "postfix operators [C++]", "++ operator [C++], postfix increment operators", "decrement operators [C++], syntax", "operators [C++], postfix", "decrement operators [C++]"]
-ms.assetid: 0204d5c8-51b0-4108-b8a1-074c5754d89c
 ---
 # Postfix Increment and Decrement Operators: `++` and `--`
 
@@ -43,19 +42,25 @@ The following code illustrates the postfix increment operator:
 #include <iostream>
 using namespace std;
 
-int main() {
-   int i = 10;
-   cout << i++ << endl;
-   cout << i << endl;
+int main()
+{
+    int i = 10;
+    cout << i++ << endl;
+    cout << i << endl;
 }
 ```
 
+```Output
+10
+11
+```
+
 Postincrement and postdecrement operations on enumerated types are not supported:
 
 ```cpp
-enum Compass { North, South, East, West );
+enum Compass { North, South, East, West };
 Compass myCompass;
-for( myCompass = North; myCompass != West; myCompass++ ) // Error
+for (myCompass = North; myCompass != West; myCompass++); // Error
 ```
 
 ## See also
diff --git a/docs/cpp/program-and-linkage-cpp.md b/docs/cpp/program-and-linkage-cpp.md
index 85a25f8016..720e33de0f 100644
--- a/docs/cpp/program-and-linkage-cpp.md
+++ b/docs/cpp/program-and-linkage-cpp.md
@@ -11,7 +11,7 @@ In a C++ program, a *symbol*, for example a variable or function name, can be de
 The following example shows some declarations:
 
 ```cpp
-int i;
+extern int i;
 int f(int x);
 class C;
 ```
diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md
index 6b65cb30b1..c12c7051c6 100644
--- a/docs/cpp/raw-pointers.md
+++ b/docs/cpp/raw-pointers.md
@@ -334,7 +334,7 @@ int main()
 
 ## See also
 
-[Smart pointers](smart-pointers-modern-cpp.md)
-[Indirection Operator: *](indirection-operator-star.md)<br/>
-[Address-of Operator: &](address-of-operator-amp.md)</br>
+[Smart pointers](smart-pointers-modern-cpp.md)\
+[Indirection Operator: *](indirection-operator-star.md)\
+[Address-of Operator: &](address-of-operator-amp.md)\
 [Welcome back to C++](welcome-back-to-cpp-modern-cpp.md)
diff --git a/docs/cpp/results-of-calling-example.md b/docs/cpp/results-of-calling-example.md
index d4b2e02357..7684793aa7 100644
--- a/docs/cpp/results-of-calling-example.md
+++ b/docs/cpp/results-of-calling-example.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Results of Calling Example"
 title: "Results of Calling Example"
-ms.date: "11/19/2018"
+description: "Learn more about: Results of Calling Example"
+ms.date: 11/19/2018
 helpviewer_keywords: ["examples [C++], results of calling", "results, thiscall call", "results, __fastcall keyword call", "results, __cdecl call", "results, __stdcall call"]
-ms.assetid: aa70a7cb-ba1d-4aa6-bd0a-ba783da2e642
 ---
 # Results of Calling Example
 
@@ -20,7 +19,7 @@ The **`__cdecl`** calling convention
 
 The C decorated name (**`__stdcall`**) is `_MyFunc@20`. The C++ decorated name is implementation-specific.
 
-![Diagram showing the stack and registers for the S T D call and this call calling conventions.](../cpp/media/vc37i02.gif )<br/>
+![Diagram showing the stack and registers for the S T D call and this call calling conventions.](../cpp/media/vc37i02.gif)<br/>
 The __stdcall and thiscall calling conventions
 
 ## `__fastcall`
diff --git a/docs/cpp/safebuffers.md b/docs/cpp/safebuffers.md
index 5d581c08ee..c813aa53e2 100644
--- a/docs/cpp/safebuffers.md
+++ b/docs/cpp/safebuffers.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: safebuffers"
 title: "safebuffers"
-ms.date: "11/04/2016"
+description: "Learn more about: safebuffers"
+ms.date: 11/04/2016
 f1_keywords: ["safebuffers_cpp"]
 helpviewer_keywords: ["__declspec keyword (C++), safebuffers", "safebuffers __declspec keyword"]
-ms.assetid: 0b0dce14-4523-44d2-8070-5dd0fdabc618
 ---
 # safebuffers
 
@@ -50,7 +49,7 @@ static int checkBuffers() {
     BUFFER cb;
     // Use the buffer...
     return 0;
-};
+}
 static __declspec(safebuffers)
     int noCheckBuffers() {
     BUFFER ncb;
diff --git a/docs/cpp/selectany.md b/docs/cpp/selectany.md
index 4369cd35eb..73b773a2a0 100644
--- a/docs/cpp/selectany.md
+++ b/docs/cpp/selectany.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: `selectany`"
 title: "selectany"
-ms.date: "11/04/2016"
+description: "Learn more about: `selectany`"
+ms.date: 11/04/2016
 f1_keywords: ["selectany_cpp"]
 helpviewer_keywords: ["__declspec keyword [C++], selectany", "selectany __declspec keyword"]
-ms.assetid: 9c353017-5a42-4f50-b741-bd13da1ce84d
 ---
 # `selectany`
 
@@ -56,7 +55,7 @@ extern __declspec(selectany) int x5;
 // OK: dynamic initialization of global object
 class X {
 public:
-X(int i){i++;};
+X(int i){i++;}
 int i;
 };
 
diff --git a/docs/cpp/single-inheritance.md b/docs/cpp/single-inheritance.md
index 74c79169b4..ccba5fd02c 100644
--- a/docs/cpp/single-inheritance.md
+++ b/docs/cpp/single-inheritance.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Single Inheritance"
 title: "Single Inheritance"
-ms.date: "11/19/2018"
+description: "Learn more about: Single Inheritance"
+ms.date: 11/19/2018
 helpviewer_keywords: ["single inheritance", "base classes [C++], indirect", "scope, scope resolution operator", "operators [C++], scope resolution", "scope resolution operator", "derived classes [C++], single base class", "inheritance, single"]
-ms.assetid: 1cb946ed-8b1b-4cf1-bde0-d9cecbfdc622
 ---
 # Single Inheritance
 
@@ -74,7 +73,7 @@ Book::Book( char *name, long pagecount ) {
    Name = new char[ strlen( name ) + 1 ];
    strcpy_s( Name, strlen(Name), name );
    PageCount = pagecount;
-};
+}
 ```
 
 Note that the constructor for `Book`, (`Book::Book`), has access to the data member, `Name`. In a program, an object of type `Book` can be created and used as follows:
diff --git a/docs/cpp/smart-pointers-modern-cpp.md b/docs/cpp/smart-pointers-modern-cpp.md
index 40af79d21d..2551bba44a 100644
--- a/docs/cpp/smart-pointers-modern-cpp.md
+++ b/docs/cpp/smart-pointers-modern-cpp.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Smart pointers (Modern C++)"
 title: "Smart pointers (Modern C++)"
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: 909ef870-904c-49b6-b8cd-e9d0b7dc9435
 ---
 # Smart pointers (Modern C++)
diff --git a/docs/cpp/stdcall.md b/docs/cpp/stdcall.md
index a6e9a50351..61ad524d75 100644
--- a/docs/cpp/stdcall.md
+++ b/docs/cpp/stdcall.md
@@ -13,6 +13,8 @@ The **`__stdcall`** calling convention is used to call Win32 API functions. The
 ## Syntax
 
 > *return-type* **`__stdcall`** *function-name*[**`(`** *argument-list* **`)`**]
+>
+> **`auto`** **`__stdcall`** *function-name*[**`(`** *argument-list* **`)`**] [ **`->`** *return-type* ]
 
 ## Remarks
 
diff --git a/docs/cpp/string-and-character-literals-cpp.md b/docs/cpp/string-and-character-literals-cpp.md
index 70addb2b9b..643fd31dae 100644
--- a/docs/cpp/string-and-character-literals-cpp.md
+++ b/docs/cpp/string-and-character-literals-cpp.md
@@ -331,7 +331,10 @@ const size_t byteSize = (wcslen(str) + 1) * sizeof(wchar_t);
 
 Notice that `strlen()` and `wcslen()` don't include the size of the terminating null character, whose size is equal to the element size of the string type: one byte on a `char*` or `char8_t*` string, two bytes on `wchar_t*` or `char16_t*` strings, and four bytes on `char32_t*` strings.
 
-In versions of Visual Studio before Visual Studio 2022 version 17.0, the maximum length of a string literal is 65,535 bytes. This limit applies to both narrow string literals and wide string literals. In Visual Studio 2022 version 17.0 and later, this restriction is lifted and string length is limited by available resources.
+Maximum length of a string literal after concatenation:
+
+* Visual Studio prior to 2022 version 17.0: the maximum length of a string literal after concatenation is 65,535 bytes. This applies to both narrow and wide string literals.
+* From Visual Studio 2022 version 17.0 onwards: the maximum length of a string literal after concatenation is only limited by available memory. However, the size limit before concatenation is still 16,384 bytes
 
 ### Modifying string literals
 
diff --git a/docs/cpp/switch-statement-cpp.md b/docs/cpp/switch-statement-cpp.md
index 21afd60347..321b32fa4c 100644
--- a/docs/cpp/switch-statement-cpp.md
+++ b/docs/cpp/switch-statement-cpp.md
@@ -1,11 +1,10 @@
 ---
 title: "switch statement (C++)"
 description: "Reference to the Standard C++ switch statement in Microsoft Visual Studio C++."
-ms.date: "04/25/2020"
+ms.date: 04/25/2020
 f1_keywords: ["default_cpp", "switch_cpp", "case_cpp"]
 helpviewer_keywords: ["switch keyword [C++]", "case keyword [C++], in switch statements", "default keyword [C++]"]
 no-loc: [switch, case, default, break, while, opt]
-ms.assetid: 6c3f3ed3-5593-463c-8f4b-b33742b455c6
 ---
 # `switch` statement (C++)
 
@@ -117,7 +116,7 @@ int main()
         break;
     case status::bad:
         throw BadGadget();
-    };
+    }
 ```
 
 An inner block of a **`switch`** statement can contain definitions with initializers as long as they're *reachable*, that is, not bypassed by all possible execution paths. Names introduced using these declarations have local scope. For example:
diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml
index 03a00af04c..1c9d0872d8 100644
--- a/docs/cpp/toc.yml
+++ b/docs/cpp/toc.yml
@@ -369,7 +369,7 @@ items:
         - name: Pimpl idiom for compile-time encapsulation
           href: ../cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md
         - name: Portability at ABI boundaries
-          href: ../cpp/portability-at-abi-boundaries-modern-cpp.md 
+          href: ../cpp/portability-at-abi-boundaries-modern-cpp.md
         - name: Constructors
           items: 
             - name: Constructors
@@ -696,6 +696,8 @@ items:
                   href: ../cpp/using-dllimport-and-dllexport-in-cpp-classes.md
             - name: empty_bases
               href: ../cpp/empty-bases.md
+            - name: hybrid_patchable
+              href: ../cpp/hybrid-patchable.md
             - name: jitintrinsic
               href: ../cpp/jitintrinsic.md
             - name: naked
diff --git a/docs/cpp/transporting-exceptions-between-threads.md b/docs/cpp/transporting-exceptions-between-threads.md
index 343b25f91f..bddcb01e69 100644
--- a/docs/cpp/transporting-exceptions-between-threads.md
+++ b/docs/cpp/transporting-exceptions-between-threads.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Transporting exceptions between threads"
 title: "Transporting exceptions between threads"
+description: "Learn more about: Transporting exceptions between threads"
 ms.date: 05/02/2023
 helpviewer_keywords: ["std::current_exception", "transporting exceptions between threads", "std::copy_exception", "exception_ptr", "std::exception_ptr", "std::rethrow_exception", "current_exception", "transport exceptions between threads", "copy_exception", "rethrow_exception", "move exceptions between threads"]
 ---
@@ -244,6 +244,6 @@ exception_ptr 1: Caught a  myException exception.
 
 ## See also
 
-[Exception Handling](../cpp/exception-handling-in-visual-cpp.md)
+[Exception Handling](../cpp/exception-handling-in-visual-cpp.md)\
 [`/EH` (Exception Handling Model)](../build/reference/eh-exception-handling-model.md)\
 [`/clr` (Common Language Runtime Compilation)](../build/reference/clr-common-language-runtime-compilation.md)
diff --git a/docs/cpp/try-except-statement.md b/docs/cpp/try-except-statement.md
index cb344b682e..451aed3b2a 100644
--- a/docs/cpp/try-except-statement.md
+++ b/docs/cpp/try-except-statement.md
@@ -4,7 +4,6 @@ description: "The Microsoft C++ reference to the __try and __except structured e
 ms.date: 08/25/2020
 f1_keywords: ["_abnormal_termination_cpp", "_exception_code_cpp", "_exception_info", "__except", "_except", "_exception_code", "__except_cpp", "_exception_info_cpp"]
 helpviewer_keywords: ["__try keyword [C++]", "EXCEPTION_CONTINUE_EXECUTION macro", "EXCEPTION_CONTINUE_SEARCH macro", "EXCEPTION_EXECUTE_HANDLER macro", "GetExceptionCode function", "try-catch keyword [C++], try-except keyword [C++]", "_exception_code keyword [C++]", "try-except keyword [C++]", "_exception_info keyword [C++]", "_abnormal_termination keyword [C++]"]
-ms.assetid: 30d60071-ea49-4bfb-a8e6-7a420de66381
 ---
 # `try-except` statement
 
@@ -115,7 +114,7 @@ int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep)
     {
         puts("didn't catch AV, unexpected.");
         return EXCEPTION_CONTINUE_SEARCH;
-    };
+    }
 }
 
 int main()
diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md
index de5eec7bcf..b2c961353f 100644
--- a/docs/cpp/tutorial-import-stl-named-module.md
+++ b/docs/cpp/tutorial-import-stl-named-module.md
@@ -24,7 +24,7 @@ This tutorial requires Visual Studio 2022 17.5 or later.
 
 ## Introduction to standard library modules
 
-Header files suffer from semantics that can change depending on macro definitions, the order in which you include them, and they slow compilation. Modules solve these problems.
+Header file semantics can change depending on macro definitions, the order in which you include them, and they slow compilation. Modules solve these problems.
 
 It's now possible to import the standard library as a module instead of as a tangle of header files. This is much faster and more robust than including header files or header units or precompiled headers (PCH).
 
@@ -39,14 +39,12 @@ Because named modules don't expose macros, macros like `assert`, `errno`, `offse
 
 ## About C++ modules
 
-Header files are how declarations and definitions have been shared between source files in C++. Prior to standard library modules, you'd include the part of the standard library you needed with a directive like `#include <vector>`. Header files are fragile and difficult to compose because their semantics may change depending on the order you include them, or whether certain macros are defined. They also slow compilation because they're reprocessed by every source file that includes them.
+Header files are how declarations and definitions have been shared between source files in C++. Before standard library modules, you'd include the part of the standard library you needed with a directive like `#include <vector>`. Header files are fragile and difficult to compose because their semantics may change depending on the order you include them, or whether certain macros are defined. They also slow compilation because they're reprocessed by every source file that includes them.
 
 C++20 introduces a modern alternative called *modules*. In C++23, we were able to capitalize on module support to introduce named modules to represent the standard library.
 
 Like header files, modules allow you to share declarations and definitions across source files. But unlike header files, modules aren't fragile and are easier to compose because their semantics don't change due to macro definitions or the order in which you import them. The compiler can process modules much faster than it can process `#include` files, and uses less memory at compile time as well. Named modules don't expose macro definitions or private implementation details.
 
-For in depth information about modules, see [Overview of modules in C++](modules-cpp.md) That article also discusses consuming the C++ standard library as modules, but uses an older and experimental way of doing it.
-
 This article demonstrates the new and best way to consume the standard library. For more information about alternative ways to consume the standard library, see [Compare header units, modules, and precompiled headers](../build/compare-inclusion-methods.md).
 
 ## Import the standard library with `std`
@@ -57,7 +55,7 @@ The statement `import std;` or `import std.compat;` imports the standard library
 
 ### Example: How to build and import `std`
 
-1. Open a x86 Native Tools Command Prompt for VS: from the Windows **Start** menu, type *x86 native* and the prompt should appear in the list of apps. Ensure that the prompt is for Visual Studio 2022 version 17.5 or above. You'll get errors if you use the wrong version of the prompt. The examples used in this tutorial are for the CMD shell.
+1. Open a x86 Native Tools Command Prompt for VS: from the Windows **Start** menu, type *x86 native* and the prompt should appear in the list of apps. Ensure that the prompt is for Visual Studio 2022 version 17.5 or above. You get errors if you use the wrong version of the prompt. The examples used in this tutorial are for the CMD shell.
 1. Create a directory, such as `%USERPROFILE%\source\repos\STLModules`, and make it the current directory. If you choose a directory that you don't have write access to, you'll get errors during compilation.
 1. Compile the `std` named module with the following command:
 
diff --git a/docs/cpp/tutorial-named-modules-cpp.md b/docs/cpp/tutorial-named-modules-cpp.md
index 89830e7764..776ac6f114 100644
--- a/docs/cpp/tutorial-named-modules-cpp.md
+++ b/docs/cpp/tutorial-named-modules-cpp.md
@@ -1,6 +1,6 @@
 ---
 title: "Named modules tutorial in C++"
-ms.date: 08/08/2022
+ms.date: 02/13/2025
 ms.topic: "tutorial"
 author: "tylermsft"
 ms.author: "twhitney"
@@ -9,7 +9,7 @@ description: Named modules in C++20 provide a modern alternative to header files
 ---
 # Named modules tutorial (C++)
 
-This tutorial is about creating C++20 modules. Modules replace header files. You'll learn how modules are an improvement on header files.
+This tutorial is about creating C++20 modules. Modules are a significant improvement on header files.
 
 In this tutorial, learn how to:
 
@@ -22,13 +22,11 @@ In this tutorial, learn how to:
 
 This tutorial requires Visual Studio 2022 17.1.0 or later.
 
-You might get IntelliSense errors while working on the code example in this tutorial. Work on the IntelliSense engine is catching up with the compiler. IntelliSense errors can be ignored and won't prevent the code example from building. To track progress on the IntelliSense work, see this [issue](https://developercommunity.visualstudio.com/t/When-importing-a-C20-module-or-header-/1550846).
-
 ## What are C++ modules
 
-Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and difficult to compose. They may compile differently depending on the order you include them in, or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them.
+Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and may compile differently depending on the order you include them in or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them.
 
-C++20 introduces a modern approach to componentizing C++ programs: *modules*.
+C++20 introduces *modules* as a modern approach to componentizing C++ programs.
 
 Like header files, modules allow you to share declarations and definitions across source files. But unlike header files, modules don't leak macro definitions or private implementation details.
 
@@ -50,7 +48,7 @@ Your code can consume modules in the same project, or any referenced projects, a
 
 ## Create the project
 
-As we build a simple project, we'll look at various aspects of modules. The project will implement an API using a module instead of a header file.
+The following project implements an API using a module instead of a header file.
 
 In Visual Studio 2022 or later, choose **Create a new project** and then the **Console App** (for C++) project type. If this project type isn't available, you may not have selected the **Desktop development with C++** workload when you installed Visual Studio. You can use the Visual Studio Installer to add the C++ workload.
 
@@ -62,7 +60,7 @@ Because modules are a C++20 feature, use the [`/std:c++20` or `/std:c++latest`](
 
 ## Create the primary module interface unit
 
-A module consists of one or more files. One of these files must be what is called the *primary module interface unit*. It defines what the module exports; that is, what importers of the module will see. There can only be one primary module interface unit per module.
+A module consists of one or more files. One of these files must be what is called the *primary module interface unit*. It defines what the module exports; that is, what importers of the module see. There can only be one primary module interface unit per module.
 
 To add a primary module interface unit, in **Solution Explorer**, right-click **Source Files** then select **Add** > **Module**.
 
@@ -88,17 +86,17 @@ Replace the contents of *`BasicPlane.Figures.ixx`* file with:
 export module BasicPlane.Figures; // the export module keywords mark this file as a primary module interface unit
 ```
 
-This line identifies this file as the primary module interface and gives the module a name: `BasicPlane.Figures`. The period in the module name has no special meaning to the compiler. A period can be used to convey how your module is organized. If you have multiple module files that work together, you can use periods to indicate a separation of concerns. In this tutorial, we'll use periods to indicate different functional areas of the API.
+This line identifies this file as the primary module interface and gives the module a name: `BasicPlane.Figures`. The period in the module name has no special meaning to the compiler. A period can be used to convey how your module is organized. If you have multiple module files that work together, you can use periods to indicate a separation of concerns. In this tutorial, periods indicate different functional areas of the API.
 
 This name is also where the "named" in "named module" comes from. The files that are part of this module use this name to identify themselves as part of the named module. A named module is the collection of module units with the same module name.
 
 We should talk about the API we'll implement for a moment before going further. It impacts the choices we make next. The API represents different shapes. We're only going to provide a couple shapes in this example: `Point` and `Rectangle`. `Point` is meant to be used as part of more complex shapes such as `Rectangle`.
 
-To illustrate some features of modules, we'll factor this API into pieces. One piece will be the `Point` API. The other part will be `Rectangle`. Imagine that this API will grow into something more complex. The division is useful for separating concerns or easing code maintenance.
+To illustrate some features of modules, we factor this API into parts. One part is the `Point` API. The other part is `Rectangle`. Imagine that this API could grow into something more complex. The division is useful for separating concerns or easing code maintenance.
 
 So far, we've created the primary module interface that will expose this API. Let's now build the `Point` API. We want it to be part of this module. For reasons of logical organization, and potential build efficiency, we want to make the code for this part of the API a *module partition* file.
 
-Module partitions are useful for dividing the module implementation into manageable pieces. A module partition file is a piece, or component, of a module. What makes it unique is that it can be treated as an individual piece of the module--but only within the module. Module partitions can't be consumed outside of a module.
+Module partitions are useful for dividing the module implementation into manageable parts. A module partition file is part of a module. What makes it unique is that it can be treated as an individual parts of the module--but only within the module. Module partitions can't be consumed outside of a module.
 
 When you import a partition into the primary module, all its declarations become visible to the primary module regardless of whether they're exported. Partitions can be imported into any partition interface, primary module interface, or module unit that belongs to the named module.
 
@@ -108,7 +106,7 @@ When you import a partition into the primary module, all its declarations become
 
 To create a module partition file, in the **Solution Explorer** right-click **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Point.ixx`* and choose **Add**.
 
-Because it's a module partition file, we've added a hyphen and the name of the partition to the module name. This convention aids the compiler in the command-line case because the compiler uses name lookup rules based on the module name to find the compiled *`.ifc`* file for the partition. This way you don't have to provide explicit `/reference` command-line arguments to find the partitions that belong to the module. It's also helpful for organizing the files that belong to a module by name because you can easily see which files belong to which modules.
+Because it's a module partition file, we add a hyphen and the name of the partition to the module name. This convention aids the compiler in the command-line case because the compiler uses name lookup rules based on the module name to find the compiled *`.ifc`* file for the partition. This way you don't have to provide explicit `/reference` command-line arguments to find the partitions that belong to the module. It's also helpful for organizing the files that belong to a module by name because you can easily see which files belong to which modules.
 
 Replace the contents of *`BasicPlane.Figures-Point.ixx`* with:
 
@@ -129,7 +127,7 @@ In this file, the `export` keyword makes `struct Point` visible to consumers.
 
 ### `Rectangle` module partition example
 
-The next partition we'll define is `Rectangle`. Create another module file using the same steps as before: In **Solution Explorer**, right-click on **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Rectangle.ixx`* and select **Add**.
+The next partition we define is `Rectangle`. Create another module file using the same steps as before: In **Solution Explorer**, right-click on **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Rectangle.ixx`* and select **Add**.
 
 Replace the contents of *`BasicPlane.Figures-Rectangle.ixx`* with:
 
@@ -156,13 +154,13 @@ Next, `import :Point;` shows how to import a module partition. The `import` stat
 
 Next, the code exports the definition of `struct Rectangle` and declarations for some functions that return various properties of the rectangle. The `export` keyword indicates whether to make what it precedes visible to consumers of the module. It's used to make the functions `area`, `height`, and `width` visible outside of the module.
 
-All definitions and declarations in a module partition are visible to the importing module unit whether they have the `export` keyword or not. The `export` keyword governs whether the definition, declaration, or typedef will be visible outside of the module when you export the partition in the primary module interface.
+All definitions and declarations in a module partition are visible to the importing module unit whether they have the `export` keyword or not. The `export` keyword governs whether the definition, declaration, or typedef is visible outside of the module when you export the partition in the primary module interface.
 
 Names are made visible to consumers of a module in several ways:
 
 - Put the keyword `export` in front of each type, function, and so on, that you want to export.
 - If you put `export` in front of a namespace, for example `export namespace N { ... }`, everything defined within the braces is exported. But if elsewhere in the module you define `namespace N { struct S {...};}`, then `struct S` isn't available to consumers of the module. It's not available because that namespace declaration isn't prefaced by `export`, even though there's another namespace with the same name that is.
-- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It will be visible to other files that are part of the module, but not to importers of the module.
+- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It's visible to other files that are part of the module, but not to importers of the module.
 - Use `module :private;` to mark the beginning of the private module partition. The private module partition is a section of the module where declarations are only visible to that file. They aren't visible to files that import this module or to other files that are part of this module. Think of it as a section that is static local to the file. This section is visible only within the file.
 - To make an imported module or module partition visible, use `export import`. An example is shown in the next section.
 
@@ -179,11 +177,11 @@ export import :Point; // bring in the Point partition, and export it to consumer
 export import :Rectangle; // bring in the Rectangle partition, and export it to consumers of this module
 ```
 
-The two lines that begin with `export import` are new here. When combined like this, these two keywords instruct the compiler to import the specified module and make it visible to consumers of this module. In this case, the colon (`:`) in the module name indicates that we are importing a module partition.
+The two lines that begin with `export import` are new here. When combined like this, these two keywords instruct the compiler to import the specified module and make it visible to consumers of this module. In this case, the colon (`:`) in the module name indicates that we're importing a module partition.
 
 The imported names don't include the full module name. For example, the `:Point` partition was declared as `export module BasicPlane.Figures:Point`. Yet here we're importing `:Point`. Because we're in the primary module interface file for the module `BasicPlane.Figures`, the module name is implied, and only the partition name is specified.
 
-So far, we've defined the primary module interface, which exposes the API surface we want to make available. But we've only declared, not defined, `area()`, `height()`, or `width()`. We'll do that next by creating a module implementation file.
+So far, we've defined the primary module interface, which exposes the API surface we want to make available. But we've only declared, not defined, `area()`, `height()`, or `width()`. We do that next by creating a module implementation file.
 
 ## Create a module unit implementation file
 
@@ -219,7 +217,7 @@ Anything you declare within an implementation unit is only visible to the module
 
 ## Import the module
 
-Now we'll make use of the module we've defined. Open the *`ModulesTutorial.cpp`* file. It was created automatically as part of the project. It currently contains the function `main()`. Replace its contents with:
+Now we make use of the module we've defined. Open the *`ModulesTutorial.cpp`* file. It was created automatically as part of the project. It currently contains the function `main()`. Replace its contents with:
 
 ```cpp
 #include <iostream>
@@ -237,7 +235,7 @@ int main()
 }
 ```
 
-The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It can come before or after any `#include` directives.
+The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It comes after any `#include` directives.
 
 The app then uses the types and functions from the module to output the area and width of the defined rectangle:
 
@@ -252,7 +250,7 @@ Let's now look in more detail at the various module files.
 
 ### Primary module interface
 
-A module consists of one or more files. One of them defines the interface that importers will see. This file contains the *Primary module interface*. There can only be one primary module interface per module. As pointed out earlier, the exported module interface unit doesn't specify a module partition.
+A module consists of one or more files. One of them defines the interface that importers see. This file contains the *Primary module interface*. There can only be one primary module interface per module. As pointed out earlier, the exported module interface unit doesn't specify a module partition.
 
 It has an *`.ixx`* extension by default. However, you can treat a source file with any extension as a module interface file. To do so, set the **Compile As** property in the **Advanced** tab for the source file's properties page to **Compile As Module (/interface)**:
 
@@ -265,7 +263,7 @@ module; // optional. Defines the beginning of the global module fragment
 
 // #include directives go here but only apply to this file and
 // aren't shared with other module implementation files.
-// Macro definitions aren't visible outside this file, or to importers.
+// Macro definitions aren't visible outside this file or to importers.
 // import statements aren't allowed here. They go in the module preamble, below.
 
 export module [module-name]; // Required. Marks the beginning of the module preamble
@@ -300,12 +298,13 @@ For a more in-depth look at module syntax, see [Modules](modules-cpp.md).
 
 Module implementation units belong to a named module. The named module they belong to is indicated by the `module [module-name]` statement in the file. Module implementation units provide implementation details that, for code hygiene or other reasons, you don't want to put in the primary module interface or in a module partition file.
 
-Module implementation units are useful for breaking up a large module into smaller pieces, which can result in faster build times. This technique is covered briefly in the [Best practices](#module-best-practices) section.
+Module implementation units are useful for breaking up a large module into smaller parts, which can result in faster build times. This technique is covered briefly in the [Best practices](#module-best-practices) section.
 
 Module implementation unit files have a *`.cpp`* extension. The basic outline of a module implementation unit file is:
 
 ```cpp
-// optional #include or import statements. These only apply to this file
+// optional #include statements. These only apply to this file
+// optional import statements. These only apply to this file
 // imports in the associated module's interface are automatically available to this file
 
 module [module-name]; // required. Identifies which named module this implementation unit belongs to
@@ -315,7 +314,7 @@ module [module-name]; // required. Identifies which named module this implementa
 
 ### Module partition files
 
-Module partitions provide a way to componentize a module into different pieces, or *partitions*. Module partitions are meant to be imported only in files that are part of the named module. They can't be imported outside of the named module.
+Module partitions provide a way to componentize a module into different parts, or *partitions*. Module partitions are meant to be imported only in files that are part of the named module. They can't be imported outside of the named module.
 
 A partition has an interface file, and zero or more implementation files. A module partition shares ownership of all the declarations in the entire module.
 
@@ -358,7 +357,7 @@ A module and the code that imports it must be compiled with the same compiler op
 - The name of the file that contains the module primary interface is generally the name of the module. For example, given the module name `BasicPlane.Figures`, the name of the file containing the primary interface would be named *`BasicPlane.Figures.ixx`*.
 - The name of a module partition file is generally `<primary-module-name>-<module-partition-name>` where the name of the module is followed by a hyphen ('-') and then the name of the partition. For example, *`BasicPlane.Figures-Rectangle.ixx`*
 
-If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler will look for them automatically based on the name of the module. The name of the compiled partition file (ending with an *`.ifc`* extension) is generated from the module name. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler will anticipate that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions.
+If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler looks for them automatically based on the name of the module. The name of the compiled partition file is generated from the module name and ends in *`.ifc`*. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler anticipates that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions.
 
 You can name them using your own convention. But then you'll need to specify corresponding [`/reference`](../build/reference/module-reference.md) arguments to the command-line compiler.
 
@@ -372,7 +371,7 @@ Module partitions make it easier to logically factor a large module. They can be
 
 ## Summary
 
-In this tutorial, you've been introduced to the basics of C++20 modules. You've created a primary module interface, defined a module partition, and built a module implementation file.
+In this tutorial, you were introduced to the basics of C++20 modules by creating a primary module interface, defined a module partition, and built a module implementation file.
 
 ## See also
 
diff --git a/docs/cpp/type-conversions-and-type-safety-modern-cpp.md b/docs/cpp/type-conversions-and-type-safety-modern-cpp.md
index 0d6fb436b4..08ae5ed19c 100644
--- a/docs/cpp/type-conversions-and-type-safety-modern-cpp.md
+++ b/docs/cpp/type-conversions-and-type-safety-modern-cpp.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Type conversions and type safety"
 title: "Type conversions and type safety"
+description: "Learn more about: Type conversions and type safety"
 ms.date: "11/19/2019"
-ms.topic: "conceptual"
-ms.assetid: 629b361a-2ce1-4700-8b5d-ab4f57b245d5
+ms.topic: "concept-article"
 ---
 # Type conversions and type safety
 
@@ -105,7 +104,7 @@ The C-style cast operator is identical to the call operator () and is therefore
     int i = d;  // warning C4244 possible loss of data
     int j = static_cast<int>(d);       // No warning.
     string s = static_cast<string>(d); // Error C2440:cannot convert from
-                                       // double to std:string
+                                       // double to std::string
 
     // No error but not necessarily safe.
     Base* b = new Base();
@@ -173,7 +172,7 @@ The C-style cast operator is identical to the call operator () and is therefore
 
 ## See also
 
-[C++ type system](../cpp/cpp-type-system-modern-cpp.md)<br/>
-[Welcome back to C++](../cpp/welcome-back-to-cpp-modern-cpp.md)<br/>
-[C++ Language Reference](../cpp/cpp-language-reference.md)<br/>
+[C++ type system](../cpp/cpp-type-system-modern-cpp.md)\
+[Welcome back to C++](../cpp/welcome-back-to-cpp-modern-cpp.md)\
+[C++ Language Reference](../cpp/cpp-language-reference.md)\
 [C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
diff --git a/docs/cpp/unhook.md b/docs/cpp/unhook.md
index c281450faf..146b6502e0 100644
--- a/docs/cpp/unhook.md
+++ b/docs/cpp/unhook.md
@@ -64,7 +64,7 @@ A pointer to the event handler method to be unhooked from an event. The handler
 
 - Managed events: *`ReceiverClass`* is the event receiver class and *`HandlerMethod`* is the handler.
 
-*`receiver`*(optional)
+*`receiver`* (optional)
 A pointer to an instance of the event receiver class. If you don't specify a receiver, the default is the receiver class or structure in which **`__unhook`** is called.
 
 ## Usage
diff --git a/docs/cpp/value-types-modern-cpp.md b/docs/cpp/value-types-modern-cpp.md
index a3bed668f6..8178c483c4 100644
--- a/docs/cpp/value-types-modern-cpp.md
+++ b/docs/cpp/value-types-modern-cpp.md
@@ -2,7 +2,7 @@
 description: "Learn more about: C++ classes as value types"
 title: "C++ classes as value types"
 ms.date: 06/09/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: f63bb62c-60da-40d5-ac14-4366608fe260
 ---
 # C++ classes as value types
diff --git a/docs/cpp/void-cpp.md b/docs/cpp/void-cpp.md
index 09444a7cc0..b53334fff2 100644
--- a/docs/cpp/void-cpp.md
+++ b/docs/cpp/void-cpp.md
@@ -16,7 +16,7 @@ In C++, a **`void`** pointer can point to a free function (a function that's not
 
 You can't declare a variable of type **`void`**.
 
-As a matter of style, the C++ Core Guidelines recommend you don't use **`void`** to specify an empty formal parameter list. For more information, see [C++ Core Guidelines NL.25: Don't use `void` as an argument type](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#nl25-dont-use-void-as-an-argument-type).
+As a matter of style, the C++ Core Guidelines recommend you don't use **`void`** to specify an empty formal parameter list. For more information, see [C++ Core Guidelines NL.25: Don't use `void` as an argument type](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#nl25-dont-use-void-as-an-argument-type).
 
 ## Example
 
diff --git a/docs/cpp/welcome-back-to-cpp-modern-cpp.md b/docs/cpp/welcome-back-to-cpp-modern-cpp.md
index dd8346fd6d..dad330d014 100644
--- a/docs/cpp/welcome-back-to-cpp-modern-cpp.md
+++ b/docs/cpp/welcome-back-to-cpp-modern-cpp.md
@@ -2,7 +2,7 @@
 title: "Welcome back to C++ - Modern C++"
 description: "Describes the new programming idioms in Modern C++ and their rationale."
 ms.date: 06/02/2022
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ---
 # Welcome back to C++ - Modern C++
 
diff --git a/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp b/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp
index cdc05a2c21..654cf20fe9 100644
--- a/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp
+++ b/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp
@@ -55,11 +55,11 @@ void Test1()
     if (str1 == str2) { /* ... */ }
     if (str1->Equals(str2)) { /* ... */ }
     if (str1 != str2) { /* ... */ }
-    if (str1 < str2 || str1 > str2) { /* ... */};
+    if (str1 < str2 || str1 > str2) { /* ... */ }
     int result = String::CompareOrdinal(str1, str2);
     
-    if(str1 == nullptr) { /* ...*/};
-    if(str1->IsEmpty()) { /* ...*/};
+    if (str1 == nullptr) { /* ...*/ }
+    if (str1->IsEmpty()) { /* ...*/ }
 
    // Accessing individual characters in a String^
     auto it = str1->Begin();
diff --git a/docs/cppcx/codesnippet/CPP/partialclassexample/class1.h b/docs/cppcx/codesnippet/CPP/partialclassexample/class1.h
index 52efa84e74..9e8425b3b8 100644
--- a/docs/cppcx/codesnippet/CPP/partialclassexample/class1.h
+++ b/docs/cppcx/codesnippet/CPP/partialclassexample/class1.h
@@ -21,7 +21,7 @@ namespace PartialClassExample
 
     /*
     // This is commented out because it causes 
-    // a compile error in Delcaration #6 due to mc already being defined.
+    // a compile error in Declaration #6 due to mc already being defined.
     // the error is understood. The example is most effective showing
     // the various declaration rules all in one example like this.
     //<snippet03>
diff --git a/docs/cppcx/codesnippet/CPP/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation_4.cpp b/docs/cppcx/codesnippet/CPP/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation_4.cpp
index d5b8967bfd..9bdeebfd49 100644
--- a/docs/cppcx/codesnippet/CPP/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation_4.cpp
+++ b/docs/cppcx/codesnippet/CPP/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation_4.cpp
@@ -252,7 +252,7 @@ MFT_GRAYSCALE_SATURATION (type = double)
  
 MFT_GRAYSCALE_CHROMA_ROTATION (type = double)
 
-    Rotates the chroma values of each pixel. The attribue value is the angle of
+    Rotates the chroma values of each pixel. The attribute value is the angle of
     rotation in degrees. The result is a shift in hue.
 
 The effect is implemented by treating the chroma value of each pixel as a vector [u,v],
@@ -351,7 +351,7 @@ void TransformChroma(const D2D1::Matrix3x2F& mat, BYTE *pu, BYTE *pv)
 //
 // The image conversion functions take the following parameters:
 //
-// mat               Transfomation matrix for chroma values.
+// mat               Transformation matrix for chroma values.
 // rcDest            Destination rectangle.
 // pDest             Pointer to the destination buffer.
 // lDestStride       Stride of the destination buffer, in bytes.
diff --git a/docs/cppcx/collections-c-cx.md b/docs/cppcx/collections-c-cx.md
index 9785f9056e..2471f4f3bb 100644
--- a/docs/cppcx/collections-c-cx.md
+++ b/docs/cppcx/collections-c-cx.md
@@ -1,7 +1,7 @@
 ---
 title: "Collections (C++/CX)"
 description: "Learn more about: Collections (C++/CX)"
-ms.date: "11/19/2018"
+ms.date: 11/19/2018
 ---
 # Collections (C++/CX)
 
@@ -9,57 +9,57 @@ In a C++/CX program, you can make free use of Standard Template Library (STL) co
 
 The Windows Runtime defines the interfaces for collections and related types, and C++/CX provides the concrete C++ implementations in the collection.h header file. This illustration shows the relationships between the collection types:
 
-![Diagram of C plus plus C X inheritance tree for collection types.](../cppcx/media/cppcxcollectionsinheritancetree.png)
+![Diagram of C plus plus C X inheritance tree for collection types.](media/cppcxcollectionsinheritancetree.png)
 
-- The [Platform::Collections::Vector class](../cppcx/platform-collections-vector-class.md) resembles the [std::vector class](../standard-library/vector-class.md).
+- The [`Platform::Collections::Vector` class](platform-collections-vector-class.md) resembles the [`std::vector` class](../standard-library/vector-class.md).
 
-- The [Platform::Collections::Map class](../cppcx/platform-collections-map-class.md) resembles the [std::map class](../standard-library/map-class.md).
+- The [`Platform::Collections::Map` class](platform-collections-map-class.md) resembles the [`std::map` class](../standard-library/map-class.md).
 
-- [Platform::Collections::VectorView class](../cppcx/platform-collections-vectorview-class.md) and [Platform::Collections::MapView class](../cppcx/platform-collections-mapview-class.md) are read-only versions of `Vector` and `Map`.
+- [`Platform::Collections::VectorView` class](platform-collections-vectorview-class.md) and [`Platform::Collections::MapView` class](platform-collections-mapview-class.md) are read-only versions of `Vector` and `Map`.
 
-- Iterators are defined in the [Platform::Collections Namespace](../cppcx/platform-collections-namespace.md). These iterators satisfy the requirements for STL iterators and enable the use of [std::find](../standard-library/algorithm-functions.md#find),  [std::count_if](../standard-library/algorithm-functions.md#count_if), and other STL algorithms on any [Windows::Foundation::Collections](/uwp/api/windows.foundation.collections) interface type or [Platform::Collections](../cppcx/platform-collections-namespace.md) concrete type. For example, this means that you can iterate a collection in a Windows Runtime component that's created in C# and apply an STL algorithm to it.
+- Iterators are defined in the [`Platform::Collections` Namespace](platform-collections-namespace.md). These iterators satisfy the requirements for STL iterators and enable the use of [`std::find`](../standard-library/algorithm-functions.md#find), [`std::count_if`](../standard-library/algorithm-functions.md#count_if), and other STL algorithms on any [`Windows::Foundation::Collections`](/uwp/api/windows.foundation.collections) interface type or [`Platform::Collections`](platform-collections-namespace.md) concrete type. For example, this means that you can iterate a collection in a Windows Runtime component that's created in C# and apply an STL algorithm to it.
 
    > [!IMPORTANT]
-   > Proxy iterators `VectorIterator` and `VectorViewIterator` utilize proxy objects `VectoryProxy<T>` and `ArrowProxy<T>` to enable usage with STL containers. For more information, see "VectorProxy elements" later in this article.
+   > Proxy iterators `VectorIterator` and `VectorViewIterator` utilize proxy objects `VectorProxy<T>` and `ArrowProxy<T>` to enable usage with STL containers. For more information, see [VectorProxy elements](#vectorproxy-elements) later in this article.
 
 - The C++/CX collection types support the same thread safety guarantees that STL containers support.
 
-- [Windows::Foundation::Collections::IObservableVector](/uwp/api/windows.foundation.collections.iobservablevector-1) and [Windows::Foundation::Collections::IObservableMap](/uwp/api/windows.foundation.collections.iobservablemap-2) define events that are fired when the collection changes in various ways. By implementing these interfaces,  [Platform::Collections::Map](../cppcx/platform-collections-map-class.md) and [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) support databinding with XAML collections. For example, if you have a `Vector` that is data-bound to a `Grid`, when you add an item to a collection, the change is reflected in the Grid UI.
+- [`Windows::Foundation::Collections::IObservableVector`](/uwp/api/windows.foundation.collections.iobservablevector-1) and [`Windows::Foundation::Collections::IObservableMap`](/uwp/api/windows.foundation.collections.iobservablemap-2) define events that are fired when the collection changes in various ways. By implementing these interfaces, [`Platform::Collections::Map`](platform-collections-map-class.md) and [`Platform::Collections::Vector`](platform-collections-vector-class.md) support databinding with XAML collections. For example, if you have a `Vector` that is data-bound to a `Grid`, when you add an item to a collection, the change is reflected in the Grid UI.
 
 ## Vector usage
 
-When your class has to pass a sequence container to another Windows Runtime component, use [Windows::Foundation::Collections:: IVector\<T>](/uwp/api/windows.foundation.collections.ivector-1) as the parameter or return type, and [Platform::Collections::Vector\<T>](../cppcx/platform-collections-vector-class.md) as the concrete implementation. If you attempt to use a `Vector` type in a public return value or parameter, compiler error C3986 will be raised. You can fix the error by changing the `Vector` to an `IVector`.
+When your class has to pass a sequence container to another Windows Runtime component, use [`Windows::Foundation::Collections::IVector<T>`](/uwp/api/windows.foundation.collections.ivector-1) as the parameter or return type, and [`Platform::Collections::Vector<T>`](platform-collections-vector-class.md) as the concrete implementation. If you attempt to use a `Vector` type in a public return value or parameter, compiler error C3986 will be raised. You can fix the error by changing the `Vector` to an `IVector`.
 
 > [!IMPORTANT]
 > If you are passing a sequence within your own program, then use either `Vector` or `std::vector` because they are more efficient than `IVector`. Use `IVector` only when you pass the container across the ABI.
 >
 > The Windows Runtime type system does not support the concept of jagged arrays and therefore you cannot pass an `IVector<Platform::Array<T>>` as a return value or method parameter. To pass a jagged array or a sequence of sequences across the ABI, use `IVector<IVector<T>^>`.
 
-`Vector<T>` provides the methods that are required for adding, removing, and accessing items in the collection, and it is implicitly convertible to `IVector<T>`. You can also use STL algorithms on instances of `Vector<T>`. The following example demonstrates some basic usage. The [begin function](../cppcx/begin-function.md) and [end function](../cppcx/end-function.md) here are from the `Platform::Collections` namespace, not the `std` namespace.
+`Vector<T>` provides the methods that are required for adding, removing, and accessing items in the collection, and it is implicitly convertible to `IVector<T>`. You can also use STL algorithms on instances of `Vector<T>`. The following example demonstrates some basic usage. The [`begin` function](begin-function.md) and [`end` function](end-function.md) here are from the `Platform::Collections` namespace, not the `std` namespace.
 
-[!code-cpp[cx_collections#01](../cppcx/codesnippet/CPP/collections/class1.cpp#01)]
+[!code-cpp[cx_collections#01](codesnippet/CPP/collections/class1.cpp#01)]
 
 If you have existing code that uses `std::vector` and you want to reuse it in a Windows Runtime component, just use one of the `Vector` constructors that takes a `std::vector` or a pair of iterators to construct a `Vector` at the point where you pass the collection across the ABI. The following example shows how to use the `Vector` move constructor for efficient initialization from a `std::vector`. After the move operation, the original `vec` variable is no longer valid.
 
-[!code-cpp[cx_collections#02](../cppcx/codesnippet/CPP/collections/class1.cpp#02)]
+[!code-cpp[cx_collections#02](codesnippet/CPP/collections/class1.cpp#02)]
 
-If you have a vector of strings that you must pass across the ABI at some future point, you must decide whether to create the strings initially as `std::wstring` types or as `Platform::String^` types. If you have to do a lot of processing on the strings, then use `wstring`. Otherwise, create the strings as `Platform::String^` types and avoid the cost of converting them later. You must also decide whether to put these strings into a `std:vector` or `Platform::Collections::Vector` internally. As a general practice, use `std::vector` and then create a `Platform::Vector` from it only when you pass the container across the ABI.
+If you have a vector of strings that you must pass across the ABI at some future point, you must decide whether to create the strings initially as `std::wstring` types or as `Platform::String^` types. If you have to do a lot of processing on the strings, then use `wstring`. Otherwise, create the strings as `Platform::String^` types and avoid the cost of converting them later. You must also decide whether to put these strings into a `std::vector` or `Platform::Collections::Vector` internally. As a general practice, use `std::vector` and then create a `Platform::Vector` from it only when you pass the container across the ABI.
 
 ## Value types in Vector
 
-Any element to be stored in a [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) must support equality comparison, either implicitly or by using a custom [std::equal_to](../standard-library/equal-to-struct.md) comparator that you provide. All reference types and all scalar types implicitly support equality comparisons. For non-scalar value types such as [Windows::Foundation::DateTime](/uwp/api/windows.foundation.datetime), or for custom comparisons—for example, `objA->UniqueID == objB->UniqueID`—you must provide a custom function object.
+Any element to be stored in a [`Platform::Collections::Vector`](platform-collections-vector-class.md) must support equality comparison, either implicitly or by using a custom [`std::equal_to`](../standard-library/equal-to-struct.md) comparator that you provide. All reference types and all scalar types implicitly support equality comparisons. For non-scalar value types such as [`Windows::Foundation::DateTime`](/uwp/api/windows.foundation.datetime), or for custom comparisons—for example, `objA->UniqueID == objB->UniqueID`—you must provide a custom function object.
 
 ## VectorProxy elements
 
-[Platform::Collections::VectorIterator](../cppcx/platform-collections-vectoriterator-class.md) and [Platform::Collections::VectorViewIterator](../cppcx/platform-collections-vectorviewiterator-class.md) enable the use of `range for` loops and algorithms like [std::sort](../standard-library/algorithm-functions.md#sort) with an [IVector\<T>](/uwp/api/windows.foundation.collections.ivector-1) container. But `IVector` elements cannot be accessed through C++ pointer dereference; they can be accessed only through [GetAt](/uwp/api/windows.foundation.collections.ivector-1.getat) and [SetAt](/uwp/api/windows.foundation.collections.ivector-1.setat) methods. Therefore, these iterators use the proxy classes `Platform::Details::VectorProxy<T>` and `Platform::Details::ArrowProxy<T>` to provide access to the individual elements through __\*__, __->__, and __\[]__ operators, as required by the Standard Library. Strictly speaking, given an `IVector<Person^> vec`, the type of `*begin(vec)` is `VectorProxy<Person^>`. However, the proxy object is almost always transparent to your code. These proxy objects are not documented because they are only for internal use by the iterators, but it is useful to know how the mechanism works.
+[`Platform::Collections::VectorIterator`](platform-collections-vectoriterator-class.md) and [`Platform::Collections::VectorViewIterator`](platform-collections-vectorviewiterator-class.md) enable the use of `range for` loops and algorithms like [`std::sort`](../standard-library/algorithm-functions.md#sort) with an [`IVector<T>`](/uwp/api/windows.foundation.collections.ivector-1) container. But `IVector` elements cannot be accessed through C++ pointer dereference; they can be accessed only through [`GetAt`](/uwp/api/windows.foundation.collections.ivector-1.getat) and [`SetAt`](/uwp/api/windows.foundation.collections.ivector-1.setat) methods. Therefore, these iterators use the proxy classes `Platform::Details::VectorProxy<T>` and `Platform::Details::ArrowProxy<T>` to provide access to the individual elements through **`*`**, **`->`**, and **`[]`** operators, as required by the Standard Library. Strictly speaking, given an `IVector<Person^> vec`, the type of `*begin(vec)` is `VectorProxy<Person^>`. However, the proxy object is almost always transparent to your code. These proxy objects are not documented because they are only for internal use by the iterators, but it is useful to know how the mechanism works.
 
-When you use a range-based **`for`** loop over `IVector` containers, use `auto&&` to enable the iterator variable to bind correctly to the `VectorProxy` elements. If you use `auto&`, compiler warning [C4239](../error-messages/compiler-warnings/compiler-warning-level-4-c4239.md) is raised and `VectoryProxy` is mentioned in the warning text.
+When you use a range-based **`for`** loop over `IVector` containers, use `auto&&` to enable the iterator variable to bind correctly to the `VectorProxy` elements. If you use `auto&`, compiler warning [C4239](../error-messages/compiler-warnings/compiler-warning-level-4-c4239.md) is raised and `VectorProxy` is mentioned in the warning text.
 
 The following illustration shows a `range for` loop over an `IVector<Person^>`. Notice that execution is stopped on the breakpoint on line 64. The **QuickWatch** window shows that the iterator variable `p` is in fact a `VectorProxy<Person^>` that has `m_v` and `m_i` member variables. However, when you call `GetType` on this variable, it returns the identical type to the `Person` instance `p2`. The takeaway is that although `VectorProxy` and `ArrowProxy` might appear in **QuickWatch**, the debugger certain compiler errors, or other places, you typically don't have to explicitly code for them.
 
-![Screenshot of debugging VectorProxy in a range based for loop.](../cppcx/media/vectorproxy-1.png)
+![Screenshot of debugging VectorProxy in a range based for loop.](media/vectorproxy-1.png)
 
-One scenario in which you have to code around the proxy object is when you have to perform a **`dynamic_cast`** on the elements—for example, when you are looking for XAML objects of a particular type in a `UIElement` element collection. In this case, you must first cast the element to [Platform::Object](../cppcx/platform-object-class.md)^ and then perform the dynamic cast:
+One scenario in which you have to code around the proxy object is when you have to perform a **`dynamic_cast`** on the elements—for example, when you are looking for XAML objects of a particular type in a `UIElement` element collection. In this case, you must first cast the element to [`Platform::Object`](platform-object-class.md)^ and then perform the dynamic cast:
 
 ```cpp
 void FindButton(UIElementCollection^ col)
@@ -78,67 +78,67 @@ void FindButton(UIElementCollection^ col)
 
 ## Map usage
 
-This example shows how to insert items and look them up in a [Platform::Collections::Map](../cppcx/platform-collections-map-class.md), and then return the `Map` as a read-only [Windows::Foundation::Collections::IMapView](/uwp/api/windows.foundation.collections.imapview-2) type.
+This example shows how to insert items and look them up in a [`Platform::Collections::Map`](platform-collections-map-class.md), and then return the `Map` as a read-only [`Windows::Foundation::Collections::IMapView`](/uwp/api/windows.foundation.collections.imapview-2) type.
 
-[!code-cpp[cx_collections#04](../cppcx/codesnippet/CPP/collections/class1.cpp#04)]
+[!code-cpp[cx_collections#04](codesnippet/CPP/collections/class1.cpp#04)]
 
-In general, for internal map functionality, prefer the `std::map` type for performance reasons. If you have to pass the container across the ABI, construct a [Platform::Collections::Map](../cppcx/platform-collections-map-class.md) from the [std::map](../standard-library/map-class.md) and return the `Map` as an [Windows::Foundation::Collections::IMap](/uwp/api/windows.foundation.collections.imap-2). If you attempt to use a `Map` type in a public return value or parameter, compiler error C3986 will be raised. You can fix the error by changing the `Map` to an `IMap`. In some cases—for example, if you are not making a large number of lookups or insertions, and you are passing the collection across the ABI frequently—it might be less expensive to use `Platform::Collections::Map` from the beginning and avoid the cost of converting the `std::map`. In any case, avoid lookup and insert operations on an `IMap` because these are the least performant of the three types. Convert to `IMap` only at the point that you pass the container across the ABI.
+In general, for internal map functionality, prefer the `std::map` type for performance reasons. If you have to pass the container across the ABI, construct a [`Platform::Collections::Map`](platform-collections-map-class.md) from the [`std::map`](../standard-library/map-class.md) and return the `Map` as an [`Windows::Foundation::Collections::IMap`](/uwp/api/windows.foundation.collections.imap-2). If you attempt to use a `Map` type in a public return value or parameter, compiler error C3986 will be raised. You can fix the error by changing the `Map` to an `IMap`. In some cases—for example, if you are not making a large number of lookups or insertions, and you are passing the collection across the ABI frequently—it might be less expensive to use `Platform::Collections::Map` from the beginning and avoid the cost of converting the `std::map`. In any case, avoid lookup and insert operations on an `IMap` because these are the least performant of the three types. Convert to `IMap` only at the point that you pass the container across the ABI.
 
 ## Value types in Map
 
-Elements in a [Platform::Collections::Map](../cppcx/platform-collections-map-class.md) are ordered. Any element to be stored in a `Map` must support less-than comparison with strict weak ordering, either implicitly or by using a custom [stl::less](../standard-library/less-struct.md) comparator that you provide. Scalar types support the comparison implicitly. For non-scalar value types such as `Windows::Foundation::DateTime`, or for custom comparisons—for example, `objA->UniqueID < objB->UniqueID`—you must provide a custom comparator.
+Elements in a [`Platform::Collections::Map`](platform-collections-map-class.md) are ordered. Any element to be stored in a `Map` must support less-than comparison with strict weak ordering, either implicitly or by using a custom [`std::less`](../standard-library/less-struct.md) comparator that you provide. Scalar types support the comparison implicitly. For non-scalar value types such as `Windows::Foundation::DateTime`, or for custom comparisons—for example, `objA->UniqueID < objB->UniqueID`—you must provide a custom comparator.
 
 ## Collection types
 
 Collections fall into four categories: modifiable versions and read-only versions of sequence collections and associative collections. In addition, C++/CX enhances collections by providing three iterator classes that simplify the accessing of collections.
 
-Elements of a modifiable collection can be changed, but elements of a read-only collection, which is known as a *view*, can only be read. Elements of a [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) or[Platform::Collections::VectorView](../cppcx/platform-collections-vectorview-class.md) collection can be accessed by using an iterator or the collection's [Vector::GetAt](../cppcx/platform-collections-vector-class.md#getat) and an index. Elements of an associative collection can be accessed by using the collection's [Map::Lookup](../cppcx/platform-collections-map-class.md#lookup) and a key.
+Elements of a modifiable collection can be changed, but elements of a read-only collection, which is known as a *view*, can only be read. Elements of a [`Platform::Collections::Vector`](platform-collections-vector-class.md) or [`Platform::Collections::VectorView`](platform-collections-vectorview-class.md) collection can be accessed by using an iterator or the collection's [`Vector::GetAt`](platform-collections-vector-class.md#getat) and an index. Elements of an associative collection can be accessed by using the collection's [`Map::Lookup`](platform-collections-map-class.md#lookup) and a key.
 
-[Platform::Collections::Map class](../cppcx/platform-collections-map-class.md)<br/>
+[`Platform::Collections::Map` class](platform-collections-map-class.md)\
 A modifiable, associative collection. Map elements are key-value pairs. Looking up a key to retrieve its associated value, and iterating through all key-value pairs, are both supported.
 
-`Map` and `MapView` are templated on `<K, V, C = std::less<K>>`; therefore, you can customize the comparator.  Additionally, `Vector` and `VectorView` are templated on `<T, E = std::equal_to<T>>` so that you can customize the behavior of `IndexOf()`. This is important mostly for `Vector` and `VectorView` of value structs. For example, to create a Vector\<Windows::Foundation::DateTime>, you must provide a custom comparator because DateTime does not overload the == operator.
+`Map` and `MapView` are templated on `<K, V, C = std::less<K>>`; therefore, you can customize the comparator. Additionally, `Vector` and `VectorView` are templated on `<T, E = std::equal_to<T>>` so that you can customize the behavior of `IndexOf()`. This is important mostly for `Vector` and `VectorView` of value structs. For example, to create a `Vector<Windows::Foundation::DateTime>`, you must provide a custom comparator because DateTime does not overload the `==` operator.
 
-[Platform::Collections::MapView class](../cppcx/platform-collections-mapview-class.md)<br/>
+[`Platform::Collections::MapView` class](platform-collections-mapview-class.md)\
 A read-only version of a `Map`.
 
-[Platform::Collections::Vector class](../cppcx/platform-collections-vector-class.md)<br/>
-A modifiable sequence collection. `Vector<T>` supports constant-time random access and amortized-constant-time [Append](../cppcx/platform-collections-vector-class.md#append) operations..
+[`Platform::Collections::Vector` class](platform-collections-vector-class.md)\
+A modifiable sequence collection. `Vector<T>` supports constant-time random access and amortized-constant-time [`Append`](platform-collections-vector-class.md#append) operations.
 
-[Platform::Collections::VectorView class](../cppcx/platform-collections-vectorview-class.md)<br/>
+[`Platform::Collections::VectorView` class](platform-collections-vectorview-class.md)\
 A read-only version of a `Vector`.
 
-[Platform::Collections::InputIterator class](../cppcx/platform-collections-inputiterator-class.md)<br/>
+[`Platform::Collections::InputIterator` class](platform-collections-inputiterator-class.md)\
 An STL iterator that satisfies the requirements of an STL input iterator.
 
-[Platform::Collections::VectorIterator class](../cppcx/platform-collections-vectoriterator-class.md)<br/>
+[`Platform::Collections::VectorIterator` class](platform-collections-vectoriterator-class.md)\
 An STL iterator that satisfies the requirements of an STL mutable random-access iterator.
 
-[Platform::Collections::VectorViewIterator class](../cppcx/platform-collections-vectorviewiterator-class.md)<br/>
-An STL iterator that satisfies the requirements of an STL  **`const`** random-access iterator.
+[`Platform::Collections::VectorViewIterator` class](platform-collections-vectorviewiterator-class.md)\
+An STL iterator that satisfies the requirements of an STL **`const`** random-access iterator.
 
 ### begin() and end() functions
 
-To simplify the use of the STL to process `Vector`, `VectorView`, `Map`, `MapView`, and arbitrary `Windows::Foundation::Collections` objects, C++/CX supports overloads of the [begin Function](../cppcx/begin-function.md) and [end Function](../cppcx/end-function.md) non-member functions.
+To simplify the use of the STL to process `Vector`, `VectorView`, `Map`, `MapView`, and arbitrary `Windows::Foundation::Collections` objects, C++/CX supports overloads of the [`begin` Function](begin-function.md) and [`end` Function](end-function.md) non-member functions.
 
 The following table lists the available iterators and functions.
 
 |Iterators|Functions|
 |---------------|---------------|
-|[Platform::Collections::VectorIterator\<T>](../cppcx/platform-collections-vectoriterator-class.md)<br /><br /> (Internally stores [Windows::Foundation::Collections:: IVector\<T>](/uwp/api/windows.foundation.collections.ivector-1) and int.)|[begin](../cppcx/begin-function.md)/ [end](../cppcx/end-function.md)([Windows::Foundation::Collections:: IVector\<T>](/uwp/api/windows.foundation.collections.ivector-1))|
-|[Platform::Collections::VectorViewIterator\<T>](../cppcx/platform-collections-vectorviewiterator-class.md)<br /><br /> (Internally stores [IVectorView\<T>](/uwp/api/windows.foundation.collections.ivectorview-1)^ and int.)|[begin](../cppcx/begin-function.md)/ [end](../cppcx/end-function.md) ([IVectorView\<T>](/uwp/api/windows.foundation.collections.ivectorview-1)^)|
-|[Platform::Collections::InputIterator\<T>](../cppcx/platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [IIterator\<T>](/uwp/api/windows.foundation.collections.iiterator-1)^ and T.)|[begin](../cppcx/begin-function.md)/ [end](../cppcx/end-function.md) ([IIterable\<T>](/uwp/api/windows.foundation.collections.iiterable-1))|
-|[Platform::Collections::InputIterator<IKeyValuePair\<K, V>^>](../cppcx/platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [IIterator\<T>](/uwp/api/windows.foundation.collections.iiterator-1)^ and T.)|[begin](../cppcx/begin-function.md)/ [end](../cppcx/end-function.md) ([IMap\<K,V>](/uwp/api/windows.foundation.collections.imap-2).|
-|[Platform::Collections::InputIterator<IKeyValuePair\<K, V>^>](../cppcx/platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [IIterator\<T>](/uwp/api/windows.foundation.collections.iiterator-1)^ and T.)|[begin](../cppcx/begin-function.md)/ [end](../cppcx/end-function.md) ([Windows::Foundation::Collections::IMapView](/uwp/api/windows.foundation.collections.imapview-2))|
+|[`Platform::Collections::VectorIterator<T>`](platform-collections-vectoriterator-class.md)<br /><br /> (Internally stores [`Windows::Foundation::Collections::IVector<T>`](/uwp/api/windows.foundation.collections.ivector-1) and `int`.)|[`begin`](begin-function.md)/ [`end`](end-function.md)([`Windows::Foundation::Collections::IVector<T>`](/uwp/api/windows.foundation.collections.ivector-1))|
+|[`Platform::Collections::VectorViewIterator<T>`](platform-collections-vectorviewiterator-class.md)<br /><br /> (Internally stores [`IVectorView<T>`](/uwp/api/windows.foundation.collections.ivectorview-1)^ and `int`.)|[`begin`](begin-function.md)/ [`end`](end-function.md) ([`IVectorView<T>`](/uwp/api/windows.foundation.collections.ivectorview-1)^)|
+|[`Platform::Collections::InputIterator<T>`](platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [`IIterator<T>`](/uwp/api/windows.foundation.collections.iiterator-1)^ and `T`.)|[`begin`](begin-function.md)/ [`end`](end-function.md) ([`IIterable<T>`](/uwp/api/windows.foundation.collections.iiterable-1))|
+|[`Platform::Collections::InputIterator<IKeyValuePair<K, V>^>`](platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [`IIterator<T>`](/uwp/api/windows.foundation.collections.iiterator-1)^ and `T`.)|[`begin`](begin-function.md)/ [`end`](end-function.md) ([`IMap<K,V>`](/uwp/api/windows.foundation.collections.imap-2))|
+|[`Platform::Collections::InputIterator<IKeyValuePair<K, V>^>`](platform-collections-inputiterator-class.md)<br /><br /> (Internally stores [`IIterator<T>`](/uwp/api/windows.foundation.collections.iiterator-1)^ and `T`.)|[`begin`](begin-function.md)/ [`end`](end-function.md) ([`Windows::Foundation::Collections::IMapView`](/uwp/api/windows.foundation.collections.imapview-2))|
 
 ### Collection change events
 
 `Vector` and `Map` support databinding in XAML collections by implementing events that occur when a collection object is changed or reset, or when any element of a collection is inserted, removed, or changed. You can write your own types that support databinding, although you cannot inherit from `Map` or `Vector` because those types are sealed.
 
-The [Windows::Foundation::Collections::VectorChangedEventHandler](/uwp/api/windows.foundation.collections.vectorchangedeventhandler-1) and [Windows::Foundation::Collections::MapChangedEventHandler](/uwp/api/windows.foundation.collections.mapchangedeventhandler-2) delegates specify the signatures for event handlers for collection change events. The [Windows::Foundation::Collections::CollectionChange](/uwp/api/windows.foundation.collections.collectionchange) public enum class, and `Platform::Collection::Details::MapChangedEventArgs` and `Platform::Collections::Details::VectorChangedEventArgs` ref classes, store the event arguments to determine what caused the event. The `*EventArgs` types are defined in the `Details` namespace because you don't have to construct or consume them explicitly when you use `Map` or `Vector`.
+The [`Windows::Foundation::Collections::VectorChangedEventHandler`](/uwp/api/windows.foundation.collections.vectorchangedeventhandler-1) and [`Windows::Foundation::Collections::MapChangedEventHandler`](/uwp/api/windows.foundation.collections.mapchangedeventhandler-2) delegates specify the signatures for event handlers for collection change events. The [`Windows::Foundation::Collections::CollectionChange`](/uwp/api/windows.foundation.collections.collectionchange) public enum class, and `Platform::Collections::Details::MapChangedEventArgs` and `Platform::Collections::Details::VectorChangedEventArgs` ref classes, store the event arguments to determine what caused the event. The `*EventArgs` types are defined in the `Details` namespace because you don't have to construct or consume them explicitly when you use `Map` or `Vector`.
 
 ## See also
 
-[Type System](../cppcx/type-system-c-cx.md)\
-[C++/CX Language Reference](../cppcx/visual-c-language-reference-c-cx.md)\
-[Namespaces Reference](../cppcx/namespaces-reference-c-cx.md)
+[Type System](type-system-c-cx.md)\
+[C++/CX Language Reference](visual-c-language-reference-c-cx.md)\
+[Namespaces Reference](namespaces-reference-c-cx.md)
diff --git a/docs/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md b/docs/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md
index 602af8f276..9291df90cc 100644
--- a/docs/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md
+++ b/docs/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md
@@ -1,8 +1,7 @@
 ---
 title: "CRT functions not supported in Universal Windows Platform apps"
 description: "Reference guide to CRT functions not supported in Universal Windows Platform apps."
-ms.date: "04/16/2020"
-ms.assetid: cbfc957d-6c60-48f4-97e3-1ed8526743b4
+ms.date: 04/16/2020
 ---
 # CRT functions not supported in Universal Windows Platform apps
 
@@ -47,4 +46,4 @@ Both the previously mentioned APIs and the following APIs are unavailable in Win
 |`_chdir` `_wchdir` `_getcwd` `_getdcwd` `_wgetcwd` `_wgetdcwd`|The concept of a working directory doesn't apply to Windows 8.x Store apps.|Use full paths instead.|
 |`_isleadbyte_l` `_ismbbalnum`, `_ismbbalnum_l`, `_ismbbalpha`, `_ismbbalpha` `_ismbbalpha_l` `_ismbbgraph` `_ismbbgraph_l` `_ismbbkalnum` `_ismbbkalnum_l` `_ismbbkana` `_ismbbkana_l` `_ismbbkprint` `_ismbbkprint_l` `_ismbbkpunct` `_ismbbkpunct_l` `_ismbblead` `_ismbblead_l` `_ismbbprint` `_ismbbprint_l` `_ismbbpunct` `_ismbbpunct_l` `_ismbbtrail` `_ismbbtrail_l` `_ismbslead` `_ismbslead_l` `_ismbstrail` `_ismbstrail_l` `_mbsdup` `isleadbyte`|Multi-byte strings are not supported in Windows 8.x Store apps.|Use Unicode strings instead.|
 |`_tzset`|Environment variables are not available to Windows  8.x Store apps.|No workaround.|
-|`_get_heap_handle`, `_heapmin`|The corresponding Win32 APIs are not supported in Windows 8.x Store apps. And, apps can no longer create private heaps.|No workaround. However, ``_get_heap_handle`` is available in the DEBUG CRT, for debugging purposes only.|
+|`_get_heap_handle`, `_heapmin`|The corresponding Win32 APIs are not supported in Windows 8.x Store apps. And, apps can no longer create private heaps.|No workaround. However, `_get_heap_handle` is available in the DEBUG CRT, for debugging purposes only.|
diff --git a/docs/cppcx/delegates-c-cx.md b/docs/cppcx/delegates-c-cx.md
index af0f96e6d6..3ea53942eb 100644
--- a/docs/cppcx/delegates-c-cx.md
+++ b/docs/cppcx/delegates-c-cx.md
@@ -18,7 +18,7 @@ Delegates are most commonly used in conjunction with events. An event has a dele
 event PrimeFoundHandler^ primeFoundEvent;
 ```
 
-When declaring delegates that will be exposed to clients across the Windows Runtime application binary interface, use [Windows::Foundation::TypedEventHandler\<TSender, TResult>](/uwp/api/windows.foundation.typedeventhandler-2). This delegate has predefined proxy and stub binaries that enable it to be consumed by Javascript clients.
+When declaring delegates that will be exposed to clients across the Windows Runtime application binary interface, use [Windows::Foundation::TypedEventHandler\<TSender, TResult>](/uwp/api/windows.foundation.typedeventhandler-2). This delegate has predefined proxy and stub binaries that enable it to be consumed by JavaScript clients.
 
 ## Consuming delegates
 
diff --git a/docs/cppcx/deprecating-types-and-members-c-cx.md b/docs/cppcx/deprecating-types-and-members-c-cx.md
index 85471b58e5..8c17a5e3a8 100644
--- a/docs/cppcx/deprecating-types-and-members-c-cx.md
+++ b/docs/cppcx/deprecating-types-and-members-c-cx.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Deprecating types and members (C++/CX)"
 title: "Deprecating types and members (C++/CX)"
+description: "Learn more about: Deprecating types and members (C++/CX)"
 ms.date: 01/07/2022
 no-loc: [ "class", "delegate", "enum", "field", "interface", "method", "property", "struct" ]
 ---
@@ -13,7 +13,7 @@ C++/CX supports deprecation of Windows Runtime types and members for producers a
 
 ## Example
 
-The following example shows how to deprecate your own public APIs—for example, in a Windows Runtime component. The second parameter, of type [`Windows:Foundation::Metadata::DeprecationType`](/uwp/api/windows.foundation.metadata.deprecationtype) specifies whether the API is being deprecated or removed. Currently only the `DeprecationType::Deprecated` value is supported. The third parameter in the attribute specifies the [`Windows::Foundation::Metadata::Platform`](/uwp/api/windows.foundation.metadata.platformattribute) to which the attribute applies.
+The following example shows how to deprecate your own public APIs—for example, in a Windows Runtime component. The second parameter, of type [`Windows::Foundation::Metadata::DeprecationType`](/uwp/api/windows.foundation.metadata.deprecationtype) specifies whether the API is being deprecated or removed. Currently only the `DeprecationType::Deprecated` value is supported. The third parameter in the attribute specifies the [`Windows::Foundation::Metadata::Platform`](/uwp/api/windows.foundation.metadata.platformattribute) to which the attribute applies.
 
 ```cpp
 namespace wfm = Windows::Foundation::Metadata;
diff --git a/docs/cppcx/fundamental-types-c-cx.md b/docs/cppcx/fundamental-types-c-cx.md
index 4f1bd6c1d8..47155e3cdb 100644
--- a/docs/cppcx/fundamental-types-c-cx.md
+++ b/docs/cppcx/fundamental-types-c-cx.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Fundamental types (C++/CX)"
 title: "Fundamental types (C++/CX)"
+description: "Learn more about: Fundamental types (C++/CX)"
 ms.date: "01/22/2017"
-ms.assetid: c9f82907-25f2-440b-91d6-afb8dbd46ea6
 ---
 # Fundamental types (C++/CX)
 
-In addition to the standard C++ built-in types, C++/CX supports the type system that's defined by the Windows Runtime architecture by providing typedefs for the Windows Runtime fundamental types that map to standard C++ types.. C++/CX implements Boolean, character, and numeric fundamental types. These typedefs are defined in the `default` namespace, which never needs to be specified explicitly. In addition, C++/CX provides wrappers and concrete implementations for certain Windows Runtime types and interfaces.
+In addition to the standard C++ built-in types, C++/CX supports the type system that's defined by the Windows Runtime architecture by providing typedefs for the Windows Runtime fundamental types that map to standard C++ types. C++/CX implements Boolean, character, and numeric fundamental types. These typedefs are defined in the `default` namespace, which never needs to be specified explicitly. In addition, C++/CX provides wrappers and concrete implementations for certain Windows Runtime types and interfaces.
 
 ## Boolean and Character Types
 
diff --git a/docs/cppcx/platform-accessdeniedexception-class.md b/docs/cppcx/platform-accessdeniedexception-class.md
index bf6cbaed0b..cc50d74596 100644
--- a/docs/cppcx/platform-accessdeniedexception-class.md
+++ b/docs/cppcx/platform-accessdeniedexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::AccessDeniedException Class"
 title: "Platform::AccessDeniedException Class"
+description: "Learn more about: Platform::AccessDeniedException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::AccessDeniedException", "VCCORLIB/Platform::AccessDeniedException::AccessDeniedException"]
 helpviewer_keywords: ["Platform::AccessDeniedException"]
-ms.assetid: 6ae2155b-7b16-4587-8d2d-da05eab4c7e9
 ---
 # Platform::AccessDeniedException Class
 
@@ -14,7 +13,7 @@ Thrown when access to a resource or feature is denied.
 ## Syntax
 
 ```cpp
-public ref class AccessDeniedException : COMException,    IException,    IPrintable,   IEquatable
+public ref class AccessDeniedException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-changedstateexception-class.md b/docs/cppcx/platform-changedstateexception-class.md
index b123e94431..6fc1201500 100644
--- a/docs/cppcx/platform-changedstateexception-class.md
+++ b/docs/cppcx/platform-changedstateexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::ChangedStateException Class"
 title: "Platform::ChangedStateException Class"
+description: "Learn more about: Platform::ChangedStateException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::ChangedStateException", "VCCORLIB/Platform::ChangedStateException::ChangedStateException"]
 helpviewer_keywords: ["Platform::ChangedStateException"]
-ms.assetid: f894beac-9e80-4fac-ac25-89f1dbc0a6a4
 ---
 # Platform::ChangedStateException Class
 
@@ -14,7 +13,7 @@ Thrown when the internal state of an object has changed, thereby invalidating th
 ## Syntax
 
 ```cpp
-public ref class ChangedStateException : COMException,    IException,    IPrintable,    IEquatable
+public ref class ChangedStateException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-classnotregisteredexception-class.md b/docs/cppcx/platform-classnotregisteredexception-class.md
index 9fa2b99397..0108e2bff6 100644
--- a/docs/cppcx/platform-classnotregisteredexception-class.md
+++ b/docs/cppcx/platform-classnotregisteredexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::ClassNotRegisteredException Class"
 title: "Platform::ClassNotRegisteredException Class"
+description: "Learn more about: Platform::ClassNotRegisteredException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::ClassNotRegisteredException::ClassNotRegisteredException", "VCCORLIB/Platform::ClassNotRegisteredException"]
 helpviewer_keywords: ["Platform::ClassNotRegisteredException"]
-ms.assetid: 8f8871d8-51b9-46e8-902e-ae023c9f1de9
 ---
 # Platform::ClassNotRegisteredException Class
 
@@ -14,7 +13,7 @@ Thrown when a COM class has not been registered.
 ## Syntax
 
 ```cpp
-public ref class ClassNotRegisteredException : COMException,    IException,    IPrintable,    IEquatable
+public ref class ClassNotRegisteredException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-collections-map-class.md b/docs/cppcx/platform-collections-map-class.md
index 21b981e5f6..473101cef0 100644
--- a/docs/cppcx/platform-collections-map-class.md
+++ b/docs/cppcx/platform-collections-map-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::Collections::Map Class"
 title: "Platform::Collections::Map Class"
-ms.date: "10/01/2019"
+description: "Learn more about: Platform::Collections::Map Class"
+ms.date: 10/01/2019
 ms.topic: "reference"
 f1_keywords: ["COLLECTION/Platform::Collections::Map::Map", "COLLECTION/Platform::Collections::Map::Clear", "COLLECTION/Platform::Collections::Map::First", "COLLECTION/Platform::Collections::Map::GetView", "COLLECTION/Platform::Collections::Map::HasKey", "COLLECTION/Platform::Collections::Map::Insert", "COLLECTION/Platform::Collections::Map::Lookup", "COLLECTION/Platform::Collections::Map::Remove", "COLLECTION/Platform::Collections::Map::Size"]
 helpviewer_keywords: ["Map Class (C++/Cx)"]
-ms.assetid: 2b8cf968-1167-4898-a149-1195b32c1785
 ---
 # Platform::Collections::Map Class
 
@@ -206,7 +205,7 @@ Initializes a new instance of the Map class.
 ```cpp
 explicit Map(const C& comp = C());
 explicit Map(const StdMap& m);
-explicit Map(StdMap&& m ;
+explicit Map(StdMap&& m);
 template <typename InIt>
 Map(
    InItfirst,
diff --git a/docs/cppcx/platform-collections-namespace.md b/docs/cppcx/platform-collections-namespace.md
index f079c117af..1cffd68521 100644
--- a/docs/cppcx/platform-collections-namespace.md
+++ b/docs/cppcx/platform-collections-namespace.md
@@ -9,7 +9,7 @@ ms.assetid: b5042864-5f22-40b7-b7a5-c0691f65cc47
 ---
 # Platform::Collections Namespace
 
-The Platform::Collections namespace contains the `Map`, `MapView`, `Vector`, and `VectorView` classes. These classes are concrete implementations of the corresponding interfaces that are defined in the [Windows::Foundation::Collections](/uwp/api/windows.foundation.collections) namespace. The concrete collection types are not portable across the ABI (for example when a Javascript or C# program calls into a C++ component), but they are implicitly convertible to their corresponding interface types. For example, if you implement a public method that populates and returns a collection, then use [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) to implement the collection internally and use [Windows::Foundation::Collections::IVector](/uwp/api/windows.foundation.collections.ivector-1) as the return type. For more information, see [Collections](../cppcx/collections-c-cx.md) and [Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp).
+The Platform::Collections namespace contains the `Map`, `MapView`, `Vector`, and `VectorView` classes. These classes are concrete implementations of the corresponding interfaces that are defined in the [Windows::Foundation::Collections](/uwp/api/windows.foundation.collections) namespace. The concrete collection types are not portable across the ABI (for example when a JavaScript or C# program calls into a C++ component), but they are implicitly convertible to their corresponding interface types. For example, if you implement a public method that populates and returns a collection, then use [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) to implement the collection internally and use [Windows::Foundation::Collections::IVector](/uwp/api/windows.foundation.collections.ivector-1) as the return type. For more information, see [Collections](../cppcx/collections-c-cx.md) and [Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp).
 
 You can construct a Platform::Collections::Vector from a [std::vector](../standard-library/vector-class.md) and a [Platform::Collections::Map](../cppcx/platform-collections-map-class.md) from a [std::map](../standard-library/map-class.md).
 
diff --git a/docs/cppcx/platform-comexception-class.md b/docs/cppcx/platform-comexception-class.md
index 5c8363381c..e76f69daed 100644
--- a/docs/cppcx/platform-comexception-class.md
+++ b/docs/cppcx/platform-comexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::COMException Class"
 title: "Platform::COMException Class"
+description: "Learn more about: Platform::COMException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::COMException", "VCCORLIB/Platform::COMException::HResult", "VCCORLIB/Platform::COMException::Message"]
 helpviewer_keywords: ["Platform::COMException Class"]
-ms.assetid: 44fda4e5-574f-4d12-ab5f-4ff3f277448d
 ---
 # Platform::COMException Class
 
@@ -14,7 +13,7 @@ Represents COM errors that occur during application execution. COMException is t
 ## Syntax
 
 ```cpp
-public ref class COMException : Exception,    IException,    IPrintable,    IEquatable
+public ref class COMException : Exception, IException, IPrintable, IEquatable
 ```
 
 ### Members
@@ -79,12 +78,12 @@ Intializes a new instance of the COMException class.
 ### Syntax
 
 ```cpp
-COMException( int hresult )
+COMException(int hresult);
 ```
 
 ### Parameters
 
-*hresult*<br/>
+*hresult*\
 The error HRESULT that is represented by the exception.
 
 ## <a name="hresult"></a> COMException::HResult Property
@@ -95,7 +94,7 @@ The HRESULT that corresponds to the exception.
 
 ```cpp
 public:
-    property int HResult { int get();}
+    property int HResult { int get(); }
 ```
 
 ## Property Value
@@ -113,7 +112,8 @@ Message that describes the exception.
 ### Syntax
 
 ```cpp
-public:property String^ Message {    String^ get();}
+public:
+    property String^ Message { String^ get(); }
 ```
 
 ### Property Value
diff --git a/docs/cppcx/platform-details-heapallocationtrackinglevel-enumeration.md b/docs/cppcx/platform-details-heapallocationtrackinglevel-enumeration.md
index 095d32d623..8e3e645bf9 100644
--- a/docs/cppcx/platform-details-heapallocationtrackinglevel-enumeration.md
+++ b/docs/cppcx/platform-details-heapallocationtrackinglevel-enumeration.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::Details::HeapAllocationTrackingLevel Enumeration"
 title: "Platform::Details::HeapAllocationTrackingLevel Enumeration"
-ms.date: "12/30/2016"
+description: "Learn more about: Platform::Details::HeapAllocationTrackingLevel Enumeration"
+ms.date: 12/30/2016
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::Details::HeapAllocationTrackingLevel"]
 helpviewer_keywords: ["Platform::Details::HeapAllocationTrackingLevel Enumeration"]
-ms.assetid: dc341bc0-b47b-4eb2-9445-fbaf788e7b1a
 ---
 # Platform::Details::HeapAllocationTrackingLevel Enumeration
 
@@ -14,7 +13,7 @@ This enumeration is intended for internal use only, and is not intended to be us
 ## Syntax
 
 ```cpp
-enumm class HeapAllocationTrackingLevel;
+enum class HeapAllocationTrackingLevel;
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-disconnectedexception-class.md b/docs/cppcx/platform-disconnectedexception-class.md
index 332d47be88..5721f44c9a 100644
--- a/docs/cppcx/platform-disconnectedexception-class.md
+++ b/docs/cppcx/platform-disconnectedexception-class.md
@@ -1,20 +1,19 @@
 ---
-description: "Learn more about: Platform::DisconnectedException Class"
 title: "Platform::DisconnectedException Class"
+description: "Learn more about: Platform::DisconnectedException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::DisconnectedException", "VCCORLIB/Platform::DisconnectedException::DisconnectedException"]
 helpviewer_keywords: ["Platform::DisconnectedException"]
-ms.assetid: c25e0d64-5bff-4c21-88e5-c4ec2776fa7f
 ---
 # Platform::DisconnectedException Class
 
-Thrown when a COM proxy object attempts to reference a COM server that no longer exists
+Thrown when a COM proxy object attempts to reference a COM server that no longer exists.
 
 ## Syntax
 
-```
-public ref class DisconnectedException : COMException,    IException,    IPrintable,    IEquatable
+```cpp
+public ref class DisconnectedException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-exception-class.md b/docs/cppcx/platform-exception-class.md
index ea48d339c2..4eb7e70d3d 100644
--- a/docs/cppcx/platform-exception-class.md
+++ b/docs/cppcx/platform-exception-class.md
@@ -13,7 +13,7 @@ Represents errors that occur during application execution. Custom exception clas
 ## Syntax
 
 ```cpp
-public ref class Exception : Object,    IException,    IPrintable,    IEquatable
+public ref class Exception : Object, IException, IPrintable, IEquatable
 ```
 
 ### Members
@@ -68,10 +68,10 @@ Exception^ CreateException(int32 hr, Platform::String^ message);
 
 ### Parameters
 
-*hr*<br/>
+*hr*\
 An HRESULT value that you typically get from a call to a COM method. If the value is 0, which is equal to S_OK, this method throws [Platform::InvalidArgumentException](../cppcx/platform-invalidargumentexception-class.md) because COM methods that succeed should not throw exceptions.
 
-*message*<br/>
+*message*\
 A string that describes the error.
 
 ### Return Value
@@ -97,10 +97,10 @@ Exception(int32 hresult, ::Platform::String^ message);
 
 ### Parameters
 
-*hresult*<br/>
+*hresult*\
 The error HRESULT that is represented by the exception.
 
-*message*<br/>
+*message*\
 A user-specified message, such as prescriptive text, that is associated with the exception. In general you should prefer the second overload in order to provide a descriptive message that is as specific as possible about how and why the error has occurred.
 
 ## <a name="hresult"></a> Exception::HResult Property
@@ -129,7 +129,8 @@ Message that describes the error.
 ### Syntax
 
 ```cpp
-public:property String^ Message;
+public:
+    property String^ Message;
 ```
 
 ### Property Value
diff --git a/docs/cppcx/platform-failureexception-class.md b/docs/cppcx/platform-failureexception-class.md
index 02f7ca1cfb..24268a74b3 100644
--- a/docs/cppcx/platform-failureexception-class.md
+++ b/docs/cppcx/platform-failureexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::FailureException Class"
 title: "Platform::FailureException Class"
+description: "Learn more about: Platform::FailureException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::FailureException::FailureException", "VCCORLIB/Platform::FailureException"]
 helpviewer_keywords: ["Platform::FailureException"]
-ms.assetid: 1729cd07-bfc2-448e-9db5-185d5cbf5b81
 ---
 # Platform::FailureException Class
 
@@ -14,7 +13,7 @@ Thrown when the operation has failed. It is the equivalent of the E_FAIL HRESULT
 ## Syntax
 
 ```cpp
-public ref class FailureException : COMException,    IException,    IPrintable,    IEquatable
+public ref class FailureException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-guid-value-class.md b/docs/cppcx/platform-guid-value-class.md
index 952645712c..825700de85 100644
--- a/docs/cppcx/platform-guid-value-class.md
+++ b/docs/cppcx/platform-guid-value-class.md
@@ -1,15 +1,14 @@
 ---
-description: "Learn more about: Platform::Guid value class"
 title: "Platform::Guid value class"
+description: "Learn more about: Platform::Guid value class"
 ms.date: "01/15/2019"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::Guid"]
 helpviewer_keywords: ["Platform::Guid Struct"]
-ms.assetid: 25c0bfb2-7f93-44d8-bdf4-ef4fbac3424a
 ---
 # Platform::Guid value class
 
-Represents a [GUID](/windows/win32/api/guiddef/ns-guiddef-guid type in the Windows Runtime type system.
+Represents a [GUID](/windows/win32/api/guiddef/ns-guiddef-guid) type in the Windows Runtime type system.
 
 ## Syntax
 
@@ -74,43 +73,43 @@ Guid(
 
 ### Parameters
 
-*a*<br/>
+*a*\
 The first 4 bytes of the `GUID`.
 
-*b*<br/>
+*b*\
 The next 2 bytes of the `GUID`.
 
-*c*<br/>
+*c*\
 The next 2 bytes of the `GUID`.
 
-*d*<br/>
+*d*\
 The next byte of the `GUID`.
 
-*e*<br/>
+*e*\
 The next byte of the `GUID`.
 
-*f*<br/>
+*f*\
 The next byte of the `GUID`.
 
-*g*<br/>
+*g*\
 The next byte of the `GUID`.
 
-*h*<br/>
+*h*\
 The next byte of the `GUID`.
 
-*i*<br/>
+*i*\
 The next byte of the `GUID`.
 
-*j*<br/>
+*j*\
 The next byte of the `GUID`.
 
-*k*<br/>
+*k*\
 The next byte of the `GUID`.
 
-*m*<br/>
+*m*\
 A `GUID` in the form a [GUID structure](/windows/win32/api/guiddef/ns-guiddef-guid).
 
-*n*<br/>
+*n*\
 The remaining 8 bytes of the `GUID`.
 
 ## <a name="operator-equality"></a> Guid::operator== Operator
@@ -125,10 +124,10 @@ static bool Platform::Guid::operator==(Platform::Guid guid1, Platform::Guid guid
 
 ### Parameters
 
-*guid1*<br/>
+*guid1*\
 The first `Platform::Guid` to compare.
 
-*guid2*<br/>
+*guid2*\
 The second `Platform::Guid` to compare.
 
 ### Return Value
@@ -152,10 +151,10 @@ static bool Platform::Guid::operator!=(Platform::Guid guid1, Platform::Guid guid
 
 ### Parameters
 
-*guid1*<br/>
+*guid1*\
 The first `Platform::Guid` to compare.
 
-*guid2*<br/>
+*guid2*\
 The second `Platform::Guid` to compare.
 
 ### Return Value
@@ -174,10 +173,10 @@ static bool Platform::Guid::operator<(Platform::Guid guid1, Platform::Guid guid2
 
 ### Parameters
 
-*guid1*<br/>
+*guid1*\
 The first `Platform::Guid` to compare.
 
-*guid2*<br/>
+*guid2*\
 The second `Platform::Guid` to compare.
 
 ### Return Value
diff --git a/docs/cppcx/platform-invalidargumentexception-class.md b/docs/cppcx/platform-invalidargumentexception-class.md
index 120bdd9d5c..040d608c66 100644
--- a/docs/cppcx/platform-invalidargumentexception-class.md
+++ b/docs/cppcx/platform-invalidargumentexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::InvalidArgumentException Class"
 title: "Platform::InvalidArgumentException Class"
+description: "Learn more about: Platform::InvalidArgumentException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::InvalidArgumentException", "VCCORLIB/Platform::InvalidArgumentException::InvalidArgumentException"]
 helpviewer_keywords: ["Platform::InvalidArgumentException"]
-ms.assetid: 1a8d860b-3bcb-41a9-9346-6610616a0b46
 ---
 # Platform::InvalidArgumentException Class
 
@@ -14,7 +13,7 @@ Thrown when one of the arguments provided to a method is not valid.
 ## Syntax
 
 ```cpp
-public ref class InvalidArgumentException : COMException,    IException,    IPrintable,    IEquatable
+public ref class InvalidArgumentException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-invalidcastexception-class.md b/docs/cppcx/platform-invalidcastexception-class.md
index 4f9b3c4ba7..9e664b598b 100644
--- a/docs/cppcx/platform-invalidcastexception-class.md
+++ b/docs/cppcx/platform-invalidcastexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::InvalidCastException Class"
 title: "Platform::InvalidCastException Class"
+description: "Learn more about: Platform::InvalidCastException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::InvalidCastException::InvalidCastException", "VCCORLIB/Platform::InvalidCastException"]
 helpviewer_keywords: ["Platform::InvalidCastException"]
-ms.assetid: 0215131d-1251-4913-9561-824410e045b6
 ---
 # Platform::InvalidCastException Class
 
@@ -14,7 +13,7 @@ Thrown when a cast or explicit conversion is invalid.
 ## Syntax
 
 ```cpp
-public ref class InvalidCastException : COMException,    IException,    IPrintable,    IEquatable
+public ref class InvalidCastException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-metadata-runtimeclassname.md b/docs/cppcx/platform-metadata-runtimeclassname.md
index d40541dd80..e7e5d3a056 100644
--- a/docs/cppcx/platform-metadata-runtimeclassname.md
+++ b/docs/cppcx/platform-metadata-runtimeclassname.md
@@ -1,15 +1,14 @@
 ---
-description: "Learn more about: Platform::Metadata::RuntimeClassName"
 title: "Platform::Metadata::RuntimeClassName"
+description: "Learn more about: Platform::Metadata::RuntimeClassName"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::Metadata::RuntimeClassName"]
 helpviewer_keywords: ["RuntimeClassName", "Platform::Metadata::RuntimeClassName"]
-ms.assetid: fdef8f85-ab94-4edd-ba50-ee0da9358ff6
 ---
 # Platform::Metadata::RuntimeClassName
 
-When applied to a class definition, ensures that a private class returns a valid name from the GetRuntimeClassName function..
+When applied to a class definition, ensures that a private class returns a valid name from the GetRuntimeClassName function.
 
 ## Syntax
 
diff --git a/docs/cppcx/platform-notimplementedexception-class.md b/docs/cppcx/platform-notimplementedexception-class.md
index 55e18d0b57..94f1c289d8 100644
--- a/docs/cppcx/platform-notimplementedexception-class.md
+++ b/docs/cppcx/platform-notimplementedexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::NotImplementedException Class"
 title: "Platform::NotImplementedException Class"
+description: "Learn more about: Platform::NotImplementedException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::NotImplementedException", "VCCORLIB/Platform::NotImplementedException::NotImplementedException"]
 helpviewer_keywords: ["Platform::NotImplementedException"]
-ms.assetid: 6da26cc2-dde8-4aea-aa85-67aac55cf97b
 ---
 # Platform::NotImplementedException Class
 
@@ -14,7 +13,7 @@ Thrown when an interface member is not been implemented in a derived type.
 ## Syntax
 
 ```cpp
-public ref class NotImplementedException : COMException,    IException,    IPrintable,    IEquatable
+public ref class NotImplementedException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-nullreferenceexception-class.md b/docs/cppcx/platform-nullreferenceexception-class.md
index c5924402c2..4fd3153854 100644
--- a/docs/cppcx/platform-nullreferenceexception-class.md
+++ b/docs/cppcx/platform-nullreferenceexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::NullReferenceException Class"
 title: "Platform::NullReferenceException Class"
+description: "Learn more about: Platform::NullReferenceException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::NullReferenceException", "VCCORLIB/Platform::NullReferenceException::NullReferenceException"]
 helpviewer_keywords: ["Platform::NullReferenceException"]
-ms.assetid: be202577-d898-4716-83cd-e3556fe8a241
 ---
 # Platform::NullReferenceException Class
 
@@ -14,7 +13,7 @@ Thrown when there is an attempt to dereference a null object reference.
 ## Syntax
 
 ```cpp
-public ref class NullReferenceException : COMException,    IException,    IPrintable,    IEquatable
+public ref class NullReferenceException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-object-class.md b/docs/cppcx/platform-object-class.md
index 3964399163..a080235c9d 100644
--- a/docs/cppcx/platform-object-class.md
+++ b/docs/cppcx/platform-object-class.md
@@ -1,7 +1,7 @@
 ---
 title: "Platform::Object Class"
 description: "Learn more about: Platform::Object Class"
-ms.date: "12/30/2016"
+ms.date: 12/30/2016
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::Object::Object", "VCCORLIB/Platform::Object::Equals", "VCCORLIB/Platform::Object::GetHashCode", "VCCORLIB/Platform::Object::ReferenceEquals", "VCCORLIB/Platform::ToString", "VCCORLIB/Platform::GetType"]
 helpviewer_keywords: ["Object class"]
@@ -166,7 +166,7 @@ public:
     virtual Platform::String^ ToString() override
     {
       return "I'm a Tree";
-    };
+    }
 };
 ```
 
diff --git a/docs/cppcx/platform-objectdisposedexception-class.md b/docs/cppcx/platform-objectdisposedexception-class.md
index 36f7004267..0d9a905551 100644
--- a/docs/cppcx/platform-objectdisposedexception-class.md
+++ b/docs/cppcx/platform-objectdisposedexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::ObjectDisposedException Class"
 title: "Platform::ObjectDisposedException Class"
+description: "Learn more about: Platform::ObjectDisposedException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::ObjectDisposedException", "VCCORLIB/Platform::ObjectDisposedException::ObjectDisposedException"]
 helpviewer_keywords: ["Platform::ObjectDisposedException"]
-ms.assetid: 68506fe4-d09c-4407-999f-1e3edb261d41
 ---
 # Platform::ObjectDisposedException Class
 
@@ -14,7 +13,7 @@ Thrown when an operation is performed on a disposed object.
 ## Syntax
 
 ```cpp
-public ref class ObjectDisposedException : COMException,    IException,    IPrintable,    IEquatable
+public ref class ObjectDisposedException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-operationcanceledexception-class.md b/docs/cppcx/platform-operationcanceledexception-class.md
index 0ada6f4496..99ce0bc558 100644
--- a/docs/cppcx/platform-operationcanceledexception-class.md
+++ b/docs/cppcx/platform-operationcanceledexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::OperationCanceledException Class"
 title: "Platform::OperationCanceledException Class"
+description: "Learn more about: Platform::OperationCanceledException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::OperationCanceledException::OperationCanceledException", "VCCORLIB/Platform::OperationCanceledException"]
 helpviewer_keywords: ["Platform::OperationCanceledException"]
-ms.assetid: 5351bc20-5408-423a-8169-f09acc8a3fbb
 ---
 # Platform::OperationCanceledException Class
 
@@ -14,7 +13,7 @@ Thrown when an operation is aborted.
 ## Syntax
 
 ```cpp
-public ref class OperationCanceledException : COMException,    IException,    IPrintable,    IEquatable
+public ref class OperationCanceledException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-outofboundsexception-class.md b/docs/cppcx/platform-outofboundsexception-class.md
index d8a878c891..2bca3dbbac 100644
--- a/docs/cppcx/platform-outofboundsexception-class.md
+++ b/docs/cppcx/platform-outofboundsexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::OutOfBoundsException Class"
 title: "Platform::OutOfBoundsException Class"
+description: "Learn more about: Platform::OutOfBoundsException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::OutOfBoundsException", "VCCORLIB/Platform::OutOfBoundsException::OutOfBoundsException"]
 helpviewer_keywords: ["Platform::OutOfBoundsException"]
-ms.assetid: 96f8bf75-1207-4049-964b-7771822cadf3
 ---
 # Platform::OutOfBoundsException Class
 
@@ -14,7 +13,7 @@ Thrown when an operation attempts to access data outside the valid range.
 ## Syntax
 
 ```cpp
-public ref class OutOfBoundsException : COMException,    IException,    IPrintable,    IEquatable
+public ref class OutOfBoundsException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-outofmemoryexception-class.md b/docs/cppcx/platform-outofmemoryexception-class.md
index bf36a9f791..486396cf6a 100644
--- a/docs/cppcx/platform-outofmemoryexception-class.md
+++ b/docs/cppcx/platform-outofmemoryexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::OutOfMemoryException Class"
 title: "Platform::OutOfMemoryException Class"
+description: "Learn more about: Platform::OutOfMemoryException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::OutOfMemoryException", "VCCORLIB/Platform::OutOfMemoryException::OutOfMemoryException"]
 helpviewer_keywords: ["Platform::OutOfMemoryException"]
-ms.assetid: 49c19f6b-f66c-4448-b861-91dcbf32de2c
 ---
 # Platform::OutOfMemoryException Class
 
@@ -14,7 +13,7 @@ Thrown when there's insufficient memory to complete the operation.
 ## Syntax
 
 ```cpp
-public ref class OutOfMemoryException : COMException,    IException,    IPrintable,    IEquatable
+public ref class OutOfMemoryException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/platform-stringreference-class.md b/docs/cppcx/platform-stringreference-class.md
index 6b6a066307..0ca0b227d9 100644
--- a/docs/cppcx/platform-stringreference-class.md
+++ b/docs/cppcx/platform-stringreference-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Platform::StringReference Class"
 title: "Platform::StringReference Class"
-ms.date: "12/30/2016"
+description: "Learn more about: Platform::StringReference Class"
+ms.date: 12/30/2016
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::StringReference::StringReference", "VCCORLIB/Platform::StringReference::Data", "VCCORLIB/Platform::StringReference::Length", "VCCORLIB/Platform::StringReference::GetHSTRING", "VCCORLIB/Platform::StringReference::GetString"]
-ms.assetid: 2d09c7ec-0f16-458e-83ed-7225a1b9221e
 ---
 # Platform::StringReference Class
 
@@ -140,7 +139,7 @@ A reference to an object of type `StringReference`.
 
 Because `StringReference` is a standard C++ class and not a ref class, it does not appear in the **Object Browser**.
 
-## <a name="operator-call"></a> StringReference::operator()  Operator
+## <a name="operator-call"></a> StringReference::operator() Operator
 
 Converts a `StringReference` object to a `Platform::String^` object.
 
diff --git a/docs/cppcx/platform-wrongthreadexception-class.md b/docs/cppcx/platform-wrongthreadexception-class.md
index 79320770d5..33c5039914 100644
--- a/docs/cppcx/platform-wrongthreadexception-class.md
+++ b/docs/cppcx/platform-wrongthreadexception-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Platform::WrongThreadException Class"
 title: "Platform::WrongThreadException Class"
+description: "Learn more about: Platform::WrongThreadException Class"
 ms.date: "12/30/2016"
 ms.topic: "reference"
 f1_keywords: ["VCCORLIB/Platform::WrongThreadException", "VCCORLIB/Platform::WrongThreadException::WrongThreadException"]
 helpviewer_keywords: ["Platform::WrongThreadException"]
-ms.assetid: c193f97e-0392-4535-a4c4-0711e4e4a836
 ---
 # Platform::WrongThreadException Class
 
@@ -14,7 +13,7 @@ Thrown when a thread calls by way of an interface pointer for a proxy object tha
 ## Syntax
 
 ```cpp
-public ref class WrongThreadException : COMException,    IException,    IPrintable,    IEquatable
+public ref class WrongThreadException : COMException, IException, IPrintable, IEquatable
 ```
 
 ### Remarks
diff --git a/docs/cppcx/value-classes-and-structs-c-cx.md b/docs/cppcx/value-classes-and-structs-c-cx.md
index 4c4cd2cdc8..55d9691754 100644
--- a/docs/cppcx/value-classes-and-structs-c-cx.md
+++ b/docs/cppcx/value-classes-and-structs-c-cx.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Value classes and structs (C++/CX)"
 title: "Value classes and structs (C++/CX)"
+description: "Learn more about: Value classes and structs (C++/CX)"
 ms.date: "12/30/2016"
 helpviewer_keywords: ["value struct", "value class"]
-ms.assetid: 262a0992-9721-4c02-8297-efc07d90e5a4
 ---
 # Value classes and structs (C++/CX)
 
@@ -48,7 +47,7 @@ A value struct or value class can contain as fields only fundamental numeric typ
 
 A value class or value struct that contains a `Platform::String^` or `IBox<T>^` type as a member is not `memcpy`-able.
 
-Because all members of a **`value class`** or **`value struct`** are public and are emitted into metadata, standard C++ types are not allowed as members. This is different from ref classes, which may contain **`private`** or **`internal`** standard C++ types..
+Because all members of a **`value class`** or **`value struct`** are public and are emitted into metadata, standard C++ types are not allowed as members. This is different from ref classes, which may contain **`private`** or **`internal`** standard C++ types.
 
 The following code fragment declares the `Coordinates` and `City` types as value structs. Notice that one of the `City` data members is a `GeoCoordinates` type. A **`value struct`** can contain other value structs as members.
 
@@ -140,7 +139,7 @@ public:
 
 ## See also
 
-[Type System (C++/CX)](../cppcx/type-system-c-cx.md)<br/>
-[C++/CX Language Reference](../cppcx/visual-c-language-reference-c-cx.md)<br/>
-[Namespaces Reference](../cppcx/namespaces-reference-c-cx.md)<br/>
+[Type System (C++/CX)](../cppcx/type-system-c-cx.md)\
+[C++/CX Language Reference](../cppcx/visual-c-language-reference-c-cx.md)\
+[Namespaces Reference](../cppcx/namespaces-reference-c-cx.md)\
 [Ref classes and structs (C++/CX)](../cppcx/ref-classes-and-structs-c-cx.md)
diff --git a/docs/cppcx/wrl/callback-function-wrl.md b/docs/cppcx/wrl/callback-function-wrl.md
index 777ea551af..dd804d4df0 100644
--- a/docs/cppcx/wrl/callback-function-wrl.md
+++ b/docs/cppcx/wrl/callback-function-wrl.md
@@ -20,166 +20,14 @@ template<
 ComPtr<TDelegateInterface> Callback(
    TCallback callback
 );
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)()
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4,
-   typename TArg5
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4,
-   TArg5)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4,
-   typename TArg5,
-   typename TArg6
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4,
-   TArg5,
-   TArg6)
-);
 template<
    typename TDelegateInterface,
    typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4,
-   typename TArg5,
-   typename TArg6,
-   typename TArg7
+   typename... TArgs
 >
 ComPtr<TDelegateInterface> Callback(
    _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4,
-   TArg5,
-   TArg6,
-   TArg7)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4,
-   typename TArg5,
-   typename TArg6,
-   typename TArg7,
-   typename TArg8
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4,
-   TArg5,
-   TArg6,
-   TArg7,
-   TArg8)
-);
-template<
-   typename TDelegateInterface,
-   typename TCallbackObject,
-   typename TArg1,
-   typename TArg2,
-   typename TArg3,
-   typename TArg4,
-   typename TArg5,
-   typename TArg6,
-   typename TArg7,
-   typename TArg8,
-   typename TArg9
->
-ComPtr<TDelegateInterface> Callback(
-   _In_ TCallbackObject *object,
-   _In_ HRESULT (TCallbackObject::* method)(TArg1,
-   TArg2,
-   TArg3,
-   TArg4,
-   TArg5,
-   TArg6,
-   TArg7,
-   TArg8,
-   TArg9)
+   _In_ HRESULT (TCallbackObject::* method)(TArgs...)
 );
 ```
 
@@ -194,32 +42,8 @@ A template parameter that specifies the type of an object that represents an obj
 *TCallbackObject*<br/>
 A template parameter that specifies the object whose member function is the method to call when an event occurs.
 
-*TArg1*<br/>
-A template parameter that specifies the type of the first callback method argument.
-
-*TArg2*<br/>
-A template parameter that specifies the type of the second callback method argument.
-
-*TArg3*<br/>
-A template parameter that specifies the type of the third callback method argument.
-
-*TArg4*<br/>
-A template parameter that specifies the type of the fourth callback method argument.
-
-*TArg5*<br/>
-A template parameter that specifies the type of the fifth callback method argument.
-
-*TArg6*<br/>
-A template parameter that specifies the type of the sixth callback method argument.
-
-*TArg7*<br/>
-A template parameter that specifies the type of the seventh callback method argument.
-
-*TArg8*<br/>
-A template parameter that specifies the type of the eighth callback method argument.
-
-*TArg9*<br/>
-A template parameter that specifies the type of the ninth callback method argument.
+*TArgs*<br/>
+A template parameter pack that specifies the types of the callback method arguments.
 
 *callback*<br/>
 An object that represents the callback object and its member function.
diff --git a/docs/cppcx/wrl/module-class.md b/docs/cppcx/wrl/module-class.md
index e228f5e864..3cefc4e6d7 100644
--- a/docs/cppcx/wrl/module-class.md
+++ b/docs/cppcx/wrl/module-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Module Class"
 title: "Module Class"
-ms.date: "10/18/2018"
+description: "Learn more about: Module Class"
+ms.date: 10/18/2018
 ms.topic: "reference"
 f1_keywords: ["module/Microsoft::WRL::Module", "module/Microsoft::WRL::Module::Create", "module/Microsoft::WRL::Module::DecrementObjectCount", "module/Microsoft::WRL::Module::GetActivationFactory", "module/Microsoft::WRL::Module::GetClassObject", "module/Microsoft::WRL::Module::GetModule", "module/Microsoft::WRL::Module::GetObjectCount", "module/Microsoft::WRL::Module::IncrementObjectCount", "module/Microsoft::WRL::Module::Module", "module/Microsoft::WRL::Module::objectCount_Data", "module/Microsoft::WRL::Module::RegisterCOMObject", "module/Microsoft::WRL::Module::RegisterObjects", "module/Microsoft::WRL::Module::RegisterWinRTObject", "module/Microsoft::WRL::Module::releaseNotifier_", "module/Microsoft::WRL::Module::Terminate", "module/Microsoft::WRL::Module::~Module", "module/Microsoft::WRL::Module::UnregisterCOMObject", "module/Microsoft::WRL::Module::UnregisterObjects", "module/Microsoft::WRL::Module::UnregisterWinRTObject"]
 helpviewer_keywords: ["Microsoft::WRL::Module class", "Microsoft::WRL::Module::Create method", "Microsoft::WRL::Module::DecrementObjectCount method", "Microsoft::WRL::Module::GetActivationFactory method", "Microsoft::WRL::Module::GetClassObject method", "Microsoft::WRL::Module::GetModule method", "Microsoft::WRL::Module::GetObjectCount method", "Microsoft::WRL::Module::IncrementObjectCount method", "Microsoft::WRL::Module::Module, constructor", "Microsoft::WRL::Module::objectCount_ data member", "Microsoft::WRL::Module::RegisterCOMObject method", "Microsoft::WRL::Module::RegisterObjects method", "Microsoft::WRL::Module::RegisterWinRTObject method", "Microsoft::WRL::Module::releaseNotifier_ data member", "Microsoft::WRL::Module::Terminate method", "Microsoft::WRL::Module::~Module, destructor", "Microsoft::WRL::Module::UnregisterCOMObject method", "Microsoft::WRL::Module::UnregisterObjects method", "Microsoft::WRL::Module::UnregisterWinRTObject method"]
-ms.assetid: dd67e3b8-c2e1-4f53-8c0f-565a140ba649
 ---
 # Module Class
 
@@ -396,7 +395,7 @@ Unregisters one or more COM objects, which prevents other applications from conn
 virtual HRESULT UnregisterCOMObject(
    const wchar_t* serverName,
    DWORD* cookies,
-   unsigned int count
+   unsigned int count);
 ```
 
 ### Parameters
diff --git a/docs/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md b/docs/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md
index a4f29be142..5ec81ffc80 100644
--- a/docs/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md
+++ b/docs/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Creating a UWP app using WRL and Media Foundation"
 title: "Walkthrough: Creating a UWP app using WRL and Media Foundation"
+description: "Learn more about: Creating a UWP app using WRL and Media Foundation"
 ms.date: 04/15/2021
 ms.topic: "reference"
 ---
@@ -37,7 +37,7 @@ You can usually use C++/CX to create Windows Runtime components. However, someti
 
 - The `namespace` and `runtimeclass` attributes, and the `NTDDI_WIN8` [version](/windows/win32/Midl/version) attribute value are important parts of the MIDL definition for a Media Foundation component that uses WRL.
 
-- [`Microsoft::WRL::RuntimeClass`](runtimeclass-class.md) is the base class for the custom Media Foundation component. The [`Microsoft::WRL::RuntimeClassType::WinRtClassicComMix]`(runtimeclasstype-enumeration.md) enum value, which is provided as a template argument, marks the class for use both as a Windows Runtime class and as a classic COM runtime class.
+- [`Microsoft::WRL::RuntimeClass`](runtimeclass-class.md) is the base class for the custom Media Foundation component. The [`Microsoft::WRL::RuntimeClassType::WinRtClassicComMix`](runtimeclasstype-enumeration.md) enum value, which is provided as a template argument, marks the class for use both as a Windows Runtime class and as a classic COM runtime class.
 
 - The [`InspectableClass`](inspectableclass-macro.md) macro implements basic COM functionality such as reference counting and the `QueryInterface` method, and sets the runtime class name and trust level.
 
diff --git a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md
index 43deedc3b7..319b56d17d 100644
--- a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md
+++ b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md
@@ -2,6 +2,8 @@
 description: "Learn more about: Build an OpenGL ES application on Android and iOS"
 title: "Build an OpenGL ES application on Android and iOS"
 ms.date: "06/09/2023"
+ms.topic: how-to
+ms.custom: sfi-image-nochange
 ---
 
 # Build an OpenGL ES application on Android and iOS
@@ -21,7 +23,7 @@ To build and test the iOS app, you'll need a Mac computer. Set it up according t
 
 ## Create a new OpenGLES Application project
 
-In this tutorial, you first create a new OpenGL ES Application project. and then build and run the default app in an Android emulator. Next you build the app for iOS and run the app on an iOS device.
+In this tutorial, you first create a new OpenGL ES Application project and then build and run it in an Android emulator. Next you build the app for iOS and run the app on an iOS device.
 
 ::: moniker range="msvc-150"
 
@@ -53,7 +55,7 @@ In this tutorial, you first create a new OpenGL ES Application project. and then
 
 ::: moniker-end
 
-The new OpenGL ES Application solution includes three library projects and two application projects. The Libraries folder includes a shared code project. And, two platform-specific projects that reference the shared code:
+The new OpenGL ES Application solution includes three library projects and two application projects. The Libraries folder includes a shared code project, and two platform-specific projects that reference the shared code:
 
 - `MyOpenGLESApp.Android.NativeActivity` contains the references and glue code that implements your app as a Native Activity on Android. The entry points from the glue code are implemented in *main.cpp*, which includes the common shared code in `MyOpenGLESApp.Shared`. Precompiled headers are in *pch.h*. This Native Activity app project is compiled into a shared library (*.so*) file, which is picked up by the `MyOpenGLESApp.Android.Packaging` project.
 
diff --git a/docs/cross-platform/create-an-android-native-activity-app.md b/docs/cross-platform/create-an-android-native-activity-app.md
index c8a88f33ef..d8741577f0 100644
--- a/docs/cross-platform/create-an-android-native-activity-app.md
+++ b/docs/cross-platform/create-an-android-native-activity-app.md
@@ -3,6 +3,7 @@ description: "Learn more about: Create an Android Native Activity App"
 title: "Create an Android Native Activity App"
 ms.date: "10/17/2019"
 ms.assetid: 884014b1-5208-45ec-b0da-ad0070d2c24d
+ms.topic: how-to
 ---
 # Create an Android Native Activity App
 
diff --git a/docs/cross-platform/import-an-xcode-project.md b/docs/cross-platform/import-an-xcode-project.md
index a536a9fc47..b4bff9ac57 100644
--- a/docs/cross-platform/import-an-xcode-project.md
+++ b/docs/cross-platform/import-an-xcode-project.md
@@ -3,6 +3,7 @@ description: "Learn more about: Import an Xcode project"
 title: "Import an Xcode project"
 ms.date: "10/17/2019"
 ms.assetid: aa4b8161-d98f-4a1a-9db3-520133bfc82f
+ms.topic: how-to
 ---
 # Import an Xcode project
 
diff --git a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md
index 84bc01c589..4e7f878b3a 100644
--- a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md
+++ b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md
@@ -3,7 +3,10 @@ description: "Learn more about: Install and configure tools to build using iOS"
 title: "Install and configure tools to build using iOS"
 ms.date: 12/18/2022
 ms.assetid: d0c311c9-9eb9-42c5-ba07-25604362cd28
-ms.custom: intro-installation
+ms.topic: install-set-up-deploy
+ms.custom:
+  - intro-installation
+  - sfi-image-nochange
 ---
 # Install and configure tools to build using iOS
 
diff --git a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md
index 200c128cb3..08239a9120 100644
--- a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md
+++ b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md
@@ -3,6 +3,7 @@ description: "Learn more about: Install cross-platform mobile development with C
 title: "Install cross-platform mobile development with C++"
 ms.date: "10/17/2019"
 ms.custom: intro-installation
+ms.topic: install-set-up-deploy
 ---
 # Install cross-platform mobile development with C++
 
diff --git a/docs/cross-platform/toc.yml b/docs/cross-platform/toc.yml
index 4446b6541f..22771c639f 100644
--- a/docs/cross-platform/toc.yml
+++ b/docs/cross-platform/toc.yml
@@ -2,7 +2,7 @@ items:
 - name: Cross-platform mobile development with C++
   href: ../cross-platform/index.yml
 - name: Overview
-  href: ../cross-platform/visual-cpp-for-cross-platform-mobile-development.md 
+  href: ../cross-platform/visual-cpp-for-cross-platform-mobile-development.md
 - name: Get Started
   expanded: true
   items:
diff --git a/docs/data/catalog-information-mfc-data-access.md b/docs/data/catalog-information-mfc-data-access.md
index 6935e8ae31..39e786d3e4 100644
--- a/docs/data/catalog-information-mfc-data-access.md
+++ b/docs/data/catalog-information-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Catalog Information  (MFC Data Access)"
-title: "Catalog Information  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Catalog Information (MFC Data Access)"
+description: "Learn more about: Catalog Information (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["tables [C++], catalog information", "tables [C++]", "ODBC [C++], catalog information", "catalog information database [C++]", "databases [C++], catalog information database"]
-ms.assetid: c184e80f-ff17-409f-9df8-05275080bb8d
 ---
-# Catalog Information  (MFC Data Access)
+# Catalog Information (MFC Data Access)
 
 Information about the tables in a data source can include the names of tables and the columns in them, table privileges, names of primary and foreign keys, information about predefined queries or stored procedures, information about indexes on tables, and statistics about tables.
 
diff --git a/docs/data/changes-you-might-make-to-the-default-code-mfc-data-access.md b/docs/data/changes-you-might-make-to-the-default-code-mfc-data-access.md
index d524c7ae40..36779b2c17 100644
--- a/docs/data/changes-you-might-make-to-the-default-code-mfc-data-access.md
+++ b/docs/data/changes-you-might-make-to-the-default-code-mfc-data-access.md
@@ -1,10 +1,10 @@
 ---
-title: "Changes You Might Make to the Default Code  (MFC Data Access)"
-description: "Learn more about: Changes You Might Make to the Default Code  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Changes You Might Make to the Default Code (MFC Data Access)"
+description: "Learn more about: Changes You Might Make to the Default Code (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views [C++], customizing default code"]
 ---
-# Changes You Might Make to the Default Code  (MFC Data Access)
+# Changes You Might Make to the Default Code (MFC Data Access)
 
 The [MFC Application Wizard](../mfc/reference/database-support-mfc-application-wizard.md) writes a recordset class for you that selects all records in a single table. You will often want to modify that behavior in one or more of the following ways:
 
diff --git a/docs/data/command-handlers-for-record-scrolling-mfc-data-access.md b/docs/data/command-handlers-for-record-scrolling-mfc-data-access.md
index 62d9a45c13..5974a0a017 100644
--- a/docs/data/command-handlers-for-record-scrolling-mfc-data-access.md
+++ b/docs/data/command-handlers-for-record-scrolling-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Command Handlers for Record Scrolling  (MFC Data Access)"
-title: "Command Handlers for Record Scrolling  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Command Handlers for Record Scrolling (MFC Data Access)"
+description: "Learn more about: Command Handlers for Record Scrolling (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views [C++], scrolling", "record scrolling [C++]", "scrolling records"]
-ms.assetid: f8b13477-2a37-459e-a30c-806fb78165ac
 ---
-# Command Handlers for Record Scrolling  (MFC Data Access)
+# Command Handlers for Record Scrolling (MFC Data Access)
 
 The [CRecordView](../mfc/reference/crecordview-class.md) class provides default command handling for the following standard commands:
 
diff --git a/docs/data/data-access-in-cpp.md b/docs/data/data-access-in-cpp.md
index 9ac4a72755..30bf416352 100644
--- a/docs/data/data-access-in-cpp.md
+++ b/docs/data/data-access-in-cpp.md
@@ -31,7 +31,7 @@ Connect to Azure SQL Database from C or C++ applications.
 [Azure Storage](/azure/storage/common/storage-introduction) is a cloud storage solution for modern applications that rely on durability, availability, and scalability to meet the needs of their customers. Connect to Azure Storage from C++ by using the Azure Storage Client Library for C++.
 
 [ODBC Driver for SQL Server](/sql/connect/odbc/microsoft-odbc-driver-for-sql-server)<br/>
-The latest ODBC driver provides robust data access to Microsoft SQL Server and Microsoft Azure SQL Database for C/C++ based applications. Provides support for features including always encrypted, Azure Active Directory, and AlwaysOn Availability Groups. Also available for MacOS and Linux.
+The latest ODBC driver provides robust data access to Microsoft SQL Server and Microsoft Azure SQL Database for C/C++ based applications. Provides support for features including always encrypted, Azure Active Directory, and AlwaysOn Availability Groups. Also available for macOS and Linux.
 
 [OLE DB Driver for SQL Server](/sql/connect/oledb/oledb-driver-for-sql-server)<br/>
 The latest OLE DB driver is a stand-alone data access application programming interface (API) that supports Microsoft SQL Server and Microsoft Azure SQL Database.
diff --git a/docs/data/data-exchange-for-record-views-mfc-data-access.md b/docs/data/data-exchange-for-record-views-mfc-data-access.md
index 08307d190c..cf7e9e780d 100644
--- a/docs/data/data-exchange-for-record-views-mfc-data-access.md
+++ b/docs/data/data-exchange-for-record-views-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Data Exchange for Record Views   (MFC Data Access)"
-title: "Data Exchange for Record Views   (MFC Data Access)"
-ms.date: "11/19/2018"
+title: "Data Exchange for Record Views (MFC Data Access)"
+description: "Learn more about: Data Exchange for Record Views (MFC Data Access)"
+ms.date: 11/19/2018
 helpviewer_keywords: ["RFX (record field exchange), data exchange mechanism", "RFX (record field exchange), record views", "record views, data exchange", "DDX (dialog data exchange), record views", "RFX (record field exchange)"]
-ms.assetid: abc52ca7-6997-47a7-98f3-f347f52b1f72
 ---
-# Data Exchange for Record Views   (MFC Data Access)
+# Data Exchange for Record Views (MFC Data Access)
 
 When you use [Add Class](../mfc/reference/adding-an-mfc-odbc-consumer.md) to map the controls in a record view's dialog template resource to the fields of a recordset, the framework manages data exchange in both directions — from recordset to controls and from controls to recordset. Using the DDX mechanism means that you do not have to write the code to transfer data back and forth yourself.
 
diff --git a/docs/data/designing-and-creating-a-record-view-mfc-data-access.md b/docs/data/designing-and-creating-a-record-view-mfc-data-access.md
index aa747752af..82d8ec8881 100644
--- a/docs/data/designing-and-creating-a-record-view-mfc-data-access.md
+++ b/docs/data/designing-and-creating-a-record-view-mfc-data-access.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: Designing and Creating a Record View  (MFC Data Access)"
-title: "Designing and Creating a Record View  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Designing and Creating a Record View (MFC Data Access)"
+description: "Learn more about: Designing and Creating a Record View (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["designing forms", "record views, creating", "forms [C++], designing", "record views, designing", "application wizards [C++], creating record view classes", "designing record views"]
-ms.assetid: 1d6f5439-754f-4b8b-a19d-841a4657827b
+ms.topic: how-to
 ---
-# Designing and Creating a Record View  (MFC Data Access)
+# Designing and Creating a Record View (MFC Data Access)
 
 You can create your record view class with the [MFC Application Wizard](../mfc/reference/database-support-mfc-application-wizard.md). If you use an application wizard, it creates the record view class and a dialog template resource for it (without controls). You must use the Visual C++ Dialog editor to add controls to the dialog template resource. On the other hand, if you use **Add Class**, you must first create the dialog template resource in the Dialog editor and then create the record view class.
 
diff --git a/docs/data/features-of-record-view-classes-mfc-data-access.md b/docs/data/features-of-record-view-classes-mfc-data-access.md
index 0f19f101bd..4b5aa7499e 100644
--- a/docs/data/features-of-record-view-classes-mfc-data-access.md
+++ b/docs/data/features-of-record-view-classes-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Features of Record View Classes  (MFC Data Access)"
-title: "Features of Record View Classes  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Features of Record View Classes (MFC Data Access)"
+description: "Learn more about: Features of Record View Classes (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views, classes", "record view classes"]
-ms.assetid: e7b2820f-09c4-483f-83c0-317e8be42bdf
 ---
-# Features of Record View Classes  (MFC Data Access)
+# Features of Record View Classes (MFC Data Access)
 
 You can do form-based data-access programming with class [CFormView](../mfc/reference/cformview-class.md), but [CRecordView](../mfc/reference/crecordview-class.md) is generally a better class to derive from. In addition to its `CFormView` features, `CRecordView`:
 
diff --git a/docs/data/filling-a-list-box-from-a-second-recordset-mfc-data-access.md b/docs/data/filling-a-list-box-from-a-second-recordset-mfc-data-access.md
index 78104b47fc..23a02764b2 100644
--- a/docs/data/filling-a-list-box-from-a-second-recordset-mfc-data-access.md
+++ b/docs/data/filling-a-list-box-from-a-second-recordset-mfc-data-access.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: Filling a List Box from a Second Recordset  (MFC Data Access)"
-title: "Filling a List Box from a Second Recordset  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Filling a List Box from a Second Recordset (MFC Data Access)"
+description: "Learn more about: Filling a List Box from a Second Recordset (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views, filling list boxes", "list boxes, filling from second recordset", "recordsets [C++], filling list boxes or combo boxes", "CComboBox class, filling object from second rowset", "ODBC recordsets [C++], filling list boxes or combo boxes", "combo boxes [C++], filling from second recordset", "CListCtrl class, filling from second recordset"]
-ms.assetid: 360c0834-da6b-4dc0-bcea-80e9acd611f0
+ms.topic: how-to
 ---
-# Filling a List Box from a Second Recordset  (MFC Data Access)
+# Filling a List Box from a Second Recordset (MFC Data Access)
 
 By default, a record view is associated with a single recordset object, whose fields are mapped to the record view's controls. Sometimes you might want to put a list box or combo box control in your record view and fill it with values from a second recordset object. The user can use the list box to select a new category of information to display in the record view. This topic explains how and when to do that.
 
diff --git a/docs/data/installing-database-support-mfc-atl.md b/docs/data/installing-database-support-mfc-atl.md
index 047eee85fe..6a63eec21e 100644
--- a/docs/data/installing-database-support-mfc-atl.md
+++ b/docs/data/installing-database-support-mfc-atl.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 helpviewer_keywords: ["data access [C++], installing database support", "installing database support", "ATL [C++], database support", "databases [C++], installing database support"]
 ms.assetid: 3820ba96-4fb8-4405-83dd-bb3bc5998667
 ms.custom: intro-installation
+ms.topic: concept-article
 ---
 # Installing Database Support (MFC/ATL)
 
diff --git a/docs/data/odbc/connecting-to-a-data-source.md b/docs/data/odbc/connecting-to-a-data-source.md
index 18a727d5a8..52845dfa96 100644
--- a/docs/data/odbc/connecting-to-a-data-source.md
+++ b/docs/data/odbc/connecting-to-a-data-source.md
@@ -4,6 +4,7 @@ title: "Connecting to a Data Source"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["database connections [C++], ODBC", "ODBC connections [C++], using", "connections [C++], data source", "databases [C++], connecting to", "data sources [C++], connecting to", "ODBC data sources [C++], connections", "database connections [C++], MFC ODBC classes"]
 ms.assetid: ef6c8c98-5979-43a8-9fb5-5bb06fc59f36
+ms.topic: concept-article
 ---
 # Connecting to a Data Source
 
diff --git a/docs/data/odbc/data-source-managing-connections-odbc.md b/docs/data/odbc/data-source-managing-connections-odbc.md
index 3c08f7c6a1..8667ed4993 100644
--- a/docs/data/odbc/data-source-managing-connections-odbc.md
+++ b/docs/data/odbc/data-source-managing-connections-odbc.md
@@ -4,6 +4,7 @@ title: "Data Source: Managing Connections (ODBC)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ODBC data sources [C++], multiuser environments", "generalizing connection strings", "ODBC [C++], disconnecting from data sources", "connection strings [C++], generalizing", "database connections [C++], creating", "GetDefaultConnect method", "connections [C++], data source", "ODBC connections [C++], configuring", "disconnecting from data sources", "databases [C++], connecting to", "ODBC connections [C++], disconnecting", "data sources [C++], connecting to", "ODBC connections [C++], connecting to data source", "ODBC data sources [C++], connections", "database connections [C++], MFC ODBC classes"]
 ms.assetid: c0adbcdd-c000-40c6-b199-09ffdc7b6ef2
+ms.custom: sfi-ropc-nochange
 ---
 # Data Source: Managing Connections (ODBC)
 
diff --git a/docs/data/odbc/displaying-and-manipulating-data-in-a-form.md b/docs/data/odbc/displaying-and-manipulating-data-in-a-form.md
index 46c6041841..cf05784207 100644
--- a/docs/data/odbc/displaying-and-manipulating-data-in-a-form.md
+++ b/docs/data/odbc/displaying-and-manipulating-data-in-a-form.md
@@ -4,6 +4,7 @@ title: "Displaying and Manipulating Data in a Form"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["forms [C++], displaying data", "displaying data [C++], forms", "ODBC [C++], forms", "record views [C++], displaying data", "data [MFC]", "data [MFC], displaying in a form"]
 ms.assetid: c56185c4-12cb-40b1-b499-02b29ea83e3a
+ms.topic: concept-article
 ---
 # Displaying and Manipulating Data in a Form
 
diff --git a/docs/data/odbc/installing-and-getting-started-with-odbc.md b/docs/data/odbc/installing-and-getting-started-with-odbc.md
index 6f358b5927..a62e8cab62 100644
--- a/docs/data/odbc/installing-and-getting-started-with-odbc.md
+++ b/docs/data/odbc/installing-and-getting-started-with-odbc.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 helpviewer_keywords: ["installing ODBC", "ODBC, installing"]
 ms.assetid: 6b473481-1d68-468f-89f6-82b0fd7716fd
 ms.custom: intro-installation
+ms.topic: get-started
 ---
 # Installing and Getting Started with ODBC
 
diff --git a/docs/data/odbc/odbc-and-mfc.md b/docs/data/odbc/odbc-and-mfc.md
index 5f25751635..8a647cef02 100644
--- a/docs/data/odbc/odbc-and-mfc.md
+++ b/docs/data/odbc/odbc-and-mfc.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: ODBC and MFC"
 title: "ODBC and MFC"
+description: "Learn more about: ODBC and MFC"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ODBC [C++], MFC", "connections [C++], databases", "connections [C++], data source", "databases [C++], connecting to", "data sources [C++], connecting to", "MFC [C++], ODBC and", "database connections [C++], MFC ODBC classes"]
-ms.assetid: 98f02fd7-1235-437b-89a9-edfd0fc797f7
 ---
 # ODBC and MFC
 
 > [!NOTE]
-> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 13 for SQL Server](https://www.microsoft.com/download/details.aspx?id=50420). Most database vendors provide an ODBC driver for Windows.
+> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server). Most database vendors provide an ODBC driver for Windows.
 
 This topic introduces the main concepts of the Microsoft Foundation Classes (MFC) library's ODBC-based database classes and provides an overview of how the classes work together. For more information about ODBC and MFC, see the following topics:
 
diff --git a/docs/data/odbc/record-field-exchange-how-rfx-works.md b/docs/data/odbc/record-field-exchange-how-rfx-works.md
index 1845d7f121..f2f300fd44 100644
--- a/docs/data/odbc/record-field-exchange-how-rfx-works.md
+++ b/docs/data/odbc/record-field-exchange-how-rfx-works.md
@@ -4,6 +4,7 @@ title: "Record Field Exchange: How RFX Works"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["record editing [C++], using RFX", "RFX (ODBC) [C++], updating data in recordsets", "scrolling [C++]", "ODBC [C++], RFX", "data binding [C++], DFX", "scrolling [C++], RFX", "RFX (ODBC) [C++], binding fields and parameters"]
 ms.assetid: e647cacd-62b0-4b80-9e20-b392deca5a88
+ms.topic: concept-article
 ---
 # Record Field Exchange: How RFX Works
 
diff --git a/docs/data/odbc/record-field-exchange-working-with-the-wizard-code.md b/docs/data/odbc/record-field-exchange-working-with-the-wizard-code.md
index e4863b06c9..40e4b98913 100644
--- a/docs/data/odbc/record-field-exchange-working-with-the-wizard-code.md
+++ b/docs/data/odbc/record-field-exchange-working-with-the-wizard-code.md
@@ -4,6 +4,7 @@ title: "Record Field Exchange: Working with the Wizard Code"
 ms.date: "05/09/2019"
 helpviewer_keywords: ["DoFieldExchange method, overriding", "Unicode, with database classes", "field data members, declaring", "RFX (ODBC), wizard code", "RFX (ODBC), implementing", "field data members", "ODBC, RFX", "m_nParams data member, initializing", "m_nFields data member", "m_nParams data member", "overriding, DoFieldExchange", "m_nFields data member, initializing"]
 ms.assetid: f00d882a-ff1b-4a75-9717-98d8762bb237
+ms.topic: how-to
 ---
 # Record Field Exchange: Working with the Wizard Code
 
diff --git a/docs/data/odbc/redistributing-odbc-components-to-your-customers.md b/docs/data/odbc/redistributing-odbc-components-to-your-customers.md
index 96b7157adc..35e7a61de9 100644
--- a/docs/data/odbc/redistributing-odbc-components-to-your-customers.md
+++ b/docs/data/odbc/redistributing-odbc-components-to-your-customers.md
@@ -4,6 +4,7 @@ title: "Redistributing ODBC Components to Your Customers"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ODBC components, redistributing", "ODBC, distributing components", "components [C++], distributing", "ODBC Administrator", "components [C++]", "components [C++], redistributing"]
 ms.assetid: 17b065b4-a307-4b89-99ac-d05831cfab87
+ms.topic: concept-article
 ---
 # Redistributing ODBC Components to Your Customers
 
diff --git a/docs/data/odbc/selecting-and-manipulating-records.md b/docs/data/odbc/selecting-and-manipulating-records.md
index c39755668c..d8d3c06f78 100644
--- a/docs/data/odbc/selecting-and-manipulating-records.md
+++ b/docs/data/odbc/selecting-and-manipulating-records.md
@@ -4,6 +4,7 @@ title: "Selecting and Manipulating Records"
 ms.date: "05/09/2019"
 helpviewer_keywords: ["records, selecting", "record selection, MFC ODBC classes", "ODBC recordsets, selecting records"]
 ms.assetid: 7f0b3a4a-9941-4475-a612-9ec8d15b7691
+ms.topic: concept-article
 ---
 # Selecting and Manipulating Records
 
diff --git a/docs/data/odbc/sql-customizing-your-recordsets-sql-statement-odbc.md b/docs/data/odbc/sql-customizing-your-recordsets-sql-statement-odbc.md
index c8f798aa6f..034a0b37d8 100644
--- a/docs/data/odbc/sql-customizing-your-recordsets-sql-statement-odbc.md
+++ b/docs/data/odbc/sql-customizing-your-recordsets-sql-statement-odbc.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: SQL: Customizing Your Recordset's SQL Statement (ODBC)"
 title: "SQL: Customizing Your Recordset's SQL Statement (ODBC)"
-ms.date: "11/04/2016"
+description: "Learn more about: SQL: Customizing Your Recordset's SQL Statement (ODBC)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["recordsets, SQL statements", "ODBC recordsets, SQL statements", "SQL statements, customizing", "SQL statements, recordset", "customizing SQL statements", "overriding, SQL statements", "SQL, opening recordsets"]
-ms.assetid: 72293a08-cef2-4be2-aa1c-30565fcfbaf9
 ---
 # SQL: Customizing Your Recordset's SQL Statement (ODBC)
 
@@ -82,11 +81,11 @@ The following table shows the possibilities for the *lpszSQL* parameter to `Open
 
 \* `m_nFields` must be less than or equal to the number of columns specified in the **SELECT** statement. The data type of each column specified in the **SELECT** statement must be the same as the data type of the corresponding RFX output column.
 
-### Case 1   lpszSQL = NULL
+### Case 1 lpszSQL = NULL
 
 The recordset selection depends on what `GetDefaultSQL` returns when `CRecordset::Open` calls it. Cases 2 through 5 describe the possible strings.
 
-### Case 2   lpszSQL = a Table Name
+### Case 2 lpszSQL = a Table Name
 
 The recordset uses record field exchange (RFX) to build the column list from the column names provided in the RFX function calls in the recordset class's override of `DoFieldExchange`. If you used a wizard to declare your recordset class, this case has the same result as case 1 (provided that you pass the same table name you specified in the wizard). If you do not use a wizard to write your class, case 2 is the simplest way to construct the SQL statement.
 
@@ -120,7 +119,7 @@ SELECT CourseID, InstructorID, RoomNo, Schedule, SectionNo
     FROM SECTION
 ```
 
-### Case 3   lpszSQL = a SELECT/FROM Statement
+### Case 3 lpszSQL = a SELECT/FROM Statement
 
 You specify the column list by hand rather than relying on RFX to construct it automatically. You might want to do this when:
 
@@ -138,11 +137,11 @@ You specify the column list by hand rather than relying on RFX to construct it a
 
    For information and an example, see [Recordset: Performing a Join (ODBC)](../../data/odbc/recordset-performing-a-join-odbc.md).
 
-### Case 4   lpszSQL = SELECT/FROM Plus WHERE and/or ORDER BY
+### Case 4 lpszSQL = SELECT/FROM Plus WHERE and/or ORDER BY
 
 You specify everything: the column list (based on the RFX calls in `DoFieldExchange`), the table list, and the contents of a **WHERE** and/or an **ORDER BY** clause. If you specify your **WHERE** and/or **ORDER BY** clauses this way, do not use `m_strFilter` and/or `m_strSort`.
 
-### Case 5   lpszSQL = a Stored Procedure Call
+### Case 5 lpszSQL = a Stored Procedure Call
 
 If you need to call a predefined query (such as a stored procedure in a Microsoft SQL Server database), you must write a **CALL** statement in the string you pass to *lpszSQL*. The wizards do not support declaring a recordset class for calling a predefined query. Not all predefined queries return records.
 
diff --git a/docs/data/odbc/working-with-documents-and-views.md b/docs/data/odbc/working-with-documents-and-views.md
index fd9339a4df..d683432083 100644
--- a/docs/data/odbc/working-with-documents-and-views.md
+++ b/docs/data/odbc/working-with-documents-and-views.md
@@ -4,6 +4,7 @@ title: "Working with Documents and Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC [C++], documents", "MFC [C++], views", "views [C++], MFC", "documents [C++], MFC"]
 ms.assetid: 349b142d-1c5a-4b99-9de4-241e41d3d2f1
+ms.topic: concept-article
 ---
 # Working with Documents and Views
 
diff --git a/docs/data/oledb/cdbpropset-class.md b/docs/data/oledb/cdbpropset-class.md
index 9086c09dde..858162faf3 100644
--- a/docs/data/oledb/cdbpropset-class.md
+++ b/docs/data/oledb/cdbpropset-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CDBPropSet Class"
 title: "CDBPropSet Class"
+description: "Learn more about: CDBPropSet Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CDBPropSet", "ATL.CDBPropSet", "ATL::CDBPropSet", "CDBPropSet::AddProperty", "CDBPropSet.AddProperty", "AddProperty", "ATL::CDBPropSet::AddProperty", "ATL.CDBPropSet.AddProperty", "CDBPropSet.CDBPropSet", "CDBPropSet::CDBPropSet", "ATL::CDBPropSet::CDBPropSet", "ATL.CDBPropSet.CDBPropSet", "CDBPropSet.operator=", "ATL::CDBPropSet::operator=", "ATL.CDBPropSet.operator=", "CDBPropSet::operator=", "ATL.CDBPropSet.SetGUID", "CDBPropSet.SetGUID", "ATL::CDBPropSet::SetGUID", "CDBPropSet::SetGUID"]
 helpviewer_keywords: ["CDBPropSet class", "AddProperty method", "CDBPropSet class, constructor", "operator =, property sets", "= operator, with OLE DB templates", "operator=, property sets", "SetGUID method", "AddProperty method"]
-ms.assetid: 54190149-c277-4679-b81a-ef484d4d1c00
 ---
 # CDBPropSet Class
 
@@ -144,8 +143,8 @@ CDBPropSet& operator =(CDBPropSet& propset) throw();
 
 ## See also
 
-[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)<br/>
-[OLE DB Consumer Templates Reference](../../data/oledb/ole-db-consumer-templates-reference.md)<br/>
-[CDBPropIDSet Class](../../data/oledb/cdbpropidset-class.md)<br/>
-[DBPROPSET Structure](/previous-versions/windows/desktop/ms714367(v=vs.85))
+[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)\
+[OLE DB Consumer Templates Reference](../../data/oledb/ole-db-consumer-templates-reference.md)\
+[CDBPropIDSet Class](../../data/oledb/cdbpropidset-class.md)\
+[DBPROPSET Structure](/previous-versions/windows/desktop/ms714367(v=vs.85))\
 [DBPROP Structure](/previous-versions/windows/desktop/ms717970(v=vs.85))
diff --git a/docs/data/oledb/creating-an-updatable-provider.md b/docs/data/oledb/creating-an-updatable-provider.md
index dd01af2f42..cb579e95ae 100644
--- a/docs/data/oledb/creating-an-updatable-provider.md
+++ b/docs/data/oledb/creating-an-updatable-provider.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Creating an Updatable Provider"
 title: "Creating an Updatable Provider"
-ms.date: "08/16/2018"
+description: "Learn more about: Creating an Updatable Provider"
+ms.date: 08/16/2018
 helpviewer_keywords: ["OLE DB providers, updatable", "notifications, support in providers", "OLE DB providers, creating"]
-ms.assetid: bdfd5c9f-1c6f-4098-822c-dd650e70ab82
 ---
 # Creating an Updatable Provider
 
@@ -174,7 +173,7 @@ Making sure that the data store can handle changes.
 
 Handling NULL values.
 
-### Handling default values.
+### Handling default values
 
 To implement your own `FlushData` method, you need to:
 
diff --git a/docs/data/oledb/crowset-class.md b/docs/data/oledb/crowset-class.md
index d64fd3ebc5..d42f6d0f81 100644
--- a/docs/data/oledb/crowset-class.md
+++ b/docs/data/oledb/crowset-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CRowset Class"
 title: "CRowset Class"
+description: "Learn more about: CRowset Class"
 ms.date: "11/04/2016"
 f1_keywords: ["ATL.CRowset<TAccessor>", "CRowset", "ATL::CRowset", "ATL::CRowset<TAccessor>", "ATL.CRowset", "CRowset<TAccessor>.AddRefRows", "CRowset.AddRefRows", "ATL.CRowset.AddRefRows", "AddRefRows", "CRowset::AddRefRows", "CRowset<TAccessor>::AddRefRows", "ATL::CRowset::AddRefRows", "ATL.CRowset<TAccessor>.AddRefRows", "ATL::CRowset<TAccessor>::AddRefRows", "CRowset::Close", "ATL.CRowset.Close", "CRowset<TAccessor>::Close", "CRowset<TAccessor>.Close", "ATL.CRowset<TAccessor>.Close", "ATL::CRowset::Close", "ATL::CRowset<TAccessor>::Close", "CRowset.Close", "CRowset<TAccessor>.Compare", "CRowset<TAccessor>::Compare", "ATL.CRowset<TAccessor>.Compare", "ATL::CRowset<TAccessor>::Compare", "CRowset.Compare", "ATL::CRowset::Compare", "ATL.CRowset.Compare", "CRowset::Compare", "CRowset<TAccessor>::CRowset", "CRowset.CRowset", "ATL::CRowset::CRowset", "ATL::CRowset<TAccessor>::CRowset", "ATL.CRowset.CRowset", "CRowset<TAccessor>.CRowset", "CRowset::CRowset", "ATL.CRowset<TAccessor>.CRowset", "ATL::CRowset::Delete", "CRowset.Delete", "CRowset::Delete", "ATL.CRowset.Delete", "ATL::CRowset<TAccessor>::Delete", "CRowset<TAccessor>.Delete", "CRowset<TAccessor>::Delete", "ATL.CRowset<TAccessor>.Delete", "ATL.CRowset.FindNextRow", "CRowset<TAccessor>.FindNextRow", "ATL::CRowset::FindNextRow", "CRowset::FindNextRow", "CRowset<TAccessor>::FindNextRow", "CRowset.FindNextRow", "ATL.CRowset<TAccessor>.FindNextRow", "ATL::CRowset<TAccessor>::FindNextRow", "FindNextRow", "ATL::CRowset::GetApproximatePosition", "ATL::CRowset<TAccessor>::GetApproximatePosition", "CRowset.GetApproximatePosition", "CRowset::GetApproximatePosition", "GetApproximatePosition", "ATL.CRowset.GetApproximatePosition", "CRowset<TAccessor>::GetApproximatePosition", "CRowset<TAccessor>::GetData", "ATL::CRowset<TAccessor>::GetData", "ATL::CRowset::GetData", "ATL.CRowset<TAccessor>.GetData", "CRowset<TAccessor>.GetData", "CRowset::GetData", "CRowset.GetData", "ATL.CRowset.GetData", "CRowset<TAccessor>::GetDataHere", "CRowset<TAccessor>.GetDataHere", "CRowset.GetDataHere", "GetDataHere", "CRowset::GetDataHere", "ATL::CRowset::GetDataHere", "ATL::CRowset<TAccessor>::GetDataHere", "ATL.CRowset<TAccessor>.GetDataHere", "ATL.CRowset.GetDataHere", "ATL.CRowset<TAccessor>.GetOriginalData", "CRowset<TAccessor>::GetOriginalData", "ATL::CRowset<TAccessor>::GetOriginalData", "ATL.CRowset.GetOriginalData", "CRowset::GetOriginalData", "ATL::CRowset::GetOriginalData", "CRowset.GetOriginalData", "CRowset.GetRowStatus", "ATL.CRowset<TAccessor>.GetRowStatus", "ATL::CRowset<TAccessor>::GetRowStatus", "CRowset::GetRowStatus", "ATL::CRowset::GetRowStatus", "CRowset<TAccessor>::GetRowStatus", "ATL.CRowset.GetRowStatus", "CRowset<TAccessor>.GetRowStatus", "ATL.CRowset<TAccessor>.Insert", "CRowset.Insert", "CRowset<TAccessor>.Insert", "CRowset<TAccessor>::Insert", "ATL::CRowset<TAccessor>::Insert", "ATL.CRowset.Insert", "CRowset::Insert", "ATL::CRowset::Insert", "CRowset::IsSameRow", "CRowset.IsSameRow", "ATL::CRowset::IsSameRow", "ATL.CRowset.IsSameRow", "CRowset<TAccessor>::IsSameRow", "ATL.CRowset<TAccessor>.IsSameRow", "CRowset<TAccessor>.IsSameRow", "ATL::CRowset<TAccessor>::IsSameRow", "CRowset<TAccessor>::MoveFirst", "ATL::CRowset::MoveFirst", "CRowset<TAccessor>.MoveFirst", "CRowset::MoveFirst", "CRowset.MoveFirst", "ATL.CRowset.MoveFirst", "ATL.CRowset<TAccessor>.MoveFirst", "ATL::CRowset<TAccessor>::MoveFirst", "ATL::CRowset<TAccessor>::MoveLast", "CRowset<TAccessor>::MoveLast", "ATL.CRowset.MoveLast", "ATL::CRowset::MoveLast", "CRowset<TAccessor>.MoveLast", "CRowset::MoveLast", "ATL.CRowset<TAccessor>.MoveLast", "CRowset.MoveLast", "ATL.CRowset<TAccessor>.MoveNext", "ATL.CRowset.MoveNext", "ATL::CRowset<TAccessor>::MoveNext", "CRowset<TAccessor>.MoveNext", "CRowset.MoveNext", "CRowset<TAccessor>::MoveNext", "CRowset::MoveNext", "ATL::CRowset::MoveNext", "CRowset<TAccessor>.MovePrev", "CRowset.MovePrev", "CRowset::MovePrev", "ATL.CRowset.MovePrev", "ATL::CRowset<TAccessor>::MovePrev", "ATL::CRowset::MovePrev", "ATL.CRowset<TAccessor>.MovePrev", "CRowset<TAccessor>::MovePrev", "ATL::CRowset::MoveToBookmark", "ATL::CRowset<TAccessor>::MoveToBookmark", "ATL.CRowset.MoveToBookmark", "ATL.CRowset<TAccessor>.MoveToBookmark", "CRowset::MoveToBookmark", "CRowset.MoveToBookmark", "CRowset<TAccessor>::MoveToBookmark", "CRowset<TAccessor>::MoveToRatio", "CRowset::MoveToRatio", "CRowset<TAccessor>.MoveToRatio", "ATL.CRowset.MoveToRatio", "ATL::CRowset::MoveToRatio", "CRowset.MoveToRatio", "ATL.CRowset<TAccessor>.MoveToRatio", "ATL::CRowset<TAccessor>::MoveToRatio", "CRowset::ReleaseRows", "ATL::CRowset<TAccessor>::ReleaseRows", "CRowset<TAccessor>.ReleaseRows", "CRowset.ReleaseRows", "ATL.CRowset.ReleaseRows", "ATL.CRowset<TAccessor>.ReleaseRows", "CRowset<TAccessor>::ReleaseRows", "ATL::CRowset::ReleaseRows", "ATL.CRowset<TAccessor>.SetData", "ATL::CRowset::SetData", "CRowset<TAccessor>.SetData", "CRowset::SetData", "ATL.CRowset.SetData", "CRowset.SetData", "CRowset<TAccessor>::SetData", "ATL::CRowset<TAccessor>::SetData", "CRowset.Undo", "ATL::CRowset<TAccessor>::Undo", "CRowset<TAccessor>::Undo", "ATL.CRowset.Undo", "ATL.CRowset<TAccessor>.Undo", "CRowset<TAccessor>.Undo", "ATL::CRowset::Undo", "CRowset::Undo", "Undo", "CRowset.Update", "ATL.CRowset.Update", "ATL.CRowset<TAccessor>.Update", "ATL::CRowset<TAccessor>::Update", "CRowset<TAccessor>::Update", "CRowset::Update", "CRowset<TAccessor>.Update", "ATL::CRowset::Update", "CRowset::UpdateAll", "ATL.CRowset.UpdateAll", "CRowset<TAccessor>.UpdateAll", "ATL.CRowset<TAccessor>.UpdateAll", "UpdateAll", "CRowset.UpdateAl", "ATL::CRowset<TAccessor>::UpdateAll", "CRowset<TAccessor>::UpdateAll", "ATL::CRowset::UpdateAll"]
 helpviewer_keywords: ["CRowset class", "AddRefRows method", "Close method", "Compare method", "CRowset class, constructor", "Delete method", "FindNextRow method", "GetApproximatePosition method", "GetData method [OLE DB]", "GetDataHere method", "GetOriginalData method", "GetRowStatus method", "Insert method", "IsSameRow method", "MoveFirst method", "MoveLast method", "MoveNext method", "MovePrev method", "MoveToBookmark method", "MoveToRatio method", "ReleaseRows method", "SetData method", "Undo method", "Update method", "UpdateAll method"]
-ms.assetid: b0228a90-b8dd-47cc-b397-8d4c15c1e7f4
 ---
 # CRowset Class
 
@@ -19,7 +18,7 @@ class CRowset
 
 ### Parameters
 
-*TAccessor*<br/>
+*TAccessor*\
 An accessor class. The default is `CAccessorBase`.
 
 ## Requirements
@@ -36,14 +35,14 @@ An accessor class. The default is `CAccessorBase`.
 |[Close](#close)|Releases rows and the current `IRowset` interface.|
 |[Compare](#compare)|Compares two bookmarks using [IRowsetLocate::Compare](/previous-versions/windows/desktop/ms709539(v=vs.85)).|
 |[CRowset](#crowset)|Creates a new `CRowset` object and (optionally) associates it with an `IRowset` interface supplied as a parameter.|
-|[Delete](#delete)|Deletes rows from the rowset using [IRowsetChange:DeleteRows](/previous-versions/windows/desktop/ms724362(v=vs.85)).|
+|[Delete](#delete)|Deletes rows from the rowset using [IRowsetChange::DeleteRows](/previous-versions/windows/desktop/ms724362(v=vs.85)).|
 |[FindNextRow](#findnextrow)|Finds the next matching row after the specified bookmark.|
 |[GetApproximatePosition](#getapproximateposition)|Returns the approximate position of a row corresponding to a bookmark.|
 |[GetData](#getdata)|Retrieves data from the rowset's copy of the row.|
 |[GetDataHere](#getdatahere)|Retrieves data from the specified buffer.|
 |[GetOriginalData](#getoriginaldata)|Retrieves the data most recently fetched from or transmitted to the data source, ignoring pending changes.|
 |[GetRowStatus](#getrowstatus)|Returns the status of all rows.|
-|[Insert](#insert)|Creates and inserts a new row using [IRowsetChange:InsertRow](/previous-versions/windows/desktop/ms716921(v=vs.85)).|
+|[Insert](#insert)|Creates and inserts a new row using [IRowsetChange::InsertRow](/previous-versions/windows/desktop/ms716921(v=vs.85)).|
 |[IsSameRow](#issamerow)|Compares the specified row with the current row.|
 |[MoveFirst](#movefirst)|Repositions the next-fetch location to the initial position.|
 |[MoveLast](#movelast)|Moves to the last record.|
@@ -52,7 +51,7 @@ An accessor class. The default is `CAccessorBase`.
 |[MoveToBookmark](#movetobookmark)|Fetches the row marked by a bookmark or the row at a specified offset from that bookmark.|
 |[MoveToRatio](#movetoratio)|Fetches rows starting from a fractional position in the rowset.|
 |[ReleaseRows](#releaserows)|Calls [IRowset::ReleaseRows](/previous-versions/windows/desktop/ms719771(v=vs.85)) to release the current row handle.|
-|[SetData](#setdata)|Sets data values in one or more columns of a row using [IRowsetChange:SetData](/previous-versions/windows/desktop/ms721232(v=vs.85)).|
+|[SetData](#setdata)|Sets data values in one or more columns of a row using [IRowsetChange::SetData](/previous-versions/windows/desktop/ms721232(v=vs.85)).|
 |[Undo](#undo)|Undoes any changes made to a row since the last fetch or [Update](#update).|
 |[Update](#update)|Transmits any pending changes made to the current row since the last fetch or update.|
 |[UpdateAll](#updateall)|Transmits any pending changes made to all rows since the last fetch or update.|
@@ -109,13 +108,13 @@ HRESULT Compare(const CBookmarkBase& bookmark1,
 
 #### Parameters
 
-*Bookmark1*<br/>
+*Bookmark1*\
 [in] The first bookmark to compare.
 
-*Bookmark2*<br/>
+*Bookmark2*\
 [in] The second bookmark to compare.
 
-*pComparison*<br/>
+*pComparison*\
 [out] A pointer to the result of the comparison.
 
 ### Return Value
@@ -142,7 +141,7 @@ CRowset(IRowset* pRowset);
 
 #### Parameters
 
-*pRowset*<br/>
+*pRowset*\
 [in] A pointer to an `IRowset` interface to be associated with this class.
 
 ## <a name="delete"></a> CRowset::Delete
@@ -178,28 +177,28 @@ HRESULT FindNextRow(DBCOMPAREOP op,
 
 #### Parameters
 
-*op*<br/>
+*op*\
 [in] The operation to use in comparing row values. For values, see [IRowsetFind::FindNextRow](/previous-versions/windows/desktop/ms723091(v=vs.85)).
 
-*pData*<br/>
+*pData*\
 [in] A pointer to the value to be matched.
 
-*wType*<br/>
+*wType*\
 [in] Indicates the data type of the value part of the buffer. For information about type indicators, see [Data Types](/previous-versions/windows/desktop/ms723969(v=vs.85)) in the *OLE DB Programmer's Reference* in the Windows SDK.
 
-*nLength*<br/>
+*nLength*\
 [in] The length, in bytes, of the consumer data structure allocated for the data value. For details, see the description of `cbMaxLen` in [DBBINDING Structures](/previous-versions/windows/desktop/ms716845(v=vs.85)) in the *OLE DB Programmer's Reference.*
 
-*bPrecision*<br/>
+*bPrecision*\
 [in] The maximum precision used when getting data. Used only if *wType* is DBTYPE_NUMERIC. For more information, see [Conversions involving DBTYPE_NUMERIC or DBTYPE_DECIMAL](/previous-versions/windows/desktop/ms719714(v=vs.85)) in the *OLE DB Programmer's Reference*.
 
-*bScale*<br/>
+*bScale*\
 [in] The scale used when getting data. Used only if *wType* is DBTYPE_NUMERIC or DBTYPE_DECIMAL. For more information, see [Conversions involving DBTYPE_NUMERIC or DBTYPE_DECIMAL](/previous-versions/windows/desktop/ms719714(v=vs.85)) in the *OLE DB Programmer's Reference*.
 
-*bSkipCurrent*<br/>
+*bSkipCurrent*\
 [in] The number of rows from the bookmark at which to start a search.
 
-*pBookmark*<br/>
+*pBookmark*\
 [in] The bookmark for position at which to start a search.
 
 ### Return Value
@@ -226,13 +225,13 @@ HRESULT GetApproximatePosition(const CBookmarkBase* pBookmark,
 
 #### Parameters
 
-*pBookmark*<br/>
+*pBookmark*\
 [in] A pointer to a bookmark that identifies the row whose position is to be found. NULL if only the row count is required.
 
-*pPosition*<br/>
+*pPosition*\
 [out] A pointer to the location where `GetApproximatePosition` returns the position of the row. NULL if the position is not required.
 
-*pcRows*<br/>
+*pcRows*\
 [out] A pointer to the location where `GetApproximatePosition` returns the total number of rows. NULL if the row count is not required.
 
 ### Return Value
@@ -259,7 +258,7 @@ HRESULT GetData(int nAccessor) throw();
 
 #### Parameters
 
-*nAccessor*<br/>
+*nAccessor*\
 [in] The (zero-offset) index number of the accessor to use for accessing the data.
 
 ### Return Value
@@ -283,10 +282,10 @@ HRESULT GetDataHere(int nAccessor,
 
 #### Parameters
 
-*nAccessor*<br/>
+*nAccessor*\
 [in] The index number of the accessor to use for accessing the data.
 
-*pBuffer*<br/>
+*pBuffer*\
 [out] A buffer into which to place the data for the current record.
 
 ### Return Value
@@ -329,7 +328,7 @@ HRESULT GetRowStatus(DBPENDINGSTATUS* pStatus) const throw();
 
 #### Parameters
 
-*pStatus*<br/>
+*pStatus*\
 [out] A pointer to a location where `GetRowStatus` returns the status value. See DBPENDINGSTATUS in the OLE DB Programmer's Reference.
 
 ### Return Value
@@ -353,10 +352,10 @@ HRESULT Insert(int nAccessor = 0,
 
 #### Parameters
 
-*nAccessor*<br/>
+*nAccessor*\
 [in] The number of the accessor to use for inserting the data.
 
-*bGetHRow*<br/>
+*bGetHRow*\
 [in] Indicates whether the handle for the inserted row is retrieved.
 
 ### Return Value
@@ -389,7 +388,7 @@ HRESULT IsSameRow(HROW hRow) const throw();
 
 #### Parameters
 
-*hRow*<br/>
+*hRow*\
 [in] A handle to the row to compare to the current row.
 
 ### Return Value
@@ -449,10 +448,10 @@ HRESULT MoveNext(LONG lSkip,
 
 #### Parameters
 
-*lSkip*<br/>
+*lSkip*\
 [in] The number of rows to skip before fetching.
 
-*bForward*<br/>
+*bForward*\
 [in] Pass **`true`** to move forward to the next record, **`false`** to move backward.
 
 ### Return Value
@@ -502,10 +501,10 @@ HRESULT MoveToBookmark(const CBookmarkBase& bookmark,
 
 #### Parameters
 
-*bookmark*<br/>
+*bookmark*\
 [in] A bookmark marking the location from which you want to fetch data.
 
-*lSkip*<br/>
+*lSkip*\
 [in] The number count of rows from the bookmark to the target row. If *lSkip* is zero, the first row fetched is the bookmarked row. If *lSkip* is 1, the first row fetched is the row after the bookmarked row. If *lSkip* is -1, the first row fetched is the row before the bookmarked row.
 
 ### Return Value
@@ -531,13 +530,13 @@ HRESULT MoveToRatio(DBCOUNTITEM nNumerator,
 
 #### Parameters
 
-*nNumerator*<br/>
+*nNumerator*\
 [in] The numerator used to determine the fractional positional from which to fetch data.
 
-*nDenominator*<br/>
+*nDenominator*\
 [in] The denominator used to determine the fractional positional from which to fetch data.
 
-*bForward*<br/>
+*bForward*\
 [in] Indicates whether to move forward or backward. The default is forward.
 
 ### Return Value
@@ -582,7 +581,7 @@ HRESULT SetData(int nAccessor) const throw();
 
 #### Parameters
 
-*nAccessor*<br/>
+*nAccessor*\
 [in] The number of the accessor to use for accessing the data.
 
 ### Return Value
@@ -611,13 +610,13 @@ HRESULT Undo(DBCOUNTITEM* pcRows = NULL,
 
 #### Parameters
 
-*pcRows*<br/>
+*pcRows*\
 [out] A pointer to the location where `Undo` returns the number of rows it attempted to undo if required.
 
-*phRow*<br/>
+*phRow*\
 [out] A pointer to the location where `Undo` returns an array of handles to all rows it attempted to undo if required.
 
-*pStatus*<br/>
+*pStatus*\
 [out] A pointer to the location where `Undo` returns the row status value. No status is returned if *pStatus* is null.
 
 ### Return Value
@@ -642,13 +641,13 @@ HRESULT Update(DBCOUNTITEM* pcRows = NULL,
 
 #### Parameters
 
-*pcRows*<br/>
+*pcRows*\
 [out] A pointer to the location where `Update` returns the number of rows it attempted to update, if required.
 
-*phRow*<br/>
+*phRow*\
 [out] A pointer to the location where `Update` returns the handle of the row it attempted to update. No handle is returned if *phRow* is null.
 
-*pStatus*<br/>
+*pStatus*\
 [out] A pointer to the location where `Update` returns the row status value. No status is returned if *pStatus* is null.
 
 ### Return Value
@@ -675,13 +674,13 @@ HRESULT UpdateAll(DBCOUNTITEM* pcRows = NULL,
 
 #### Parameters
 
-*pcRows*<br/>
+*pcRows*\
 [out] A pointer to the location where `UpdateAll` returns the number of rows it attempted to update, if required.
 
-*pphRow*<br/>
+*pphRow*\
 [out] A pointer to memory in which `UpdateAll` returns the handle of the row it attempted to update. No handle is returned if *pphRow* is null.
 
-*ppStatus*<br/>
+*ppStatus*\
 [out] A pointer to the location where `Update` returns the row status value. No status is returned if *ppStatus* is null.
 
 ### Remarks
@@ -698,8 +697,8 @@ A standard HRESULT.
 
 ## See also
 
-[DBViewer Sample](../../overview/visual-cpp-samples.md)<br/>
-[MultiRead Sample](../../overview/visual-cpp-samples.md)<br/>
-[MultiRead Attributes Sample](../../overview/visual-cpp-samples.md)<br/>
-[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)<br/>
+[DBViewer Sample](../../overview/visual-cpp-samples.md)\
+[MultiRead Sample](../../overview/visual-cpp-samples.md)\
+[MultiRead Attributes Sample](../../overview/visual-cpp-samples.md)\
+[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)\
 [OLE DB Consumer Templates Reference](../../data/oledb/ole-db-consumer-templates-reference.md)
diff --git a/docs/data/oledb/crowsetimpl-class.md b/docs/data/oledb/crowsetimpl-class.md
index e83271fca5..ee3884e6da 100644
--- a/docs/data/oledb/crowsetimpl-class.md
+++ b/docs/data/oledb/crowsetimpl-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["CRowsetImpl", "ATL.CRowsetImpl", "ATL::CRowsetImpl", "CRowsetImpl.NameFromDBID", "CRowsetImpl::NameFromDBID", "CRowsetImpl.SetCommandText", "CRowsetImpl::SetCommandText", "CRowsetImpl.GetColumnInfo", "CRowsetImpl::GetColumnInfo", "CRowsetImpl::GetCommandFromID", "GetCommandFromID", "CRowsetImpl.GetCommandFromID", "CRowsetImpl.ValidateCommandID", "CRowsetImpl::ValidateCommandID", "CRowsetImpl.m_rgRowData", "CRowsetImpl::m_rgRowData", "CRowsetImpl::m_strCommandText", "CRowsetImpl.m_strCommandText", "CRowsetImpl::m_strIndexText", "CRowsetImpl.m_strIndexText"]
 helpviewer_keywords: ["CRowsetImpl class", "NameFromDBID method", "SetCommandText method", "GetColumnInfo method", "GetCommandFromID method", "ValidateCommandID method", "m_rgRowData", "m_strCommandText", "m_strIndexText"]
 ms.assetid: e97614b3-b11d-4806-a0d3-b9401331473f
+ms.custom: sfi-ropc-nochange
 ---
 # CRowsetImpl Class
 
diff --git a/docs/data/oledb/icommandpropertiesimpl-class.md b/docs/data/oledb/icommandpropertiesimpl-class.md
index 3d50ed3c85..2b1694ea7c 100644
--- a/docs/data/oledb/icommandpropertiesimpl-class.md
+++ b/docs/data/oledb/icommandpropertiesimpl-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["ICommandPropertiesImpl", "ATL.ICommandPropertiesImpl", "ATL::ICommandPropertiesImpl", "ICommandPropertiesImpl::GetProperties", "ICommandPropertiesImpl.GetProperties", "ICommandPropertiesImpl.SetProperties", "ICommandPropertiesImpl::SetProperties"]
 helpviewer_keywords: ["ICommandPropertiesImpl class", "GetProperties method", "SetProperties method"]
 ms.assetid: b3cf6aea-527e-4f0d-96e0-669178b021a2
+ms.custom: sfi-ropc-nochange
 ---
 # ICommandPropertiesImpl Class
 
diff --git a/docs/data/oledb/irowsetcreatorimpl-class.md b/docs/data/oledb/irowsetcreatorimpl-class.md
index 542a3dffab..8fb9c33eab 100644
--- a/docs/data/oledb/irowsetcreatorimpl-class.md
+++ b/docs/data/oledb/irowsetcreatorimpl-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["ATL::IRowsetCreatorImpl", "ATL.IRowsetCreatorImpl", "ATL::IRowsetCreatorImpl<T>", "ATL.IRowsetCreatorImpl<T>", "IRowsetCreatorImpl", "IRowsetCreatorImpl.SetSite", "IRowsetCreatorImpl<T>::SetSite", "IRowsetCreatorImpl::SetSite", "SetSite", "ATL.IRowsetCreatorImpl.SetSite", "ATL::IRowsetCreatorImpl<T>::SetSite", "ATL::IRowsetCreatorImpl::SetSite", "ATL.IRowsetCreatorImpl<T>.SetSite"]
 helpviewer_keywords: ["IRowsetCreatorImpl class", "SetSite method"]
 ms.assetid: 92cc950f-7978-4754-8d9a-defa63867d82
+ms.custom: sfi-ropc-nochange
 ---
 # IRowsetCreatorImpl Class
 
diff --git a/docs/data/oledb/irowsetinfoimpl-class.md b/docs/data/oledb/irowsetinfoimpl-class.md
index d05de7876d..d5f545e3bb 100644
--- a/docs/data/oledb/irowsetinfoimpl-class.md
+++ b/docs/data/oledb/irowsetinfoimpl-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["ATL.IRowsetInfoImpl", "IRowsetInfoImpl", "ATL::IRowsetInfoImpl", "ATL.IRowsetInfoImpl.GetProperties", "IRowsetInfoImpl.GetProperties", "ATL::IRowsetInfoImpl::GetProperties", "IRowsetInfoImpl::GetProperties", "ATL::IRowsetInfoImpl::GetReferencedRowset", "GetReferencedRowset", "ATL.IRowsetInfoImpl.GetReferencedRowset", "IRowsetInfoImpl.GetReferencedRowset", "IRowsetInfoImpl::GetReferencedRowset", "IRowsetInfoImpl::GetSpecification", "ATL.IRowsetInfoImpl.GetSpecification", "IRowsetInfoImpl.GetSpecification", "GetSpecification", "ATL::IRowsetInfoImpl::GetSpecification"]
 helpviewer_keywords: ["IRowsetInfoImpl class", "GetProperties method", "GetReferencedRowset method", "GetSpecification method"]
 ms.assetid: 9c654155-7727-464e-bd31-143e68391a47
+ms.custom: sfi-ropc-nochange
 ---
 # IRowsetInfoImpl Class
 
diff --git a/docs/data/oledb/irowsetlocateimpl-class.md b/docs/data/oledb/irowsetlocateimpl-class.md
index 082de1f7b9..16872cbd1a 100644
--- a/docs/data/oledb/irowsetlocateimpl-class.md
+++ b/docs/data/oledb/irowsetlocateimpl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: IRowsetLocateImpl Class"
 title: "IRowsetLocateImpl Class"
+description: "Learn more about: IRowsetLocateImpl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["IRowsetLocateImpl", "ATL.IRowsetLocateImpl.Compare", "IRowsetLocateImpl::Compare", "IRowsetLocateImpl.Compare", "ATL::IRowsetLocateImpl::Compare", "GetRowsAt", "IRowsetLocateImpl.GetRowsAt", "ATL::IRowsetLocateImpl::GetRowsAt", "IRowsetLocateImpl::GetRowsAt", "ATL.IRowsetLocateImpl.GetRowsAt", "IRowsetLocateImpl::GetRowsByBookmark", "IRowsetLocateImpl.GetRowsByBookmark", "GetRowsByBookmark", "IRowsetLocateImpl::Hash", "IRowsetLocateImpl.Hash", "m_rgBookmarks", "IRowsetLocateImpl::m_rgBookmarks", "ATL.IRowsetLocateImpl.m_rgBookmarks", "ATL::IRowsetLocateImpl::m_rgBookmarks", "IRowsetLocateImpl.m_rgBookmarks"]
 helpviewer_keywords: ["providers, bookmarks", "IRowsetLocateImpl class", "bookmarks, OLE DB", "Compare method", "GetRowsAt method", "GetRowsByBookmark method", "Hash method", "m_rgbookmarks"]
-ms.assetid: a8aa3149-7ce8-4976-a680-2da193fd3234
 ---
 # IRowsetLocateImpl Class
 
@@ -202,8 +201,8 @@ CAtlArray<DBROWCOUNT> m_rgBookmarks;
 
 ## See also
 
-[OLE DB Provider Templates](../../data/oledb/ole-db-provider-templates-cpp.md)<br/>
-[OLE DB Provider Template Architecture](../../data/oledb/ole-db-provider-template-architecture.md)<br/>
-[IRowsetLocate:IRowset](/previous-versions/windows/desktop/ms721190(v=vs.85))
-[Provider Support for Bookmarks](../../data/oledb/provider-support-for-bookmarks.md)<br/>
+[OLE DB Provider Templates](../../data/oledb/ole-db-provider-templates-cpp.md)\
+[OLE DB Provider Template Architecture](../../data/oledb/ole-db-provider-template-architecture.md)\
+[IRowsetLocate:IRowset](/previous-versions/windows/desktop/ms721190(v=vs.85))\
+[Provider Support for Bookmarks](../../data/oledb/provider-support-for-bookmarks.md)\
 [Bookmarks](/previous-versions/windows/desktop/ms709728(v=vs.85))
diff --git a/docs/data/oledb/irowsetnotifyimpl-class.md b/docs/data/oledb/irowsetnotifyimpl-class.md
index 314202ddd9..8737941bcd 100644
--- a/docs/data/oledb/irowsetnotifyimpl-class.md
+++ b/docs/data/oledb/irowsetnotifyimpl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: IRowsetNotifyImpl Class"
 title: "IRowsetNotifyImpl Class"
+description: "Learn more about: IRowsetNotifyImpl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["ATL.IRowsetNotifyImpl", "ATL::IRowsetNotifyImpl", "IRowsetNotifyImpl", "IRowsetNotifyImpl.OnFieldChange", "IRowsetNotifyImpl::OnFieldChange", "OnFieldChange", "IRowsetNotifyImpl::OnRowChange", "IRowsetNotifyImpl.OnRowChange", "OnRowChange", "OnRowsetChange", "IRowsetNotifyImpl::OnRowsetChange", "IRowsetNotifyImpl.OnRowsetChange"]
 helpviewer_keywords: ["IRowsetNotifyImpl class", "OnFieldChange method", "OnRowChange method", "OnRowsetChange method"]
-ms.assetid: fbfd0cb2-38ff-4b42-899a-8de902f834b8
 ---
 # IRowsetNotifyImpl Class
 
@@ -121,6 +120,6 @@ This method wraps the [IRowsetNotify::OnRowsetChange](/previous-versions/windows
 
 ## See also
 
-[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)<br/>
-[IRowsetNotify](/previous-versions/windows/desktop/ms712959(v=vs.85))
+[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)\
+[IRowsetNotify](/previous-versions/windows/desktop/ms712959(v=vs.85))\
 [IRowsetNotifyCP Class](../../data/oledb/irowsetnotifycp-class.md)
diff --git a/docs/data/oledb/isessionpropertiesimpl-class.md b/docs/data/oledb/isessionpropertiesimpl-class.md
index 8904350293..5818498c6e 100644
--- a/docs/data/oledb/isessionpropertiesimpl-class.md
+++ b/docs/data/oledb/isessionpropertiesimpl-class.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["ISessionPropertiesImpl", "ISessionPropertiesImpl::GetProperties", "ISessionPropertiesImpl.GetProperties", "ISessionPropertiesImpl.SetProperties", "ISessionPropertiesImpl::SetProperties"]
 helpviewer_keywords: ["ISessionPropertiesImpl class", "GetProperties method", "SetProperties method"]
 ms.assetid: ca0ba254-c7dc-4c52-abec-cf895a0c6a63
+ms.custom: sfi-ropc-nochange
 ---
 # ISessionPropertiesImpl Class
 
diff --git a/docs/data/oledb/ole-db-provider-templates-reference.md b/docs/data/oledb/ole-db-provider-templates-reference.md
index 8e4f8167f9..ba16a0f8a2 100644
--- a/docs/data/oledb/ole-db-provider-templates-reference.md
+++ b/docs/data/oledb/ole-db-provider-templates-reference.md
@@ -4,6 +4,7 @@ title: "OLE DB Provider Templates Reference"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["OLE DB provider templates"]
 ms.assetid: 518358f0-bab1-4de9-bce9-4062cc87c11f
+ms.custom: sfi-ropc-nochange
 ---
 # OLE DB Provider Templates Reference
 
diff --git a/docs/data/oledb/schema-rowset-classes-and-typedef-classes.md b/docs/data/oledb/schema-rowset-classes-and-typedef-classes.md
index 574d95b2ac..f478250666 100644
--- a/docs/data/oledb/schema-rowset-classes-and-typedef-classes.md
+++ b/docs/data/oledb/schema-rowset-classes-and-typedef-classes.md
@@ -1,12 +1,9 @@
 ---
-description: "Learn more about: Schema Rowset Classes and Typedef Classes"
 title: "Schema Rowset Classes and Typedef Classes"
-ms.date: "11/04/2016"
+description: "Learn more about: Schema Rowset Classes and Typedef Classes"
+ms.date: 11/04/2016
 f1_keywords: ["CAssertionInfo", "CAssertions", "CCatalogInfo", "CCatalogs", "CCharacterSetInfo", "CCharacterSets", "CCheckConstraintInfo", "CCheckConstraints", "CCollationInfo", "CCollations", "CColumnDomainUsage", "CColumnDomainUsageInfo", "CColumnPrivilegeInfo", "CColumnPrivileges", "CColumns", "CColumnsInfo", "CConstraintColumnUsage", "CConstraintColumnUsageInfo", "CConstraintTableUsage", "CConstraintTableUsageInfo", "CForeignKeys", "CForeignKeysInfo", "CHARACTER_MAXIMUM_LENGTH", "CHARACTER_OCTET_LENGTH", "CHARACTER_SET_CATALOG", "CHARACTER_SET_NAME", "CHARACTER_SET_SCHEMA", "CHECK_CLAUSE", "CHECK_CONSTRAINTS", "CHECK_OPTION", "CIndexes", "CIndexInfo", "CKeyColumnInfo", "CKeyColumns", "CLUSTERED", "COLLATION", "COLLATION_CATALOG", "COLLATION_NAME", "COLLATION_SCHEMA", "COLLATIONS", "COLUMN_DEFAULT", "COLUMN_DOMAIN_USAGE", "COLUMN_FLAGS", "COLUMN_GUID", "COLUMN_HASDEFAULT", "COLUMN_PRIVILEGES", "COLUMN_PROPID", "COLUMN_SIZE", "CONSTRAINT_CATALOG", "CONSTRAINT_COLUMN_USAGE", "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONSTRAINT_TABLE_USAGE", "CONSTRAINT_TYPE", "CPrimaryKeyInfo", "CPrimaryKeys", "CProcedureColumnInfo", "CProcedureColumns", "CProcedureInfo", "CProcedureParameters", "CProcedureParamInfo", "CProcedures", "CProviderInfo", "CProviderTypes", "CReferentialConstraintInfo", "CReferentialConstraints", "CSchemata", "CSchemataInfo", "CSQLLanguageInfo", "CSQLLanguages", "CStatisticInfo", "CStatistics", "CTableConstraintInfo", "CTableConstraints", "CTableInfo", "CTablePrivilegeInfo", "CTablePrivileges", "CTables", "CTranslationInfo", "CTranslations", "CUsagePrivilegeInfo", "CUsagePrivileges", "CViewColumnInfo", "CViewColumnUsage", "CViewInfo", "CViews", "CViewTableInfo", "CViewTableUsage", "DATA_TYPE", "DATETIME_PRECISION", "DEFAULT_CHARACTER_SET_CATALOG", "DEFAULT_CHARACTER_SET_NAME", "DEFAULT_CHARACTER_SET_SCHEMA", "DEFAULT_COLLATE_CATALOG", "DEFAULT_COLLATE_NAME", "DEFAULT_COLLATE_SCHEMA", "DELETE_RULE", "DOMAIN_CATALOG", "DOMAIN_NAME", "DOMAIN_SCHEMA", "FILL_FACTOR", "FILTER_CONDITION", "FIXED_PREC_SCALE", "FK_COLUMN_GUID", "FK_COLUMN_NAME", "FK_COLUMN_PROPID", "FK_TABLE_CATALOG", "FK_TABLE_NAME", "FK_TABLE_SCHEMA", "FORM_OF_USE", "GRANTEE", "GRANTOR", "INDEX_CATALOG", "INDEX_NAME", "INDEX_SCHEMA", "INITIAL_SIZE", "INITIALLY_DEFERRED", "IS_DEFERRABLE", "IS_GRANTABLE", "IS_LONG", "IS_NULLABLE", "IS_UPDATABLE", "LITERAL_SUFFIX", "LOCAL_TYPE_NAME", "m_bAutoUniqueValue", "m_bAutoUpdate", "m_bBestMatch", "m_bCaseSensitive", "m_bCheckOption", "m_bClustered", "m_bColumnHasDefault", "m_bFixedPrecScale", "m_bHasDefault", "m_bInitiallyDeferred", "m_bIsDeferrable", "m_bIsGrantable", "m_bIsLong", "m_bIsNullable", "m_bIsUpdatable", "m_bPrimaryKey", "m_bSortBookmarks", "m_bUnique", "m_bUnsignedAttribute", "m_guidColumn", "m_guidFKColumn", "m_guidPKColumn", "m_guidTable", "m_guidType", "m_nCardinality", "m_nCollation", "m_nColumnFlags", "m_nColumnPropID", "m_nColumnSize", "m_nDataType", "m_nDateTimePrecision", "m_nFillFactor", "m_nFKColumnPropID", "m_nInitialSize", "m_nMaxLength", "m_nMaxScale", "m_nNullCollation", "m_nNulls", "m_nNumCharacters", "m_nNumericPrecision", "m_nNumericScale", "m_nOctetLength", "m_nOrdinal", "m_nOrdinalPosition", "m_nPages", "m_nPKColumnPropID", "m_nPrecision", "m_nRowsetNumber", "m_nScale", "m_nSearchable", "m_szBindingStyle", "m_szCatalog", "m_szCharCatalog", "m_szCharName", "m_szCharSchema", "m_szCharSetCatalog", "m_szCharSetName", "m_szCharSetSchema", "m_szCheckClause", "m_szCollateCatalog", "m_szCollateName", "m_szCollateSchema", "m_szCollationCatalog", "m_szCollationName", "m_szCollationSchema", "m_szColumnDefault", "m_szColumnName", "m_szConformance", "m_szConstraintCatalog", "m_szConstraintName", "m_szConstraintSchema", "m_szCreateParams", "m_szDefault", "m_szDefinition", "m_szDeleteRule", "m_szDomainCatalog", "m_szDomainName", "m_szDomainSchema", "m_szFilterCondition", "m_szFKColumnName", "m_szFKTableCatalog", "m_szFKTableName", "m_szFKTableSchema", "m_szFormOfUse", "m_szGrantee", "m_szGrantor", "m_szImplementation", "m_szIndexCatalog", "m_szIndexName", "m_szIndexSchema", "m_szIntegrity", "m_szLiter alSuffix", "m_szLiteralPrefix", "m_szLocalTypeName", "m_szMatchOption", "m_szObjectCatalog", "m_szObjectName", "m_szObjectSchema", "m_szObjectType", "m_szOwner", "m_szPadAttribute", "m_szParameterName", "m_szPKColumnName", "m_szPKTableCatalog", "m_szPKTableName", "m_szPKTableSchema", "m_szPrivilegeType", "m_szProgrammingLanguage", "m_szSchema", "m_szSource", "m_szSourceCatalog", "m_szSourceName", "m_szSourceSchema", "m_szTableCatalog", "m_szTableName", "m_szTableSchema", "m_szTargetCatalog", "m_szTargetName", "m_szTargetSchema", "m_szType", "m_szTypeLib", "m_szTypeName", "m_szUniqueCatalog", "m_szUniqueName", "m_szUniqueSchema", "m_szUpdateRule", "m_szVersion", "m_szYear", "MATCH_OPTION", "MAXIMUM_SCALE", "MINIMUM_SCALE", "NULL_COLLATION", "NULLS", "NUMBER_OF_CHARACTERS", "NUMERIC_PRECISION", "NUMERIC_SCALE", "OBJECT_CATALOG", "OBJECT_NAME", "OBJECT_SCHEMA", "OBJECT_TYPE", "ORDINAL", "ORDINAL_POSITION", "TABLE_CATALOG", "TABLE_GUID", "TABLE_NAME", "TABLE_SCHEMA"]
-
-
 helpviewer_keywords: ["schema rowsets", "CAssertionInfo parameter class", "CAssertions typedef class", "CCatalogInfo parameter class", "CCatalogs typedef class", "CCharacterSetInfo parameter class", "CCharacterSets typedef class", "CCheckConstraintInfo parameter class", "CCheckConstraints typedef class", "CCollationInfo parameter class", "CCollations typedef class", "CColumnDomainUsage typedef class", "CColumnDomainUsageInfo parameter class", "CColumnPrivilegeInfo parameter class", "CColumnPrivileges typedef class", "CColumns typedef class", "CColumnsInfo parameter class", "CConstraintColumnUsage typedef class", "CConstraintColumnUsageInfo parameter class", "CConstraintTableUsage typedef class", "CConstraintTableUsageInfo parameter class", "CForeignKeys typedef class", "CForeignKeysInfo parameter class", "CHARACTER_MAXIMUM_LENGTH", "CHARACTER_OCTET_LENGTH", "CHARACTER_SET_CATALOG", "CHARACTER_SET_NAME", "CHARACTER_SET_SCHEMA", "CHECK_CLAUSE", "CHECK_CONSTRAINTS", "CHECK_OPTION", "CIndexes typedef class", "CIndexInfo parameter class", "CKeyColumnInfo parameter class", "CKeyColumns typedef class", "CLUSTERED", "COLLATION_CATALOG", "COLLATION_NAME", "COLLATION_SCHEMA", "COLLATIONS recordset", "COLUMN_DEFAULT", "COLUMN_DOMAIN_USAGE", "COLUMN_FLAGS", "COLUMN_GUID", "COLUMN_HASDEFAULT", "COLUMN_NAME", "COLUMN_PRIVILEGES", "COLUMN_PROPID", "CONSTRAINT_CATALOG", "CONSTRAINT_COLUMN_USAGE", "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONSTRAINT_TABLE_USAGE", "CONSTRAINT_TYPE", "CPrimaryKeyInfo parameter class", "CPrimaryKeys typedef class", "CProcedureColumnInfo parameter class", "CProcedureColumns typedef class", "CProcedureInfo parameter class", "CProcedureParameters typedef class", "CProcedureParamInfo parameter class", "CProcedures typedef class", "CProviderInfo parameter class", "CProviderTypes typedef class", "CReferentialConstraintInfo parameter class", "CReferentialConstraints typedef class", "CSchemata typedef class", "CSchemataInfo parameter class", "CSQLLanguageInfo parameter class", "CSQLLanguages typedef class", "CStatisticInfo parameter class", "CStatistics typedef class", "CTableConstraintInfo parameter class", "CTableConstraints typedef class", "CTableInfo parameter class", "CTablePrivilegeInfo parameter class", "CTablePrivileges typedef class", "CTables typedef class", "CTranslationInfo parameter class", "CTranslations typedef class", "CUsagePrivilegeInfo parameter class", "CUsagePrivileges typedef class", "CViewColumnInfo parameter class", "CViewColumnUsage typedef class", "CViewInfo parameter class", "CViews typedef class", "CViewTableInfo parameter class", "CViewTableUsage typedef class", "DATA_TYPE", "DATETIME_PRECISION", "DEFAULT_CHARACTER_SET_CATALOG", "DEFAULT_CHARACTER_SET_NAME", "DEFAULT_CHARACTER_SET_SCHEMA", "DEFAULT_COLLATE_CATALOG", "DEFAULT_COLLATE_NAME", "DEFAULT_COLLATE_SCHEMA", "DELETE_RULE", "DESCRIPTION class data member", "DOMAIN_CATALOG", "DOMAIN_NAME", "DOMAIN_SCHEMA", "FILL_FACTOR", "FILTER_CONDITION", "FIXED_PREC_SCALE", "FK_COLUMN_GUID", "FK_COLUMN_NAME", "FK_COLUMN_PROPID", "FK_TABLE_CATALOG", "FK_TABLE_NAME", "FK_TABLE_SCHEMA", "FORM_OF_USE OLE DB column", "GRANTEE", "GRANTOR", "INDEX_CATALOG", "INDEX_NAME", "INDEX_SCHEMA", "INITIAL_SIZE", "INITIALLY_DEFERRED", "IS_DEFERRABLE", "IS_GRANTABLE", "IS_LONG", "IS_NULLABLE", "IS_UPDATABLE", "LITERAL_SUFFIX", "LOCAL_TYPE_NAME", "m_bAutoUniqueValue", "m_bAutoUpdate", "m_bBestMatch", "m_bCaseSensitive", "m_bCheckOption", "m_bClustered", "m_bColumnHasDefault", "m_bFixedPrecScale", "m_bHasDefault", "m_bInitiallyDeferred", "m_bIsDeferrable", "m_bIsGrantable", "m_bIsLong", "m_bIsNullable", "m_bIsUpdatable", "m_bPrimaryKey", "m_bSortBookmarks", "m_bUnique", "m_bUnsignedAttribute", "m_guidColumn", "m_guidFKColumn", "m_guidTable", "m_guidType", "m_nCardinality", "m_nCollation", "m_nColumnFlags", "m_nColumnPropID", "m_nColumnSize", "m_nDataType", "m_nDateTimePrecision", "m_nFillFactor", "m_nFKColumnPropID", "m_nInitialSize", "m_nMaxLength", "m_nMinScale", "m_nNullCollation", "m_nNulls", "m_nNumCharacters", "m_nNumericPrecision", "m_nNumericScale", "m_nOctetLength", "m_nOrdinal", "m_nOrdinalPosition", "m_nPages", "m_nPKColumnPropID", "m_nPrecision", "m_nRowsetNumber", "m_nScale", "m_nSearchable", "m_nType", "m_szBindingStyle", "m_szCatalog", "m_szCharCatalog", "m_szCharName", "m_szCharSchema", "m_szCharSetCatalog", "m_szCharSetName", "m_szCharSetSchema", "m_szCheckClause", "m_szCollateCatalog", "m_szCollateName", "m_szCollateSchema", "m_szCollationCatalog", "m_szCollationName", "m_szCollationSchema", "m_szColumnDefault", "m_szColumnName", "m_szConformance", "m_szConstraintCatalog", "m_szConstraintName", "m_szConstraintSchema", "m_szCreateParams", "m_szDefault", "m_szDefinition", "m_szDeleteRule", "m_szDescription", "m_szDomainCatalog", "m_szDomainName", "m_szDomainSchema", "m_szFilterCondition", "m_szFKColumnName", "m_szFKTableCatalog", "m_szFKTableName", "m_szFKTableSchema", "m_szFormOfUse", "m_szGrantee", "m_szGrantor", "m_szImplementation", "m_szIndexCatalog", "m_szIndexName", "m_szIndexSchema", "m_szIntegrity", "m_szLiteralPrefix", "m_szLocalTypeName", "m_szMatchOption", "m_szName", "m_szObjectCatalog", "m_szObjectName", "m_szObjectSchema", "m_szObjectType", "m_szOwner", "m_szPadAttribute", "m_szParameterName", "m_szPKColumnName", "m_szPKTableCatalog", "m_szPKTableName", "m_szPKTableSchema", "m_szPrivilegeType", "m_szPrivilegeType", "m_szProgrammingLanguage", "m_szSchema", "m_szSource", "m_szSourceCatalog", "m_szSourceName", "m_szSourceSchema", "m_szTableCatalog", "m_szTableName", "m_szTableSchema", "m_szTargetCatalog", "m_szTargetName", "m_szTargetSchema", "m_szType", "m_szTypeLib", "m_szTypeName", "m_szUniqueCatalog", "m_szUniqueName", "m_szUniqueSchema", "m_szUpdateRule", "m_szUpdateRule", "m_szVersion", "m_szYear", "MATCH_OPTION", "MAXIMUM_SCALE", "MINIMUM_SCALE", "NULL_COLLATION", "NULLS", "NUMBER_OF_CHARACTERS", "NUMERIC_PRECISION", "NUMERIC_SCALE", "OBJECT_CATALOG", "OBJECT_NAME", "OBJECT_SCHEMA", "OBJECT_TYPE", "ORDINAL data member", "ORDINAL_POSITION", "TABLE_CATALOG", "TABLE_GUID", "TABLE_NAME", "TABLE_SCHEMA"]
-ms.assetid: 4bd881b3-26ca-4bdb-9226-d67560864f29
 ---
 # Schema Rowset Classes and Typedef Classes
 
diff --git a/docs/data/record-view-code-created-by-application-wizard-mfc-data-access.md b/docs/data/record-view-code-created-by-application-wizard-mfc-data-access.md
index 73e90f6321..25cbb8cdef 100644
--- a/docs/data/record-view-code-created-by-application-wizard-mfc-data-access.md
+++ b/docs/data/record-view-code-created-by-application-wizard-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Record View Code Created by Application Wizard  (MFC Data Access)"
-title: "Record View Code Created by Application Wizard  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Record View Code Created by Application Wizard (MFC Data Access)"
+description: "Learn more about: Record View Code Created by Application Wizard (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["application wizards [C++], record view code", "record views, refreshing controls", "record views, application wizard code"]
-ms.assetid: 18fd4703-5939-491d-b759-985f767b951f
 ---
-# Record View Code Created by Application Wizard  (MFC Data Access)
+# Record View Code Created by Application Wizard (MFC Data Access)
 
 The [MFC Application Wizard](../mfc/reference/database-support-mfc-application-wizard.md) overrides the view's `OnInitialUpdate` and `OnGetRecordset` member functions. After the framework creates the frame window, document, and view, it calls `OnInitialUpdate` to initialize the view. `OnInitialUpdate` obtains a pointer to the recordset from the document. A call to the base class [CView::OnInitialUpdate](../mfc/reference/cview-class.md#oninitialupdate) function opens the recordset. The following code shows this process for a `CRecordView`:
 
diff --git a/docs/data/record-views-mfc-data-access.md b/docs/data/record-views-mfc-data-access.md
index d6ad32f05e..2741f14ec1 100644
--- a/docs/data/record-views-mfc-data-access.md
+++ b/docs/data/record-views-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Record Views  (MFC Data Access)"
-title: "Record Views  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Record Views (MFC Data Access)"
+description: "Learn more about: Record Views (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["MFC [C++], record views", "ODBC recordsets [C++], record views", "databases [C++], record views", "record views [C++]", "forms [C++], data access tasks"]
-ms.assetid: 562122d9-01d8-4284-acf6-ea109ab0408d
 ---
-# Record Views  (MFC Data Access)
+# Record Views (MFC Data Access)
 
 This section applies only to the MFC ODBC classes. For information about OLE DB record views, see [COleDBRecordView](../mfc/reference/coledbrecordview-class.md) and [Using OLE DB Record Views](../data/oledb/using-ole-db-record-views.md).
 
diff --git a/docs/data/schema-mfc-data-access.md b/docs/data/schema-mfc-data-access.md
index c45bdeb2bc..6b5c9e1d0e 100644
--- a/docs/data/schema-mfc-data-access.md
+++ b/docs/data/schema-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Schema  (MFC Data Access)"
-title: "Schema  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Schema (MFC Data Access)"
+description: "Learn more about: Schema (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["structures [C++], database", "databases [C++], schema", "database schema [C++], about database schemas", "database schema [C++]", "schemas [C++], database", "structures [C++]"]
-ms.assetid: 7d17e35f-1ccf-4853-b915-5b8c7a45b9ee
 ---
-# Schema  (MFC Data Access)
+# Schema (MFC Data Access)
 
 A database schema describes the current structure of the tables and database views in the database. In general, wizard-generated code assumes that the schema for the table or tables accessed by a recordset will not change, but the database classes can deal with some schema changes, such as adding, reordering, or deleting unbound columns. If a table changes, you must manually update the recordset for the table, then recompile your application.
 
diff --git a/docs/data/supporting-navigation-in-a-record-view-mfc-data-access.md b/docs/data/supporting-navigation-in-a-record-view-mfc-data-access.md
index df688530ed..0bc07831d5 100644
--- a/docs/data/supporting-navigation-in-a-record-view-mfc-data-access.md
+++ b/docs/data/supporting-navigation-in-a-record-view-mfc-data-access.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: Supporting Navigation in a Record View  (MFC Data Access)"
-title: "Supporting Navigation in a Record View  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Supporting Navigation in a Record View (MFC Data Access)"
+description: "Learn more about: Supporting Navigation in a Record View (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["records [C++], navigating", "record views, navigation", "navigation [C++], in record view"]
-ms.assetid: 227f2a6d-87c9-4656-807a-8e246965bcce
+ms.topic: reference
 ---
-# Supporting Navigation in a Record View  (MFC Data Access)
+# Supporting Navigation in a Record View (MFC Data Access)
 
 This topic explains how to support movement from record to record in your [CRecordView](../mfc/reference/crecordview-class.md) class, including information about:
 
diff --git a/docs/data/transactions-mfc-data-access.md b/docs/data/transactions-mfc-data-access.md
index b9008f382a..6d9bcec6ac 100644
--- a/docs/data/transactions-mfc-data-access.md
+++ b/docs/data/transactions-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Transactions  (MFC Data Access)"
-title: "Transactions  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Transactions (MFC Data Access)"
+description: "Learn more about: Transactions (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["transactions [C++], support for", "transactions [C++]", "databases [C++], transactions"]
-ms.assetid: f80afbfe-1517-4fec-8870-9ffc70a58b05
 ---
-# Transactions  (MFC Data Access)
+# Transactions (MFC Data Access)
 
 The concept of a transaction was developed to handle cases in which the resulting state of the database depends on the total success of a series of operations. This could come about because successive operations might modify the results of previous operations. In such cases, if any one operation fails, the resulting state could be indeterminate.
 
diff --git a/docs/data/user-interface-updating-for-record-views-mfc-data-access.md b/docs/data/user-interface-updating-for-record-views-mfc-data-access.md
index 5e489fd901..e221fc09c0 100644
--- a/docs/data/user-interface-updating-for-record-views-mfc-data-access.md
+++ b/docs/data/user-interface-updating-for-record-views-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: User-Interface Updating for Record Views  (MFC Data Access)"
-title: "User-Interface Updating for Record Views  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "User-Interface Updating for Record Views (MFC Data Access)"
+description: "Learn more about: User-Interface Updating for Record Views (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["user interfaces, updating", "menus, updating as context changes", "record views, user interface"]
-ms.assetid: 2c7914b6-2dc3-40c3-b2f2-8371da2a4063
 ---
-# User-Interface Updating for Record Views  (MFC Data Access)
+# User-Interface Updating for Record Views (MFC Data Access)
 
 `CRecordView` provides default user-interface update handlers for the navigation commands. These handlers automate enabling and disabling the user-interface objects — menu items and toolbar buttons. The application wizard supplies standard menus and, if you choose the **Dockable Toolbar** option, a set of toolbar buttons for the commands. If you create a record view class using `CRecordView`, you might want to add similar user-interface objects to your application.
 
diff --git a/docs/data/using-a-record-view-mfc-data-access.md b/docs/data/using-a-record-view-mfc-data-access.md
index 18724bc75b..6cb21b3e69 100644
--- a/docs/data/using-a-record-view-mfc-data-access.md
+++ b/docs/data/using-a-record-view-mfc-data-access.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: Using a Record View  (MFC Data Access)"
-title: "Using a Record View  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Using a Record View (MFC Data Access)"
+description: "Learn more about: Using a Record View (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views, customizing default code"]
-ms.assetid: 91f2828f-0666-4273-ae28-e4703fd98521
+ms.topic: concept-article
 ---
-# Using a Record View  (MFC Data Access)
+# Using a Record View (MFC Data Access)
 
 This topic explains how you might commonly customize the default code for record views that the wizard writes for you. Typically, you want to constrain the record selection with a [filter](../data/odbc/recordset-filtering-records-odbc.md) or [parameters](../data/odbc/recordset-parameterizing-a-recordset-odbc.md), perhaps [sort](../data/odbc/recordset-sorting-records-odbc.md) the records, customize the SQL statement.
 
diff --git a/docs/data/your-role-in-working-with-a-record-view-mfc-data-access.md b/docs/data/your-role-in-working-with-a-record-view-mfc-data-access.md
index be06ed8b28..f88cfad605 100644
--- a/docs/data/your-role-in-working-with-a-record-view-mfc-data-access.md
+++ b/docs/data/your-role-in-working-with-a-record-view-mfc-data-access.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Your Role in Working with a Record View  (MFC Data Access)"
-title: "Your Role in Working with a Record View  (MFC Data Access)"
-ms.date: "11/04/2016"
+title: "Your Role in Working with a Record View (MFC Data Access)"
+description: "Learn more about: Your Role in Working with a Record View (MFC Data Access)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["record views, customizing default code", "MFC, record views"]
-ms.assetid: 691e89a5-ff21-4ca3-9278-69d4678288bb
 ---
-# Your Role in Working with a Record View  (MFC Data Access)
+# Your Role in Working with a Record View (MFC Data Access)
 
 The following table shows what you typically must do to work with a record view and what the framework does for you.
 
diff --git a/docs/docfx.json b/docs/docfx.json
index 52f700e084..1621b18044 100644
--- a/docs/docfx.json
+++ b/docs/docfx.json
@@ -42,7 +42,7 @@
       "ROBOTS": "INDEX,FOLLOW",
       "manager": "coxford",
       "ms.date": "11/16/2016",
-      "ms.topic": "conceptual",
+      "ms.topic": "article",
       "audience": "developer",
       "ms.service": "visual-cpp",
       "ms.tgt_pltfrm": "Windows",
@@ -50,7 +50,6 @@
         "cplusplus"
       ],
       "dev_langs": [
-        "C++",
         "cpp"
       ],
       "searchScope": [
@@ -103,6 +102,7 @@
         "atl/reference/**.md": "reference",
         "atl-mfc-shared/**.md": "reference",
         "build/reference/**.md": "reference",
+        "build-insights/reference/sdk/c-event-data-types/**.md": "reference",
         "c-language/**.md": "language-reference",
         "c-runtime-library/**.md": "reference",
         "c-runtime-library/reference/**.md": "reference",
@@ -111,6 +111,7 @@
         "cppcx/**.md": "language-reference",
         "data/oledb/**.md": "reference",
         "error-messages/**.md": "error-reference",
+        "ide/refactoring/**.md": "how-to",
         "extensions/**.md": "reference",
         "intrinsics/**.md": "reference",
         "mfc/reference/**.md": "reference",
@@ -122,7 +123,8 @@
         "safeint/**.md": "reference",
         "sanitizers/**.md": "reference",
         "standard-library/**.md": "reference",
-        "windows/attributes/**.md": "reference"
+        "windows/attributes/**.md": "reference",
+        "**/how-to*.md": "how-to"
       },
       "ms.subservice": {
         "assembler/**.md": "masm",
@@ -140,6 +142,7 @@
         "cross-platform/**.md": "tools",
         "data/**.md": "data-access",
         "dotnet/**.md": "cli-lang",
+        "embedded/**.md": "tools",
         "error-messages/**.md": "errors-warnings",
         "extensions/**.md": "cli-lang",
         "get-started/**.md": "cpp-lang",
@@ -167,7 +170,7 @@
         "atl/**.md": "tylermsft",
         "atl-mfc-shared/**.md": "tylermsft",
         "build/**.md": "tylermsft",
-        "build-insights/**.md": "kevcadieux",
+        "build-insights/**.md": "tylermsft",
         "c-language/**.md": "tylermsft",
         "c-runtime-library/**.md": "tylermsft",
         "cloud/**.md": "tylermsft",
@@ -204,7 +207,7 @@
         "atl-mfc-shared/**.md": "twhitney",
         "attributes/**.md": "twhitney",
         "build/**.md": "twhitney",
-        "build-insights/**.md": "kevca",
+        "build-insights/**.md": "twhitney",
         "c-language/**.md": "twhitney",
         "c-runtime-library/**.md": "twhitney",
         "cloud/**.md": "twhitney",
diff --git a/docs/dotnet/auto-gcroot-class.md b/docs/dotnet/auto-gcroot-class.md
index 00b3976e16..0998fb9476 100644
--- a/docs/dotnet/auto-gcroot-class.md
+++ b/docs/dotnet/auto-gcroot-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: auto_gcroot Class"
 title: "auto_gcroot Class"
-ms.date: "01/16/2019"
+description: "Learn more about: auto_gcroot Class"
+ms.date: 01/16/2019
 ms.topic: "reference"
 f1_keywords: ["msclr::auto_gcroot::auto_gcroot", "msclr::auto_gcroot::attach", "msclr::auto_gcroot::get", "msclr::auto_gcroot::release", "msclr::auto_gcroot::reset", "msclr::auto_gcroot::swap", "msclr::auto_gcroot::operator=", "msclr::auto_gcroot::operator->", "msclr::auto_gcroot::operator!", "msclr::auto_gcroot::operator auto_gcroot"]
 helpviewer_keywords: ["msclr::auto_gcroot"]
-ms.assetid: b5790912-265d-463e-a486-47302e91042a
 ---
 # auto_gcroot Class
 
@@ -20,7 +19,7 @@ class auto_gcroot;
 
 ### Parameters
 
-*_element_type*<br/>
+*_element_type*\
 The managed type to be embedded.
 
 ## Members
@@ -30,8 +29,7 @@ The managed type to be embedded.
 |Name|Description|
 |---------|-----------|
 |[auto_gcroot::auto_gcroot](#auto-gcroot)|The `auto_gcroot` constructor.|
-|[auto_gcroot::~auto_gcroot](#tilde-auto-gcroot)|The `auto_gcroot` destructor.
-|
+|[auto_gcroot::~auto_gcroot](#tilde-auto-gcroot)|The `auto_gcroot` destructor.|
 
 ### Public methods
 
@@ -49,8 +47,8 @@ The managed type to be embedded.
 |---------|-----------|
 |[`auto_gcroot::operator->`](#operator-arrow)|The member access operator.|  
 |[auto_gcroot::operator=](#operator-assign)|Assignment operator.|
-|[auto_gcroot::operator&nbsp;auto_gcroot](#operator-auto-gcroot)|Type-cast operator between `auto_gcroot` and compatible types.|
-|[auto_gcroot::operator&nbsp;bool](#operator-bool)|Operator for using `auto_gcroot` in a conditional expression.|  
+|[auto_gcroot::operator auto_gcroot](#operator-auto-gcroot)|Type-cast operator between `auto_gcroot` and compatible types.|
+|[auto_gcroot::operator bool](#operator-bool)|Operator for using `auto_gcroot` in a conditional expression.|  
 |[auto_gcroot::operator!](#operator-logical-not)|Operator for using `auto_gcroot` in a conditional expression.|
 
 ## Requirements
@@ -78,10 +76,10 @@ auto_gcroot(
 
 ### Parameters
 
-*_ptr*<br/>
+*_ptr*\
 The object to own.
 
-*_right*<br/>
+*_right*\
 An existing `auto_gcroot`.
 
 ### Remarks
@@ -241,7 +239,7 @@ auto_gcroot<_element_type> & attach(
 
 ### Parameters
 
-*_right*<br/>
+*_right*\
 The object to attach, or an `auto_gcroot` containing the object to attach.
 
 ### Return value
@@ -452,7 +450,7 @@ void reset(
 
 ### Parameters
 
-*_new_ptr*<br/>
+*_new_ptr*\
 (Optional) The new object.
 
 ### Example
@@ -517,7 +515,7 @@ void swap(
 
 ### Parameters
 
-*_right*<br/>
+*_right*\
 The `auto_gcroot` with which to swap objects.
 
 ### Example
@@ -615,7 +613,7 @@ auto_gcroot<_element_type> & operator=(
 
 ### Parameters
 
-*_right*<br/>
+*_right*\
 The object or `auto_gcroot` to be assigned to the current `auto_gcroot`.
 
 ### Return value
diff --git a/docs/dotnet/auto-handle-class.md b/docs/dotnet/auto-handle-class.md
index cf238bd76d..8363250a9a 100644
--- a/docs/dotnet/auto-handle-class.md
+++ b/docs/dotnet/auto-handle-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: auto_handle Class"
 title: "auto_handle Class"
-ms.date: "01/16/2019"
+description: "Learn more about: auto_handle Class"
+ms.date: 01/16/2019
 ms.topic: "reference"
 f1_keywords: ["msclr::auto_handle::auto_handle", "msclr::auto_handle::get", "msclr::auto_handle::release", "msclr::auto_handle::reset", "msclr::auto_handle::swap", "msclr::auto_handle::operator->", "msclr::auto_handle::operator=", "msclr::auto_handle::operator auto_handle", "msclr::auto_handle::operator!"]
 helpviewer_keywords: ["msclr::auto_handle class"]
-ms.assetid: a65604d1-ecbb-44fd-ae2f-696ddeeed9d6
 ---
 # auto_handle Class
 
@@ -25,14 +24,14 @@ The managed type to be embedded.
 
 ## <a name="members"></a> Members
 
-### Public constructors  
+### Public constructors
 
 |Name|Description|  
 |---------|-----------|  
 |[auto_handle::auto_handle](#auto-handle)|The `auto_handle` constructor.|  
 |[auto_handle::~auto_handle](#tilde-auto-handle)|The `auto_handle` destructor.|  
 
-### Public methods  
+### Public methods
 
 |Name|Description|  
 |---------|-----------|  
diff --git a/docs/dotnet/avoiding-exceptions-on-clr-shutdown-when-consuming-com-objects-built-with-clr.md b/docs/dotnet/avoiding-exceptions-on-clr-shutdown-when-consuming-com-objects-built-with-clr.md
index 3959e713c6..bc10b85fb9 100644
--- a/docs/dotnet/avoiding-exceptions-on-clr-shutdown-when-consuming-com-objects-built-with-clr.md
+++ b/docs/dotnet/avoiding-exceptions-on-clr-shutdown-when-consuming-com-objects-built-with-clr.md
@@ -4,6 +4,7 @@ title: "Avoiding Exceptions thrown by COM Objects Built with -clr"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["interop [C++], CLR shutdown exceptions", "/clr compiler option [C++], CLR shutdown exceptions", "mixed assemblies [C++], CLR shutdown exceptions", "/clr compiler option [C++], COM objects", "interoperability [C++], CLR shutdown exceptions", "CLR shutdown exceptions [C++]"]
 ms.assetid: 41249d83-4b51-4e46-866f-27f475f2498c
+ms.topic: concept-article
 ---
 # Avoiding Exceptions on CLR Shutdown When Consuming COM Objects Built with /clr
 
diff --git a/docs/dotnet/boxing-cpp-cli.md b/docs/dotnet/boxing-cpp-cli.md
index e012f8806e..f57d3ad892 100644
--- a/docs/dotnet/boxing-cpp-cli.md
+++ b/docs/dotnet/boxing-cpp-cli.md
@@ -3,6 +3,7 @@ description: "Learn more about: Boxing (C++/CLI)"
 title: "Boxing (C++/CLI)"
 ms.date: "11/04/2016"
 ms.assetid: f4ee27a8-6a34-432d-b9ec-39285d513b23
+ms.topic: concept-article
 ---
 # Boxing (C++/CLI)
 
diff --git a/docs/dotnet/calling-native-functions-from-managed-code.md b/docs/dotnet/calling-native-functions-from-managed-code.md
index fd914a432a..78930676f7 100644
--- a/docs/dotnet/calling-native-functions-from-managed-code.md
+++ b/docs/dotnet/calling-native-functions-from-managed-code.md
@@ -4,6 +4,7 @@ title: "Calling Native Functions from Managed Code"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["native functions called from managed code [C++]", "managed code [C++], interoperability", "platform invoke [C++], interoperability", "interoperabiliy [C++], calling native functions from managed code", "calling native functions from managed code", "interop [C++], calling native functions from managed code"]
 ms.assetid: 982cef18-20d9-42b4-8242-a77fa65f2e36
+ms.topic: concept-article
 ---
 # Calling Native Functions from Managed Code
 
diff --git a/docs/dotnet/com-ptr-class.md b/docs/dotnet/com-ptr-class.md
index 047e349179..e72c3f8d9e 100644
--- a/docs/dotnet/com-ptr-class.md
+++ b/docs/dotnet/com-ptr-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: com::ptr Class"
 title: "com::ptr Class"
-ms.date: "01/16/2019"
+description: "Learn more about: com::ptr Class"
+ms.date: 01/16/2019
 ms.topic: "reference"
 f1_keywords: ["msclr::com::ptr::ptr", "msclr::com::ptr::Attach", "msclr::com::ptr::CreateInstance", "msclr::com::ptr::Detach", "msclr::com::ptr::GetInterface", "msclr::com::ptr::QueryInterface", "msclr::com::ptr::Release", "msclr::com::ptr::operator=", "msclr::com::ptr::operator->", "msclr::com::ptr::operator!"]
 helpviewer_keywords: ["msclr::ptr class"]
-ms.assetid: 0144d0e4-919c-45f9-a3f8-fbc9edba32bf
 ---
 # com::ptr Class
 
@@ -173,7 +172,7 @@ int main() {
 |---------|-----------|
 |[`ptr::operator->`](#operator-arrow)|Member access operator, used to call methods on the owned COM object.|
 |[ptr::operator=](#operator-assign)|Attaches a COM object to a `com::ptr`.|
-|[ptr::operator&nbsp;bool](#operator-bool)|Operator for using `com::ptr` in a conditional expression.|
+|[ptr::operator bool](#operator-bool)|Operator for using `com::ptr` in a conditional expression.|
 |[ptr::operator!](#operator-logical-not)|Operator to determine if the owned COM object is invalid.|
 
 ## Requirements
diff --git a/docs/dotnet/converting-projects-from-mixed-mode-to-pure-intermediate-language.md b/docs/dotnet/converting-projects-from-mixed-mode-to-pure-intermediate-language.md
index e035e617f9..4f62d8f01c 100644
--- a/docs/dotnet/converting-projects-from-mixed-mode-to-pure-intermediate-language.md
+++ b/docs/dotnet/converting-projects-from-mixed-mode-to-pure-intermediate-language.md
@@ -3,6 +3,7 @@ description: "Learn more about: Converting projects from mixed mode to pure inte
 title: "Converting projects from mixed mode to pure intermediate language"
 ms.date: 04/15/2021
 helpviewer_keywords: ["intermediate language, mixed-mode applications", "mixed-mode applications", "mixed-mode applications, intermediate language", "projects [C++], converting to intermediate language"]
+ms.topic: how-to
 ---
 # Converting projects from mixed mode to pure intermediate language
 
diff --git a/docs/dotnet/create-a-partially-trusted-application.md b/docs/dotnet/create-a-partially-trusted-application.md
index 5e0a343494..9d24f2ea68 100644
--- a/docs/dotnet/create-a-partially-trusted-application.md
+++ b/docs/dotnet/create-a-partially-trusted-application.md
@@ -5,6 +5,7 @@ ms.custom: "get-started-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["partially trusted applications [C++]", "mixed assemblies [C++], partially trusted applications", "msvcm90[d].dll", "interoperability [C++], partially trusted applications", "interop [C++], partially trusted applications", "/clr compiler option [C++], partially trusted applications"]
 ms.assetid: 4760cd0c-4227-4f23-a7fb-d25b51bf246e
+ms.topic: how-to
 ---
 # How to: Create a Partially Trusted Application by Removing Dependency on the CRT Library DLL
 
diff --git a/docs/dotnet/data-access-using-adonet-cpp-cli.md b/docs/dotnet/data-access-using-adonet-cpp-cli.md
index 73c3d4e6c8..69724de4d5 100644
--- a/docs/dotnet/data-access-using-adonet-cpp-cli.md
+++ b/docs/dotnet/data-access-using-adonet-cpp-cli.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Data Access Using ADO.NET (C++/CLI)"
 title: "Data Access Using ADO.NET (C++/CLI)"
+description: "Learn more about: Data Access Using ADO.NET (C++/CLI)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ADO.NET [C++]", ".NET Framework [C++], data access", "databases [C++], accessing in C++", "data access [C++], ADO.NET", "data [C++], ADO.NET", "native strings [C++]", "ADO.NET [C++], marshaling ANSI strings", "strings [C++], ADO.NET", "BSTRs, strings", "ADO.NET [C++], marshaling BSTR strings", "strings [C++], marshaling BSTR strings", "ADO.NET [C++], marshaling Unicode strings", "Unicode [C++], strings", "strings [C++], Unicode", "VARIANT, marshaling", "ADO.NET [C++], marshaling VARIANT types", "VARIANT", "SAFEARRAY, marshaling", "ADO.NET [C++], marshaling SAFEARRAY types"]
-ms.assetid: b0cd987d-1ea7-4f76-ba01-cbd52503d06d
 ---
 # Data Access Using ADO.NET (C++/CLI)
 
@@ -152,7 +151,7 @@ The rest of the code in this example is native C++ code, as is indicated by the
 > [!NOTE]
 > The memory allocated by <xref:System.Runtime.InteropServices.Marshal.StringToBSTR%2A> must be deallocated by calling either <xref:System.Runtime.InteropServices.Marshal.FreeBSTR%2A> or `SysFreeString`.
 
-``` cpp
+```cpp
 // adonet_marshal_string_bstr.cpp
 // compile with: /clr /FU System.dll /FU System.Data.dll /FU System.Xml.dll
 #include <comdef.h>
diff --git a/docs/dotnet/debug-class-cpp-cli.md b/docs/dotnet/debug-class-cpp-cli.md
index f4f8da1750..5230757827 100644
--- a/docs/dotnet/debug-class-cpp-cli.md
+++ b/docs/dotnet/debug-class-cpp-cli.md
@@ -4,6 +4,7 @@ title: "Debug Class (C++/CLI)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Trace class, Visual C++", ".NET Framework [C++], Debug class", "Debug class"]
 ms.assetid: 076bd528-1b6f-4e8a-a372-eb5849cf969a
+ms.topic: how-to
 ---
 # Debug Class (C++/CLI)
 
diff --git a/docs/dotnet/deque-stl-clr.md b/docs/dotnet/deque-stl-clr.md
index b7e7be166a..9961dd1c21 100644
--- a/docs/dotnet/deque-stl-clr.md
+++ b/docs/dotnet/deque-stl-clr.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: deque (STL/CLR)"
 title: "deque (STL/CLR)"
+description: "Learn more about: deque (STL/CLR)"
 ms.date: "11/04/2016"
 ms.topic: "reference"
 f1_keywords: ["cliext::deque", "cliext::deque::assign", "cliext::deque::at", "cliext::deque::back", "cliext::deque::back_item", "cliext::deque::begin", "cliext::deque::clear", "cliext::deque::const_iterator", "cliext::deque::const_reference", "cliext::deque::const_reverse_iterator", "cliext::deque::deque", "cliext::deque::difference_type", "cliext::deque::empty", "cliext::deque::end", "cliext::deque::erase", "cliext::deque::front", "cliext::deque::front_item", "cliext::deque::generic_container", "cliext::deque::generic_iterator", "cliext::deque::generic_reverse_iterator", "cliext::deque::generic_value", "cliext::deque::insert", "cliext::deque::iterator", "cliext::deque::operator!=", "cliext::deque::operator[]", "cliext::deque::pop_back", "cliext::deque::pop_front", "cliext::deque::push_back", "cliext::deque::push_front", "cliext::deque::rbegin", "cliext::deque::reference", "cliext::deque::rend", "cliext::deque::resize", "cliext::deque::reverse_iterator", "cliext::deque::size", "cliext::deque::size_type", "cliext::deque::swap", "cliext::deque::to_array", "cliext::deque::value_type", "cliext::deque::operator<", "cliext::deque::operator<=", "cliext::deque::operator=", "cliext::deque::operator==", "cliext::deque::operator>", "cliext::deque::operator>="]
 helpviewer_keywords: ["deque class [STL/CLR]", "<deque> header [STL/CLR]", "<cliext/deque> header [STL/CLR]", "assign member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "deque member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator!= member [STL/CLR]", "operator member [] [STL/CLR]", "pop_back member [STL/CLR]", "pop_front member [STL/CLR]", "push_back member [STL/CLR]", "push_front member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator= member [STL/CLR]", "operator== member [STL/CLR]", "operator> member [STL/CLR]", "operator>= member [STL/CLR]"]
-ms.assetid: dd669da3-3c0e-45e9-8596-f6b483720941
 ---
 # deque (STL/CLR)
 
@@ -561,7 +560,7 @@ a b c
 
 ## <a name="const_reverse_iterator"></a> deque::const_reverse_iterator (STL/CLR)
 
-The type of a constant reverse iterator for the controlled sequence..
+The type of a constant reverse iterator for the controlled sequence.
 
 ### Syntax
 
diff --git a/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md b/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md
index 2109d30ace..5306b90a11 100644
--- a/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md
+++ b/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md
@@ -1,11 +1,15 @@
 ---
 title: ".NET programming with C++/CLI"
 description: "Learn how to use C++/CLI to create .NET apps and components in Visual Studio."
-ms.date: 10/28/2021
+ms.date: 05/02/2025
 helpviewer_keywords: ["programming [C++], .NET programming", ".NET Framework [C++]", ".NET applications [C++]", "Visual C++, .NET programming"]
 ---
 # .NET programming with C++/CLI
 
+C++/CLI supplanted Managed C++. C++/CLI is a language specification created by Microsoft that extends C++ to support .NET. It's only supported on Windows. It's not for writing [WinUI](/windows/apps/winui) or Universal Windows Platform [UWP](/windows/uwp/get-started/universal-application-platform-guide) Windows Runtime (WinRT) apps. It's for writing .NET applications and components that run on .NET. C++/CLI is a bridge between native C++ code and managed code. It allows you to use existing C++ libraries in .NET applications and to write new .NET applications in C++.
+
+Microsoft provides C++/WinRT for writing WinUI and WinRT apps. It's an entirely standard modern C++17 language projection for Windows Runtime (WinRT) APIs. For more information about using C++ with the Windows Runtime (WinRT), see [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/).
+
 ::: moniker range="msvc-140"
 
 By default, CLR projects created with Visual Studio 2015 target .NET Framework 4.5.2. You can target .NET Framework 4.6 when you create a new project. In the **New Project** dialog, change the target framework in the dropdown at the top middle of the dialog. To change the target framework for an existing project, close the project, edit the project file (*`.vcxproj`*), and change the value of the Target Framework Version to 4.6. The changes take effect the next time you open the project.
@@ -41,40 +45,23 @@ C++/CLI itself isn't installed by default when you install a Visual Studio C++ w
 
 ## In this section
 
-[C++/CLI tasks](../dotnet/cpp-cli-tasks.md)
-
-[Native and .NET interoperability](../dotnet/native-and-dotnet-interoperability.md)
-
-[Pure and verifiable code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md)
-
-[Regular expressions (C++/CLI)](../dotnet/regular-expressions-cpp-cli.md)
-
-[File handling and I/O (C++/CLI)](../dotnet/file-handling-and-i-o-cpp-cli.md)
-
-[Graphics operations (C++/CLI)](../dotnet/graphics-operations-cpp-cli.md)
-
-[Windows operations (C++/CLI)](../dotnet/windows-operations-cpp-cli.md)
-
-[Data access using ADO.NET (C++/CLI)](../dotnet/data-access-using-adonet-cpp-cli.md)
-
-[Interoperability with other .NET languages (C++/CLI)](../dotnet/interoperability-with-other-dotnet-languages-cpp-cli.md)
-
-[Serialization (C++/CLI)](../dotnet/serialization-cpp-cli.md)
-
-[Managed types (C++/CLI)](../dotnet/managed-types-cpp-cli.md)
-
-[Reflection (C++/CLI)](../dotnet/reflection-cpp-cli.md)
-
-[Strong Name assemblies (assembly signing) (C++/CLI)](../dotnet/strong-name-assemblies-assembly-signing-cpp-cli.md)
-
-[Debug class (C++/CLI)](../dotnet/debug-class-cpp-cli.md)
-
-[STL/CLR library reference](../dotnet/stl-clr-library-reference.md)
-
-[C++ support library](../dotnet/cpp-support-library.md)
-
-[Exceptions in C++/CLI](../dotnet/exceptions-in-cpp-cli.md)
-
+[C++/CLI tasks](../dotnet/cpp-cli-tasks.md)\
+[Native and .NET interoperability](../dotnet/native-and-dotnet-interoperability.md)\
+[Pure and verifiable code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md)\
+[Regular expressions (C++/CLI)](../dotnet/regular-expressions-cpp-cli.md)\
+[File handling and I/O (C++/CLI)](../dotnet/file-handling-and-i-o-cpp-cli.md)\
+[Graphics operations (C++/CLI)](../dotnet/graphics-operations-cpp-cli.md)\
+[Windows operations (C++/CLI)](../dotnet/windows-operations-cpp-cli.md)\
+[Data access using ADO.NET (C++/CLI)](../dotnet/data-access-using-adonet-cpp-cli.md)\
+[Interoperability with other .NET languages (C++/CLI)](../dotnet/interoperability-with-other-dotnet-languages-cpp-cli.md)\
+[Serialization (C++/CLI)](../dotnet/serialization-cpp-cli.md)\
+[Managed types (C++/CLI)](../dotnet/managed-types-cpp-cli.md)\
+[Reflection (C++/CLI)](../dotnet/reflection-cpp-cli.md)\
+[Strong Name assemblies (assembly signing) (C++/CLI)](../dotnet/strong-name-assemblies-assembly-signing-cpp-cli.md)\
+[Debug class (C++/CLI)](../dotnet/debug-class-cpp-cli.md)\
+[STL/CLR library reference](../dotnet/stl-clr-library-reference.md)\
+[C++ support library](../dotnet/cpp-support-library.md)\
+[Exceptions in C++/CLI](../dotnet/exceptions-in-cpp-cli.md)\
 [Boxing (C++/CLI)](../dotnet/boxing-cpp-cli.md)
 
 ## See also
diff --git a/docs/dotnet/double-thunking-cpp.md b/docs/dotnet/double-thunking-cpp.md
index f8b13c40ff..345eb179e6 100644
--- a/docs/dotnet/double-thunking-cpp.md
+++ b/docs/dotnet/double-thunking-cpp.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Double Thunking (C++)"
 title: "Double Thunking (C++)"
-ms.date: "11/04/2016"
+description: "Learn more about: Double Thunking (C++)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["double thunks", "interop [C++], double thunking", "mixed assemblies [C++], double thunking", "/clr compiler option [C++], double thunking", "interoperability [C++], double thunking"]
-ms.assetid: a85090b2-dc3c-498a-b40c-340db229dd6f
+ms.topic: how-to
 ---
 # Double Thunking (C++)
 
@@ -51,7 +51,7 @@ struct T {
 };
 
 struct S {
-   virtual void /* __clrcall */ f(T t) {};
+   virtual void /* __clrcall */ f(T t) {}
 } s;
 
 int main() {
@@ -100,7 +100,7 @@ struct T {
 };
 
 struct S {
-   virtual void /* __clrcall */ f(T t) {};
+   virtual void /* __clrcall */ f(T t) {}
 } s;
 
 int main() {
diff --git a/docs/dotnet/file-handling-and-i-o-cpp-cli.md b/docs/dotnet/file-handling-and-i-o-cpp-cli.md
index dba79da1ef..b19777bddd 100644
--- a/docs/dotnet/file-handling-and-i-o-cpp-cli.md
+++ b/docs/dotnet/file-handling-and-i-o-cpp-cli.md
@@ -4,6 +4,7 @@ title: "File Handling and I-O (C++/CLI)"
 ms.date: "11/04/2016"
 helpviewer_keywords: [".NET Framework [C++], file handling", "files [C++], .NET Framework and", "I/O [C++], .NET Framework applications", ".NET Framework [C++], I/O", "files [C++], listing files", "directories [C++], listing files", "monitoring file system events", "FileSystemWatcher class, examples", "examples [C++], monitoring file system changes", "events [C++], monitoring", "file system events [C++]", "files [C++], binary", "binary files, reading in C++", "reading text files", "text files, reading", "files [C++], retrieving information about", "FileInfo class", "binary files, writing in C++", "files [C++], binary", "files [C++], text", "text files, writing in C++"]
 ms.assetid: 3296fd59-a83a-40d4-bd4a-6096cc13101b
+ms.topic: how-to
 ---
 # File Handling and I/O (C++/CLI)
 
diff --git a/docs/dotnet/functional-stl-clr.md b/docs/dotnet/functional-stl-clr.md
index fcb52b4c31..a47621cd29 100644
--- a/docs/dotnet/functional-stl-clr.md
+++ b/docs/dotnet/functional-stl-clr.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: functional (STL/CLR)"
 title: "functional (STL/CLR)"
+description: "Learn more about: functional (STL/CLR)"
 ms.date: 09/28/2022
 ms.topic: "reference"
 f1_keywords: ["<cliext/functional>", "cliext::binary_delegate", "cliext::binary_delegate_noreturn", "cliext::binary_negate", "cliext::bind1st", "cliext::bind2nd", "cliext::binder1st", "cliext::binder2nd", "cliext::divides", "cliext::equal_to", "cliext::greater", "cliext::greater_equal", "cliext::less", "cliext::less_equal", "cliext::logical_and", "cliext::logical_not", "cliext::logical_or", "cliext::minus", "cliext::modulus", "cliext::multiplies", "cliext::negate", "cliext::not_equal_to", "cliext::not1", "cliext::not2", "cliext::plus", "cliext::unary_delegate", "cliext::unary_delegate_noreturn", "cliext::unary_negate"]
 helpviewer_keywords: ["<functional> header [STL/CLR]", "<cliext/functional> header [STL/CLR]", "functional functions [STL/CLR]", "binary_delegate function [STL/CLR]", "binary_delegate_noreturn function [STL/CLR]", "binary_negate function [STL/CLR]", "bind1st function [STL/CLR]", "bind2nd function [STL/CLR]", "binder1st function [STL/CLR]", "binder2nd function [STL/CLR]", "divides function [STL/CLR]", "equal_to function [STL/CLR]", "greater function [STL/CLR]", "greater_equal function [STL/CLR]", "less function [STL/CLR]", "less_equal function [STL/CLR]", "logical_and function [STL/CLR]", "logical_not function [STL/CLR]", "logical_or function [STL/CLR]", "minus function [STL/CLR]", "modulus function [STL/CLR]", "multiplies function [STL/CLR]", "negate function [STL/CLR]", "not_equal_to function [STL/CLR]", "not1 function [STL/CLR]", "not2 function [STL/CLR]", "plus function [STL/CLR]", "unary_delegate function [STL/CLR]", "unary_delegate_noreturn function [STL/CLR]", "unary_negate function [STL/CLR]"]
-ms.assetid: 88738b8c-5d37-4375-970e-a4442bf5efde
 ---
 # `functional` (STL/CLR)
 
@@ -499,7 +498,7 @@ public:
     typedef Fun stored_function_type;
     typedef typename Fun::first_argument_type first_argument_type;
     typedef typename Fun::second_argument_type second_argument_type;
-    typedef typename Fun:result_type result_type;
+    typedef typename Fun::result_type result_type;
     typedef Microsoft::VisualC::StlClr::UnaryDelegate<
         second_argument_type, result_type>
         delegate_type;
@@ -604,7 +603,7 @@ public:
     typedef Fun stored_function_type;
     typedef typename Fun::first_argument_type first_argument_type;
     typedef typename Fun::second_argument_type second_argument_type;
-    typedef typename Fun:result_type result_type;
+    typedef typename Fun::result_type result_type;
     typedef Microsoft::VisualC::StlClr::UnaryDelegate<
         first_argument_type, result_type>
         delegate_type;
diff --git a/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md b/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md
index 14d59ab612..8c35fc41ed 100644
--- a/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md
+++ b/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md
@@ -1,15 +1,15 @@
 ---
-description: "Learn more about: Hosting a Windows Form User Control as an MFC Dialog Box"
 title: "Hosting a Windows Form User Control as an MFC Dialog Box"
-ms.date: "11/04/2016"
+description: "Learn more about: Hosting a Windows Form User Control as an MFC Dialog Box"
+ms.date: 11/04/2016
 helpviewer_keywords: ["MFC [C++], Windows Forms support", "Windows Forms [C++], hosting as MFC Dialog", "hosting Windows Forms control [C++]"]
-ms.assetid: 0434a9d7-8b14-48e6-ad69-9ba9a684677a
+ms.topic: how-to
 ---
 # Hosting a Windows Form User Control as an MFC Dialog Box
 
-MFC provides the template class [CWinFormsDialog](../mfc/reference/cwinformsdialog-class.md) so that you can host a Windows Forms user control (<xref:System.Windows.Forms.UserControl>) in a modal or modeless MFC dialog box. `CWinFormsDialog` is derived from the MFC class [CDialog](../mfc/reference/cdialog-class.md), so the dialog box can be launched as modal or modeless.
+MFC provides the template class [`CWinFormsDialog`](../mfc/reference/cwinformsdialog-class.md) so that you can host a Windows Forms user control (<xref:System.Windows.Forms.UserControl>) in a modal or modeless MFC dialog box. `CWinFormsDialog` is derived from the MFC class [`CDialog`](../mfc/reference/cdialog-class.md), so the dialog box can be launched as modal or modeless.
 
-The process that `CWinFormsDialog` uses to host the user control is the similar to that described in [Hosting a Windows Form User Control in an MFC Dialog Box](../dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md). However, `CWinFormsDialog` manages the initialization and hosting of the user control so that it does not have to be programmed manually.
+The process that `CWinFormsDialog` uses to host the user control is similar to that described in [Hosting a Windows Form User Control in an MFC Dialog Box](hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md). However, `CWinFormsDialog` manages the initialization and hosting of the user control so that it does not have to be programmed manually.
 
 ### To create the MFC host application
 
@@ -17,7 +17,7 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
 
    On the **File** menu, select **New**, and then click **Project**. In the **Visual C++** folder, select **MFC Application**.
 
-   In the **Name** box, enter `MFC03` and change the Solution setting to **Add to Solution**.Click **OK**.
+   In the **Name** box, enter `MFC03` and change the Solution setting to **Add to Solution**. Click **OK**.
 
    In the **MFC Application Wizard**, accept all the defaults, and then click **Finish**. This creates an MFC application with a Multiple Document Interface.
 
@@ -29,21 +29,21 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
 
 1. Add a reference to the .NET control.
 
-   In **Solution Explorer**, right-click the **MFC03** project node and choose **Add**, **References**. In the **Property Page**, click **Add New Reference**, select WindowsControlLibrary1 (under the **Projects** tab), and click **OK**. This adds a reference in the form of a [/FU](../build/reference/fu-name-forced-hash-using-file.md) compiler option so that the program will compile; it also copies WindowsControlLibrary1.dll into the `MFC03` project directory so that the program will run.
+   In **Solution Explorer**, right-click the **MFC03** project node and choose **Add**, **References**. In the **Property Page**, click **Add New Reference**, select WindowsControlLibrary1 (under the **Projects** tab), and click **OK**. This adds a reference in the form of a [`/FU`](../build/reference/fu-name-forced-hash-using-file.md) compiler option so that the program will compile; it also copies `WindowsControlLibrary1.dll` into the `MFC03` project directory so that the program will run.
 
 1. Add `#include <afxwinforms.h>` to *pch.h* (*stdafx.h* in Visual Studio 2017 and earlier), at the end of the existing `#include` statements.
 
 1. Add a new class that subclasses `CDialog`.
 
-   Right click on project name and add an MFC class (called CHostForWinForm) that subclasses `CDialog`. Since you do not need the dialog box resource, you can delete the resource ID (select **Resource View**, expand the **Dialog** folder and delete `IDD_HOSTFORWINFORM` resource.  Then, remove any references to the ID in code.).
+   Right click on project name and add an MFC class (called `CHostForWinForm`) that subclasses `CDialog`. Since you do not need the dialog box resource, you can delete the resource ID (select **Resource View**, expand the **Dialog** folder and delete `IDD_HOSTFORWINFORM` resource.  Then, remove any references to the ID in code.).
 
-1. Replace `CDialog` in CHostForWinForm.h and CHostForWinForm.cpp files with `CWinFormsDialog<WindowsControlLibrary1::UserControl1>`.
+1. Replace `CDialog` in `CHostForWinForm.h` and `CHostForWinForm.cpp` files with `CWinFormsDialog<WindowsControlLibrary1::UserControl1>`.
 
-1. Call DoModal on the CHostForWinForm class.
+1. Call `DoModal` on the `CHostForWinForm` class.
 
-   In MFC03.cpp, add `#include "HostForWinForm.h"`.
+   In `MFC03.cpp`, add `#include "HostForWinForm.h"`.
 
-   Before the return statement in the definition of CMFC03App::InitInstance, add:
+   Before the return statement in the definition of `CMFC03App::InitInstance`, add:
 
     ```cpp
     CHostForWinForm m_HostForWinForm;
@@ -58,15 +58,15 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
 
    Next you will add code to monitor the state of a control on the Windows Forms from the MFC application.
 
-1. Add a handler for OnInitDialog.
+1. Add a handler for `OnInitDialog`.
 
-   Display the **Properties** window (F4). In **Class View**, select CHostForWinForm. In the **Properties** window, select overrides and in the row for OnInitDialog, click in the left hand column and select \< Add >. This adds the following line to CHostForWinForm.h:
+   Display the **Properties** window (F4). In **Class View**, select `CHostForWinForm`. In the **Properties** window, select overrides and in the row for `OnInitDialog`, click in the left hand column and select \< Add >. This adds the following line to `CHostForWinForm.h`:
 
     ```cpp
     virtual BOOL OnInitDialog();
     ```
 
-1. Define OnInitDialog (in CHostForWinForm.cpp) as follows:
+1. Define `OnInitDialog` (in `CHostForWinForm.cpp`) as follows:
 
     ```cpp
     BOOL CHostForWinForm::OnInitDialog() {
@@ -76,7 +76,7 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
     }
     ```
 
-1. Next add the OnButton1 handler. Add the following lines to the public section of the CHostForWinForm class in CHostForWinForm.h:
+1. Next add the `OnButton1` handler. Add the following lines to the public section of the `CHostForWinForm` class in `CHostForWinForm.h`:
 
     ```cpp
     virtual void OnButton1( System::Object^ sender, System::EventArgs^ e );
@@ -86,7 +86,7 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
     END_DELEGATE_MAP()
     ```
 
-   In CHostForWinForm.cpp, add this definition:
+   In `CHostForWinForm.cpp`, add this definition:
 
     ```cpp
     void CHostForWinForm::OnButton1( System::Object^ sender, System::EventArgs^ e )
@@ -99,13 +99,13 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
 
     Next you will add code to display from the MFC code the value in the text box on the Windows Form.
 
-1. In the public section of the CHostForWinForm class in CHostForWinForm.h, add the following declaration:
+1. In the public section of the `CHostForWinForm` class in `CHostForWinForm.h`, add the following declaration:
 
     ```cpp
     CString m_sEditBoxOnWinForm;
     ```
 
-1. In the definition of DoDataExchange in CHostForWinForm.cpp, add the following three lines to the end of the function:
+1. In the definition of `DoDataExchange` in `CHostForWinForm.cpp`, add the following four lines to the end of the function:
 
     ```cpp
     if (pDX->m_bSaveAndValidate)
@@ -114,7 +114,7 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
        GetControl()->textBox1->Text = gcnew System::String(m_sEditBoxOnWinForm);
     ```
 
-1. In the definition of OnButton1 in CHostForWinForm.cpp, add the following three lines to the end of the function:
+1. In the definition of `OnButton1` in `CHostForWinForm.cpp`, add the following three lines to the end of the function:
 
     ```cpp
     this->UpdateData(TRUE);
@@ -126,5 +126,5 @@ The process that `CWinFormsDialog` uses to host the user control is the similar
 
 ## See also
 
-<xref:System.Windows.Forms.UserControl?displayProperty=fullName>
-[Using a Windows Form User Control in MFC](../dotnet/using-a-windows-form-user-control-in-mfc.md)
+<xref:System.Windows.Forms.UserControl?displayProperty=fullName>\
+[Using a Windows Form User Control in MFC](using-a-windows-form-user-control-in-mfc.md)
diff --git a/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md b/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md
index b7b889caf1..9244b69d98 100644
--- a/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md
+++ b/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md
@@ -4,6 +4,7 @@ title: "Hosting a Windows Form User Control in an MFC Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC [C++], Windows Forms support", "hosting Windows Forms control [C++]", "Windows Forms [C++], MFC support"]
 ms.assetid: 9f66ee52-b7cb-4ffd-8306-392a5da990d8
+ms.topic: concept-article
 ---
 # Hosting a Windows Form User Control in an MFC Dialog Box
 
diff --git a/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md b/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md
index e3968fb0fc..7353bb3661 100644
--- a/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md
+++ b/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md
@@ -4,6 +4,7 @@ title: "Hosting a Windows Forms User Control as an MFC View"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC [C++], Windows Forms support", "Windows Forms controls [C++], hosting as an MFC view", "hosting Windows Forms control [C++]"]
 ms.assetid: 43c02ab4-1366-434c-a980-0b19326d6ea0
+ms.topic: concept-article
 ---
 # Hosting a Windows Forms User Control as an MFC View
 
diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md
index 1dab0f2a63..c16e9e8720 100644
--- a/docs/dotnet/how-to-access-characters-in-a-system-string.md
+++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: How to: Access Characters in a System::String"
 title: "How to: Access Characters in a System::String"
+description: "Learn more about: How to: Access Characters in a System::String"
+ms.date: 11/04/2016
 ms.custom: "get-started-article"
-ms.date: "11/04/2016"
 helpviewer_keywords: ["characters [C++], accessing in System::String", "examples [C++], strings", "strings [C++], accessing characters"]
-ms.assetid: cfc89756-aef3-4988-907e-fb236dcb7087
 ---
 # How to: Access Characters in a System::String
 
@@ -21,7 +20,7 @@ If you pass `ppchar` to a native function, then it must be a pinning pointer; th
 ```cpp
 // PtrToStringChars.cpp
 // compile with: /clr
-#include<vcclr.h>
+#include <vcclr.h>
 using namespace System;
 
 int main() {
@@ -54,7 +53,7 @@ size_t getlen(System::String ^ s) {
    // make sure it doesn't move during the unmanaged call
    pin_ptr<const wchar_t> pinchars = PtrToStringChars(s);
    return wcsnlen(pinchars, maxsize);
-};
+}
 
 int main() {
    System::Console::WriteLine(getlen("testing"));
diff --git a/docs/dotnet/how-to-declare-override-specifiers-in-native-compilations-cpp-cli.md b/docs/dotnet/how-to-declare-override-specifiers-in-native-compilations-cpp-cli.md
index a9e25c2df5..3eeb84d31e 100644
--- a/docs/dotnet/how-to-declare-override-specifiers-in-native-compilations-cpp-cli.md
+++ b/docs/dotnet/how-to-declare-override-specifiers-in-native-compilations-cpp-cli.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: How to: Declare Override Specifiers in Native Compilations (C++/CLI)"
 title: "How to: Declare Override Specifiers (C++/CLI)"
+description: "Learn more about: How to: Declare Override Specifiers in Native Compilations (C++/CLI)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["override specifiers in native compilation, overriding"]
-ms.assetid: d0551836-9ac7-41eb-a6e9-a4b3ef60767d
 ---
 # How to: Declare Override Specifiers in Native Compilations (C++/CLI)
 
-[sealed](../extensions/sealed-cpp-component-extensions.md), [abstract](../extensions/abstract-cpp-component-extensions.md), and [override](../extensions/override-cpp-component-extensions.md) are available in compilations that do not use **/ZW** or [/clr](../build/reference/clr-common-language-runtime-compilation.md).
+[`sealed`](../extensions/sealed-cpp-component-extensions.md), [`abstract`](../extensions/abstract-cpp-component-extensions.md), and [`override`](../extensions/override-cpp-component-extensions.md) are available in compilations that do not use **/ZW** or [`/clr`](../build/reference/clr-common-language-runtime-compilation.md).
 
 > [!NOTE]
-> The ISO C++11 Standard language has the [override](../cpp/override-specifier.md) identifier and the [final](../cpp/final-specifier.md) identifier, and both are supported in Visual Studio  Use `final` instead of **`sealed`** in code that is meant to be compiled as native-only.
+> The ISO C++11 Standard language [`override`](../cpp/override-specifier.md) and [`final`](../cpp/final-specifier.md) specifiers are supported in Visual Studio. Use `final` instead of **`sealed`** in code that is meant to be compiled as native-only.
 
 ## Example: sealed is valid
 
@@ -67,7 +66,7 @@ public:
 
 ### Description
 
-This example shows that **`abstract`** is valid in native compilations.
+This example shows that `abstract` is valid in native compilations.
 
 ### Code
 
diff --git a/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md b/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md
index 0850717e4c..a0b88ce253 100644
--- a/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md
+++ b/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md
@@ -3,7 +3,6 @@ title: "How to: Define and consume classes and structs (C++/CLI)"
 description: "How to create and use user-defined class and struct types in C++/CLI code."
 ms.date: 09/25/2020
 helpviewer_keywords: ["structs [C++]", "classes [C++], instantiating"]
-ms.assetid: 1c03cb0d-1459-4b5e-af65-97d6b3094fd7
 ---
 # How to: Define and consume classes and structs (C++/CLI)
 
@@ -467,7 +466,7 @@ in static constructor
 
 ## <a name="BKMK_Semantics_of_the_this_pointer"></a> Semantics of the `this` pointer
 
-When you're using C++\CLI to define types, the **`this`** pointer in a reference type is of type *handle*. The **`this`** pointer in a value type is of type *interior pointer*.
+When you're using C++/CLI to define types, the **`this`** pointer in a reference type is of type *handle*. The **`this`** pointer in a value type is of type *interior pointer*.
 
 These different semantics of the **`this`** pointer can cause unexpected behavior when a default indexer is called. The next example shows the correct way to access a default indexer in both a ref type and a value type.
 
@@ -636,7 +635,7 @@ The following sample demonstrates when a copy constructor isn't generated.
 
 ```cpp
 // compile with: /clr
-#include<stdio.h>
+#include <stdio.h>
 
 struct S {
    int i;
diff --git a/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md b/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md
index bfed57f87c..35af0b6fce 100644
--- a/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md
+++ b/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md
@@ -4,6 +4,7 @@ title: "How to: Define and Install a Global Exception Handler"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["handlers, global"]
 ms.assetid: dd88a812-3bc7-4ce8-8283-4b674c246534
+ms.topic: how-to
 ---
 # How to: Define and Install a Global Exception Handler
 
diff --git a/docs/dotnet/how-to-define-and-use-delegates-cpp-cli.md b/docs/dotnet/how-to-define-and-use-delegates-cpp-cli.md
index 3a2235ad91..eec4a6002e 100644
--- a/docs/dotnet/how-to-define-and-use-delegates-cpp-cli.md
+++ b/docs/dotnet/how-to-define-and-use-delegates-cpp-cli.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: How to: Define and Use Delegates (C++/CLI)"
 title: "How to: Define and Use Delegates (C++/CLI)"
-ms.date: "11/04/2016"
+description: "Learn more about: How to: Define and Use Delegates (C++/CLI)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["delegates"]
-ms.assetid: 1cdf3420-89c1-47c0-b796-aa984020e0f8
 ---
 # How to: Define and Use Delegates (C++/CLI)
 
@@ -442,7 +441,7 @@ int main() {
    Del^ d = gcnew Del(r1, &R::f);
    d += gcnew Del(&R::f);
    d(r2);
-};
+}
 ```
 
 **Output**
diff --git a/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md b/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md
index 7d77830650..098179c4ef 100644
--- a/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md
+++ b/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: How to: Do DDX/DDV Data Binding with Windows Forms"
 title: "How to: Do DDX-DDV Data Binding with Windows Forms"
+description: "Learn more about: How to: Do DDX/DDV Data Binding with Windows Forms"
 ms.custom: "get-started-article"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC [C++], hosting a Windows Forms Control", "Windows Forms [C++], MFC support"]
-ms.assetid: b2957370-cf1f-4779-94ac-228cd393686c
 ---
 # How to: Do DDX/DDV Data Binding with Windows Forms
 
@@ -53,7 +52,7 @@ void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
 
 ## Example: Add handler method
 
-Now we will add the handler method for a click on the OK button. Click the **Resource View** tab. In Resource View, double-click on `IDD_MFC01_DIALOG`. The dialog resource appears in Resource Editor. Then double click the OK button..
+Now we will add the handler method for a click on the OK button. Click the **Resource View** tab. In Resource View, double-click on `IDD_MFC01_DIALOG`. The dialog resource appears in Resource Editor. Then double click the OK button.
 
 Define the handler as follows.
 
@@ -77,6 +76,6 @@ You can now build and run the application. Notice that any text in the text box
 
 ## See also
 
-[CWinFormsControl Class](../mfc/reference/cwinformscontrol-class.md)<br/>
-[DDX_ManagedControl](../mfc/reference/standard-dialog-data-exchange-routines.md#ddx_managedcontrol)<br/>
+[CWinFormsControl Class](../mfc/reference/cwinformscontrol-class.md)\
+[DDX_ManagedControl](../mfc/reference/standard-dialog-data-exchange-routines.md#ddx_managedcontrol)\
 [CWnd::DoDataExchange](../mfc/reference/cwnd-class.md#dodataexchange)
diff --git a/docs/dotnet/how-to-migrate-to-clr.md b/docs/dotnet/how-to-migrate-to-clr.md
index b3e6d4c633..f7b4922791 100644
--- a/docs/dotnet/how-to-migrate-to-clr.md
+++ b/docs/dotnet/how-to-migrate-to-clr.md
@@ -5,6 +5,7 @@ ms.custom: "get-started-article"
 ms.date: "09/18/2018"
 helpviewer_keywords: ["upgrading Visual C++ applications, /clr compiler option", "compiling native code [C++]", "interoperability [C++], /clr compiler option", "interop [C++], /clr compiler option", "migration [C++], /clr compiler option", "/clr compiler option [C++], porting to"]
 ms.assetid: c9290b8b-436a-4510-8b56-eae51f4a9afc
+ms.topic: upgrade-and-migration-article
 ---
 # How to: Migrate to `/clr`
 
diff --git a/docs/dotnet/how-to-use-arrays-in-cpp-cli.md b/docs/dotnet/how-to-use-arrays-in-cpp-cli.md
index 14f17299db..6bdeba25b0 100644
--- a/docs/dotnet/how-to-use-arrays-in-cpp-cli.md
+++ b/docs/dotnet/how-to-use-arrays-in-cpp-cli.md
@@ -221,7 +221,7 @@ public:
 };
 
 int main() {
-   // Aggregate initialize a multidimension managed array.
+   // Aggregate initialize a multidimensional managed array.
    array<String^, 2>^ gc1 = gcnew array<String^, 2>{ {"one", "two"},
        {"three", "four"} };
    array<String^, 2>^ gc2 = { {"one", "two"}, {"three", "four"} };
diff --git a/docs/dotnet/list-stl-clr.md b/docs/dotnet/list-stl-clr.md
index 7069b4797c..fff82c19fd 100644
--- a/docs/dotnet/list-stl-clr.md
+++ b/docs/dotnet/list-stl-clr.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: list (STL/CLR)"
 title: "list (STL/CLR)"
+description: "Learn more about: list (STL/CLR)"
 ms.date: "11/04/2016"
 ms.topic: "reference"
 f1_keywords: ["cliext::list", "cliext::list::assign", "cliext::list::back", "cliext::list::back_item", "cliext::list::begin", "cliext::list::clear", "cliext::list::const_iterator", "cliext::list::const_reference", "cliext::list::const_reverse_iterator", "cliext::list::difference_type", "cliext::list::empty", "cliext::list::end", "cliext::list::erase", "cliext::list::front", "cliext::list::front_item", "cliext::list::generic_container", "cliext::list::generic_iterator", "cliext::list::generic_reverse_iterator", "cliext::list::generic_value", "cliext::list::insert", "cliext::list::iterator", "cliext::list::list", "cliext::list::merge", "cliext::list::operator=", "cliext::list::pop_back", "cliext::list::pop_front", "cliext::list::push_back", "cliext::list::push_front", "cliext::list::rbegin", "cliext::list::reference", "cliext::list::remove", "cliext::list::remove_if", "cliext::list::rend", "cliext::list::resize", "cliext::list::reverse", "cliext::list::reverse_iterator", "cliext::list::size", "cliext::list::size_type", "cliext::list::sort", "cliext::list::splice", "cliext::list::swap", "cliext::list::to_array", "cliext::list::unique", "cliext::list::value_type", "cliext::operator!=(list)", "cliext::operator<(list)", "cliext::operator<=(list)", "cliext::operator==(list)", "cliext::operator>(list)", "cliext::operator>=(list)"]
 helpviewer_keywords: ["<cliext/list> header [STL/CLR]", "list class [STL/CLR]", "<list> header [STL/CLR]", "assign member [STL/CLR]", "assign member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "list member [STL/CLR]", "merge member [STL/CLR]", "operator= member [STL/CLR]", "pop_back member [STL/CLR]", "pop_front member [STL/CLR]", "push_back member [STL/CLR]", "push_front member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "remove member [STL/CLR]", "remove_if member [STL/CLR]", "rend member [STL/CLR]", "resize member [STL/CLR]", "reverse member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "sort member [STL/CLR]", "splice member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "unique member [STL/CLR]", "value_type member [STL/CLR]", "operator!=(list) member [STL/CLR]", "operator<(list) member [STL/CLR]", "operator<=(list) member [STL/CLR]", "operator==(list) member [STL/CLR]", "operator>(list) member [STL/CLR]", "operator>=(list) member [STL/CLR]"]
-ms.assetid: a70c45c8-a257-4f6b-8434-b27ff6685bac
 ---
 # list (STL/CLR)
 
@@ -510,7 +509,7 @@ a b c
 
 ## <a name="const_reverse_iterator"></a> list::const_reverse_iterator (STL/CLR)
 
-The type of a constant reverse iterator for the controlled sequence..
+The type of a constant reverse iterator for the controlled sequence.
 
 ### Syntax
 
diff --git a/docs/dotnet/lock-class.md b/docs/dotnet/lock-class.md
index 62bfe76335..98e44d2673 100644
--- a/docs/dotnet/lock-class.md
+++ b/docs/dotnet/lock-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: lock Class"
 title: "lock Class"
-ms.date: "01/16/2019"
+description: "Learn more about: lock Class"
+ms.date: 01/16/2019
 ms.topic: "reference"
 f1_keywords: ["msclr::lock::lock", "msclr::lock::is_locked", "msclr::lock.is_locked", "msclr::lock::acquire", "msclr::lock::try_acquire", "msclr::lock::release", "msclr::lock::operator==", "msclr::lock::operator!="]
 helpviewer_keywords: ["msclr::lock class"]
-ms.assetid: 5123edd9-6aed-497d-9a0b-f4b6d6c0d666
 ---
 # lock Class
 
@@ -45,7 +44,7 @@ Internally, the lock class uses <xref:System.Threading.Monitor> to synchronize a
 
 |Name|Description|
 |---------|-----------|
-|[lock::operator&nbsp;bool](#operator-bool)|Operator for using `lock` in a conditional expression.|
+|[lock::operator bool](#operator-bool)|Operator for using `lock` in a conditional expression.|
 |[lock::operator==](#operator-equality)|Equality operator.|
 |[lock::operator!=](#operator-inequality)|Inequality operator.|
 
diff --git a/docs/dotnet/queue-stl-clr.md b/docs/dotnet/queue-stl-clr.md
index 4bd7aaf67e..d3bc7430b5 100644
--- a/docs/dotnet/queue-stl-clr.md
+++ b/docs/dotnet/queue-stl-clr.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: queue (STL/CLR)"
 title: "queue (STL/CLR)"
+description: "Learn more about: queue (STL/CLR)"
 ms.date: "4/20/2023"
 ms.topic: "reference"
 f1_keywords: ["cliext::queue", "cliext::queue::assign", "cliext::queue::back", "cliext::queue::back_item", "cliext::queue::const_reference", "cliext::queue::container_type", "cliext::queue::difference_type", "cliext::queue::empty", "cliext::queue::front", "cliext::queue::front_item", "cliext::queue::generic_container", "cliext::queue::generic_value", "cliext::queue::get_container", "cliext::queue::operator=", "cliext::queue::pop", "cliext::queue::push", "cliext::queue::queue", "cliext::queue::reference", "cliext::queue::size", "cliext::queue::size_type", "cliext::queue::to_array", "cliext::queue::value_type"]
@@ -1417,7 +1417,7 @@ int main()
     c2.push(L'b');
     c2.push(L'd');
 
-/    / display contents "a b d"
+    // display contents "a b d"
     for each (wchar_t elem in c2.get_container())
         System::Console::Write("{0} ", elem);
     System::Console::WriteLine();
diff --git a/docs/dotnet/reflection-cpp-cli.md b/docs/dotnet/reflection-cpp-cli.md
index 9b31b0a149..5cf26a76a1 100644
--- a/docs/dotnet/reflection-cpp-cli.md
+++ b/docs/dotnet/reflection-cpp-cli.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Reflection (C++/CLI)"
 title: "Reflection (C++/CLI)"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["typeid keyword [C++]", "reflection [C++}, about reflection", "metadata, reflection", "GetType method", ".NET Framework [C++], reflection", "data types [C++], reflection", "reflection [C++}", "plug-ins [C++]", "reflection [C++}, plug-ins", "assemblies [C++], enumerating data types in", "public types [C++]", "reflection [C++], external assemblies", "assemblies [C++]", "data types [C++], enumerating", "public members [C++]"]
-ms.assetid: 46b6ff4a-e441-4022-8892-78e69422f230
+description: "Learn more about: Reflection (C++/CLI)"
+ms.date: 11/04/2016
+helpviewer_keywords: ["typeid keyword [C++]", "reflection [C++], about reflection", "metadata, reflection", "GetType method", ".NET Framework [C++], reflection", "data types [C++], reflection", "reflection [C++]", "plug-ins [C++]", "reflection [C++], plug-ins", "assemblies [C++], enumerating data types in", "public types [C++]", "reflection [C++], external assemblies", "assemblies [C++]", "data types [C++], enumerating", "public members [C++]"]
 ---
 # Reflection (C++/CLI)
 
diff --git a/docs/dotnet/using-a-windows-form-user-control-in-mfc.md b/docs/dotnet/using-a-windows-form-user-control-in-mfc.md
index d5c87478bd..a4d8bac8dd 100644
--- a/docs/dotnet/using-a-windows-form-user-control-in-mfc.md
+++ b/docs/dotnet/using-a-windows-form-user-control-in-mfc.md
@@ -4,6 +4,7 @@ title: "Using a Windows Form User Control in MFC"
 ms.date: "01/08/2018"
 helpviewer_keywords: ["MFC [C++], Windows Forms support", "interoperability [C++], Windows Forms in MFC", "interoperability [C++], MFC", "interop [C++], Windows Forms in MFC", "interop [C++], MFC", "Windows Forms [C++], MFC support"]
 ms.assetid: 63fb099b-1dff-469c-9e34-dab52e122fcd
+ms.topic: how-to
 ---
 # Using a Windows Form User Control in MFC
 
diff --git a/docs/dotnet/using-cpp-interop-implicit-pinvoke.md b/docs/dotnet/using-cpp-interop-implicit-pinvoke.md
index b3fd4a5bad..2cb904144e 100644
--- a/docs/dotnet/using-cpp-interop-implicit-pinvoke.md
+++ b/docs/dotnet/using-cpp-interop-implicit-pinvoke.md
@@ -4,6 +4,7 @@ title: "Using C++ Interop (Implicit PInvoke)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["blittable types [C++]", "platform invoke [C++], implicit", "interop [C++], features", "data marshaling [C++], C++ Interop features", "porting [C++], C++ native to .NET", "COM interfaces [C++]", "implicit platform invoke", "examples [C++], interoperability", "types [C++], blittable", "marshaling [C++], C++ Interop features", "platform invoke [C++], examples", "interoperability [C++]", "C++ Interop", "interoperability [C++], Implicit PInvoke", "C++, interop", "C++ COM Interop", ".NET [C++], porting C++ native to"]
 ms.assetid: 5f710bf1-88ae-4c4e-8326-b3f0b7c4c68a
+ms.topic: concept-article
 ---
 # Using C++ Interop (Implicit PInvoke)
 
diff --git a/docs/dotnet/using-explicit-pinvoke-in-cpp-dllimport-attribute.md b/docs/dotnet/using-explicit-pinvoke-in-cpp-dllimport-attribute.md
index 61b35c6421..df29926c35 100644
--- a/docs/dotnet/using-explicit-pinvoke-in-cpp-dllimport-attribute.md
+++ b/docs/dotnet/using-explicit-pinvoke-in-cpp-dllimport-attribute.md
@@ -4,6 +4,7 @@ title: "Using Explicit PInvoke in C++ (DllImport Attribute)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["marshaling [C++], platform invoke", "C++ Interop, platform invoke", "interop [C++], platform invoke", "platform invoke [C++], marshaling in C++", "data marshaling [C++], platform invoke"]
 ms.assetid: 18e5218c-6916-48a1-a127-f66e22ef15fc
+ms.topic: concept-article
 ---
 # Using Explicit PInvoke in C++ (DllImport Attribute)
 
diff --git a/docs/dotnet/using-verifiable-assemblies-with-sql-server-cpp-cli.md b/docs/dotnet/using-verifiable-assemblies-with-sql-server-cpp-cli.md
index 93acc4fdd7..d6ce13de8a 100644
--- a/docs/dotnet/using-verifiable-assemblies-with-sql-server-cpp-cli.md
+++ b/docs/dotnet/using-verifiable-assemblies-with-sql-server-cpp-cli.md
@@ -4,6 +4,7 @@ title: "Using Verifiable Assemblies with SQL Server (C++/CLI)"
 ms.date: "10/17/2018"
 helpviewer_keywords: ["verifiable assemblies [C++], with SQL Server"]
 ms.assetid: 5248a60d-aa88-4ff3-b30a-b791c3ea2de9
+ms.topic: how-to
 ---
 # Using Verifiable Assemblies with SQL Server (C++/CLI)
 
diff --git a/docs/dotnet/vector-stl-clr.md b/docs/dotnet/vector-stl-clr.md
index d325c77397..c6c3fd953c 100644
--- a/docs/dotnet/vector-stl-clr.md
+++ b/docs/dotnet/vector-stl-clr.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: vector (STL/CLR)"
 title: "vector (STL/CLR)"
+description: "Learn more about: vector (STL/CLR)"
 ms.date: "11/04/2016"
 ms.topic: "reference"
 f1_keywords: ["cliext::vector", "cliext::vector::assign", "cliext::vector::at", "cliext::vector::back", "cliext::vector::back_item", "cliext::vector::begin", "cliext::vector::capacity", "cliext::vector::clear", "cliext::vector::const_iterator", "cliext::vector::const_reference", "cliext::vector::const_reverse_iterator", "cliext::vector::difference_type", "cliext::vector::empty", "cliext::vector::end", "cliext::vector::erase", "cliext::vector::front", "cliext::vector::front_item", "cliext::vector::generic_container", "cliext::vector::generic_iterator", "cliext::vector::generic_reverse_iterator", "cliext::vector::generic_value", "cliext::vector::insert", "cliext::vector::iterator", "cliext::vector::operator=", "cliext::vector::operator", "cliext::vector::pop_back", "cliext::vector::push_back", "cliext::vector::rbegin", "cliext::vector::reference", "cliext::vector::rend", "cliext::vector::reserve", "cliext::vector::resize", "cliext::vector::reverse_iterator", "cliext::vector::size", "cliext::vector::size_type", "cliext::vector::swap", "cliext::vector::to_array", "cliext::vector::value_type", "cliext::vector::vector"]
 helpviewer_keywords: ["vector class [STL/CLR]", "<cliext/vector> header [STL/CLR]", "<vector> header [STL/CLR]", "operator!= member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator== member [STL/CLR]", "operator> (vector) member [STL/CLR]", "operator>= member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "capacity member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator= member [STL/CLR]", "operator member [STL/CLR]", "pop_back member [STL/CLR]", "push_back member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "reserve member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "vector member [STL/CLR]"]
-ms.assetid: f90060d5-097a-4e9d-9a26-a634b5b9c6c2
 ---
 # vector (STL/CLR)
 
@@ -608,7 +607,7 @@ a b c
 
 ## <a name="const_reverse_iterator"></a> vector::const_reverse_iterator (STL/CLR)
 
-The type of a constant reverse iterator for the controlled sequence..
+The type of a constant reverse iterator for the controlled sequence.
 
 ### Syntax
 
diff --git a/docs/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md b/docs/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md
index 89be33ea73..8152460289 100644
--- a/docs/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md
+++ b/docs/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md
@@ -4,6 +4,7 @@ description: "Use Microsoft C++ to create programs and libraries that can connec
 ms.date: 10/28/2021
 helpviewer_keywords: ["command-line applications [C++], managed code", "compiling programs [C++]", "Visual C++, managed code", "managed code [C++]"]
 ms.assetid: 339f89df-a5d2-4040-831a-ddbe25b5dce4
+ms.topic: how-to
 ---
 # Walkthrough: Compile a C++/CLI program that targets the CLR in Visual Studio
 
diff --git a/docs/embedded/download-and-install-the-embedded-tooling.md b/docs/embedded/download-and-install-the-embedded-tooling.md
index a445146308..1fe6ea96d5 100644
--- a/docs/embedded/download-and-install-the-embedded-tooling.md
+++ b/docs/embedded/download-and-install-the-embedded-tooling.md
@@ -6,6 +6,7 @@ ms.custom: intro-installation
 author: gcampbell-msft
 ms.author: gcampbell
 monikerRange: '>=msvc-170'
+ms.topic: install-set-up-deploy
 ---
 
 # Download and install the Embedded tooling
diff --git a/docs/embedded/rtos-view.md b/docs/embedded/rtos-view.md
index 4428fc316a..e5e9b7da9b 100644
--- a/docs/embedded/rtos-view.md
+++ b/docs/embedded/rtos-view.md
@@ -18,7 +18,7 @@ The RTOS Object View allows users to view various components of an RTOS while de
 
 # [Visual Studio Code](#tab/visual-studio-code)
 
-![RTOS View in VSCode](media/rtos-threads-vscode.png)
+![RTOS View in VS Code](media/rtos-threads-vscode.png)
 
 ---
 
diff --git a/docs/embedded/toc.yml b/docs/embedded/toc.yml
index f05018c272..b948c79311 100644
--- a/docs/embedded/toc.yml
+++ b/docs/embedded/toc.yml
@@ -1,5 +1,5 @@
 items: 
-- name: Embedded development with Visual Studio and Visual Studio code
+- name: Embedded development with Visual Studio and Visual Studio Code
   href: ./index.yml
 - name: Download and install the Embedded Tools
   href: download-and-install-the-embedded-tooling.md
@@ -19,7 +19,7 @@ items:
       href: ./peripheral-view.md
     - name: RTOS View
       href: ./rtos-view.md
-    - name: Serial Monitor 
+    - name: Serial Monitor
       href: ./serial-monitor.md
     - name: vcpkg artifacts
       href: https://devblogs.microsoft.com/cppblog/vcpkg-artifacts/
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md
index b72f3b033c..6f34a4fc3d 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2001"
 title: "Compiler Error C2001"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2001"
+ms.date: 11/04/2016
 f1_keywords: ["C2001"]
 helpviewer_keywords: ["C2001"]
-ms.assetid: 0c3a7821-d8e5-4398-ab5a-4116d46e8dda
 ---
 # Compiler Error C2001
 
-newline in constant
+> newline in constant
+
+## Remarks
 
 A string constant cannot be continued on a second line unless you do the following:
 
@@ -18,9 +19,9 @@ A string constant cannot be continued on a second line unless you do the followi
 
 Ending the first line with \n is not sufficient.
 
-## Examples
+## Example
 
-The following sample generates C2001:
+The following example generates C2001:
 
 ```cpp
 // C2001.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md
index 70d299ecd6..418f0bc055 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2002"
 title: "Compiler Error C2002"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2002"
+ms.date: 11/04/2016
 f1_keywords: ["C2002"]
 helpviewer_keywords: ["C2002"]
-ms.assetid: 91982314-203a-4de1-b884-94e39a623f61
 ---
 # Compiler Error C2002
 
-invalid wide-character constant
+> invalid wide-character constant
+
+## Remarks
 
 The multibyte-character constant is not valid.
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2003.md b/docs/error-messages/compiler-errors-1/compiler-error-c2003.md
index 61d4e32b6b..2fbb892430 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2003.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2003.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2003"
 title: "Compiler Error C2003"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2003"
+ms.date: 11/04/2016
 f1_keywords: ["C2003"]
 helpviewer_keywords: ["C2003"]
-ms.assetid: 3161bc08-593d-4448-9fd3-4e3810be9e82
 ---
 # Compiler Error C2003
 
-expected 'defined id'
+> expected 'defined id'
+
+## Remarks
 
 An identifier must follow the preprocessor keyword.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2004.md b/docs/error-messages/compiler-errors-1/compiler-error-c2004.md
index a17dba2cb4..18b687d027 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2004.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2004.md
@@ -1,22 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2004"
 title: "Compiler Error C2004"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2004"
+ms.date: 11/04/2016
 f1_keywords: ["C2004"]
 helpviewer_keywords: ["C2004"]
-ms.assetid: d81526dd-3a00-4593-87b0-d910d3d29bca
 ---
 # Compiler Error C2004
 
-expected 'defined(id)'
+> expected 'defined(id)'
+
+## Remarks
 
 An identifier must appear in the parentheses following the preprocessor keyword.
 
 This error can also be generated as a result of compiler conformance work that was done for Visual Studio .NET 2003: missing parenthesis in preprocessor directive. If the closing parenthesis is missing from a preprocessor directive, the compiler will generate an error.
 
-## Examples
+## Example
 
-The following sample generates C2004:
+The following example generates C2004:
 
 ```cpp
 // C2004.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2005.md b/docs/error-messages/compiler-errors-1/compiler-error-c2005.md
index 01f56d8c3f..d09db6738a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2005.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2005.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2005"
 title: "Compiler Error C2005"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2005"
+ms.date: 11/04/2016
 f1_keywords: ["C2005"]
 helpviewer_keywords: ["C2005"]
-ms.assetid: 090530ed-e0ec-4358-833a-ca24260e7ffe
 ---
 # Compiler Error C2005
 
-\#line expected a line number, found 'token'
+> #line expected a line number, found 'token'
+
+## Remarks
 
 The `#line` directive must be followed by a line number.
 
-The following sample generates C2005:
+## Example
+
+The following example generates C2005:
 
 ```cpp
 // C2005.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md
index a1a2874400..65c59918ff 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md
@@ -1,28 +1,26 @@
 ---
-description: "Learn more about: Compiler Error C2006"
 title: "Compiler Error C2006"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2006"
+ms.date: 01/28/2025
 f1_keywords: ["C2006"]
 helpviewer_keywords: ["C2006"]
-ms.assetid: caaed6f7-ceb9-4742-8820-d66657c0b04d
 ---
 # Compiler Error C2006
 
-'directive' expected a filename, found 'token'
+> 'directive': expected "FILENAME" or \<FILENAME>
 
-Directives such as [#include](../../preprocessor/hash-include-directive-c-cpp.md) or [#import](../../preprocessor/hash-import-directive-cpp.md) require a filename. To resolve the error, make sure *token* is a valid filename. Also, put the filename in double quotes or angle brackets.
+## Remarks
 
-The following sample generates C2006:
+Directives such as [#include](../../preprocessor/hash-include-directive-c-cpp.md) or [#import](../../preprocessor/hash-import-directive-cpp.md) require a filename. To resolve the error, ensure the filename is valid and enclosed in either double quotes or angle brackets.
 
-```cpp
-// C2006.cpp
-#include stdio.h   // C2006
-```
+## Example
 
-Possible resolution:
+The following example generates C2006:
 
 ```cpp
-// C2006b.cpp
+// C2006.cpp
 // compile with: /c
-#include <stdio.h>
+#include iostream     // C2006
+#include 'iostream'   // C2006
+#include <iostream>   // OK
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2007.md b/docs/error-messages/compiler-errors-1/compiler-error-c2007.md
index c34b64e788..e5831f153a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2007.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2007.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2007"
 title: "Compiler Error C2007"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2007"
+ms.date: 11/04/2016
 f1_keywords: ["C2007"]
 helpviewer_keywords: ["C2007"]
-ms.assetid: ecd09d99-5036-408b-9e46-bc15488f049e
 ---
 # Compiler Error C2007
 
-\#define syntax
+> #define syntax
+
+## Remarks
 
 No identifier appears after a `#define`. To resolve the error, use an identifier.
 
-The following sample generates C2007:
+## Example
+
+The following example generates C2007:
 
 ```cpp
 // C2007.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2008.md b/docs/error-messages/compiler-errors-1/compiler-error-c2008.md
index 3c0bc7b7c0..56451a8c67 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2008.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2008.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2008"
 title: "Compiler Error C2008"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2008"
+ms.date: 11/04/2016
 f1_keywords: ["C2008"]
 helpviewer_keywords: ["C2008"]
-ms.assetid: e748ccbe-ffd4-4008-aca7-e53c25225209
 ---
 # Compiler Error C2008
 
-'character' : unexpected in macro definition
+> 'character' : unexpected in macro definition
+
+## Remarks
 
 The character appears immediately following the macro name. To resolve the error, there must be a space after the macro name.
 
-The following sample generates C2008:
+## Example
+
+The following example generates C2008:
 
 ```cpp
 // C2008.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2009.md b/docs/error-messages/compiler-errors-1/compiler-error-c2009.md
index fe06f1de78..22d2909681 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2009.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2009.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2009"
 title: "Compiler Error C2009"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2009"
+ms.date: 11/04/2016
 f1_keywords: ["C2009"]
 helpviewer_keywords: ["C2009"]
-ms.assetid: fe9d94ed-20a5-4d83-b9c4-60ee69d2f30a
 ---
 # Compiler Error C2009
 
-reuse of macro formal 'identifier'
+> reuse of macro formal 'identifier'
+
+## Remarks
 
 The formal parameter list of a macro definition uses the identifier more than once. Identifiers in the macro's parameter list must be unique.
 
-## Examples
+## Example
 
-The following sample generates C2009:
+The following example generates C2009:
 
 ```cpp
 // C2009.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2010.md b/docs/error-messages/compiler-errors-1/compiler-error-c2010.md
index 0219901c98..2deeab992f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2010.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2010.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2010"
 title: "Compiler Error C2010"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2010"
+ms.date: 11/04/2016
 f1_keywords: ["C2010"]
 helpviewer_keywords: ["C2010"]
-ms.assetid: 5795ed1d-e206-410b-b7b4-528d125c67b4
 ---
 # Compiler Error C2010
 
-'character' : unexpected in macro formal parameter list
+> 'character' : unexpected in macro formal parameter list
+
+## Remarks
 
 The character is used incorrectly in the formal parameter list of a macro definition. Remove the character to resolve the error.
 
-The following sample generates C2010:
+## Example
+
+The following example generates C2010:
 
 ```cpp
 // C2010.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2011.md b/docs/error-messages/compiler-errors-1/compiler-error-c2011.md
index f74c11a4a0..57533da7f9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2011.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2011.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2011"
 title: "Compiler Error C2011"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2011"
+ms.date: 11/04/2016
 f1_keywords: ["C2011"]
 helpviewer_keywords: ["C2011"]
-ms.assetid: 992c9d51-e850-4d53-b86b-02e73b38249c
 ---
 # Compiler Error C2011
 
-'identifier' : 'type' type redefinition
+> 'identifier' : 'type' type redefinition
+
+## Remarks
 
 The identifier was already defined as `type`. Check for redefinitions of the identifier.
 
@@ -16,7 +17,9 @@ You may also get C2011 if you import a header file or type library more than onc
 
 If you need to find the initial declaration of the redefined type, you can use the [/P](../../build/reference/p-preprocess-to-a-file.md) compiler flag to generate the preprocessed output passed to the compiler. You can use text search tools to find instances of the redefined identifier in the output file.
 
-The following sample generates C2011 and shows one way to fix it:
+## Example
+
+The following example generates C2011 and shows one way to fix it:
 
 ```cpp
 // C2011.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2012.md b/docs/error-messages/compiler-errors-1/compiler-error-c2012.md
index e186eb5de5..ef35628c05 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2012.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2012.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2012"
 title: "Compiler Error C2012"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2012"
+ms.date: 11/04/2016
 f1_keywords: ["C2012"]
 helpviewer_keywords: ["C2012"]
-ms.assetid: 9f0d8162-c0b3-4234-a41f-836fdb75c84e
 ---
 # Compiler Error C2012
 
-missing name following '<'
+> missing name following '<'
+
+## Remarks
 
 An `#include` directive lacks the required filename.
 
-The following sample generates C2012:
+## Example
+
+The following example generates C2012:
 
 ```cpp
 // C2012.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2013.md b/docs/error-messages/compiler-errors-1/compiler-error-c2013.md
index 88d193210e..eeca87ca53 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2013.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2013.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2013"
 title: "Compiler Error C2013"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2013"
+ms.date: 11/04/2016
 f1_keywords: ["C2013"]
 helpviewer_keywords: ["C2013"]
-ms.assetid: 6b5c955c-53da-48ee-8533-64ef5b905173
 ---
 # Compiler Error C2013
 
-missing '>'
+> missing '>'
+
+## Remarks
 
 An `#include` directive lacks a closing angle bracket. Add the closing bracket to resolve the error.
 
-The following sample generates C2013:
+## Example
+
+The following example generates C2013:
 
 ```cpp
 // C2013.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md
index b4369d4939..32eb37bf33 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2014"
 title: "Compiler Error C2014"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2014"
+ms.date: 11/04/2016
 f1_keywords: ["C2014"]
 helpviewer_keywords: ["C2014"]
-ms.assetid: 231d8e9c-48c0-4027-99a3-245d186275ec
 ---
 # Compiler Error C2014
 
-preprocessor command must start as first nonwhite space
+> preprocessor command must start as first nonwhite space
+
+## Remarks
 
 The `#` sign of a preprocessor directive must be the first character on a line that is not white space.
 
-The following sample generates C2014:
+## Example
+
+The following example generates C2014:
 
 ```cpp
 // C2014.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2015.md b/docs/error-messages/compiler-errors-1/compiler-error-c2015.md
index 7c3cb4ed8e..060b5b60fb 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2015.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2015.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2015"
 title: "Compiler Error C2015"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2015"
+ms.date: 11/04/2016
 f1_keywords: ["C2015"]
 helpviewer_keywords: ["C2015"]
-ms.assetid: 8f40af0a-3a5a-4d6a-8ed7-125966e6bfed
 ---
 # Compiler Error C2015
 
-too many characters in constant
+> too many characters in constant
+
+## Remarks
 
 A character constant contains more than two characters. The limit is one character for standard character constants and two characters for long character constants.
 
@@ -16,7 +17,7 @@ An escape sequence, such as \t, is converted to a single character.
 
 ## Examples
 
-The following sample generates C2015:
+The following example generates C2015:
 
 ```cpp
 // C2015.cpp
@@ -26,7 +27,7 @@ char test1 = 'error';   // C2015
 char test2 = 'e';   // OK
 ```
 
-C2015 can also occur when using a Microsoft extension, character constants converted to integers.  The following sample generates C2015:
+C2015 can also occur when using a Microsoft extension, character constants converted to integers.  The following example generates C2015:
 
 ```cpp
 // C2015b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2016.md b/docs/error-messages/compiler-errors-1/compiler-error-c2016.md
index 8e6379635a..563387c249 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2016.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2016.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2016"
 title: "Compiler Error C2016"
+description: "Learn more about: Compiler Error C2016"
 ms.date: 08/18/2022
 f1_keywords: ["C2016"]
 helpviewer_keywords: ["C2016"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2016"]
 
 > C requires that a struct or union has at least one member
 
+## Remarks
+
 The compiler found a **`struct`** or **`union`** defined with no members, which isn't allowed in C. For more information, see [Structures](../../c-language/structure-declarations.md) and [Unions](../../c-language/union-declarations.md).
 
 To resolve this error, create at least one member in your **`struct`** or **`union`**.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md
index fc2705d40d..d659ba2526 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2017"
 title: "Compiler Error C2017"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2017"
+ms.date: 11/04/2016
 f1_keywords: ["C2017"]
 helpviewer_keywords: ["C2017"]
-ms.assetid: 1083eed9-9906-4a97-883c-54e52d7e82cd
 ---
 # Compiler Error C2017
 
-illegal escape sequence
+> illegal escape sequence
+
+## Remarks
 
 An escape sequence, such as \t, appears outside of a character or string constant.
 
-The following sample generates C2017:
+## Examples
+
+The following example generates C2017:
 
 ```cpp
 // C2017.cpp
@@ -24,7 +27,7 @@ int main() {
 
 C2017 can occur when the stringize operator is used with strings that include escape sequences.
 
-The following sample generates C2017:
+The following example generates C2017:
 
 ```cpp
 // C2017b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md
index f81256fbfb..16c19e66bf 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md
@@ -1,31 +1,26 @@
 ---
-description: "Learn more about: Compiler Error C2018"
 title: "Compiler Error C2018"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2018"
+ms.date: 06/21/2025
 f1_keywords: ["C2018"]
 helpviewer_keywords: ["C2018"]
-ms.assetid: 86b54573-dca0-4446-be1a-e3ac489c073b
 ---
 # Compiler Error C2018
 
-unknown character 'hexnumber'
+> unknown character 'hexnumber'
 
-The source file contains an unexpected ASCII character, which is identified by its hex number. To resolve the error, remove the character.
+## Remarks
 
-The following sample generates C2018:
+The source file contains an unexpected ASCII character, which is identified by its hex number. To resolve the error, remove the character.
 
-```cpp
-// C2018.cpp
-int main() {
-   @   // C2018
-}
-```
+## Example
 
-Possible resolution:
+The following example generates C2018:
 
 ```cpp
-// C2018b.cpp
-int main() {
-
+// C2018.cpp
+int main()
+{
+    @   // C2018
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2019.md b/docs/error-messages/compiler-errors-1/compiler-error-c2019.md
index 8353a05ae6..e835a04252 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2019.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2019.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2019"
 title: "Compiler Error C2019"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2019"
+ms.date: 11/04/2016
 f1_keywords: ["C2019"]
 helpviewer_keywords: ["C2019"]
-ms.assetid: 4f37b1e1-9eca-418f-a4c3-141e8512d7b6
 ---
 # Compiler Error C2019
 
-expected preprocessor directive, found 'character'
+> expected preprocessor directive, found 'character'
+
+## Remarks
 
 The character followed a `#` sign but it is not the first letter of a preprocessor directive.
 
-The following sample generates C2019:
+## Example
+
+The following example generates C2019:
 
 ```cpp
 // C2019.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2020.md b/docs/error-messages/compiler-errors-1/compiler-error-c2020.md
index 1d9ecbc494..bc32e9e64c 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2020.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2020.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2020"
 title: "Compiler Error C2020"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2020"
+ms.date: 11/04/2016
 f1_keywords: ["C2020"]
 helpviewer_keywords: ["C2020"]
-ms.assetid: 486f98ed-6574-4d82-89e3-74b5a61ed419
 ---
 # Compiler Error C2020
 
-'member' : 'class' member redefinition
+> 'member' : 'class' member redefinition
+
+## Remarks
 
 A member inherited from a base class or structure is redefined. Inherited members cannot be redefined unless declared as **`virtual`** in the base class.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2021.md b/docs/error-messages/compiler-errors-1/compiler-error-c2021.md
index a32149660c..e0a6ce1831 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2021.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2021.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2021"
 title: "Compiler Error C2021"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2021"
+ms.date: 11/04/2016
 f1_keywords: ["C2021"]
 helpviewer_keywords: ["C2021"]
-ms.assetid: 064f32e2-3794-48d5-9767-991003dcb36a
 ---
 # Compiler Error C2021
 
-expected exponent value, not 'character'
+> expected exponent value, not 'character'
+
+## Remarks
 
 The character used as the exponent of a floating-point constant is not a valid number. Be sure to use an exponent that is in range.
 
-## Examples
+## Example
 
-The following sample generates C2021:
+The following example generates C2021:
 
 ```cpp
 // C2021.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2022.md b/docs/error-messages/compiler-errors-1/compiler-error-c2022.md
index a072ce76c2..619c126d66 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2022.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2022.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2022"
 title: "Compiler Error C2022"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2022"
+ms.date: 11/04/2016
 f1_keywords: ["C2022"]
 helpviewer_keywords: ["C2022"]
-ms.assetid: 1f5c477a-d909-42d8-8588-811586e8ba1e
 ---
 # Compiler Error C2022
 
-'number' : too big for character
+> 'number' : too big for character
+
+## Remarks
 
 The octal number following a backslash (\\) in a character or string constant is too big to represent a character.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2023.md b/docs/error-messages/compiler-errors-1/compiler-error-c2023.md
index ab9dba93d8..8ddc41ef91 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2023.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2023.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2023"
 title: "Compiler Error C2023"
+description: "Learn more about: Compiler Error C2023"
 ms.date: 08/18/2022
 f1_keywords: ["C2023"]
 helpviewer_keywords: ["C2023"]
@@ -9,11 +9,15 @@ helpviewer_keywords: ["C2023"]
 
 > '*identifier*': Alignment (*value-1*) different from prior declaration (*value-2*)
 
+## Remarks
+
 The compiler found an alignment specifier for a class type that's different from a previous declaration, or an **`enum`** alignment specifier that's different from the natural alignment of the base type.
 
 To resolve this error, make sure all declarations and definitions of the type use the same alignment value.
 
-The following sample generates C2023:
+## Example
+
+The following example generates C2023:
 
 ```cpp
 // C2023.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2024.md b/docs/error-messages/compiler-errors-1/compiler-error-c2024.md
index fe0b5e057f..89965f73fe 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2024.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2024.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2024"
 title: "Compiler Error C2024"
+description: "Learn more about: Compiler Error C2024"
 ms.date: 08/18/2022
 f1_keywords: ["C2024"]
 helpviewer_keywords: ["C2024"]
@@ -9,11 +9,15 @@ helpviewer_keywords: ["C2024"]
 
 > 'alignas' attribute applies to variables, data members and tag types only
 
+## Remarks
+
 The compiler found an **`alignas`** specifier applied to a function or other type that can't be aligned.
 
 To resolve this error, remove the **`alignas`** specifier.
 
-The following sample generates C2024:
+## Example
+
+The following example generates C2024:
 
 ```cpp
 // C2024.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2025.md b/docs/error-messages/compiler-errors-1/compiler-error-c2025.md
index 92c0e186ea..edd6d5218c 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2025.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2025.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2025"
 title: "Compiler Error C2025"
+description: "Learn more about: Compiler Error C2025"
 ms.date: 08/18/2022
 f1_keywords: ["C2025"]
 helpviewer_keywords: ["C2025"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2025"]
 
 > invalid or corrupted binary module interface file: '*filename*'
 
+## Remarks
+
 The compiler could not read the specified IFC file.
 
 To resolve this error, rebuild the module interface file.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2026.md b/docs/error-messages/compiler-errors-1/compiler-error-c2026.md
index c04bbb7582..0ebf596eb0 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2026.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2026.md
@@ -4,16 +4,15 @@ description: "Describes Microsoft C/C++ compiler error C2026, its causes and how
 ms.date: 09/25/2020
 f1_keywords: ["C2026"]
 helpviewer_keywords: ["C2026"]
-ms.assetid: 8e64b6e1-b967-479b-be97-d12dc4a8e389
 ---
 # Compiler Error C2026
 
 > string too big, trailing characters truncated
 
-The string was longer than the limit of 16380 single-byte characters.
-
 ## Remarks
 
+The string was longer than the limit of 16380 single-byte characters.
+
 Before adjacent strings get concatenated, a string can't be longer than 16380 single-byte characters.
 
 A Unicode string of about one half this length would also generate this error.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2027.md b/docs/error-messages/compiler-errors-1/compiler-error-c2027.md
index d824942cd4..b99589dda0 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2027.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2027.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2027"
 title: "Compiler Error C2027"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2027"
+ms.date: 11/04/2016
 f1_keywords: ["C2027"]
 helpviewer_keywords: ["C2027"]
-ms.assetid: a39150c0-ec04-45ec-934c-a838bfe76627
 ---
 # Compiler Error C2027
 
-use of undefined type 'type'
+> use of undefined type 'type'
+
+## Remarks
 
 A type cannot be used until it is defined. To resolve the error, be sure the type is fully defined before referencing it.
 
 ## Examples
 
-The following sample generates C2027.
+The following example generates C2027.
 
 ```cpp
 // C2027.cpp
@@ -36,7 +37,7 @@ int main() {
 
 It is possible to declare a pointer to a declared but undefined type. But C++ does not allow a reference to an undefined type.
 
-The following sample generates C2027.
+The following example generates C2027.
 
 ```cpp
 // C2027_b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2028.md b/docs/error-messages/compiler-errors-1/compiler-error-c2028.md
index dbf89a234a..d7adba707e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2028.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2028.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2028"
 title: "Compiler Error C2028"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2028"
+ms.date: 11/04/2016
 f1_keywords: ["C2028"]
 helpviewer_keywords: ["C2028"]
-ms.assetid: 4e92e944-8fce-4443-9baf-4411ad9bde70
 ---
 # Compiler Error C2028
 
-struct/union member must be inside a struct/union
+> struct/union member must be inside a struct/union
+
+## Remarks
 
 Structure or union members must be declared within the structure or union.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2030.md b/docs/error-messages/compiler-errors-1/compiler-error-c2030.md
index 6f355444f8..e13728eadd 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2030.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2030.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2030"
 title: "Compiler Error C2030"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2030"
+ms.date: 11/04/2016
 f1_keywords: ["C2030"]
 helpviewer_keywords: ["C2030"]
-ms.assetid: 5806cead-64df-4eff-92de-52c9a3f5ee62
 ---
 # Compiler Error C2030
 
-a destructor with 'protected private' accessibility cannot be a member of a class declared 'sealed'
+> a destructor with 'protected private' accessibility cannot be a member of a class declared 'sealed'
+
+## Remarks
 
 A Windows Runtime class declared as **`sealed`** cannot have a protected private destructor. Only public virtual and private non-virtual destructors are allowed on sealed types. For more information, see [Ref classes and structs](../../cppcx/ref-classes-and-structs-c-cx.md).
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2031.md b/docs/error-messages/compiler-errors-1/compiler-error-c2031.md
index 737fec9789..f6ef1fa481 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2031.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2031.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2031"
 title: "Compiler Error C2031"
+description: "Learn more about: Compiler Error C2031"
 ms.date: 08/18/2022
 f1_keywords: ["C2031"]
 helpviewer_keywords: ["C2031"]
@@ -10,6 +10,8 @@ helpviewer_keywords: ["C2031"]
 > a virtual destructor with '*accessibility*' accessibility is not allowed for this type\
 > a virtual destructor must have 'public' accessibility
 
+## Remarks
+
 A virtual Windows Runtime class has an access specifier or **`sealed`** specifier that's not allowed for a virtual destructor. For more information, see [Ref classes and structs](../../cppcx/ref-classes-and-structs-c-cx.md).
 
 To fix this error, change the accessibility of the destructor.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2032.md b/docs/error-messages/compiler-errors-1/compiler-error-c2032.md
index 973fedfa7a..e2ed2b78c2 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2032.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2032.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2032"
 title: "Compiler Error C2032"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2032"
+ms.date: 11/04/2016
 f1_keywords: ["C2032"]
 helpviewer_keywords: ["C2032"]
-ms.assetid: 625d7c83-70b6-42c2-a558-81fbc0026324
 ---
 # Compiler Error C2032
 
-'identifier' : function cannot be member of struct/union 'structorunion'
+> 'identifier' : function cannot be member of struct/union 'structorunion'
+
+## Remarks
 
 The structure or union has a member function, which is allowed in C++ but not in C. To resolve the error, either compile as a C++ program or remove the member function.
 
-The following sample generates C2032:
+## Example
+
+The following example generates C2032:
 
 ```c
 // C2032.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md
index 767ad97919..87aaa08b7b 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2033"
 title: "Compiler Error C2033"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2033"
+ms.date: 11/04/2016
 f1_keywords: ["C2033"]
 helpviewer_keywords: ["C2033"]
-ms.assetid: fd5a1637-9db2-4c98-a7cc-b63b39737cd9
 ---
 # Compiler Error C2033
 
-'identifier' : bit field cannot have indirection
+> 'identifier' : bit field cannot have indirection
+
+## Remarks
 
 The bit field was declared as a pointer, which is not allowed.
 
-The following sample generates C2033:
+## Example
+
+The following example generates C2033:
 
 ```cpp
 // C2033.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2034.md b/docs/error-messages/compiler-errors-1/compiler-error-c2034.md
index b512dc66b2..1f988de2b4 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2034.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2034.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2034"
 title: "Compiler Error C2034"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2034"
+ms.date: 11/04/2016
 f1_keywords: ["C2034"]
 helpviewer_keywords: ["C2034"]
-ms.assetid: 953d70fa-bde9-4ce6-a55d-741e7bc63ff4
 ---
 # Compiler Error C2034
 
-'identifier' : type of bit field too small for number of bits
+> 'identifier' : type of bit field too small for number of bits
+
+## Remarks
 
 The number of bits in the bit-field declaration exceeds the size of the base type.
 
-The following sample generates C2034:
+## Example
+
+The following example generates C2034:
 
 ```cpp
 // C2034.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2035.md b/docs/error-messages/compiler-errors-1/compiler-error-c2035.md
index 3b2f4c6fa8..8b4e5fe38b 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2035.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2035.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2035"
 title: "Compiler Error C2035"
+description: "Learn more about: Compiler Error C2035"
 ms.date: 08/18/2022
 f1_keywords: ["C2035"]
 helpviewer_keywords: ["C2035"]
@@ -10,6 +10,8 @@ helpviewer_keywords: ["C2035"]
 > a non-virtual destructor with '*accessibility*' accessibility is not allowed for this type\
 > a non-virtual destructor must have 'protected private' or 'private' accessibility
 
+## Remarks
+
 A non-virtual Windows Runtime class has an access specifier or **`sealed`** specifier that's not allowed for a non-virtual destructor. For more information, see [Ref classes and structs](../../cppcx/ref-classes-and-structs-c-cx.md).
 
 To fix this error, change the accessibility of the destructor.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2036.md b/docs/error-messages/compiler-errors-1/compiler-error-c2036.md
index 92350e0b5b..10f675360e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2036.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2036.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2036"
 title: "Compiler Error C2036"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2036"
+ms.date: 11/04/2016
 f1_keywords: ["C2036"]
 helpviewer_keywords: ["C2036"]
-ms.assetid: 895821a9-65d1-44b5-bde1-dae827f3e486
 ---
 # Compiler Error C2036
 
-'identifier' : unknown size
+> 'identifier' : unknown size
+
+## Remarks
 
 An operation on `identifier` requires the size of the data object, which cannot be determined.
 
 ## Examples
 
-The following sample generates C2036.
+The following example generates C2036.
 
 ```c
 // C2036.c
@@ -29,7 +30,7 @@ int main() {
 }
 ```
 
-The following sample generates C2036.
+The following example generates C2036.
 
 ```cpp
 // C2036_2.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2037.md b/docs/error-messages/compiler-errors-1/compiler-error-c2037.md
index ad11cf2dc6..04fffc4ba7 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2037.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2037.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2037"
 title: "Compiler Error C2037"
+description: "Learn more about: Compiler Error C2037"
 ms.date: 08/18/2022
 f1_keywords: ["C2037"]
 helpviewer_keywords: ["C2037"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2037"]
 
 > left of '*operator*' specifies undefined struct/union '*type*'
 
+## Remarks
+
 The operand to the left of the member-selection *operator* is not a fully defined class, structure, or union.
 
 This error can be caused by a left operand that is an undefined variable.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2038.md b/docs/error-messages/compiler-errors-1/compiler-error-c2038.md
index 8e7ffa2aa0..4de865e57c 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2038.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2038.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2038"
 title: "Compiler Error C2038"
+description: "Learn more about: Compiler Error C2038"
 ms.date: 08/18/2022
 f1_keywords: ["C2038"]
 helpviewer_keywords: ["C2038"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2038"]
 
 > the std namespace cannot be inline
 
+## Remarks
+
 The C++ standard does not allow the `std` namespace to be declared `inline`.
 
 To resolve this issue, remove the `inline` specifier.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2039.md b/docs/error-messages/compiler-errors-1/compiler-error-c2039.md
index 0264758359..635d97226b 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2039.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2039.md
@@ -1,19 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2039"
 title: "Compiler Error C2039"
-ms.date: "8/1/2023"
+description: "Learn more about: Compiler Error C2039"
+ms.date: 8/1/2023
 f1_keywords: ["C2039"]
 helpviewer_keywords: ["C2039"]
 ---
 # Compiler Error C2039
 
-`'identifier1' : is not a member of 'identifier2'`
+> 'identifier1' : is not a member of 'identifier2'
+
+## Remarks
 
 The code incorrectly calls or refers to a member of a structure, class, or union.
 
 ## Examples
 
-The following sample generates C2039:
+The following example generates C2039:
 
 ```cpp
 // C2039.cpp
@@ -27,7 +29,7 @@ int main() {
 }
 ```
 
-The following sample generates C2039:
+The following example generates C2039:
 
 ```cpp
 // C2039_b.cpp
@@ -40,7 +42,7 @@ int main() {
 }
 ```
 
-The following sample generates C2039:
+The following example generates C2039:
 
 ```cpp
 // C2039_c.cpp
@@ -71,7 +73,7 @@ public class B {
 };
 ```
 
-The following sample generates C2039 when it uses the previously defined C# component's default indexer incorrectly from C++/CLI:
+The following example generates C2039 when it uses the previously defined C# component's default indexer incorrectly from C++/CLI:
 
 ```cpp
 // C2039_e.cpp
@@ -88,7 +90,7 @@ int main() {
 }
 ```
 
-C2039 can also occur if you use generics. The following sample generates C2039:
+C2039 can also occur if you use generics. The following example generates C2039:
 
 ```cpp
 // C2039_f.cpp
@@ -113,7 +115,7 @@ int main() {
 
 C2039 can occur when you try to release managed or unmanaged resources. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers).
 
-The following sample generates C2039:
+The following example generates C2039:
 
 ```cpp
 // C2039_g.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2040.md b/docs/error-messages/compiler-errors-1/compiler-error-c2040.md
index 76c71d13bb..ba66506a83 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2040.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2040.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2040"
 title: "Compiler Error C2040"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2040"
+ms.date: 11/04/2016
 f1_keywords: ["C2040"]
 helpviewer_keywords: ["C2040"]
-ms.assetid: 74ca3592-1469-4965-ab34-a4815e2fbefe
 ---
 # Compiler Error C2040
 
-'operator' : 'identifier1' differs in levels of indirection from 'identifier2'
+> 'operator' : 'identifier1' differs in levels of indirection from 'identifier2'
+
+## Remarks
 
 An expression involving the specified operands has incompatible operand types or implicitly converted operand types. If both operands are arithmetic, or both are nonarithmetic (such as array or pointer), they are used without change. If one operand is arithmetic and the other is not, the arithmetic operand is converted to the type of the nonarithmetic operand.
 
-This sample generates C2040 and shows how to fix it.
+## Example
+
+This example generates C2040 and shows how to fix it.
 
 ```cpp
 // C2040.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2041.md b/docs/error-messages/compiler-errors-1/compiler-error-c2041.md
index e78711fd21..fd9ffaba7a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2041.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2041.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2041"
 title: "Compiler Error C2041"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2041"
+ms.date: 11/04/2016
 f1_keywords: ["C2041"]
 helpviewer_keywords: ["C2041"]
-ms.assetid: c9a33bb1-f9cf-47d6-bd21-7d867a8c37d5
 ---
 # Compiler Error C2041
 
-illegal digit 'character' for base 'number'
+> illegal digit 'character' for base 'number'
+
+## Remarks
 
 The specified character is not a valid digit for the base (such as octal or hex).
 
-The following sample generates C2041:
+## Example
+
+The following example generates C2041:
 
 ```cpp
 // C2041.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2042.md b/docs/error-messages/compiler-errors-1/compiler-error-c2042.md
index a29490360b..514b99958e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2042.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2042.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2042"
 title: "Compiler Error C2042"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2042"
+ms.date: 11/04/2016
 f1_keywords: ["C2042"]
 helpviewer_keywords: ["C2042"]
-ms.assetid: e111788f-41ce-405a-9824-a4c1c26059e6
 ---
 # Compiler Error C2042
 
-signed/unsigned keywords mutually exclusive
+> signed/unsigned keywords mutually exclusive
+
+## Remarks
 
 The keywords **`signed`** and **`unsigned`** are used in a single declaration.
 
-The following sample generates C2042:
+## Example
+
+The following example generates C2042:
 
 ```cpp
 // C2042.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md
index 0ef748d821..5cc6bae801 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2043"
 title: "Compiler Error C2043"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2043"
+ms.date: 11/04/2016
 f1_keywords: ["C2043"]
 helpviewer_keywords: ["C2043"]
-ms.assetid: 6cc829f3-c6ea-43ae-8a3f-303ecf6c7dc6
 ---
 # Compiler Error C2043
 
-illegal break
+> illegal break
+
+## Remarks
 
 A [break](../../cpp/break-statement-cpp.md) is legal only within a **`do`**, **`for`**, **`while`**, or **`switch`** statement.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2044.md b/docs/error-messages/compiler-errors-1/compiler-error-c2044.md
index 12ec3d94b6..5bb88a790e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2044.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2044.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2044"
 title: "Compiler Error C2044"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2044"
+ms.date: 11/04/2016
 f1_keywords: ["C2044"]
 helpviewer_keywords: ["C2044"]
-ms.assetid: adf4bedc-f915-4008-8b48-a06d626d8c38
 ---
 # Compiler Error C2044
 
-illegal continue
+> illegal continue
+
+## Remarks
 
 A [continue](../../cpp/continue-statement-cpp.md) is legal only within a **`do`**, **`for`**, or **`while`** statement.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2045.md b/docs/error-messages/compiler-errors-1/compiler-error-c2045.md
index a694941e73..dd805a57e0 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2045.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2045.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2045"
 title: "Compiler Error C2045"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2045"
+ms.date: 11/04/2016
 f1_keywords: ["C2045"]
 helpviewer_keywords: ["C2045"]
-ms.assetid: 2fca668e-9b20-4933-987a-18c0fd0187df
 ---
 # Compiler Error C2045
 
-'identifier' : label redefined
+> 'identifier' : label redefined
+
+## Remarks
 
 The label appears before multiple statements in the same function.
 
-The following sample generates C2045:
+## Example
+
+The following example generates C2045:
 
 ```cpp
 // C2045.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2046.md b/docs/error-messages/compiler-errors-1/compiler-error-c2046.md
index 1fc5235d5d..7831da647a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2046.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2046.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2046"
 title: "Compiler Error C2046"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2046"
+ms.date: 11/04/2016
 f1_keywords: ["C2046"]
 helpviewer_keywords: ["C2046"]
-ms.assetid: f0c8f9dd-dbd7-4c4a-8838-fde54208ec71
 ---
 # Compiler Error C2046
 
-illegal case
+> illegal case
+
+## Remarks
 
 The keyword `case` can appear only in a **`switch`** statement.
 
-The following sample generates C2046:
+## Example
+
+The following example generates C2046:
 
 ```cpp
 // C2046.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2047.md b/docs/error-messages/compiler-errors-1/compiler-error-c2047.md
index 57ec7a835d..51b7b6470f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2047.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2047.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2047"
 title: "Compiler Error C2047"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2047"
+ms.date: 11/04/2016
 f1_keywords: ["C2047"]
 helpviewer_keywords: ["C2047"]
-ms.assetid: 686a5a81-3857-4753-84a0-5c2e7149cbee
 ---
 # Compiler Error C2047
 
-illegal default
+> illegal default
+
+## Remarks
 
 The keyword **`default`** can appear only in a **`switch`** statement.
 
-The following sample generates C2047:
+## Example
+
+The following example generates C2047:
 
 ```cpp
 // C2047.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2048.md b/docs/error-messages/compiler-errors-1/compiler-error-c2048.md
index d424fe39c4..11ef98ecba 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2048.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2048.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2048"
 title: "Compiler Error C2048"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2048"
+ms.date: 11/04/2016
 f1_keywords: ["C2048"]
 helpviewer_keywords: ["C2048"]
-ms.assetid: 44704726-85fc-42f0-afb9-194df8c4ca7c
 ---
 # Compiler Error C2048
 
-more than one default
+> more than one default
+
+## Remarks
 
 A **`switch`** statement contains multiple **`default`** labels. Delete one of the **`default`** labels to resolve the error.
 
-The following sample generates C2048:
+## Example
+
+The following example generates C2048:
 
 ```cpp
 // C2048.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2049.md b/docs/error-messages/compiler-errors-1/compiler-error-c2049.md
index cc707acda1..efcbb0ca4f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2049.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2049.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2049"
 title: "Compiler Error C2049"
+description: "Learn more about: Compiler Error C2049"
 ms.date: 08/18/2022
 f1_keywords: ["C2049"]
 helpviewer_keywords: ["C2049"]
@@ -9,11 +9,15 @@ helpviewer_keywords: ["C2049"]
 
 > '*namespace-name*': non-inline namespace cannot be reopened as inline
 
+## Remarks
+
 The **`inline`** keyword may be used on a namespace definition extension only if it was also used on the original namespace definition.
 
 To resolve this issue, make the use of the **`inline`** specifier consistent across all parts of the namespace.
 
-The following sample generates C2049:
+## Example
+
+The following example generates C2049:
 
 ```cpp
 // C2049.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2050.md b/docs/error-messages/compiler-errors-1/compiler-error-c2050.md
index a1815f9b37..962b523cf2 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2050.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2050.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2050"
 title: "Compiler Error C2050"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2050"
+ms.date: 11/04/2016
 f1_keywords: ["C2050"]
 helpviewer_keywords: ["C2050"]
-ms.assetid: 66aaed7d-00db-4ce1-a9d6-4447c1cf07ce
 ---
 # Compiler Error C2050
 
-switch expression not integral
+> switch expression not integral
+
+## Remarks
 
 The **`switch`** expression evaluates to a noninteger value. To resolve the error, use only integral values in switch statements.
 
-The following sample generates C2050:
+## Example
+
+The following example generates C2050:
 
 ```cpp
 // C2050.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2051.md b/docs/error-messages/compiler-errors-1/compiler-error-c2051.md
index b7a5383002..1437749339 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2051.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2051.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2051"
 title: "Compiler Error C2051"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2051"
+ms.date: 11/04/2016
 f1_keywords: ["C2051"]
 helpviewer_keywords: ["C2051"]
-ms.assetid: 81c0469a-78e2-49fa-bd76-97cdb135e3ea
 ---
 # Compiler Error C2051
 
-case expression not constant
+> case expression not constant
+
+## Remarks
 
 Case expressions must be integer constants.
 
-The following sample generates C2051:
+## Example
+
+The following example generates C2051:
 
 ```cpp
 // C2051.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2052.md b/docs/error-messages/compiler-errors-1/compiler-error-c2052.md
index a32b58543e..4a0693ce3e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2052.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2052.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2052"
 title: "Compiler Error C2052"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2052"
+ms.date: 11/04/2016
 f1_keywords: ["C2052"]
 helpviewer_keywords: ["C2052"]
-ms.assetid: 922ca43b-b64b-4ef7-9611-c7313be3fd79
 ---
 # Compiler Error C2052
 
-'type' : illegal type for case expression
+> 'type' : illegal type for case expression
+
+## Remarks
 
 Case expressions must be integer constants.
 
-The following sample generates C2052:
+## Example
+
+The following example generates C2052:
 
 ```cpp
 // C2052.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2053.md b/docs/error-messages/compiler-errors-1/compiler-error-c2053.md
index bc6087a46e..8a61e880a5 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2053.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2053.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2053"
 title: "Compiler Error C2053"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2053"
+ms.date: 11/04/2016
 f1_keywords: ["C2053"]
 helpviewer_keywords: ["C2053"]
-ms.assetid: 13324c85-13a8-4996-bd42-a31bfe7ff80f
 ---
 # Compiler Error C2053
 
-'identifier' : wide string mismatch
+> 'identifier' : wide string mismatch
+
+## Remarks
 
 The wide string is assigned to an incompatible type.
 
-The following sample generates C2053:
+## Example
+
+The following example generates C2053:
 
 ```c
 // C2053.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2054.md b/docs/error-messages/compiler-errors-1/compiler-error-c2054.md
index d3cbf892c7..58ec5aff22 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2054.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2054.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2054"
 title: "Compiler Error C2054"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2054"
+ms.date: 11/04/2016
 f1_keywords: ["C2054"]
 helpviewer_keywords: ["C2054"]
-ms.assetid: 37f7c612-0d7d-4728-9e67-ac4160555f48
 ---
 # Compiler Error C2054
 
-expected '(' to follow 'identifier'
+> expected '(' to follow 'identifier'
+
+## Remarks
 
 The function identifier is used in a context that requires trailing parentheses.
 
 This error can be caused by omitting an equal sign (=) on a complex initialization.
 
-The following sample generates C2054:
+## Example
+
+The following example generates C2054:
 
 ```c
 // C2054.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2055.md b/docs/error-messages/compiler-errors-1/compiler-error-c2055.md
index 1654921d89..c382074bc5 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2055.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2055.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Microsoft Visual C++ compiler error C2055"
 title: "Compiler error C2055"
+description: "Learn more about: Microsoft Visual C++ compiler error C2055"
 ms.date: 06/10/2024
 f1_keywords: ["C2055"]
 helpviewer_keywords: ["C2055"]
@@ -9,11 +9,15 @@ helpviewer_keywords: ["C2055"]
 
 > expected formal parameter list, not a type list
 
+## Remarks
+
 A function definition contains a parameter type list instead of a formal parameter list. ANSI C requires formal parameters to be named unless they're `void` or an ellipsis (`...`).
 
 An example of a named formal parameter is the `int i` in `void func(int i)`.\
 A parameter type list is a list of types, for example, `int, char`.
 
+## Example
+
 The following code generates error `C2055`:
 
 ```c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2056.md b/docs/error-messages/compiler-errors-1/compiler-error-c2056.md
index f29b08129a..2aca685be3 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2056.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2056.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2056"
 title: "Compiler Error C2056"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2056"
+ms.date: 11/04/2016
 f1_keywords: ["C2056"]
 helpviewer_keywords: ["C2056"]
-ms.assetid: 043a1f72-738a-487f-b7b3-055cc5ca0ae7
 ---
 # Compiler Error C2056
 
-illegal expression
+> illegal expression
+
+## Remarks
 
 An expression was invalid because of a previous error.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2057.md b/docs/error-messages/compiler-errors-1/compiler-error-c2057.md
index 41049e9a07..eefd54c1e9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2057.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2057.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2057"
 title: "Compiler Error C2057"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2057"
+ms.date: 11/04/2016
 f1_keywords: ["C2057"]
 helpviewer_keywords: ["C2057"]
-ms.assetid: 038a99d6-1f5a-42fa-8449-03b4ff11ee0b
 ---
 # Compiler Error C2057
 
-expected constant expression
+> expected constant expression
+
+## Remarks
 
 The context requires a constant expression, an expression whose value is known at compile time.
 
@@ -16,7 +17,7 @@ The compiler must know the size of a type at compile time in order to allocate s
 
 ## Examples
 
-The following sample generates C2057 and shows how to fix it:
+The following example generates C2057 and shows how to fix it:
 
 ```cpp
 // C2057.cpp
@@ -28,7 +29,7 @@ int main() {
 }
 ```
 
-C has more restrictive rules for constant expressions.  The following sample generates C2057 and shows how to fix it:
+C has more restrictive rules for constant expressions.  The following example generates C2057 and shows how to fix it:
 
 ```c
 // C2057b.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2058.md b/docs/error-messages/compiler-errors-1/compiler-error-c2058.md
index 4910bb4b71..04aa6b3c5a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2058.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2058.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2058"
 title: "Compiler Error C2058"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2058"
+ms.date: 11/04/2016
 f1_keywords: ["C2058"]
 helpviewer_keywords: ["C2058"]
-ms.assetid: 81e08e6b-15f7-41b4-980a-53763e19990c
 ---
 # Compiler Error C2058
 
-constant expression is not integral
+> constant expression is not integral
+
+## Remarks
 
 The context requires an integer constant expression.
 
-The following sample generates C2058:
+## Example
+
+The following example generates C2058:
 
 ```cpp
 // C2058.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2059.md b/docs/error-messages/compiler-errors-1/compiler-error-c2059.md
index 61b19f215f..b575bf8b27 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2059.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2059.md
@@ -1,17 +1,20 @@
 ---
-description: "Learn more about: Compiler Error C2059"
 title: "Compiler Error C2059"
-ms.date: "03/26/2019"
+description: "Learn more about: Compiler Error C2059"
+ms.date: 03/26/2019
 f1_keywords: ["C2059"]
 helpviewer_keywords: ["C2059"]
-ms.assetid: 2be4eb39-3f37-4b32-8e8d-75835e07c78a
 ---
 # Compiler Error C2059
 
-syntax error : 'token'
+> syntax error : 'token'
+
+## Remarks
 
 The token caused a syntax error.
 
+## Examples
+
 The following example generates an error message for the line that declares `j`.
 
 ```cpp
@@ -73,7 +76,7 @@ void func(ag_type arg = ag_type(5, 7.0));   // OK
 
 C2059 can occur for an ill-formed cast.
 
-The following sample generates C2059:
+The following example generates C2059:
 
 ```cpp
 // C2059c.cpp
@@ -91,7 +94,7 @@ int main() {
 
 C2059 can also occur if you attempt to create a namespace name that contains a period.
 
-The following sample generates C2059:
+The following example generates C2059:
 
 ```cpp
 // C2059d.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2060.md b/docs/error-messages/compiler-errors-1/compiler-error-c2060.md
index a6cfa82a76..19ef4398bb 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2060.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2060.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2060"
 title: "Compiler Error C2060"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2060"
+ms.date: 11/04/2016
 f1_keywords: ["C2060"]
 helpviewer_keywords: ["C2060"]
-ms.assetid: 2572deba-cc12-464e-9162-86252a3af061
 ---
 # Compiler Error C2060
 
-syntax error : end of file found
+> syntax error : end of file found
+
+## Remarks
 
 At least one more token was expected.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md
index 2af16ddaee..83394157a6 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2061"
 title: "Compiler Error C2061"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2061"
+ms.date: 11/04/2016
 f1_keywords: ["C2061"]
 helpviewer_keywords: ["C2061"]
-ms.assetid: b0e61c0c-a205-4820-b9aa-301d6c6fe6eb
 ---
 # Compiler Error C2061
 
-syntax error : identifier 'identifier'
+> syntax error : identifier 'identifier'
+
+## Remarks
 
 The compiler found an identifier where it wasn't expected. Make sure that `identifier` is declared before you use it.
 
@@ -16,7 +17,9 @@ An initializer may be enclosed by parentheses. To avoid this problem, enclose th
 
 This error could also be caused when the compiler detects an expression as a class template argument; use [typename](../../cpp/typename.md) to tell the compiler it is a type, as shown in the following example:
 
-The following sample generates C2061:
+## Examples
+
+The following example generates C2061:
 
 ```cpp
 // C2061.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md
index 331da15078..b7cd52a817 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2062"
 title: "Compiler Error C2062"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2062"
+ms.date: 11/04/2016
 f1_keywords: ["C2062"]
 helpviewer_keywords: ["C2062"]
-ms.assetid: 6cc98353-2ddf-43ab-88a2-9cc91cdd6033
 ---
 # Compiler Error C2062
 
-type 'type' unexpected
+> type 'type' unexpected
+
+## Remarks
 
 The compiler did not expect a type name.
 
-The following sample generates C2062:
+## Example
+
+The following example generates C2062:
 
 ```cpp
 // C2062.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md
index 6bb9d67d1c..474aaa30fc 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2063"
 title: "Compiler Error C2063"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2063"
+ms.date: 11/04/2016
 f1_keywords: ["C2063"]
 helpviewer_keywords: ["C2063"]
-ms.assetid: 0a90c18f-4029-416a-9128-e8713b53e6f1
 ---
 # Compiler Error C2063
 
-'identifier' : not a function
+> 'identifier' : not a function
+
+## Remarks
 
 The identifier is used as a function but not declared as a function.
 
-The following sample generates C2063:
+## Example
+
+The following example generates C2063:
 
 ```c
 // C2063.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md
index 6d92b1ba30..2714aee760 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2064"
 title: "Compiler Error C2064"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2064"
+ms.date: 11/04/2016
 f1_keywords: ["C2064"]
 helpviewer_keywords: ["C2064"]
-ms.assetid: 6cda05da-f437-4f50-9813-ae69538713a3
 ---
 # Compiler Error C2064
 
-term does not evaluate to a function taking N arguments
+> term does not evaluate to a function taking N arguments
+
+## Remarks
 
 A call is made to a function through an expression. The expression does not evaluate to a pointer to a function that takes the specified number of arguments.
 
-In this example, the code attempts to call non-functions as functions. The following sample generates C2064:
+## Examples
+
+In this example, the code attempts to call non-functions as functions. The following example generates C2064:
 
 ```cpp
 // C2064.cpp
@@ -24,7 +27,7 @@ void func() {
 }
 ```
 
-You must call pointers to non-static member functions from the context of an object instance. The following sample generates C2064, and shows how to fix it:
+You must call pointers to non-static member functions from the context of an object instance. The following example generates C2064, and shows how to fix it:
 
 ```cpp
 // C2064b.cpp
@@ -43,7 +46,7 @@ int main() {
 }
 ```
 
-Within a class, member function pointers must also indicate the calling object context. The following sample generates C2064 and shows how to fix it:
+Within a class, member function pointers must also indicate the calling object context. The following example generates C2064 and shows how to fix it:
 
 ```cpp
 // C2064d.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md
index e18d500450..9081a6fe97 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Compiler Error C2065"
 title: "Compiler Error C2065"
+description: "Learn more about: Compiler Error C2065"
 ms.date: 06/29/2022
 f1_keywords: ["C2065"]
 helpviewer_keywords: ["C2065"]
-ms.assetid: 78093376-acb7-45f5-9323-5ed7e0aab1dc
 ---
 # Compiler Error C2065
 
 > '*identifier*' : undeclared identifier
 
+## Remarks
+
 The compiler can't find the declaration for an identifier. There are many possible causes for this error. The most common causes of C2065 are that the identifier hasn't been declared, the identifier is misspelled, the header where the identifier is declared isn't included in the file, or the identifier is missing a scope qualifier, for example, `cout` instead of `std::cout`. For more information on declarations in C++, see [Declarations and Definitions (C++)](../../cpp/declarations-and-definitions-cpp.md).
 
 Here are some common issues and solutions in greater detail.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md
index 8a0b42ca72..a55f64b22f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2066"
 title: "Compiler Error C2066"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2066"
+ms.date: 11/04/2016
 f1_keywords: ["C2066"]
 helpviewer_keywords: ["C2066"]
-ms.assetid: f1efc63f-948a-410b-bf6e-ba250d52cd38
 ---
 # Compiler Error C2066
 
-cast to function type is illegal
+> cast to function type is illegal
+
+## Remarks
 
 In ANSI C, it is not legal to cast between a function pointer and a data pointer.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md
index e5e1e4ab58..892535c056 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2067"
 title: "Compiler Error C2067"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2067"
+ms.date: 11/04/2016
 f1_keywords: ["C2067"]
 helpviewer_keywords: ["C2067"]
-ms.assetid: 97cab473-a713-489f-8536-ca2cc5792b8c
 ---
 # Compiler Error C2067
 
-cast to array type is illegal
+> cast to array type is illegal
+
+## Remarks
 
 An object was cast to an array type.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md
index 71ed5cd042..9f31bb8a1d 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2068"
 title: "Compiler Error C2068"
+description: "Learn more about: Compiler Error C2068"
 ms.date: 08/18/2022
 f1_keywords: ["C2068"]
 helpviewer_keywords: ["C2068"]
@@ -9,8 +9,12 @@ helpviewer_keywords: ["C2068"]
 
 > illegal use of overloaded function. Missing argument list?
 
+## Remarks
+
 The compiler detected the invalid use of an overloaded function with no arguments.
 
+## Example
+
 For example:
 
 ```cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md
index f0170cb6ac..ba2b9bea9a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2069"
 title: "Compiler Error C2069"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2069"
+ms.date: 11/04/2016
 f1_keywords: ["C2069"]
 helpviewer_keywords: ["C2069"]
-ms.assetid: 0c87445a-9eed-4917-a733-f08217f2d64d
 ---
 # Compiler Error C2069
 
-cast of 'void' term to non-'void'
+> cast of 'void' term to non-'void'
+
+## Remarks
 
 Type **`void`** cannot be cast to any other type.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md
index 76cac0d4b8..2d2828762f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2070"
 title: "Compiler Error C2070"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2070"
+ms.date: 11/04/2016
 f1_keywords: ["C2070"]
 helpviewer_keywords: ["C2070"]
-ms.assetid: 4c8dea63-1227-4aba-be26-2462537f86fb
 ---
 # Compiler Error C2070
 
-'type': illegal sizeof operand
+> 'type': illegal sizeof operand
+
+## Remarks
 
 The [sizeof](../../cpp/sizeof-operator.md) operator requires an expression or type name.
 
-The following sample generates C2070:
+## Example
+
+The following example generates C2070:
 
 ```cpp
 // C2070.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md
index 1bfd7926e5..40faec7cb7 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2071"
 title: "Compiler Error C2071"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2071"
+ms.date: 11/04/2016
 f1_keywords: ["C2071"]
 helpviewer_keywords: ["C2071"]
-ms.assetid: f8c09255-a5c4-47e3-8089-3d875ae43cc5
 ---
 # Compiler Error C2071
 
-'identifier' : illegal storage class
+> 'identifier' : illegal storage class
+
+## Remarks
 
 `identifier` was declared with an invalid [storage class](../../c-language/c-storage-classes.md). This error can be caused when more than one storage class is specified for an identifier, or when the definition is incompatible with the storage class declaration.
 
@@ -16,7 +17,7 @@ To fix this issue, understand the intended storage class of the identifier—for
 
 ## Examples
 
-The following sample generates C2071.
+The following example generates C2071.
 
 ```cpp
 // C2071.cpp
@@ -29,7 +30,7 @@ struct D {
 };
 ```
 
-The following sample generates C2071.
+The following example generates C2071.
 
 ```cpp
 // C2071_b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md
index 027a73b4a2..479dfaf431 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2072"
 title: "Compiler Error C2072"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2072"
+ms.date: 11/04/2016
 f1_keywords: ["C2072"]
 helpviewer_keywords: ["C2072"]
-ms.assetid: 0b19a847-61dd-4bc3-b54d-108a637a4424
 ---
 # Compiler Error C2072
 
-'identifier' : initialization of a function
+> 'identifier' : initialization of a function
+
+## Remarks
 
 A function initializer was specified incorrectly.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md
index c790ea0ffb..3db2c03db5 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2073"
 title: "Compiler Error C2073"
+description: "Learn more about: Compiler Error C2073"
 ms.date: 06/29/2022
 f1_keywords: ["C2073"]
 helpviewer_keywords: ["C2073"]
-ms.assetid: 57908234-be7a-4ce9-b0a7-8b1ad621865e
 ---
 # Compiler Error C2073
 
@@ -18,7 +17,7 @@ This compiler error is obsolete in Visual Studio 2022.
 
 ## Example
 
-The following sample generates C2073. Source file `C2073.cpp`:
+The following example generates C2073. Source file `C2073.cpp`:
 
 ```cpp
 // C2073.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md
index 0e2f7f6326..8221fccd28 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2074"
 title: "Compiler Error C2074"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2074"
+ms.date: 11/04/2016
 f1_keywords: ["C2074"]
 helpviewer_keywords: ["C2074"]
-ms.assetid: 1abe5934-61db-4374-8c48-1fa7281317f4
 ---
 # Compiler Error C2074
 
-'identifier' : 'class-key' initialization needs curly braces
+> 'identifier' : 'class-key' initialization needs curly braces
+
+## Remarks
 
 There were no curly braces around the specified class, structure, or union initializer.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md
index b83c31b4f7..8e47b3cd00 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2075"
 title: "Compiler Error C2075"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2075"
+ms.date: 11/04/2016
 f1_keywords: ["C2075"]
 helpviewer_keywords: ["C2075"]
-ms.assetid: 8b1865d2-540b-4117-b982-e7a58a0b6cf7
 ---
 # Compiler Error C2075
 
-'identifier' : array initialization needs curly braces
+> 'identifier' : array initialization needs curly braces
+
+## Remarks
 
 There were no curly braces around the specified array initializer.
 
-The following sample generates C2075:
+## Example
+
+The following example generates C2075:
 
 ```c
 // C2075.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md
index bd3b76f5c7..e20e53b4fa 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2076"
 title: "Compiler Error C2076"
+description: "Learn more about: Compiler Error C2076"
 ms.date: 08/18/2022
 f1_keywords: ["C2076"]
 helpviewer_keywords: ["C2076"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2076"]
 
 > a brace-enclosed initializer list cannot be used in a new-expression whose type contains 'auto/decltype(auto)'
 
+## Remarks
+
 If an **`auto`** type-specifier appears in the specifier sequence of a new type-identifier or the type-identifier of a **`new`** expression, the expression must contain an initializer of the form `( assignment-expression )`. The compiler deduces the type-identifier from the `assignment-expression` in the initializer. For example,
 
 ```cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md
index 824efd91f1..720cf2cbf3 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2077"
 title: "Compiler Error C2077"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2077"
+ms.date: 11/04/2016
 f1_keywords: ["C2077"]
 helpviewer_keywords: ["C2077"]
-ms.assetid: f046f0e3-1987-477a-a0af-fe543a9f5fcb
 ---
 # Compiler Error C2077
 
-non-scalar field initializer 'identifier'
+> non-scalar field initializer 'identifier'
+
+## Remarks
 
 You tried to initialize a bit field with a nonscalar (struct, union, array, or class). Use an integer or floating-point value.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md
index 6cc3e1e1fe..f2c6dfa626 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2078"
 title: "Compiler Error C2078"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2078"
+ms.date: 11/04/2016
 f1_keywords: ["C2078"]
 helpviewer_keywords: ["C2078"]
-ms.assetid: 9bead850-4123-46cf-a634-5c77ba974b2b
 ---
 # Compiler Error C2078
 
-too many initializers
+> too many initializers
+
+## Remarks
 
 The number of initializers exceeds the number of objects to be initialized.
 
 The compiler can deduce the correct assignment of initializers to objects and inner objects when inner braces are elided from the initializer list. Complete bracing also eliminates ambiguity and results in correct assignment. Partial bracing can cause C2078 because of ambiguity in the assignment of initializers to objects.
 
-The following sample generates C2078 and shows how to fix it:
+## Example
+
+The following example generates C2078 and shows how to fix it:
 
 ```cpp
 // C2078.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md
index c096d8ffb1..b4b8022579 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2079"
 title: "Compiler Error C2079"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2079"
+ms.date: 11/04/2016
 f1_keywords: ["C2079"]
 helpviewer_keywords: ["C2079"]
-ms.assetid: ca58d6d5-eccd-40b7-ba14-c003223c5bc7
 ---
 # Compiler Error C2079
 
-'identifier' uses undefined class/struct/union 'name'
+> 'identifier' uses undefined class/struct/union 'name'
+
+## Remarks
 
 The specified identifier is an undefined class, structure, or union.
 
 This error can be caused by initializing an anonymous union.
 
-The following sample generates C2079:
+## Examples
+
+The following example generates C2079:
 
 ```cpp
 // C2079.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md
index 26fa529539..43be41f7b5 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2080"
 title: "Compiler Error C2080"
+description: "Learn more about: Compiler Error C2080"
 ms.date: 08/18/2022
 f1_keywords: ["C2080"]
 helpviewer_keywords: ["C2080"]
@@ -15,7 +15,7 @@ The compiler can only deduce the type for `auto` or `decltype(auto)` if the decl
 
 ## Example
 
-The following sample shows some declarations that cause C2080:
+The following example shows some declarations that cause C2080:
 
 ```cpp
 auto x1(1, 2);           // C2080
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md
index 0041ca2513..25867e1a3e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2086"
 title: "Compiler Error C2086"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2086"
+ms.date: 11/04/2016
 f1_keywords: ["C2086"]
 helpviewer_keywords: ["C2086"]
-ms.assetid: 4329bf72-90c8-444c-8524-4ef75e6b2139
 ---
 # Compiler Error C2086
 
@@ -18,7 +17,7 @@ The following sample generates C2086:
 
 ```cpp
 // C2086.cpp
-main() {
+int main() {
   int a;
   int a;   // C2086 not an error in ANSI C
 }
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md
index 8224cfb3a8..0c20af59dd 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md
@@ -1,15 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2095"
 title: "Compiler Error C2095"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2095"
+ms.date: 11/04/2016
 f1_keywords: ["C2095"]
 helpviewer_keywords: ["C2095"]
-ms.assetid: 44f8ada1-974f-4e81-a408-33ac6695aa53
 ---
 # Compiler Error C2095
 
 'function' : actual parameter has type 'void' : parameter 'number'
 
-The parameter passed to the function is type **`void`**, which is not allowed. Use a pointer to void ( `void *`) instead.
+The parameter passed to the function is type **`void`**, which is not allowed. Use a pointer to void (`void *`) instead.
 
 The `number` indicates which parameter is **`void`**.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md
index 8c69129528..c2ec852188 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2100"
 title: "Compiler Error C2100"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2100"
+ms.date: 11/04/2016
 f1_keywords: ["C2100"]
 helpviewer_keywords: ["C2100"]
-ms.assetid: 9ed5ea11-9d55-4ddf-8b1a-162c74f3c390
 ---
 # Compiler Error C2100
 
 illegal indirection
 
-Indirection operator ( `*` ) is applied to a nonpointer value.
+Indirection operator (`*`) is applied to a nonpointer value.
 
 The following sample generates C2100:
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md
index a01fe6598c..e2703e5d86 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md
@@ -1,17 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2101"
 title: "Compiler Error C2101"
-ms.date: "03/04/2024"
+description: "Learn more about: Compiler Error C2101"
+ms.date: 03/04/2024
 f1_keywords: ["C2101"]
 helpviewer_keywords: ["C2101"]
 ---
 # Compiler Error C2101
 
-'&' on constant
+> '&' on constant
+
+## Remarks
 
 The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand.
 
-The following sample generates C2101:
+## Example
+
+The following example generates C2101:
 
 ```cpp
 // C2101.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md
index 292bbccacc..7db34d038f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md
@@ -1,17 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2102"
 title: "Compiler Error C2102"
-ms.date: "03/03/2024"
+description: "Learn more about: Compiler Error C2102"
+ms.date: 03/03/2024
 f1_keywords: ["C2102"]
 helpviewer_keywords: ["C2102"]
 ---
 # Compiler Error C2102
 
-'&' requires l-value
+> '&' requires l-value
+
+## Remarks
 
 The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand. Address of temporary values cannot be taken.
 
-The following sample generates C2102:
+## Example
+
+The following example generates C2102:
 
 ```cpp
 // C2102.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md
index 3809ebf983..af055b688c 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md
@@ -1,17 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2103"
 title: "Compiler Error C2103"
-ms.date: "03/04/2024"
+description: "Learn more about: Compiler Error C2103"
+ms.date: 03/04/2024
 f1_keywords: ["C2103"]
 helpviewer_keywords: ["C2103"]
 ---
 # Compiler Error C2103
 
-'&' on register variable
+> '&' on register variable
+
+## Remarks
 
 You cannot take the address of a register.
 
-The following sample generates C2103:
+## Example
+
+The following example generates C2103:
 
 ```c
 // C2103.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md
index b2640fdd2d..957f09c7a3 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2104"
 title: "Compiler Error C2104"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2104"
+ms.date: 11/04/2016
 f1_keywords: ["C2104"]
 helpviewer_keywords: ["C2104"]
-ms.assetid: 2ea78896-72a6-4901-a1fa-f33ea88ad61b
 ---
 # Compiler Error C2104
 
-'&' on bit field ignored
+> '&' on bit field ignored
+
+## Remarks
 
 You cannot take the address of a bit field.
 
-The following sample generates C2104:
+## Example
+
+The following example generates C2104:
 
 ```cpp
 // C2104.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md
index 68cf1a2ad6..55de44e830 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2105"
 title: "Compiler Error C2105"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2105"
+ms.date: 11/04/2016
 f1_keywords: ["C2105"]
 helpviewer_keywords: ["C2105"]
-ms.assetid: 19b7f7bc-a9da-4d23-8193-005b6d09274f
 ---
 # Compiler Error C2105
 
-'operator' needs l-value
+> 'operator' needs l-value
+
+## Remarks
 
 The operator must have an l-value as operand.
 
-The following sample generates C2105:
+## Examples
+
+The following example generates C2105:
 
 ```cpp
 // C2105.cpp
@@ -29,7 +32,7 @@ int main() {
 }
 ```
 
-The following sample generates C2105:
+The following example generates C2105:
 
 ```cpp
 // C2105b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md
index 58fec648a5..e22d82019d 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2106"
 title: "Compiler Error C2106"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2106"
+ms.date: 11/04/2016
 f1_keywords: ["C2106"]
 helpviewer_keywords: ["C2106"]
-ms.assetid: d5c91a2e-04e4-4770-8478-788b98c52a53
 ---
 # Compiler Error C2106
 
-'operator' : left operand must be l-value
+> 'operator' : left operand must be l-value
+
+## Remarks
 
 The operator must have an l-value as its left operand.
 
-The following sample generates C2106:
+## Example
+
+The following example generates C2106:
 
 ```cpp
 // C2106.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md
index 1644f15337..51bcd37722 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2107"
 title: "Compiler Error C2107"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2107"
+ms.date: 11/04/2016
 f1_keywords: ["C2107"]
 helpviewer_keywords: ["C2107"]
-ms.assetid: 2866a121-884e-4bb5-8613-36de5817000e
 ---
 # Compiler Error C2107
 
-illegal index, indirection not allowed
+> illegal index, indirection not allowed
+
+## Remarks
 
 A subscript is applied to an expression that does not evaluate to a pointer.
 
@@ -16,7 +17,7 @@ A subscript is applied to an expression that does not evaluate to a pointer.
 
 C2107 can occur if you incorrectly use the **`this`** pointer of a value type to access the type's default indexer. For more information, see [Semantics of the `this` pointer](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Semantics_of_the_this_pointer).
 
-The following sample generates C2107.
+The following example generates C2107.
 
 ```cpp
 // C2107.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md
index 4560690ae7..fa7b26db53 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2108"
 title: "Compiler Error C2108"
+description: "Learn more about: Compiler Error C2108"
 ms.date: 06/03/2022
 f1_keywords: ["C2108"]
 helpviewer_keywords: ["C2108"]
-ms.assetid: c84f0b47-5e2c-47d2-8edb-427a40e17c36
 ---
 # Compiler Error C2108
 
@@ -18,7 +17,7 @@ The array subscript is a non-integer expression.
 
 C2108 can occur if you incorrectly use the **`this`** pointer of a value type to access the type's default indexer. For more information, see [Semantics of the `this` pointer](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Semantics_of_the_this_pointer).
 
-The following sample generates C2108.
+The following example generates C2108.
 
 ```cpp
 // C2108.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md
index c6bff1af2d..8092ba9001 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2109"
 title: "Compiler Error C2109"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2109"
+ms.date: 11/04/2016
 f1_keywords: ["C2109"]
 helpviewer_keywords: ["C2109"]
-ms.assetid: 2d1ac79d-a985-4904-a38b-b270578d664d
 ---
 # Compiler Error C2109
 
-subscript requires array or pointer type
+> subscript requires array or pointer type
+
+## Remarks
 
 The subscript was used on a variable that was not an array.
 
-The following sample generates C2109:
+## Example
+
+The following example generates C2109:
 
 ```cpp
 // C2109.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md
index 6136d130b1..480293e439 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2110"
 title: "Compiler Error C2110"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2110"
+ms.date: 11/04/2016
 f1_keywords: ["C2110"]
 helpviewer_keywords: ["C2110"]
-ms.assetid: 48fd76ed-90d6-4a60-9c7b-f6ce9355b4ca
 ---
 # Compiler Error C2110
 
-'+' : cannot add two pointers
+> '+' : cannot add two pointers
+
+## Remarks
+
+An attempt was made to add two pointer values using the plus (`+`) operator.
 
-An attempt was made to add two pointer values using the plus ( `+` ) operator.
+## Example
 
-The following sample generates C2110:
+The following example generates C2110:
 
 ```cpp
 // C2110.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md
index 10ba943b72..f8a9305aa9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2111"
 title: "Compiler Error C2111"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2111"
+ms.date: 11/04/2016
 f1_keywords: ["C2111"]
 helpviewer_keywords: ["C2111"]
-ms.assetid: 38fd42ec-1480-4a44-aaca-ae4593ed5f50
 ---
 # Compiler Error C2111
 
-'+' : pointer addition requires integral operand
+> '+' : pointer addition requires integral operand
+
+## Remarks
+
+An attempt was made to add a nonintegral value to a pointer using the plus (`+`) operator.
 
-An attempt was made to add a nonintegral value to a pointer using the plus ( `+` ) operator.
+## Example
 
-The following sample generates C2111:
+The following example generates C2111:
 
 ```cpp
 // C2111.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md
index 8c4236d97a..1928506edc 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2112"
 title: "Compiler Error C2112"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2112"
+ms.date: 11/04/2016
 f1_keywords: ["C2112"]
 helpviewer_keywords: ["C2112"]
-ms.assetid: 527a2fea-f585-4d00-bbb4-477aee17144b
 ---
 # Compiler Error C2112
 
-'-' : pointer subtraction requires integral or pointer operand
+> '-' : pointer subtraction requires integral or pointer operand
+
+## Remarks
 
 An attempt was made to subtract pointers that point to different types.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md
index e22c5d9a14..bfeb4b2390 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2113"
 title: "Compiler Error C2113"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2113"
+ms.date: 11/04/2016
 f1_keywords: ["C2113"]
 helpviewer_keywords: ["C2113"]
-ms.assetid: be85cb5e-b0ed-4fc9-b062-032bf7f59a4e
 ---
 # Compiler Error C2113
 
-'-' : pointer can only be subtracted from another pointer
+> '-' : pointer can only be subtracted from another pointer
+
+## Remarks
 
 The right operand in a subtraction operation was a pointer, but the left operand was not.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md
index ada8074812..75831e51f9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2114"
 title: "Compiler Error C2114"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2114"
+ms.date: 11/04/2016
 f1_keywords: ["C2114"]
 helpviewer_keywords: ["C2114"]
-ms.assetid: c1b2445f-74eb-4dc8-8d5a-6c8627775ee8
 ---
 # Compiler Error C2114
 
-'operator' : pointer on left; needs integral value on right
+> 'operator' : pointer on left; needs integral value on right
+
+## Remarks
 
 The left operand of `operator` was a pointer, so the right operand must be an integer value.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md
index 2125c5674c..52147bca16 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2115"
 title: "Compiler Error C2115"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2115"
+ms.date: 11/04/2016
 f1_keywords: ["C2115"]
 helpviewer_keywords: ["C2115"]
-ms.assetid: 95d76ab5-ddd7-4e29-8cac-24285dccc490
 ---
 # Compiler Error C2115
 
-'identifier' : incompatible types
+> 'identifier' : incompatible types
+
+## Remarks
 
 An expression contained incompatible types.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md
index 9dfd0d52b9..f0b37397e6 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md
@@ -1,19 +1,18 @@
 ---
-description: "Learn more about: Compiler Error C2116"
 title: "Compiler Error C2116"
+description: "Learn more about: Compiler Error C2116"
 ms.date: 12/02/2021
 f1_keywords: ["C2116"]
 helpviewer_keywords: ["C2116"]
-ms.assetid: 0089a23f-e6bd-4956-9b58-3bcca09ab5ad
 ---
 # Compiler Error C2116
 
 > function parameter lists do not match between declarations
 
-The parameter list of a redeclared function doesn't match the parameter list used in an earlier declaration.
-
 ## Remarks
 
+The parameter list of a redeclared function doesn't match the parameter list used in an earlier declaration.
+
 This error can occur if you use different types for the parameters when you redeclare an `extern "C"` function.
 
 This error may occur after an upgrade because of conformance changes in Visual Studio 2019. Starting in Visual Studio 2019 version 16.3, the [`/Zc:externC-`](../../build/reference/zc-externc.md) compiler option relaxes this check. The option must come after any [`/permissive-`](../../build/reference/permissive-standards-conformance.md) option on the command line.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md
index 1b5aeb3f18..9776f59ce2 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2117"
 title: "Compiler Error C2117"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2117"
+ms.date: 11/04/2016
 f1_keywords: ["C2117"]
 helpviewer_keywords: ["C2117"]
-ms.assetid: b947379d-5861-42fc-ac26-170318579cbd
 ---
 # Compiler Error C2117
 
-'identifier' : array bounds overflow
+> 'identifier' : array bounds overflow
+
+## Remarks
 
 An array has too many initializers:
 
@@ -16,7 +17,9 @@ An array has too many initializers:
 
 - No space for the null terminator in a string.
 
-The following sample generates C2117:
+## Example
+
+The following example generates C2117:
 
 ```cpp
 // C2117.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md
index b10252e5e5..b033bb8ddc 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2118"
 title: "Compiler Error C2118"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2118"
+ms.date: 11/04/2016
 f1_keywords: ["C2118"]
 helpviewer_keywords: ["C2118"]
-ms.assetid: bf4315d0-f085-4323-b813-96ee61a13bde
 ---
 # Compiler Error C2118
 
-negative subscript
+> negative subscript
+
+## Remarks
 
 The value defining the array size is larger than the maximum array size or smaller than zero.
 
-The following sample generates C2118:
+## Example
+
+The following example generates C2118:
 
 ```cpp
 // C2118.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md
index fe8ca7df9c..b3f630d7c1 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2120"
 title: "Compiler Error C2120"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2120"
+ms.date: 11/04/2016
 f1_keywords: ["C2120"]
 helpviewer_keywords: ["C2120"]
-ms.assetid: b0f3f66c-6cd2-4f48-9ea3-c270b53c2b8c
 ---
 # Compiler Error C2120
 
-'void' illegal with all types
+> 'void' illegal with all types
+
+## Remarks
 
 The **`void`** type is used in a declaration with another type.
 
-The following sample generates C2120:
+## Example
+
+The following example generates C2120:
 
 ```cpp
 // C2120.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md
index bcd354b2fc..3c2b477056 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2121"
 title: "Compiler Error C2121"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2121"
+ms.date: 11/04/2016
 f1_keywords: ["C2121"]
 helpviewer_keywords: ["C2121"]
-ms.assetid: e04f32da-3736-4df3-8a1c-d687afcecf5c
 ---
 # Compiler Error C2121
 
-'#' : invalid character : possibly the result of a macro expansion
+> '#' : invalid character : possibly the result of a macro expansion
+
+## Remarks
 
 An invalid # character may have been inserted by an incorrect macro that uses the token-pasting operator (##) instead of the stringizing operator (#).
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md
index a71d88a415..31ae2f699a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2122"
 title: "Compiler Error C2122"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2122"
+ms.date: 11/04/2016
 f1_keywords: ["C2122"]
 helpviewer_keywords: ["C2122"]
-ms.assetid: bc060002-cd38-481b-a144-65af035ce851
 ---
 # Compiler Error C2122
 
-'identifier' : prototype parameter in name list illegal
+> 'identifier' : prototype parameter in name list illegal
+
+## Remarks
 
 The parameter is not a legal type. ANSI C does not support user-defined types.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md
index 66e5e748be..e20cba89e6 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2124"
 title: "Compiler Error C2124"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2124"
+ms.date: 11/04/2016
 f1_keywords: ["C2124"]
 helpviewer_keywords: ["C2124"]
-ms.assetid: 93392aaa-5582-4d68-8cc5-bd9c62a0ae7e
 ---
 # Compiler Error C2124
 
-divide or mod by zero
+> divide or mod by zero
+
+## Remarks
 
 A constant expression has a zero denominator. To resolve the error, do not divide by zero.
 
-The following sample generates C2124:
+## Example
+
+The following example generates C2124:
 
 ```cpp
 // C2124.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md
index 242935dcf8..a2d21596f7 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md
@@ -1,17 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2128"
 title: "Compiler Error C2128"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2128"
+ms.date: 11/04/2016
 f1_keywords: ["C2128"]
 helpviewer_keywords: ["C2128"]
 ---
 # Compiler Error C2128
 
-'function' : alloc_text/same_seg applicable only to functions with C linkage
+> 'function' : alloc_text/same_seg applicable only to functions with C linkage
+
+## Remarks
 
 `#pragma alloc_text` can only be used with functions declared to have C linkage.
 
-The following sample generates C2128:
+## Example
+
+The following example generates C2128:
 
 ```cpp
 // C2128.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md
index bc65e65142..161c15cfb9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2129"
 title: "Compiler Error C2129"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2129"
+ms.date: 11/04/2016
 f1_keywords: ["C2129"]
 helpviewer_keywords: ["C2129"]
-ms.assetid: 21a8223e-1d22-4baa-9ca1-922b7f751dd0
 ---
 # Compiler Error C2129
 
-static function 'function' declared but not defined
+> static function 'function' declared but not defined
+
+## Remarks
 
 A forward reference is made to a **`static`** function that is never defined.
 
 A **`static`** function must be defined within file scope. If the function is defined in another file, it must be declared **`extern`**.
 
-The following sample generates C2129:
+## Example
+
+The following example generates C2129:
 
 ```cpp
 // C2129.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md
index cf56b31a74..5f1fd27161 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2130"
 title: "Compiler Error C2130"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2130"
+ms.date: 11/04/2016
 f1_keywords: ["C2130"]
 helpviewer_keywords: ["C2130"]
-ms.assetid: c6fd5a7e-8f28-4f67-99d1-95a13b0dff90
 ---
 # Compiler Error C2130
 
-\#line expected a string containing the filename, found 'token'
+> #line expected a string containing the filename, found 'token'
+
+## Remarks
 
 The optional file name token following [#line](../../preprocessor/hash-line-directive-c-cpp.md) `linenumber` must be a string.
 
-The following sample generates C2130:
+## Example
+
+The following example generates C2130:
 
 ```cpp
 // C2130.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md
index 90733559e1..32855ce431 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Error C2131"
 title: "Compiler Error C2131"
-ms.date: "02/28/2019"
+description: "Learn more about: Compiler Error C2131"
+ms.date: 02/28/2019
 f1_keywords: ["C2131"]
 helpviewer_keywords: ["C2131"]
 ---
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C2131"]
 
 > expression did not evaluate to a constant
 
+## Remarks
+
 An expression declared as **`const`** or **`constexpr`** didn't evaluate to a constant at compile time. The compiler must be able to determine the value of the expression at the point it's used.
 
 ## Example
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md
index c4c2161533..0bf9a33074 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2132"
 title: "Compiler Error C2132"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2132"
+ms.date: 11/04/2016
 f1_keywords: ["C2132"]
 helpviewer_keywords: ["C2132"]
-ms.assetid: 32902472-49d1-4513-888f-b52d336839d5
 ---
 # Compiler Error C2132
 
-syntax error : unexpected identifier
+> syntax error : unexpected identifier
+
+## Remarks
 
 An identifier appears in an unsupported context.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md
index bc9e05e319..fbeed35e5b 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2133"
 title: "Compiler Error C2133"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2133"
+ms.date: 11/04/2016
 f1_keywords: ["C2133"]
 helpviewer_keywords: ["C2133"]
-ms.assetid: 8942f9e8-9818-468f-97db-09dbd124fcae
 ---
 # Compiler Error C2133
 
-'identifier' : unknown size
+> 'identifier' : unknown size
+
+## Remarks
 
 An unsized array is declared as a member of a class, structure, union, or enumeration. The /Za (ANSI C) option does not allow unsized member arrays.
 
-The following sample generates C2133:
+## Example
+
+The following example generates C2133:
 
 ```cpp
 // C2133.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md
index a46a383784..2e79ffe2bb 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md
@@ -1,24 +1,28 @@
 ---
-description: "Learn more about: Compiler Error C2134"
 title: "Compiler Error C2134"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2134"
+ms.date: 11/04/2016
 f1_keywords: ["C2134"]
-ms.assetid: d45cb3e8-0be4-4bd6-8be9-5f8d2384363f
+helpviewer_keywords: ["C2134"]
 ---
 # Compiler Error C2134
 
-'function' : call does not result in a constant expression
+> 'function' : call does not result in a constant expression
+
+## Remarks
 
 A function declared as constexpr can only call other functions declared as constexpr.
 
-The following sample generates C2134:
+## Example
+
+The following example generates C2134:
 
 ```cpp
 // C2134.cpp
 // compile with: /c
 int A() {
     return 42;
-};
+}
 
 constexpr int B() {
     return A();  // Error C2134: 'A': call does not result in a constant expression.
@@ -31,7 +35,7 @@ Possible resolution:
 // C2134b.cpp
 constexpr int A() {  // add constexpr to A, since it meets the requirements of constexpr.
     return 42;
-};
+}
 
 constexpr int B() {
     return A();  // No error
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md
index d830da92ac..4af1d4f1b4 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2135"
 title: "Compiler Error C2135"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2135"
+ms.date: 11/04/2016
 f1_keywords: ["C2135"]
 helpviewer_keywords: ["C2135"]
-ms.assetid: aa360d22-4f79-4de1-b384-93cadd10975f
 ---
 # Compiler Error C2135
 
-'bit operator' : illegal bit field operation
+> 'bit operator' : illegal bit field operation
+
+## Remarks
 
 The address-of operator (`&`) cannot be applied to a bit field.
 
-The following sample generates C2135:
+## Example
+
+The following example generates C2135:
 
 ```cpp
 // C2135.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md
index bb5b13eaa6..283c3c3777 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2137"
 title: "Compiler Error C2137"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2137"
+ms.date: 11/04/2016
 f1_keywords: ["C2137"]
 helpviewer_keywords: ["C2137"]
-ms.assetid: 984687ee-7766-4f6b-ae15-0c9a010e2366
 ---
 # Compiler Error C2137
 
-empty character constant
+> empty character constant
+
+## Remarks
 
 The empty character constant ( ' ' ) is not permitted.
 
-The following sample generates C2137:
+## Example
+
+The following example generates C2137:
 
 ```cpp
 // C2137.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md
index 77a93bb632..3b597d22ad 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2138"
 title: "Compiler Error C2138"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2138"
+ms.date: 11/04/2016
 f1_keywords: ["C2138"]
 helpviewer_keywords: ["C2138"]
-ms.assetid: 59fd1a58-3605-45dd-b9c1-0981e8aab26d
 ---
 # Compiler Error C2138
 
-illegal to define an enumeration without any members
+> illegal to define an enumeration without any members
+
+## Remarks
 
 An enumeration must have at least one member when /Za (disable Microsoft extensions) is selected.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md
index e14f1709bf..3f09eaac25 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler Error C2139"
 title: "Compiler Error C2139"
+description: "Learn more about: Compiler Error C2139"
 ms.date: 05/03/2021
 f1_keywords: ["C2139"]
 helpviewer_keywords: ["C2139"]
@@ -9,15 +9,15 @@ helpviewer_keywords: ["C2139"]
 
 > '*type*' : an undefined class is not allowed as an argument to compiler intrinsic type trait '*trait*'
 
-An invalid argument was passed to a type trait.
-
 ## Remarks
 
+An invalid argument was passed to a type trait.
+
 For more information, see [Compiler Support for Type Traits](../../extensions/compiler-support-for-type-traits-cpp-component-extensions.md).
 
 ## Example
 
-The following sample generates C2139.
+The following example generates C2139.
 
 ```cpp
 // C2139.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md
index 59c8c1212f..5d5a064807 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2140"
 title: "Compiler Error C2140"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2140"
+ms.date: 11/04/2016
 f1_keywords: ["C2140"]
 helpviewer_keywords: ["C2140"]
-ms.assetid: d44a0500-002c-4632-9e5e-c71c3a473ec4
 ---
 # Compiler Error C2140
 
-'type' : a type that is dependent on a generic type parameter is not allowed as an argument to compiler intrinsic type trait 'trait'
+> 'type' : a type that is dependent on a generic type parameter is not allowed as an argument to compiler intrinsic type trait 'trait'
+
+## Remarks
 
 An invalid type specifier was passed to a type trait.
 
@@ -16,7 +17,7 @@ For more information, see [Compiler Support for Type Traits](../../extensions/co
 
 ## Example
 
-The following sample generates C2140.
+The following example generates C2140.
 
 ```cpp
 // C2140.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md
index 056b298349..18e160df28 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2141"
 title: "Compiler Error C2141"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2141"
+ms.date: 11/04/2016
 f1_keywords: ["C2141"]
 helpviewer_keywords: ["C2141"]
-ms.assetid: 10cf770f-0500-4220-ac90-a863b7ea5fe6
 ---
 # Compiler Error C2141
 
-array size overflow
+> array size overflow
+
+## Remarks
 
 An array exceeds the 2GB limit. Reduce the size of the array.
 
 ## Example
 
-The following sample generates C2141.
+The following example generates C2141.
 
 ```cpp
 // C2141.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md
index 1920a38963..63c8eae944 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2142"
 title: "Compiler Error C2142"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2142"
+ms.date: 11/04/2016
 f1_keywords: ["C2142"]
 helpviewer_keywords: ["C2142"]
-ms.assetid: d0dbe10e-0952-49a4-8b33-e82fb7558b19
 ---
 # Compiler Error C2142
 
-function declarations differ, variable parameters specified only in one of them
+> function declarations differ, variable parameters specified only in one of them
+
+## Remarks
 
 One declaration of the function contains a variable parameter list. Another declaration does not. ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) only.
 
-The following sample generates C2142:
+## Example
+
+The following example generates C2142:
 
 ```c
 // C2142.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md
index 66f9011fb6..244566a613 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2143"
 title: "Compiler Error C2143"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2143"
+ms.date: 11/04/2016
 f1_keywords: ["C2143"]
 helpviewer_keywords: ["C2143"]
-ms.assetid: 1d8d1456-e031-4965-9240-09a6e33ba81c
 ---
 # Compiler Error C2143
 
-syntax error : missing 'token1' before 'token2'
+> syntax error : missing 'token1' before 'token2'
+
+## Remarks
 
 The compiler expected a specific token (that is, a language element other than white space) and found another token instead.
 
@@ -16,6 +17,8 @@ Check the [C++ Language Reference](../../cpp/cpp-language-reference.md) to deter
 
 C2143 can occur in different situations.
 
+## Examples
+
 It can occur when an operator that can qualify a name (`::`, `->`, and `.`) must be followed by the keyword **`template`**, as in this example:
 
 ```cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md
index b421b7b1e7..c50ffbe8bf 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Compiler Error C2144"
 title: "Compiler Error C2144"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2144"
+ms.date: 11/04/2016
 f1_keywords: ["C2144"]
 helpviewer_keywords: ["C2144"]
-ms.assetid: 49f3959b-324f-4c06-9588-c0ecef5dc5b3
 ---
 # Compiler Error C2144
 
 > syntax error : '*type*' should be preceded by '*token*'
 
+## Remarks
+
 The compiler expected *token* and found *type* instead.
 
 This error may be caused by a missing closing brace, right parenthesis, or semicolon.
@@ -20,7 +21,7 @@ You may also see C2144 if you are trying to do type forwarding. See [Type Forwar
 
 ## Examples
 
-The following sample generates C2144, and shows a way to fix it:
+The following example generates C2144, and shows a way to fix it:
 
 ```cpp
 // C2144.cpp
@@ -33,7 +34,7 @@ REF struct MyStruct0;   // C2144
 REF1 MyStruct1;
 ```
 
-The following sample generates C2144, and shows a way to fix it:
+The following example generates C2144, and shows a way to fix it:
 
 ```cpp
 // C2144_2.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md
index d38fac35d8..3f0cb125a0 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2145"
 title: "Compiler Error C2145"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2145"
+ms.date: 11/04/2016
 f1_keywords: ["C2145"]
 helpviewer_keywords: ["C2145"]
-ms.assetid: 158e5809-8adb-4195-8ca5-684501defbc8
 ---
 # Compiler Error C2145
 
-syntax error : missing 'token' before identifier
+> syntax error : missing 'token' before identifier
+
+## Remarks
 
 The compiler expected `token` and found identifier instead.
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md
index 083cfd7db7..075f911dfa 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2146"
 title: "Compiler Error C2146"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2146"
+ms.date: 11/04/2016
 f1_keywords: ["C2146"]
 helpviewer_keywords: ["C2146"]
-ms.assetid: 6bfb7de6-6723-4486-9350-c66ef88d7a64
 ---
 # Compiler Error C2146
 
-syntax error : missing 'token' before identifier 'identifier'
+> syntax error : missing 'token' before identifier 'identifier'
+
+## Remarks
 
 The compiler expected `token` and found `identifier` instead.  Possible causes:
 
@@ -20,7 +21,7 @@ This error may be caused by a typographical error. Error [C2065](../../error-mes
 
 ## Examples
 
-The following sample generates C2146.
+The following example generates C2146.
 
 ```cpp
 // C2146.cpp
@@ -39,7 +40,7 @@ int main() {
 
 This error can also be generated as a result of compiler conformance work that was done for Visual Studio .NET 2003: missing **`typename`** keyword.
 
-The following sample compiles in Visual Studio .NET 2002 but will fail in Visual Studio .NET 2003:
+The following example compiles in Visual Studio .NET 2002 but will fail in Visual Studio .NET 2003:
 
 ```cpp
 // C2146b.cpp
@@ -64,7 +65,7 @@ You will also see this error as a result of compiler conformance work that was d
 
 The use of `T` from the primary template is not allowed in the explicit specialization. For code to be valid in the Visual Studio .NET 2003 and Visual Studio .NET, replace all instances of the template parameter in the specialization with the explicitly specialized type.
 
-The following sample compiles in Visual Studio .NET but will fail in Visual Studio .NET 2003:
+The following example compiles in Visual Studio .NET but will fail in Visual Studio .NET 2003:
 
 ```cpp
 // C2146_c.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md
index 363bd1c286..c282a1e2bd 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2147"
 title: "Compiler Error C2147"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2147"
+ms.date: 11/04/2016
 f1_keywords: ["C2147"]
 helpviewer_keywords: ["C2147"]
-ms.assetid: d1adb3bf-7ece-4815-922c-ad7492fb6670
 ---
 # Compiler Error C2147
 
-syntax error : 'identifier' is a new keyword
+> syntax error : 'identifier' is a new keyword
+
+## Remarks
 
 An identifier was used that is now a reserved keyword in the language.
 
-The following sample generates C2147:
+## Example
+
+The following example generates C2147:
 
 ```cpp
 // C2147.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md
index f2a12bc67b..6caab69051 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2148"
 title: "Compiler Error C2148"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2148"
+ms.date: 11/04/2016
 f1_keywords: ["C2148"]
 helpviewer_keywords: ["C2148"]
-ms.assetid: e510c2c9-7b57-4ce8-be03-ba363e2cc5d9
 ---
 # Compiler Error C2148
 
-total size of array must not exceed 0x7fffffff bytes
+> total size of array must not exceed 0x7fffffff bytes
+
+## Remarks
 
 An array exceeds the limit. Reduce the size of the array.
 
 ## Example
 
-The following sample generates C2148:
+The following example generates C2148:
 
 ```cpp
 // C2148.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md
index 5eede2573b..e6e64526d8 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2149"
 title: "Compiler Error C2149"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2149"
+ms.date: 11/04/2016
 f1_keywords: ["C2149"]
 helpviewer_keywords: ["C2149"]
-ms.assetid: 7a106dab-d79f-41b9-85be-f36e86e4d2ab
 ---
 # Compiler Error C2149
 
-'identifier' : named bit field cannot have zero width
+> 'identifier' : named bit field cannot have zero width
+
+## Remarks
 
 Bit fields can have zero width only if unnamed.
 
-The following sample generates C2149:
+## Example
+
+The following example generates C2149:
 
 ```cpp
 // C2149.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md
index 3fc67eca0f..c1595ba514 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2150"
 title: "Compiler Error C2150"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2150"
+ms.date: 11/04/2016
 f1_keywords: ["C2150"]
 helpviewer_keywords: ["C2150"]
-ms.assetid: 21e82a10-c1d4-4c0d-9dc6-c5d92ea42a31
 ---
 # Compiler Error C2150
 
 > '*identifier*' : bit field must have type 'int', 'signed int', or 'unsigned int'
 
+## Remarks
+
 The base type for a bit-field is required to be **`int`**, **`signed int`**, or **`unsigned int`**.
 
 ## Example
 
-This sample shows how you might encounter C2150, and how you can fix it:
+This example shows how you might encounter C2150, and how you can fix it:
 
 ```cpp
 // C2150.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md
index 9fffa41bf1..60f0f9ebea 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2151"
 title: "Compiler Error C2151"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2151"
+ms.date: 11/04/2016
 f1_keywords: ["C2151"]
 helpviewer_keywords: ["C2151"]
-ms.assetid: 7f8dd83a-1f41-46d8-8778-0d1f79ed36c9
 ---
 # Compiler Error C2151
 
-more than one language attribute
+> more than one language attribute
+
+## Remarks
 
 A function has more than one keyword ( **`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) specifying a calling convention.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md
index 40c3988ecf..fa096f9730 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2152"
 title: "Compiler Error C2152"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2152"
+ms.date: 11/04/2016
 f1_keywords: ["C2152"]
 helpviewer_keywords: ["C2152"]
-ms.assetid: a9ea2b0c-d55d-41c7-ba9f-dd75592ffc8a
 ---
 # Compiler Error C2152
 
-'identifier' : pointers to functions with different attributes
+> 'identifier' : pointers to functions with different attributes
+
+## Remarks
 
 A pointer to a function with one calling convention (**`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) is assigned to a pointer to a function with another calling convention.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md
index 893455edab..8f34dce0ad 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md
@@ -1,23 +1,30 @@
 ---
-description: "Learn more about: Compiler Error C2153"
 title: "Compiler Error C2153"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2153"
+ms.date: 01/31/2025
 f1_keywords: ["C2153"]
 helpviewer_keywords: ["C2153"]
-ms.assetid: cfc50cb7-9a0f-4b5b-879a-d419c99f7be1
 ---
 # Compiler Error C2153
 
-hex constants must have at least one hex digit
+> integer literals must have at least one digit
+
+## Remarks
 
-Hexadecimal constants 0x, 0X, and \x are not valid. At least one hex digit must follow x or X.
+Hexadecimal and binary literals must contain at least one digit after the leading sequence (`0x`, `0X`, `0b`, or `0B`), otherwise the trailing character may be incorrectly interpreted as a suffix or literal operator. See [Integer literals](../../cpp/numeric-boolean-and-pointer-literals-cpp.md#integer-literals) for more information.
 
-The following sample generates C2153:
+## Example
+
+The following example generates C2153:
 
 ```cpp
 // C2153.cpp
-int main() {
-   int a= 0x;    // C2153
-   int b= 0xA;   // OK
+int main()
+{
+    int a = 0x;    // C2153
+    int b = 0x0;   // OK
+
+    int c = 0b;    // C2153
+    int d = 0b0;   // OK
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md
index a60157128d..021703b64e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2154"
 title: "Compiler Error C2154"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2154"
+ms.date: 11/04/2016
 f1_keywords: ["C2154"]
 helpviewer_keywords: ["C2154"]
-ms.assetid: 98d6b044-5a3a-43ad-95fa-9b916b22468a
 ---
 # Compiler Error C2154
 
-'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type'
+> 'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type'
+
+## Remarks
 
 You can only get the underlying type of an enumeration type.
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md
index d65e37535c..7dfb22df0d 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2155"
 title: "Compiler Error C2155"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2155"
+ms.date: 11/04/2016
 f1_keywords: ["C2155"]
 helpviewer_keywords: ["C2155"]
-ms.assetid: 54d408af-fc48-4121-9011-5e75c7072e01
 ---
 # Compiler Error C2155
 
-'?' : invalid left operand, expected arithmetic or pointer type
+> '?' : invalid left operand, expected arithmetic or pointer type
+
+## Remarks
 
 An expression on the left hand side of `?` cannot be compared to zero. You must use an arithmetic or pointer expression that can be compared to zero.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md
index 3f26c7e32e..8ba7b0a0ca 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2156"
 title: "Compiler Error C2156"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2156"
+ms.date: 11/04/2016
 f1_keywords: ["C2156"]
 helpviewer_keywords: ["C2156"]
-ms.assetid: 136f9c67-2c27-4f61-b7e6-ccd202eca697
 ---
 # Compiler Error C2156
 
-pragma must be outside function
+> pragma must be outside function
+
+## Remarks
 
 A pragma that must be specified at a global level (outside a function body) is within a function.
 
-The following sample generates C2156:
+## Example
+
+The following example generates C2156:
 
 ```cpp
 // C2156.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md
index 5128e4a1b9..104d98276b 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2157"
 title: "Compiler Error C2157"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2157"
+ms.date: 11/04/2016
 f1_keywords: ["C2157"]
 helpviewer_keywords: ["C2157"]
-ms.assetid: babbca24-16dc-4b69-be14-a675029249c1
 ---
 # Compiler Error C2157
 
-'function' : must be declared before use in pragma list
+> 'function' : must be declared before use in pragma list
+
+## Remarks
 
 The function name is not declared before being referenced in the list of functions for an [alloc_text](../../preprocessor/alloc-text.md) pragma.
 
-The following sample generates C2157:
+## Example
+
+The following example generates C2157:
 
 ```cpp
 // C2157.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md
index 9701f65a70..4372aa7156 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2158"
 title: "Compiler Error C2158"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2158"
+ms.date: 11/04/2016
 f1_keywords: ["C2158"]
 helpviewer_keywords: ["C2158"]
-ms.assetid: 39028899-e95c-4809-8e65-6111118641ee
 ---
 # Compiler Error C2158
 
-'type' : #pragma make_public directive is currently supported for native non-template types only
+> 'type' : #pragma make_public directive is currently supported for native non-template types only
+
+## Remarks
 
 The [make_public](../../preprocessor/make-public.md) pragma can only be applied to a native, non-template type.
 
 ## Example
 
-The following sample generates C2158.
+The following example generates C2158.
 
 ```cpp
 // C2158.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md
index 70073ebc69..1463230715 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2159"
 title: "Compiler Error C2159"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2159"
+ms.date: 11/04/2016
 f1_keywords: ["C2159"]
 helpviewer_keywords: ["C2159"]
-ms.assetid: 925a2cbd-43c9-45ee-a373-84004350b380
 ---
 # Compiler Error C2159
 
-more than one storage class specified
+> more than one storage class specified
+
+## Remarks
 
 A declaration contains more than one storage class.
 
-The following sample generates C2159:
+## Example
+
+The following example generates C2159:
 
 ```cpp
 // C2159.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md
index 6353f84bba..1b9174fbe6 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2160"
 title: "Compiler Error C2160"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2160"
+ms.date: 11/04/2016
 f1_keywords: ["C2160"]
 helpviewer_keywords: ["C2160"]
-ms.assetid: a1f694a7-fb16-4437-b7f5-a1af6da94bc5
 ---
 # Compiler Error C2160
 
-'##' cannot occur at the beginning of a macro definition
+> '##' cannot occur at the beginning of a macro definition
+
+## Remarks
 
 A macro definition began with a token-pasting operator (##).
 
-The following sample generates C2160:
+## Example
+
+The following example generates C2160:
 
 ```cpp
 // C2160.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md
index e552b85448..cab1ce7231 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2161"
 title: "Compiler Error C2161"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2161"
+ms.date: 11/04/2016
 f1_keywords: ["C2161"]
 helpviewer_keywords: ["C2161"]
-ms.assetid: d6798821-13bb-4e60-924f-85f7bf955387
 ---
 # Compiler Error C2161
 
-'##' cannot occur at the end of a macro definition
+> '##' cannot occur at the end of a macro definition
+
+## Remarks
 
 A macro definition ended with a token-pasting operator (##).
 
-The following sample generates C2161:
+## Example
+
+The following example generates C2161:
 
 ```cpp
 // C2161.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md
index 9255eacdab..eb2b08aa20 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md
@@ -1,26 +1,25 @@
 ---
-description: "Learn more about: Compiler Error C2162"
 title: "Compiler Error C2162"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2162"
+ms.date: 03/30/2025
 f1_keywords: ["C2162"]
 helpviewer_keywords: ["C2162"]
-ms.assetid: 34923628-d35e-48ab-9072-b95e3b5f6b45
 ---
 # Compiler Error C2162
 
-expected macro formal parameter
+> expected macro formal parameter
 
-The token following a stringizing operator (#) is not a formal parameter name.
+## Remarks
+
+The token following a [stringizing operator (#)](../../preprocessor/stringizing-operator-hash.md) or a [charizing operator (#@)](../../preprocessor/charizing-operator-hash-at.md) is not a formal parameter.
 
 ## Example
 
-The following sample generates C2162:
+The following example generates C2162:
 
 ```cpp
 // C2162.cpp
 // compile with: /c
-#include <stdio.h>
-
-#define print(a) printf_s(b)   // OK
-#define print(a) printf_s(#b)    // C2162
+#define make_string1(s) #    // C2162
+#define make_string2(s) #s   // OK
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md
index 8cf898cc43..1fd73ce8bd 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2163"
 title: "Compiler Error C2163"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2163"
+ms.date: 11/04/2016
 f1_keywords: ["C2163"]
 helpviewer_keywords: ["C2163"]
-ms.assetid: 6428d1e9-1ba1-46fc-bbf6-91d6fef2734c
 ---
 # Compiler Error C2163
 
-'function' : not available as an intrinsic function
+> 'function' : not available as an intrinsic function
+
+## Remarks
 
 An `intrinsic` or `function` pragma lists a function not available in intrinsic form. For example, certain intrinsics are not available when compiling a program that uses /clr programming.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md
index 0938243a68..5110e09126 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2164"
 title: "Compiler Error C2164"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2164"
+ms.date: 11/04/2016
 f1_keywords: ["C2164"]
 helpviewer_keywords: ["C2164"]
-ms.assetid: 55df5024-68a8-45a8-ae6c-e6dba35318a2
 ---
 # Compiler Error C2164
 
-'function' : intrinsic function not declared
+> 'function' : intrinsic function not declared
+
+## Remarks
 
 An `intrinsic` pragma uses an undeclared function (only occurs with **/Oi**). Or, one of the compiler intrinsics was used without including its header file.
 
-The following sample generates C2164:
+## Example
+
+The following example generates C2164:
 
 ```c
 // C2164.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md
index 6cc12f0dcc..c205d3531e 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2165"
 title: "Compiler Error C2165"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2165"
+ms.date: 11/04/2016
 f1_keywords: ["C2165"]
 helpviewer_keywords: ["C2165"]
-ms.assetid: b108313b-b8cb-4dce-b2ec-f2b31c9cdc87
 ---
 # Compiler Error C2165
 
-'keyword' : cannot modify pointers to data
+> 'keyword' : cannot modify pointers to data
+
+## Remarks
 
 The **`__stdcall`**, **`__cdecl`**, or **`__fastcall`** keyword attempts to modify a pointer to data.
 
-The following sample generates C2165:
+## Example
+
+The following example generates C2165:
 
 ```cpp
 // C2165.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2166.md b/docs/error-messages/compiler-errors-1/compiler-error-c2166.md
index a4df5a1166..82508f2bf9 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2166.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2166.md
@@ -1,23 +1,26 @@
 ---
-description: "Learn more about: Compiler Error C2166"
 title: "Compiler Error C2166"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2166"
+ms.date: 06/29/2025
 f1_keywords: ["C2166"]
 helpviewer_keywords: ["C2166"]
-ms.assetid: 12789c3a-cc76-48bb-ae2e-64283e0964ed
 ---
 # Compiler Error C2166
 
-l-value specifies const object
+> l-value specifies const object
+
+## Remarks
 
 Code attempts to modify an item declared **`const`**.
 
-The following sample generates C2166:
+## Example
+
+The following example generates C2166:
 
 ```cpp
 // C2166.cpp
-int f();
-int main() {
-   ( (const int&) 1 ) = 5;   // C2166
+int main()
+{
+    ((const int&)1) = 5;   // C2166
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md
index 04cfdca590..f893c4e0ff 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2167"
 title: "Compiler Error C2167"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2167"
+ms.date: 11/04/2016
 f1_keywords: ["C2167"]
 helpviewer_keywords: ["C2167"]
-ms.assetid: 3de3de96-12cd-47df-b24e-34cc9747ef83
 ---
 # Compiler Error C2167
 
-'function' : too many actual parameters for intrinsic function
+> 'function' : too many actual parameters for intrinsic function
+
+## Remarks
 
 A reference to an `intrinsic` function has too many parameters.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md
index 26574e9a1b..e2fe0f0550 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2168"
 title: "Compiler Error C2168"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2168"
+ms.date: 11/04/2016
 f1_keywords: ["C2168"]
 helpviewer_keywords: ["C2168"]
-ms.assetid: 625e7dc3-ca74-4980-8268-8d5c0245e376
 ---
 # Compiler Error C2168
 
-'function' : too few actual parameters for intrinsic function
+> 'function' : too few actual parameters for intrinsic function
+
+## Remarks
 
 A reference to an `intrinsic` function has too few parameters.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md
index a4e5816594..210ec567bc 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2169"
 title: "Compiler Error C2169"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2169"
+ms.date: 11/04/2016
 f1_keywords: ["C2169"]
 helpviewer_keywords: ["C2169"]
-ms.assetid: 97f700bd-1044-46f5-b276-3d7570ee7708
 ---
 # Compiler Error C2169
 
-'function' : intrinsic function, cannot be defined
+> 'function' : intrinsic function, cannot be defined
+
+## Remarks
 
 A function definition appears for a function already declared `intrinsic`.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md
index 599a575011..a3e73e406f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Error C2170"
 title: "Compiler Error C2170"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2170"
+ms.date: 11/04/2016
 f1_keywords: ["C2170"]
 helpviewer_keywords: ["C2170"]
-ms.assetid: d5c663f0-2459-4e11-a8bf-a52b62f3c71d
 ---
 # Compiler Error C2170
 
-'identifier' : not declared as a function, cannot be intrinsic
+> 'identifier' : not declared as a function, cannot be intrinsic
 
 ### To fix by checking the following possible causes
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md
index f32ebc62e2..fb4d42de90 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2171"
 title: "Compiler Error C2171"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2171"
+ms.date: 11/04/2016
 f1_keywords: ["C2171"]
 helpviewer_keywords: ["C2171"]
-ms.assetid: a80343b5-ab3f-4413-b6f1-3ce9d7e519e5
 ---
 # Compiler Error C2171
 
-'operator' : illegal on operands of type 'type'
+> 'operator' : illegal on operands of type 'type'
+
+## Remarks
 
 A unary operator is used with an invalid operand type.
 
 ## Examples
 
-The following sample generates C2171.
+The following example generates C2171.
 
 ```cpp
 // C2171.cpp
@@ -28,7 +29,7 @@ int main() {
 }
 ```
 
-The following sample generates C2171.
+The following example generates C2171.
 
 ```cpp
 // C2171_b.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md
index 8e2992bd81..55e01b5bb3 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2172"
 title: "Compiler Error C2172"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2172"
+ms.date: 11/04/2016
 f1_keywords: ["C2172"]
 helpviewer_keywords: ["C2172"]
-ms.assetid: 31183ea7-858d-4273-932a-d865af7059b1
 ---
 # Compiler Error C2172
 
-'function' : actual parameter is not a pointer : parameter number
+> 'function' : actual parameter is not a pointer : parameter number
+
+## Remarks
 
 Parameter `number` is not a pointer. The function expects a pointer.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md
index 45dc248785..fb92234298 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2173"
 title: "Compiler Error C2173"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2173"
+ms.date: 11/04/2016
 f1_keywords: ["C2173"]
 helpviewer_keywords: ["C2173"]
-ms.assetid: 4df592b8-609b-41a5-b4fc-966eb5bb2d1a
 ---
 # Compiler Error C2173
 
-'function' : actual parameter is not a pointer : parameter number1, parameter list number2
+> 'function' : actual parameter is not a pointer : parameter number1, parameter list number2
+
+## Remarks
 
 Parameter `number1` passed to parameter list `number2` is not a pointer. The function expects a pointer.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md
index bc685baa29..fe6702545f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2174"
 title: "Compiler Error C2174"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2174"
+ms.date: 11/04/2016
 f1_keywords: ["C2174"]
 helpviewer_keywords: ["C2174"]
-ms.assetid: 161d563c-76e9-47e9-9142-7812e9ea169e
 ---
 # Compiler Error C2174
 
-'function' : actual parameter has type 'void' : parameter number1, parameter list number2
+> 'function' : actual parameter has type 'void' : parameter number1, parameter list number2
+
+## Remarks
 
 Parameter `number1` passed to parameter list `number2` is a **`void`** parameter. Parameters cannot have type **`void`**. Use **`void*`** instead.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md
index 4f210813ce..32d47e23c2 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2175"
 title: "Compiler Error C2175"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2175"
+ms.date: 11/04/2016
 f1_keywords: ["C2175"]
 helpviewer_keywords: ["C2175"]
-ms.assetid: 3a8fa90b-2b29-414a-bb55-cf27c2bf989a
 ---
 # Compiler Error C2175
 
-'locale' : invalid locale
+> 'locale' : invalid locale
+
+## Remarks
 
 The specified locale is not valid. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for supported locales.
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md
index a69d0bcd35..e448186bf1 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2177"
 title: "Compiler Error C2177"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2177"
+ms.date: 11/04/2016
 f1_keywords: ["C2177"]
 helpviewer_keywords: ["C2177"]
-ms.assetid: 2a39a880-cddb-4d3e-a572-645a14c4c478
 ---
 # Compiler Error C2177
 
-constant too big
+> constant too big
+
+## Remarks
 
 A constant value is too large for the variable type it is assigned.
 
-The following sample generates C2177:
+## Example
+
+The following example generates C2177:
 
 ```cpp
 // C2177.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md
index b9aecbda49..ce0dfb543f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2178"
 title: "Compiler Error C2178"
-ms.date: "05/08/2017"
+description: "Learn more about: Compiler Error C2178"
+ms.date: 05/08/2017
 f1_keywords: ["C2178"]
 helpviewer_keywords: ["C2178"]
-ms.assetid: 79a14158-17f3-4221-bd06-9d675c49cef4
 ---
 # Compiler Error C2178
 
-'*identifier*' cannot be declared with '*specifier*' specifier
+> '*identifier*' cannot be declared with '*specifier*' specifier
+
+## Remarks
 
 A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context.
 
@@ -16,7 +17,7 @@ The **`mutable`** specifier can be applied only to names of class data members,
 
 ## Example
 
-The following sample shows how C2178 may occur, and how to fix it.
+The following example shows how C2178 may occur, and how to fix it.
 
 ```cpp
 // C2178.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md
index d1c9b3dc11..2f9baef338 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2179"
 title: "Compiler Error C2179"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2179"
+ms.date: 11/04/2016
 f1_keywords: ["C2179"]
 helpviewer_keywords: ["C2179"]
-ms.assetid: f929bfc6-3964-4e54-87d6-7529b9b6c0b9
 ---
 # Compiler Error C2179
 
-'type' : an attribute argument cannot use type parameters
+> 'type' : an attribute argument cannot use type parameters
+
+## Remarks
 
 A generic type parameter is resolved at runtime. However, an attribute parameter must be resolved at compile time. Therefore, you cannot use a generic type parameter as an argument to an attribute.
 
 ## Example
 
-The following sample generates C2179.
+The following example generates C2179.
 
 ```cpp
 // C2179.cpp
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md
index 30c5e6e220..d9f8803ca2 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2180"
 title: "Compiler Error C2180"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2180"
+ms.date: 11/04/2016
 f1_keywords: ["C2180"]
 helpviewer_keywords: ["C2180"]
-ms.assetid: ea71b39e-b977-48a7-b7bd-af68ef5e263b
 ---
 # Compiler Error C2180
 
-controlling expression has type 'type'
+> controlling expression has type 'type'
+
+## Remarks
 
 The controlling expression in an **`if`**, **`while`**, **`for`**, or **`do`** statement is an expression cast to **`void`**. To fix this issue, change the controlling expression to one that produces a **`bool`** or a type that can be converted to **`bool`**.
 
-The following sample generates C2180:
+## Example
+
+The following example generates C2180:
 
 ```c
 // C2180.c
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md
index bc39dfceb8..c01937be6c 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md
@@ -1,13 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2200"
 title: "Compiler Error C2200"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2200"
+ms.date: "02/15/2025"
 f1_keywords: ["C2200"]
 helpviewer_keywords: ["C2200"]
-ms.assetid: a04139a6-ce18-404b-9bfd-2369fc0af3cb
 ---
 # Compiler Error C2200
 
-'function' : function has already been defined
+'function': function has already been defined
+
+An [`alloc_text`](../../preprocessor/alloc-text.md) pragma uses a function name already defined. Ensure the `alloc_text` pragma appears after the function declaration but before its definition.
+
+The following sample generates C2200:
 
-An `alloc_text` pragma uses a function name already defined.
+```cpp
+// C2200.cpp
+// compile with: /c
+extern "C" void func() {}
+#pragma alloc_text("section", func)   // C2200
+```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md
index c2ebd50d80..d709161bfc 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2246"
 title: "Compiler Error C2246"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2246"
+ms.date: 11/04/2016
 f1_keywords: ["C2246"]
 helpviewer_keywords: ["C2246"]
-ms.assetid: 4f3e4f83-21f3-4256-af96-43e0bb060311
 ---
 # Compiler Error C2246
 
@@ -20,5 +19,5 @@ The following sample generates C2246:
 void func( void ) {
    class A { static int i; };   // C2246  i is local to func
    static int j;   // OK
-};
+}
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md
index 2b33cb4e28..a4034088e8 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2249"
 title: "Compiler Error C2249"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2249"
+ms.date: 11/04/2016
 f1_keywords: ["C2249"]
 helpviewer_keywords: ["C2249"]
-ms.assetid: bdd6697c-e04b-49b9-8e40-d9eb6d74f2b6
 ---
 # Compiler Error C2249
 
@@ -20,9 +19,9 @@ The following sample generates C2249.
 // C2249.cpp
 class A {
 private:
-   void privFunc( void ) {};
+   void privFunc( void ) {}
 public:
-   void pubFunc( void ) {};
+   void pubFunc( void ) {}
 };
 
 class B : virtual public A {} b;
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md
index 0f7436b72b..537a84be71 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2254"
 title: "Compiler Error C2254"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2254"
+ms.date: 11/04/2016
 f1_keywords: ["C2254"]
 helpviewer_keywords: ["C2254"]
-ms.assetid: 49bb3d7e-3bdf-4af6-937c-fa627be412a9
 ---
 # Compiler Error C2254
 
@@ -24,6 +23,6 @@ public:
    friend void func3();   // OK, friend not virtual nor pure
 };
 
-void func1() {};
-void func3() {};
+void func1() {}
+void func3() {}
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md
index 2c01122914..52b1375800 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Error C2283"
 title: "Compiler Error C2283"
+description: "Learn more about: Compiler Error C2283"
 ms.date: "11/04/2016"
 f1_keywords: ["C2283"]
 helpviewer_keywords: ["C2283"]
-ms.assetid: 8a5b3175-b480-4598-a1f7-0b50504c5caa
 ---
 # Compiler Error C2283
 
-'identifier' : pure specifier or abstract override specifier not allowed on unnamed struct
+> '*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct
 
 A member function of an unnamed class or structure is declared with a pure specifier, which is not permitted.
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md
index 14b86fb044..7e5ede5979 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Error C2394"
 title: "Compiler Error C2394"
+description: "Learn more about: Compiler Error C2394"
 ms.date: "11/04/2016"
 f1_keywords: ["C2394"]
 helpviewer_keywords: ["C2394"]
-ms.assetid: 653fa9a0-29b3-48aa-bc01-82f98f717a2b
 ---
 # Compiler Error C2394
 
-'your_type::operator'op'" : CLR or WinRToperator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'your_type'
+'*type*::operator *operator*': CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type'
 
 An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value.
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md
index 271763d69f..56f0115468 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2397"
 title: "Compiler Error C2397"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2397"
+ms.date: 11/04/2016
 f1_keywords: ["C2397"]
-ms.assetid: b418cf5a-d50d-4a6c-98a7-994ae35046d1
+helpviewer_keywords: ["C2397"]
 ---
 # Compiler Error C2397
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md
index 614e07b1be..75ec082785 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md
@@ -1,26 +1,24 @@
 ---
-description: "Learn more about: Compiler Error C2433"
 title: "Compiler Error C2433"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2433"
+ms.date: 05/25/2025
 f1_keywords: ["C2433"]
 helpviewer_keywords: ["C2433"]
-ms.assetid: 7079fedd-6059-4125-82ef-ebe275f1f9d1
 ---
 # Compiler Error C2433
 
-'identifier' : 'modifier' not permitted on data declarations
+> '*identifier*': '*modifier*' not permitted on data declarations
 
 The **`friend`**, **`virtual`**, and **`inline`** modifiers cannot be used for data declarations.
 
 ## Example
 
-The following sample generates C2433.
+The following example generates C2433:
 
 ```cpp
 // C2433.cpp
-class C{};
-
-int main() {
-   inline C c;   // C2433
+int main()
+{
+    virtual int i;   // C2433
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md
index 218b5f7a3d..d12b621c4a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md
@@ -1,18 +1,17 @@
 ---
-description: "Learn about type conversion errors that cause Compiler Error C2440."
 title: "Compiler Error C2440"
+description: "Learn about type conversion errors that cause Compiler Error C2440."
 ms.date: 08/27/2021
 f1_keywords: ["C2440"]
 helpviewer_keywords: ["C2440"]
 no-loc: ["struct", "const"]
-ms.assetid: 36e6676c-f04f-4715-8ba1-f096c4bf3b44
 ---
 # Compiler Error C2440
 
 > '*initializing*' : cannot convert from '*type1*' to '*type2*'\
 > '*conversion*' : cannot convert from '*type1*' to '*type2*'
 
-The compiler can't implicitly convert from `*type1*` to `*type2*`, or can't use the specified cast or conversion operator.
+The compiler can't implicitly convert from *`type1`* to *`type2`*, or can't use the specified cast or conversion operator.
 
 ## Remarks
 
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md
index b374ec3136..9a8d3f1867 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md
@@ -4,11 +4,10 @@ title: "Compiler Error C2462"
 ms.date: "11/04/2016"
 f1_keywords: ["C2462"]
 helpviewer_keywords: ["C2462"]
-ms.assetid: a8601bf8-f5ce-41de-9117-e2632bd4996b
 ---
 # Compiler Error C2462
 
-'identifier' : cannot define a type in a 'new-expression'
+> 'identifier' : cannot define a type in a 'new-expression'
 
 You cannot define a type in the operand field of the **`new`** operator. Put the type definition in a separate statement.
 
@@ -16,7 +15,8 @@ The following sample generates C2462:
 
 ```cpp
 // C2462.cpp
-int main() {
+int main()
+{
    new struct S { int i; };   // C2462
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md
index ae382ccd5f..34e0cca594 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Error C2466"
 title: "Compiler Error C2466"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2466"
+ms.date: "03/19/2025"
 f1_keywords: ["C2466"]
 helpviewer_keywords: ["C2466"]
-ms.assetid: 75b251d1-7d0b-4a86-afca-26adedf74486
 ---
 # Compiler Error C2466
 
-cannot allocate an array of constant size 0
+> cannot allocate an array of constant size 0
 
 An array is allocated or declared with size zero. The constant expression for the array size must be an integer greater than zero. An array declaration with a zero subscript is legal only for a class, structure, or union member and only with Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)).
 
@@ -17,7 +16,6 @@ The following sample generates C2466:
 ```cpp
 // C2466.cpp
 // compile with: /c
-int i[0];   // C2466
-int j[1];   // OK
-char *p;
+int arr1[0];   // C2466
+int arr2[1];   // OK
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md
index 1070a0128b..d0bc5eda5a 100644
--- a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md
+++ b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md
@@ -1,26 +1,34 @@
 ---
-description: "Learn more about: Compiler Error C2470"
 title: "Compiler Error C2470"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2470"
+ms.date: "03/29/2025"
 f1_keywords: ["C2470"]
 helpviewer_keywords: ["C2470"]
-ms.assetid: e17d2cb8-b84c-447c-976a-625f0c96f3fe
 ---
 # Compiler Error C2470
 
-'function' : looks like a function definition, but there is no parameter list; skipping apparent body
+> '*function*': looks like a function definition, but there is no parameter list; skipping apparent body
 
 A function definition is missing its argument list.
 
-The following sample generates C2470:
+## Example
+
+The following example generates C2470:
 
 ```cpp
 // C2470.cpp
-int MyFunc {};  // C2470
-void MyFunc2() {};  //OK
+// compile with: /c
+template <typename T>
+class C
+{
+    int func();
+};
 
-int main(){
-   MyFunc();
-   MyFunc2();
+template <typename T>
+int C<T>::func   // C2470
+// Use the following line to resolve the error:
+// int C<T>::func()
+{
+    return 0;
 }
 ```
diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md
index eff111136b..d12d6a6217 100644
--- a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md
+++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md
@@ -2,8 +2,8 @@
 description: "Learn more about: Compiler errors C2001 through C2099"
 title: "Compiler errors C2001 through C2099"
 ms.date: 08/24/2022
-f1_keywords: ["C2000", "C2029"]
-helpviewer_keywords: ["C2000", "C2029"]
+f1_keywords: ["C2029"]
+helpviewer_keywords: ["C2029"]
 ---
 # Compiler errors C2001 through C2099
 
@@ -20,14 +20,14 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C2003](compiler-error-c2003.md) | expected 'defined id' |
 | [Compiler error C2004](compiler-error-c2004.md) | expected 'defined(id)' |
 | [Compiler error C2005](compiler-error-c2005.md) | #line expected a line number, found '*token*' |
-| [Compiler error C2006](compiler-error-c2006.md) | '*directive*': expected a filename, found '*token*' |
+| [Compiler error C2006](compiler-error-c2006.md) | '*directive*': expected `"FILENAME"` or `<FILENAME>` |
 | [Compiler error C2007](compiler-error-c2007.md) | #define syntax |
 | [Compiler error C2008](compiler-error-c2008.md) | '*character*': unexpected in macro definition |
-| [Compiler error C2009](compiler-error-c2009.md) | reuse of macro formal '*identifier*' |
+| [Compiler error C2009](compiler-error-c2009.md) | cannot reuse macro parameter name '*identifier*' |
 | [Compiler error C2010](compiler-error-c2010.md) | '*character*': unexpected in macro formal parameter list |
 | [Compiler error C2011](compiler-error-c2011.md) | '*identifier*': '*type*' type redefinition |
 | [Compiler error C2012](compiler-error-c2012.md) | missing name following '<' |
-| [Compiler error C2013](compiler-error-c2013.md) | missing '>' |
+| [Compiler error C2013](compiler-error-c2013.md) | expected a '*token*' |
 | [Compiler error C2014](compiler-error-c2014.md) | preprocessor command must start as first nonwhite space |
 | [Compiler error C2015](compiler-error-c2015.md) | too many characters in constant |
 | [Compiler error C2016](compiler-error-c2016.md) | C requires that a struct or union has at least one member |
@@ -89,7 +89,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C2072](compiler-error-c2072.md) | '*identifier*': initialization of a function |
 | [Compiler error C2073](compiler-error-c2073.md) | **(Obsolete)** '*identifier*': elements of partially initialized array must have a default constructor |
 | [Compiler error C2074](compiler-error-c2074.md) | '*identifier*': '*type*' initialization requires a brace-enclosed initializer list |
-| [Compiler error C2075](compiler-error-c2075.md) | '*identifier*': array initialization requires a brace-enclosed initializer list |
+| [Compiler error C2075](compiler-error-c2075.md) | '*identifier*': initialization requires a brace-enclosed initializer list |
 | [Compiler error C2076](compiler-error-c2076.md) | a brace-enclosed initializer list cannot be used in a new-expression whose type contains '*type*' |
 | [Compiler error C2077](compiler-error-c2077.md) | non-scalar field initializer '*identifier*' |
 | [Compiler error C2078](compiler-error-c2078.md) | too many initializers |
@@ -102,11 +102,11 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C2085](compiler-error-c2085.md) | '*identifier*': not in formal parameter list |
 | [Compiler error C2086](compiler-error-c2086.md) | '*identifier*': redefinition |
 | [Compiler error C2087](compiler-error-c2087.md) | '*identifier*': missing subscript |
-| [Compiler error C2088](compiler-error-c2088.md) | '*operator*': illegal for struct/class/union |
+| [Compiler error C2088](compiler-error-c2088.md) | built-in operator '*operator*' cannot be applied to an operand of type '*class type*' |
 | [Compiler error C2089](compiler-error-c2089.md) | '*identifier*': '*type*' too large |
 | [Compiler error C2090](compiler-error-c2090.md) | function returns array |
 | [Compiler error C2091](compiler-error-c2091.md) | function returns function |
-| [Compiler error C2092](compiler-error-c2092.md) | '*identifier*' array element type cannot be function |
+| [Compiler error C2092](compiler-error-c2092.md) | '*identifier*' array element type cannot be function or abstract class type |
 | [Compiler error C2093](compiler-error-c2093.md) | '*identifier1*': cannot be initialized using address of automatic variable '*identifier2*' |
 | [Compiler error C2094](compiler-error-c2094.md) | label '*identifier*' was undefined |
 | [Compiler error C2095](compiler-error-c2095.md) | '*function*': actual parameter has type 'void': parameter *number* |
diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md
index f6bbfd9917..ef2e8e4b3f 100644
--- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md
+++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C2100 through C2199"
 title: "Compiler errors C2100 through C2199"
+description: "Learn more about: Compiler errors C2100 through C2199"
 ms.date: "04/21/2019"
 f1_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"]
-helpviewer_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2131", "C2136", "C2176", "C2187", "C2189"]
-ms.assetid: 1ccab076-0954-4386-b959-d3112a6793ae
+helpviewer_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"]
 ---
 # Compiler errors C2100 through C2199
 
@@ -16,7 +15,7 @@ The articles in this section of the documentation explain a subset of the error
 
 |Error|Message|
 |-----------|-------------|
-|[Compiler error C2100](compiler-error-c2100.md)|illegal indirection|
+|[Compiler error C2100](compiler-error-c2100.md)|you cannot dereference an operand of type '*type*'|
 |[Compiler error C2101](compiler-error-c2101.md)|'&' on constant|
 |[Compiler error C2102](compiler-error-c2102.md)|'&' requires l-value|
 |[Compiler error C2103](compiler-error-c2103.md)|'&' on register variable|
@@ -32,11 +31,11 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2113](compiler-error-c2113.md)|'-': pointer can only be subtracted from another pointer|
 |[Compiler error C2114](compiler-error-c2114.md)|'*operator*': pointer on left; needs integral value on right|
 |[Compiler error C2115](compiler-error-c2115.md)|'*operator*': incompatible types|
-|[Compiler error C2116](compiler-error-c2116.md)|function parameter lists differed|
+|[Compiler error C2116](compiler-error-c2116.md)|'*name*': function parameter lists do not match between declarations|
 |[Compiler error C2117](compiler-error-c2117.md)|'*identifier*': array bounds overflow|
 |[Compiler error C2118](compiler-error-c2118.md)|negative subscript|
 |Compiler error C2119|'*identifier*': the type for '*type*' cannot be deduced from an empty initializer|
-|[Compiler error C2120](compiler-error-c2120.md)|'void' illegal with all types|
+|[Compiler error C2120](compiler-error-c2120.md)|'`void`' cannot be combined with any other type specifier|
 |[Compiler error C2121](compiler-error-c2121.md)|'#': invalid character: possibly the result of a macro expansion|
 |[Compiler error C2122](compiler-error-c2122.md)|'*identifier*': prototype parameter in name list illegal|
 |Compiler error C2123|'*identifier*': alias templates cannot be explicitly or partially specialized|
@@ -51,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2132](compiler-error-c2132.md)|syntax error: unexpected identifier|
 |[Compiler error C2133](compiler-error-c2133.md)|'*identifier*': unknown size|
 |[Compiler error C2134](compiler-error-c2134.md)|'*function*': call does not result in a constant expression|
-|[Compiler error C2135](compiler-error-c2135.md)|'*operator*': illegal bit field operation|
+|[Compiler error C2135](compiler-error-c2135.md)|'*identifier*': you cannot apply '*operator*' to a bit-field|
 |Compiler error C2136|authoring API contract not allowed|
 |[Compiler error C2137](compiler-error-c2137.md)|empty character constant|
 |[Compiler error C2138](compiler-error-c2138.md)|illegal to define an enumeration without any members|
@@ -87,7 +86,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2168](compiler-error-c2168.md)|'*function*': too few actual parameters for intrinsic function|
 |[Compiler error C2169](compiler-error-c2169.md)|'*function*': intrinsic function, cannot be defined|
 |[Compiler error C2170](compiler-error-c2170.md)|'*identifier*': not declared as a function, cannot be intrinsic|
-|[Compiler error C2171](compiler-error-c2171.md)|'*operator*': illegal on operands of type '*type*'|
+|[Compiler error C2171](compiler-error-c2171.md)|operator '*operator*' cannot be applied to an operand of type '*type*'|
 |[Compiler error C2172](compiler-error-c2172.md)|'*function*': actual parameter is not a pointer: parameter *number*|
 |[Compiler error C2173](compiler-error-c2173.md)|'*function*': actual parameter is not a pointer: parameter *number*, parameter list *number*|
 |[Compiler error C2174](compiler-error-c2174.md)|'*function*': actual parameter has type 'void': parameter *number*, parameter list *number*|
@@ -119,5 +118,5 @@ The articles in this section of the documentation explain a subset of the error
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \
-[Compiler errors C2001 - C3999, C7000 - C7999](../compiler-errors-1/compiler-errors-c2000-c3999.md)
+[C/C++ Compiler and build tools errors and warnings](c-cpp-build-errors.md)\
+[Compiler errors C2001 - C3999, C7000 - C7999](compiler-errors-c2000-c3999.md)
diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md
index aeb9e58f33..061b94f169 100644
--- a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md
+++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C2200 through C2299"
 title: "Compiler errors C2200 through C2299"
+description: "Learn more about: Compiler errors C2200 through C2299"
 ms.date: "04/21/2019"
-f1_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2288", "C2291", "C2294"]
-helpviewer_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2288", "C2291", "C2294"]
-ms.assetid: 9b36d11b-9510-4390-96f1-0c9235124d14
+f1_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"]
+helpviewer_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"]
 ---
 # Compiler errors C2200 through C2299
 
@@ -36,7 +35,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2217](compiler-error-c2217.md)|'*attribute1*' requires '*attribute2*'|
 |[Compiler error C2218](compiler-error-c2218.md)|'*calltype*' cannot be used with '/arch:IA32'|
 |[Compiler error C2219](compiler-error-c2219.md)|syntax error: type qualifier must be after '*'|
-|[Compiler error C2220](compiler-error-c2220.md)|warning treated as error - no '*filetype*' file generated|
+|[Compiler error C2220](compiler-error-c2220.md)|the following warning is treated as an error|
 |Compiler error C2221|Obsolete.|
 |[Compiler error C2222](compiler-error-c2222.md)|unexpected type '*type*': a base-class or member was expected|
 |[Compiler error C2223](compiler-error-c2223.md)|left of '->*identifier*' must point to struct/union|
@@ -51,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2232](compiler-error-c2232.md)|'->*identifier*': left operand has 'class/struct/union' type, use '.'|
 |[Compiler error C2233](compiler-error-c2233.md)|'*identifier*': arrays of objects containing zero-size arrays are illegal|
 |[Compiler error C2234](compiler-error-c2234.md)|*identifier*': arrays of references are illegal|
-|Compiler error C2235|Obsolete.|
+|Compiler error C2235|mismatching target architecture for compiled module interface for '*architecture 1*' from '*architecture 2*'|
 |[Compiler error C2236](compiler-error-c2236.md)|unexpected token '*token*'. Did you forget a ';'?|
 |Compiler error C2237|multiple module declaration|
 |[Compiler error C2238](compiler-error-c2238.md)|unexpected token(s) preceding '*token*'|
@@ -79,7 +78,7 @@ The articles in this section of the documentation explain a subset of the error
 |Compiler error C2260|'*specifier*': invalid InternalsVisibleToAttribute friend assembly specifier|
 |[Compiler error C2261](compiler-error-c2261.md)|'*string*': assembly reference is invalid and cannot be resolved|
 |[Compiler error C2262](compiler-error-c2262.md)|'*specifier*': InternalsVisibleTo declarations cannot have a version, culture, or processor architecture specified|
-|Compiler error C2263|Obsolete.|
+|Compiler error C2263|'*module name*': a translation unit cannot be imported into itself|
 |[Compiler error C2264](compiler-error-c2264.md)|'*function*': error in function definition or declaration; function not called|
 |Compiler error C2265|Obsolete.|
 |[Compiler error C2266](compiler-error-c2266.md)|'*identifier*': reference to a non-constant bounded array is illegal|
@@ -91,20 +90,20 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2272](compiler-error-c2272.md)|'*function*': modifiers not allowed on static member functions|
 |[Compiler error C2273](compiler-error-c2273.md)|'*type*': illegal as right side of '->' operator|
 |[Compiler error C2274](compiler-error-c2274.md)|'*type*': illegal as right side of '.' operator|
-|[Compiler error C2275](compiler-error-c2275.md)|'*type*': illegal use of this type as an expression|
+|[Compiler error C2275](compiler-error-c2275.md)|'*type*': expected an expression instead of a type|
 |[Compiler error C2276](compiler-error-c2276.md)|'*operator*': illegal operation on bound member function expression|
 |[Compiler error C2277](compiler-error-c2277.md)|'*function*': cannot take address of this member function|
-|Compiler error C2278|Obsolete.|
+|Compiler error C2278|'*token*': unexpected token. Format is '`__has_cpp_attribute( identifier )`'|
 |[Compiler error C2279](compiler-error-c2279.md)|exception specification cannot appear in a typedef declaration|
 |[Compiler error C2280](compiler-error-c2280.md)|'*class*::*function*': attempting to reference a deleted function|
 |Compiler error C2281|'*class*::*function*': a function can only be deleted on the first declaration|
 |Compiler error C2282|'*function1*' cannot override '*function2*'|
-|[Compiler error C2283](compiler-error-c2283.md)|'*identifer*': pure specifier or abstract override specifier not allowed on unnamed class/struct|
+|[Compiler error C2283](compiler-error-c2283.md)|'*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct|
 |Compiler error C2284|'*function*': illegal argument to intrinsic function, parameter *number*|
 |[Compiler error C2285](compiler-error-c2285.md)|pointers to members representation has already been determined - pragma ignored|
 |[Compiler error C2286](compiler-error-c2286.md)|pointers to members of '*identifier*' representation is already set to *inheritance* - declaration ignored|
 |[Compiler error C2287](compiler-error-c2287.md)|'*identifier*': inheritance representation: '*inheritiance*' is less general than the required '*inheritance*'|
-|Compiler error C2288|Obsolete.|
+|Compiler error C2288|preprocessing number '*number*' is not a valid integer or floating literal|
 |[Compiler error C2289](compiler-error-c2289.md)|same type qualifier used more than once|
 |[Compiler error C2290](compiler-error-c2290.md)|C++ 'asm' syntax ignored. Use __asm.|
 |Compiler error C2291|An anonymous namespace cannot be exported.|
diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md
index d64bb155be..3abd7f9ea4 100644
--- a/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md
+++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md
@@ -53,7 +53,7 @@ The articles in this section of the documentation explain a subset of the error
 |Compiler error C2335|'*identifier*': a type cannot be introduced in a function parameter list|
 |Compiler error C2336|'*type*': illegal type|
 |[Compiler error C2337](compiler-error-c2337.md)|'*attribute*': attribute not found|
-|[Compiler error C2338](compiler-error-c2338.md)|*(error message from external provider)*|
+|[Compiler error C2338](compiler-error-c2338.md)|static_assert failed: '*(error message from external provider)*'|
 |Compiler error C2339|'*identifier*': illegal type in embedded-IDL|
 |Compiler error C2340|'*identifier*': 'static' can only be used within a class definition|
 |[Compiler error C2341](compiler-error-c2341.md)|'*section*': segment must be defined using #pragma data_seg, code_seg or section prior to use|
@@ -67,7 +67,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2349](compiler-error-c2349.md)|'*function*' cannot be compiled as managed: '*explanation*'; use #pragma unmanaged|
 |[Compiler error C2350](compiler-error-c2350.md)|'*identifier*' is not a static member|
 |[Compiler error C2351](compiler-error-c2351.md)|obsolete C++ constructor initialization syntax|
-|[Compiler error C2352](compiler-error-c2352.md)|'*identifier*': illegal call of non-static member function|
+|[Compiler error C2352](compiler-error-c2352.md)|'*identifier*': a call of a non-static member function requires an object|
 |[Compiler error C2353](compiler-error-c2353.md)|exception specification is not allowed|
 |Compiler error C2354|Obsolete.|
 |[Compiler error C2355](compiler-error-c2355.md)|'this': can only be referenced inside non-static member functions or non-static data member initializers|
@@ -96,7 +96,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2378](compiler-error-c2378.md)|'*identifier*': redefinition; symbol cannot be overloaded with a typedef|
 |[Compiler error C2379](compiler-error-c2379.md)|formal parameter *number* has different type when promoted|
 |[Compiler error C2380](compiler-error-c2380.md)|type(s) preceding '*identifier*' (constructor with return type, or illegal redefinition of current class-name?)|
-|[Compiler error C2381](compiler-error-c2381.md)|'*identifier*': redefinition; '__declspec(noreturn)' or '[[noreturn]]' differs|
+|[Compiler error C2381](compiler-error-c2381.md)|'*identifier*': redefinition; '`noreturn`' differs|
 |[Compiler error C2382](compiler-error-c2382.md)|'*identifier*': redefinition; different exception specifications|
 |[Compiler error C2383](compiler-error-c2383.md)|'*identifier*': default-arguments are not allowed on this symbol|
 |[Compiler error C2384](compiler-error-c2384.md)|'*member*': cannot apply thread_local or __declspec(thread) to a member of a managed/WinRT class|
diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md
index 3190212589..d7e931c1e4 100644
--- a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md
+++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C2400 Through C2499"
 title: "Compiler errors C2400 Through C2499"
+description: "Learn more about: Compiler errors C2400 Through C2499"
 ms.date: "04/21/2019"
 f1_keywords: ["C2416", "C2442", "C2453", "C2454", "C2455", "C2456", "C2468", "C2475", "C2478", "C2481", "C2497"]
 helpviewer_keywords: ["C2416", "C2442", "C2453", "C2454", "C2455", "C2456", "C2468", "C2475", "C2478", "C2481", "C2497"]
-ms.assetid: f1f05572-af0b-497b-bde4-4c81ec01af3b
 ---
 # Compiler errors C2400 Through C2499
 
@@ -51,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2432](compiler-error-c2432.md)|illegal reference to 16-bit data in '*context*'|
 |[Compiler error C2433](compiler-error-c2433.md)|'*identifier*': '*modifier*' not permitted on data declarations|
 |[Compiler error C2434](compiler-error-c2434.md)|'*symbol*': a symbol declared with `__declspec(process)` cannot be dynamically initialized in `/clr:pure` mode|
-|[Compiler error C2435](compiler-error-c2435.md)|'var': dynamic initialization requires managed CRT, cannot compile with `/clr:safe`|
+|[Compiler error C2435](compiler-error-c2435.md)|'*var*': dynamic initialization requires managed CRT, cannot compile with `/clr:safe`|
 |[Compiler error C2436](compiler-error-c2436.md)|'*identifier*': member function or nested class in constructor initializer list|
 |[Compiler error C2437](compiler-error-c2437.md)|'*identifier*': has already been initialized|
 |[Compiler error C2438](compiler-error-c2438.md)|'*identifier*': cannot initialize static class data via constructor|
@@ -61,11 +60,12 @@ The articles in this section of the documentation explain a subset of the error
 |Compiler error C2442|'*identifier*': nested-namespace-definition cannot be inline or have attributes|
 |[Compiler error C2443](compiler-error-c2443.md)|operand size conflict|
 |[Compiler error C2444](compiler-error-c2444.md)|'*identifier*': used ANSI prototype, found 'type', expected '{' or ';'|
+|Compiler error C2445|result type of conditional expression is ambiguous: types '*type 1*' and '*type 2*' can be converted to multiple common types|
 |[Compiler error C2446](compiler-error-c2446.md)|'*operator*': no conversion from '*type_1*' to '*type_2*'|
 |[Compiler error C2447](compiler-error-c2447.md)|'{': missing function header (old-style formal list?)|
 |[Compiler error C2448](compiler-error-c2448.md)|'*identifier*': function-style initializer appears to be a function definition|
 |[Compiler error C2449](compiler-error-c2449.md)|found '{' at file scope (missing function header?)|
-|[Compiler error C2450](compiler-error-c2450.md)|switch expression of type '*type*' is illegal|
+|[Compiler error C2450](compiler-error-c2450.md)|a `switch` expression of type '*type*' is illegal|
 |[Compiler error C2451](compiler-error-c2451.md)|conditional expression of type '*type*' is illegal|
 |[Compiler error C2452](compiler-error-c2452.md)|'*type*': invalid source type for `safe_cast`|
 |Compiler error C2453|'*type*': invalid target type for safe_cast|
diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md
index 47a7d928d5..8ba3fceb81 100644
--- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md
+++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Compiler fatal errors C999 through C1999"
-title: "Compiler fatal errors C999 through C1999"
-ms.date: 08/17/2022
-f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"]
-helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"]
-ms.assetid: 6c8df109-7594-48ed-987a-97d9fe2b04af
+title: "Compiler fatal errors C1001 through C1907"
+description: "Learn more about: Compiler fatal errors C1001 through C1907"
+ms.date: 01/24/2025
+f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"]
+helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"]
 ---
-# Compiler fatal errors C999 through C1999
+# Compiler fatal errors C1001 through C1907
 
 The articles in this section of the documentation explain a subset of the error messages that are generated by the Microsoft C/C++ compiler.
 
@@ -27,7 +26,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Fatal error C1009](fatal-error-c1009.md) | compiler limit: macros nested too deeply |
 | [Fatal error C1010](fatal-error-c1010.md) | unexpected end of file while looking for precompiled header. Did you forget to add '`#include <`*file*`>`' to your source? |
 | [Fatal error C1011](fatal-error-c1011.md) | cannot locate standard module interface. Did you install the library part of the C++ modules feature in VS setup? |
-| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character*" |
+| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character*' |
 | [Fatal error C1013](fatal-error-c1013.md) | compiler limit: too many open parentheses |
 | [Fatal error C1014](fatal-error-c1014.md) | too many include files: depth = *number* |
 | [Fatal error C1015](fatal-error-c1015.md) | header-names '*header-name*' and '*header-name*' identify the same header and cannot be used as both `/headerUnit:quoted` and `/headerUnit:angle` arguments; please provide this header-name only once |
@@ -43,6 +42,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Fatal error C1025](fatal-error-c1025-c1115.md) | too many nested lambdas |
 | [Fatal error C1026](fatal-error-c1026.md) | parser stack overflow, program too complex |
 | Fatal error C1027 | **(Obsolete)** Inconsistent values for /Ym between creation and use of precompiled header |
+| Fatal error C1028 | missing IFC for analysis.  Please rebuild *module* '*ifc filename*' with `/analyze`. |
 | Fatal error C1030 | WMMX types not allowed in the function signature by the calling convention |
 | Fatal error C1032 | `__eabi` requires VFP code generation (`/QRfpe-`) |
 | [Fatal error C1033](fatal-error-c1033.md) | cannot open program database '*file*' |
@@ -102,6 +102,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Fatal error C1092](fatal-error-c1092.md) | Edit and Continue does not support changes to data types; build required |
 | [Fatal error C1093](fatal-error-c1093.md) | API call '*function*' failed '*HRESULT*': '*description*' |
 | [Fatal error C1094](fatal-error-c1094.md) | '`-Zm`*number*': command line option is inconsistent with value used to build precompiled header ('`-Zm`*number*') |
+| Fatal error C1095 | Failed to locate a free memory range. Use `/Yb` to specify a base address. |
 | [Fatal error C1098](fatal-error-c1098.md) | Version mismatch with Edit and Continue engine |
 | [Fatal error C1099](fatal-error-c1099.md) | Edit and Continue engine terminating compile |
 | [Fatal error C1100](fatal-error-c1100.md) | unable to initialize OLE: *error* |
@@ -110,12 +111,13 @@ The articles in this section of the documentation explain a subset of the error
 | [Fatal error C1103](fatal-error-c1103.md) | fatal error importing progid: '*message*' |
 | [Fatal error C1104](fatal-error-c1104.md) | fatal error importing libid: '*message*' |
 | Fatal error C1105 | *message*: *HRESULT error* |
+| Fatal error C1106 | compiler limit: only *number* function parameters are allowed |
 | [Fatal error C1107](fatal-error-c1107.md) | could not find assembly '*assembly*': please specify the assembly search path using `/AI` or by setting the `LIBPATH` environment variable |
 | [Fatal error C1108](fatal-error-c1108.md) | unable to find DLL: '*file*' |
 | [Fatal error C1109](fatal-error-c1109.md) | unable to find '*symbol*' in DLL '*file*' |
 | Fatal error C1110 | too many nested template/generic definitions |
 | Fatal error C1111 | too many template/generic parameters |
-| Fatal error C1112 | compiler limit: '*number*' too many macro arguments, only *number* allowed |
+| Fatal error C1112 | compiler limit: '*number*' too many macro arguments, only '*number*' allowed |
 | [Fatal error C1113](fatal-error-c1113.md) | `#using` failed on '*file*' |
 | Fatal error C1114 | '*file*': WinRT does not support `#using` of a managed assembly |
 | [Fatal error C1115](fatal-error-c1025-c1115.md) | too many nested lambdas |
@@ -129,7 +131,7 @@ The articles in this section of the documentation explain a subset of the error
 | Fatal error C1127 | *Operation* requires *option* |
 | [Fatal error C1128](fatal-error-c1128.md) | number of sections exceeded object file format limit: compile with `/bigobj` |
 | [Fatal error C1189](fatal-error-c1189.md) | `#error`: *message* |
-| [Fatal error C1190](fatal-error-c1190.md) | managed targeted code requires a '`/clr`' option |
+| [Fatal error C1190](fatal-error-c1190.md) | `System::Object` not found, missing `/clr` option or missing import of standard assemblies? |
 | [Fatal error C1191](fatal-error-c1191.md) | '*file*' can only be imported at global scope |
 | [Fatal error C1192](fatal-error-c1192.md) | `#using` failed on '*file*' |
 | Fatal error C1193 | an error expected in *file*(*line*) not reached |
@@ -153,6 +155,7 @@ The articles in this section of the documentation explain a subset of the error
 | Fatal error C1212 | Input file was modified by another process while building: '*filename*' |
 | Fatal error C1213 | Header units are unsupported without `/Zc:preprocessor` |
 | Fatal error C1214 | Modules conflict with non-standard behavior requested via '*option*' |
+| Fatal error C1215 | Cannot open file '*filename*' corresponding to warning set '`-W`*warning set*' |
 | Fatal error C1300 | error accessing program database *file* (*message*) |
 | Fatal error C1301 | error accessing program database *file*, invalid format, please delete and rebuild |
 | Fatal error C1302 | no profile data for module '*module*' in profile database '*file*' |
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1001.md b/docs/error-messages/compiler-errors-1/fatal-error-c1001.md
index d2dc62f249..bcf89b5bd8 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1001.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1001.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1001"
 title: "Fatal Error C1001"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1001"
+ms.date: 11/04/2016
 f1_keywords: ["C1001"]
 helpviewer_keywords: ["C1001"]
-ms.assetid: 5736cdb3-22c8-4fad-aa85-d5e0d2b232f4
 ---
 # Fatal Error C1001
 
 > INTERNAL COMPILER ERROR(compiler file *file*, line *number*)
 
+## Remarks
+
 The compiler cannot generate correct code for a construct, often due to the combination of a particular expression and an optimization option, or an issue in parsing. If the compiler file listed has a utc or C2 path segment, it is probably an optimization error. If the file has a cxxfe or c1xx path segment, or is msc1.cpp, it is probably a parser error. If the file named is cl.exe, there is no other information available.
 
 You can often fix an optimization problem by removing one or more optimization options. To determine which option is at fault, remove options one at a time and recompile until the error message goes away. The options most commonly responsible are [/Og (Global optimizations)](../../build/reference/og-global-optimizations.md) and [/Oi (Generate Intrinsic Functions)](../../build/reference/oi-generate-intrinsic-functions.md). Once you determine which optimization option is responsible, you can disable it around the function where the error occurs by using the [optimize](../../preprocessor/optimize.md) pragma, and continue to use the option for the rest of the module. For more information about optimization options, see [Optimization best practices](../../build/optimization-best-practices.md).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1002.md b/docs/error-messages/compiler-errors-1/fatal-error-c1002.md
index c001659abf..d254d4e5ce 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1002.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1002.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1002"
 title: "Fatal Error C1002"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1002"
+ms.date: 11/04/2016
 f1_keywords: ["C1002"]
 helpviewer_keywords: ["C1002"]
-ms.assetid: bd6d274a-c7b4-43af-8bf2-23c5e442aa22
 ---
 # Fatal Error C1002
 
-compiler is out of heap space in pass 2
+> compiler is out of heap space in pass 2
+
+## Remarks
 
 The compiler ran out of dynamic memory space during its second pass, probably due to a program with too many symbols or complex expressions.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1003.md b/docs/error-messages/compiler-errors-1/fatal-error-c1003.md
index 651a5259ea..453e163d0d 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1003.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1003.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1003"
 title: "Fatal Error C1003"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1003"
+ms.date: 11/04/2016
 f1_keywords: ["C1003"]
 helpviewer_keywords: ["C1003"]
-ms.assetid: 27d2d009-2e0f-41fb-8bfc-372752fbe920
 ---
 # Fatal Error C1003
 
-error count exceeds number; stopping compilation
+> error count exceeds number; stopping compilation
+
+## Remarks
 
 Errors in the program are too numerous to allow recovery. The compiler must terminate.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1004.md b/docs/error-messages/compiler-errors-1/fatal-error-c1004.md
index 266090b83c..e611dbbc9e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1004.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1004.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1004"
 title: "Fatal Error C1004"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1004"
+ms.date: 11/04/2016
 f1_keywords: ["C1004"]
 helpviewer_keywords: ["C1004"]
-ms.assetid: dbe034b0-6eb0-41b4-a50c-2fccf9e78ad4
 ---
 # Fatal Error C1004
 
-unexpected end of file found
+> unexpected end of file found
+
+## Remarks
 
 The compiler reached the end of a source file without resolving a construct. The code may be missing one of the following elements:
 
@@ -28,7 +29,9 @@ To resolve this error, check for the following:
 
 - A source file does not end with a carriage return and line feed.
 
-The following sample generates C1004:
+## Example
+
+The following example generates C1004:
 
 ```cpp
 // C1004.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1005.md b/docs/error-messages/compiler-errors-1/fatal-error-c1005.md
index cbb2d4aa5b..2d2a87369b 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1005.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1005.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1005"
 title: "Fatal Error C1005"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1005"
+ms.date: 11/04/2016
 f1_keywords: ["C1005"]
 helpviewer_keywords: ["C1005"]
-ms.assetid: 150daf8e-a38a-4669-9c1a-a05b5a1f65ef
 ---
 # Fatal Error C1005
 
-string too big for buffer
+> string too big for buffer
+
+## Remarks
 
 A string in a compiler intermediate file overflowed a buffer.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1007.md b/docs/error-messages/compiler-errors-1/fatal-error-c1007.md
index 23d81272a5..55a3c31b1d 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1007.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1007.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1007"
 title: "Fatal Error C1007"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1007"
+ms.date: 11/04/2016
 f1_keywords: ["C1007"]
 helpviewer_keywords: ["C1007"]
-ms.assetid: 224f7e2c-4522-4e09-b455-8d293bdb799d
 ---
 # Fatal Error C1007
 
-unrecognized flag string in option
+> unrecognized flag string in option
+
+## Remarks
 
 The command-line option contains an invalid string. Check the **CL** command line and environment variable for errors.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1008.md b/docs/error-messages/compiler-errors-1/fatal-error-c1008.md
index df73ac1ebd..1ad6c868ba 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1008.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1008.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1008"
 title: "Fatal Error C1008"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1008"
+ms.date: 11/04/2016
 f1_keywords: ["C1008"]
 helpviewer_keywords: ["C1008"]
-ms.assetid: 7de729e3-b2ca-4a68-95ab-8a1c920f3f2c
 ---
 # Fatal Error C1008
 
-no input file specified
+> no input file specified
+
+## Remarks
 
 The compiler was not given a C or C++ source file to compile. Check the **CL** command line and environment variable for filename specifications.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1009.md b/docs/error-messages/compiler-errors-1/fatal-error-c1009.md
index 358d670bec..5ba6678782 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1009.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1009.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1009"
 title: "Fatal Error C1009"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1009"
+ms.date: 11/04/2016
 f1_keywords: ["C1009"]
 helpviewer_keywords: ["C1009"]
-ms.assetid: dcc8383c-3362-4c47-9c26-25d2451ebd53
 ---
 # Fatal Error C1009
 
-compiler limit : macros nested too deeply
+> compiler limit : macros nested too deeply
+
+## Remarks
 
 The compiler tried to expand too many macros at the same time. The compiler has a limit of 256 levels of nested macros. Split nested macros into simpler macros.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1010.md b/docs/error-messages/compiler-errors-1/fatal-error-c1010.md
index 775bed3719..eb64115ebd 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1010.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1010.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Fatal Error C1010"
 title: "Fatal Error C1010"
-ms.date: "09/03/2019"
+description: "Learn more about: Fatal Error C1010"
+ms.date: 09/03/2019
 f1_keywords: ["C1010"]
 helpviewer_keywords: ["C1010"]
-ms.assetid: dfd035f1-a7a2-40bc-bc92-dc4d7f456767
 ---
 # Fatal Error C1010
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1011.md b/docs/error-messages/compiler-errors-1/fatal-error-c1011.md
index b7517a9e35..b50d6450ef 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1011.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1011.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1011"
 title: "Fatal Error C1011"
+description: "Learn more about: Fatal Error C1011"
 ms.date: 08/17/2022
 f1_keywords: ["C1011"]
 helpviewer_keywords: ["C1011"]
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1012.md b/docs/error-messages/compiler-errors-1/fatal-error-c1012.md
index 3de04be3d2..33245ef2b6 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1012.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1012.md
@@ -1,13 +1,25 @@
 ---
-description: "Learn more about: Fatal Error C1012"
 title: "Fatal Error C1012"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1012"
+ms.date: 02/20/2025
 f1_keywords: ["C1012"]
 helpviewer_keywords: ["C1012"]
-ms.assetid: 92cc83a7-b5b8-4da8-a128-9b7ccb510496
 ---
 # Fatal Error C1012
 
-unmatched parenthesis : missing character
+> unmatched parenthesis: missing 'character'
+
+## Remarks
 
 The parentheses in a preprocessor directive do not match.
+
+## Example
+
+The following example generates C1012:
+
+```cpp
+// C1012.cpp
+// compile with: /c
+#if (0   // C1012
+#endif
+```
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1013.md b/docs/error-messages/compiler-errors-1/fatal-error-c1013.md
index c8950e24e8..f0f85a0ee1 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1013.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1013.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1013"
 title: "Fatal Error C1013"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1013"
+ms.date: 11/04/2016
 f1_keywords: ["C1013"]
 helpviewer_keywords: ["C1013"]
-ms.assetid: 5514a679-efe7-4055-bdd3-5693ca0c332f
 ---
 # Fatal Error C1013
 
-compiler limit : too many open parentheses
+> compiler limit : too many open parentheses
+
+## Remarks
 
 An expression contains too many levels of parentheses in a single expression. Simplify the expression or break it into multiple statements.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1014.md b/docs/error-messages/compiler-errors-1/fatal-error-c1014.md
index 084aa82fad..678465c197 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1014.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1014.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1014"
 title: "Fatal Error C1014"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1014"
+ms.date: 11/04/2016
 f1_keywords: ["C1014"]
 helpviewer_keywords: ["C1014"]
-ms.assetid: 4c01ef70-e765-4d07-a3fe-a11c19fb610b
 ---
 # Fatal Error C1014
 
-too many include files : depth = level
+> too many include files : depth = level
+
+## Remarks
 
 The nesting of `#include` directives is too deep. Nested directives can include open files. The source file containing the directive counts as one file.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-C1015.md b/docs/error-messages/compiler-errors-1/fatal-error-c1015.md
similarity index 98%
rename from docs/error-messages/compiler-errors-1/fatal-error-C1015.md
rename to docs/error-messages/compiler-errors-1/fatal-error-c1015.md
index e407271389..7b161e0ef8 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-C1015.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1015.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1015"
 title: "Fatal Error C1015"
+description: "Learn more about: Fatal Error C1015"
 ms.date: 08/17/2022
 f1_keywords: ["C1015"]
 helpviewer_keywords: ["C1015"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1015"]
 
 > header-names '*header-name*' and '*header-name*' identify the same header and cannot be used as both `/headerUnit:quote` and `/headerUnit:angle` arguments; please provide this header-name only once
 
+## Remarks
+
 Don't include a header unit using both double-quotes and angle brackets. Use only one form, consistent with the **`/headerUnit:quote`** or **`/headerUnit:angle`** compiler option. For more information, see [`/headerUnit` (Use header unit IFC)](../../build/reference/headerunit.md).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1016.md b/docs/error-messages/compiler-errors-1/fatal-error-c1016.md
index c921566c37..5dc38afa6a 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1016.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1016.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1016"
 title: "Fatal Error C1016"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1016"
+ms.date: 11/04/2016
 f1_keywords: ["C1016"]
 helpviewer_keywords: ["C1016"]
-ms.assetid: 33f45c3e-2d8f-43ad-a445-c412d1d54ce1
 ---
 # Fatal Error C1016
 
-\#ifdef expected an identifier#ifndef expected an identifier
+> #ifdef expected an identifier#ifndef expected an identifier
+
+## Remarks
 
 The conditional compilation directive ([#ifdef](../../preprocessor/hash-ifdef-and-hash-ifndef-directives-c-cpp.md) or `#ifndef`) has no identifier to evaluate. To resolve the error, specify an identifier.
 
-The following sample generates C1016:
+## Example
+
+The following example generates C1016:
 
 ```cpp
 // C1016.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1017.md b/docs/error-messages/compiler-errors-1/fatal-error-c1017.md
index cd6fbcbc77..7ae9f9c0d6 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1017.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1017.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Fatal Error C1017"
 title: "Fatal Error C1017"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1017"
+ms.date: 11/04/2016
 f1_keywords: ["C1017"]
 helpviewer_keywords: ["C1017"]
-ms.assetid: 5542e604-599d-4e36-8f83-1d454c5753c9
 ---
 # Fatal Error C1017
 
-invalid integer constant expression
+> invalid integer constant expression
+
+## Remarks
 
 The expression in an `#if` directive did not exist or did not evaluate to a constant.
 
 Constants defined using `#define` must have values that evaluate to an integer constant if they are used in an `#if`, `#elif`, or `#else` directive.
 
-The following sample generates C1017:
+## Example
+
+The following example generates C1017:
 
 ```cpp
 // C1017.cpp
@@ -35,7 +38,7 @@ Possible resolution:
 
 Because `CONSTANT_NAME` evaluates to a string and not an integer, the `#if` directive generates fatal error C1017.
 
-In other cases, the preprocessor evaluates an undefined constant as zero. This can cause unintended results, as shown in the following sample. `YES` is undefined, so it evaluates to zero. The expression `#if` `CONSTANT_NAME` evaluates to false and the code to be used on `YES` is removed by the preprocessor. `NO` is also undefined (zero), so `#elif` `CONSTANT_NAME==NO` evaluates to true (`0 == 0`), causing the preprocessor to leave the code in the `#elif` portion of the statement — exactly the opposite of the intended behavior.
+In other cases, the preprocessor evaluates an undefined constant as zero. This can cause unintended results, as shown in the following example. `YES` is undefined, so it evaluates to zero. The expression `#if` `CONSTANT_NAME` evaluates to false and the code to be used on `YES` is removed by the preprocessor. `NO` is also undefined (zero), so `#elif` `CONSTANT_NAME==NO` evaluates to true (`0 == 0`), causing the preprocessor to leave the code in the `#elif` portion of the statement — exactly the opposite of the intended behavior.
 
 ```cpp
 // C1017c.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1018.md b/docs/error-messages/compiler-errors-1/fatal-error-c1018.md
index 4283dedc9d..6a4fd9b145 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1018.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1018.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1018"
 title: "Fatal Error C1018"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1018"
+ms.date: 11/04/2016
 f1_keywords: ["C1018"]
 helpviewer_keywords: ["C1018"]
-ms.assetid: 2ceb8a99-30b2-4b80-bf42-e9f3305b3c52
 ---
 # Fatal Error C1018
 
-unexpected #elif
+> unexpected #elif
+
+## Remarks
 
 The `#elif` directive appears outside an `#if`, `#ifdef`, or `#ifndef` construct. Use `#elif` only within one of these constructs.
 
-The following sample generates C1018:
+## Example
+
+The following example generates C1018:
 
 ```cpp
 // C1018.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1019.md b/docs/error-messages/compiler-errors-1/fatal-error-c1019.md
index 5d51ab87de..b03103db4e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1019.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1019.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1019"
 title: "Fatal Error C1019"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1019"
+ms.date: 11/04/2016
 f1_keywords: ["C1019"]
 helpviewer_keywords: ["C1019"]
-ms.assetid: c4f8968b-bc62-4200-b3ca-69d06c163236
 ---
 # Fatal Error C1019
 
-unexpected #else
+> unexpected #else
+
+## Remarks
 
 The `#else` directive appears outside an `#if`, `#ifdef`, or `#ifndef` construct. Use `#else` only within one of these constructs.
 
-The following sample generates C1019:
+## Example
+
+The following example generates C1019:
 
 ```cpp
 // C1019.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1020.md b/docs/error-messages/compiler-errors-1/fatal-error-c1020.md
index 1fb7fcdb59..877bba743f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1020.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1020.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Fatal Error C1020"
 title: "Fatal Error C1020"
+description: "Learn more about: Fatal Error C1020"
 ms.date: 07/11/2022
 f1_keywords: ["C1020"]
 helpviewer_keywords: ["C1020"]
-ms.assetid: 42f429e2-5e3b-4086-a10d-b99e032e51c5
 ---
 # Fatal Error C1020
 
@@ -16,9 +15,9 @@ The `#endif` directive has no matching `#if`, `#ifdef`, or `#ifndef` directive.
 
 This error can occur if you have conditional preprocessor directives before you include a precompiled header file. The compiler ignores everything in the file before the precompiled header, including any `#if`, `#ifdef`, or `#ifndef` directives. For more information, see [`/Yu` (Use precompiled header)](../../build/reference/yu-use-precompiled-header-file.md).
 
-## Examples
+## Example
 
-The following sample generates C1020:
+The following example generates C1020:
 
 ```cpp
 // C1020.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1021.md b/docs/error-messages/compiler-errors-1/fatal-error-c1021.md
index 352339095e..4e45879b39 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1021.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1021.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1021"
 title: "Fatal Error C1021"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1021"
+ms.date: 11/04/2016
 f1_keywords: ["C1021"]
 helpviewer_keywords: ["C1021"]
-ms.assetid: e23171f4-ca6b-40c0-a913-a2edc6fa3766
 ---
 # Fatal Error C1021
 
-invalid preprocessor command 'string'
+> invalid preprocessor command 'string'
+
+## Remarks
 
 `string` is not a valid [preprocessor directive](../../preprocessor/preprocessor-directives.md). To resolve the error, use a valid preprocessor name for `string`.
 
-The following sample generates C1021:
+## Example
+
+The following example generates C1021:
 
 ```cpp
 // C1021.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1022.md b/docs/error-messages/compiler-errors-1/fatal-error-c1022.md
index 043664fee8..365d7c9b8f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1022.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1022.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1022"
 title: "Fatal Error C1022"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1022"
+ms.date: 11/04/2016
 f1_keywords: ["C1022"]
 helpviewer_keywords: ["C1022"]
-ms.assetid: edada720-dc73-49bc-bd93-a7945a316312
 ---
 # Fatal Error C1022
 
-expected #endif
+> expected #endif
+
+## Remarks
 
 An `#if`, `#ifdef`, or `#ifndef` directive has no matching `#endif` directive. Be sure each `#if`, `#ifdef`, or `#ifndef` has a matching `#endif`.
 
-The following sample generates C1022:
+## Example
+
+The following example generates C1022:
 
 ```cpp
 // C1022.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1023.md b/docs/error-messages/compiler-errors-1/fatal-error-c1023.md
index ccfc54d80c..48c1c71a23 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1023.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1023.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1023"
 title: "Fatal Error C1023"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1023"
+ms.date: 11/04/2016
 f1_keywords: ["C1023"]
 helpviewer_keywords: ["C1023"]
-ms.assetid: 727b4070-7474-420b-ab11-6530f96c794f
 ---
 # Fatal Error C1023
 
-'file' : unexpected error with pch, try rebuilding the pch
+> 'file' : unexpected error with pch, try rebuilding the pch
+
+## Remarks
 
 C1023 could be caused by one of several problems, the solution to which is a rebuild of the precompiled header file.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1025-c1115.md b/docs/error-messages/compiler-errors-1/fatal-error-c1025-c1115.md
index caf838ff18..cd5353d6cf 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1025-c1115.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1025-c1115.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1025, C1115"
 title: "Fatal Error C1025, C1115"
+description: "Learn more about: Fatal Error C1025, C1115"
 ms.date: 08/17/2022
 f1_keywords: ["C1025", "C1115"]
 helpviewer_keywords: ["C1025", "C1115"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1025", "C1115"]
 
 > too many nested lambdas
 
+## Remarks
+
 The compiler detected more than an internal limit for nested lambdas in the same scope. The limit is 65,535 in recent versions of Visual Studio. To resolve this issue, reduce the number of nested lambdas in the current scope.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1026.md b/docs/error-messages/compiler-errors-1/fatal-error-c1026.md
index b210727deb..adc8b235f2 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1026.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1026.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1026"
 title: "Fatal Error C1026"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1026"
+ms.date: 11/04/2016
 f1_keywords: ["C1026"]
 helpviewer_keywords: ["C1026"]
-ms.assetid: 89bb9d40-673a-44aa-a9f4-b42c07b49d44
 ---
 # Fatal Error C1026
 
-parser stack overflow, program too complex
+> parser stack overflow, program too complex
+
+## Remarks
 
 The space required to parse the program caused a compiler stack overflow.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1033.md b/docs/error-messages/compiler-errors-1/fatal-error-c1033.md
index 74b6260d6d..5e5ab6734b 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1033.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1033.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1033"
 title: "Fatal Error C1033"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1033"
+ms.date: 11/04/2016
 f1_keywords: ["C1033"]
 helpviewer_keywords: ["C1033"]
-ms.assetid: 09976c03-8450-4cf7-8b43-1b91c2c2b9f9
 ---
 # Fatal Error C1033
 
-cannot open program database pdb
+> cannot open program database pdb
+
+## Remarks
 
 This error can be caused by a disk error, a temporary lock created by an anti-virus program, a previous debugger instance that has not fully shut down, or parallel build mspdbsrv.exe processes that attempt to access the same file, among other possible causes.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1035.md b/docs/error-messages/compiler-errors-1/fatal-error-c1035.md
index b41d21a170..ddeb60ad0f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1035.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1035.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1035"
 title: "Fatal Error C1035"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1035"
+ms.date: 11/04/2016
 f1_keywords: ["C1035"]
 helpviewer_keywords: ["C1035"]
-ms.assetid: 28cdccee-4377-4823-a4d8-89ca7229a83e
 ---
 # Fatal Error C1035
 
-expression too complex; simplify expression
+> expression too complex; simplify expression
+
+## Remarks
 
 The compiler could not generate code for a complex expression. Split the expression into simpler expressions and recompile.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1037.md b/docs/error-messages/compiler-errors-1/fatal-error-c1037.md
index 80eecc85df..ccc83f0680 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1037.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1037.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1037"
 title: "Fatal Error C1037"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1037"
+ms.date: 11/04/2016
 f1_keywords: ["C1037"]
 helpviewer_keywords: ["C1037"]
-ms.assetid: 79103bca-ccfb-42e7-aef9-9b90c15b162f
 ---
 # Fatal Error C1037
 
-cannot open object file filename
+> cannot open object file filename
+
+## Remarks
 
 The object file specified by [/Fo](../../build/reference/fo-object-file-name.md) cannot be opened.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1038.md b/docs/error-messages/compiler-errors-1/fatal-error-c1038.md
index fd563949b8..ac3e9b80f8 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1038.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1038.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1038"
 title: "Fatal Error C1038"
+description: "Learn more about: Fatal Error C1038"
 ms.date: 08/17/2022
 f1_keywords: ["C1038"]
 helpviewer_keywords: ["C1038"]
-ms.assetid: 560dccb8-5b45-46f0-9412-caa4a6172aef
 ---
 # Fatal Error C1038
 
 > compiler limit : function : control flow state too complex; simplify function
 
+## Remarks
+
 The function has more control-flow states than the compiler can handle. Simplify control flow or split the function into smaller functions.
 
 This error is obsolete in Visual Studio 2022 and later versions.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1045.md b/docs/error-messages/compiler-errors-1/fatal-error-c1045.md
index ec28119696..5251ca128e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1045.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1045.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1045"
 title: "Fatal Error C1045"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1045"
+ms.date: 11/04/2016
 f1_keywords: ["C1045"]
 helpviewer_keywords: ["C1045"]
-ms.assetid: 766c2f89-4ecd-4281-adaa-14b270cc0829
 ---
 # Fatal Error C1045
 
-compiler limit : linkage specifications nested too deeply
+> compiler limit : linkage specifications nested too deeply
+
+## Remarks
 
 Nested externals exceed the compiler limit. Nested externals are allowed with the external linkage type, such as **`extern`** "C++". Reduce the number of nested externals to resolve the error.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1046.md b/docs/error-messages/compiler-errors-1/fatal-error-c1046.md
index 94f902b2fd..66d2034851 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1046.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1046.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1046"
 title: "Fatal Error C1046"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1046"
+ms.date: 11/04/2016
 f1_keywords: ["C1046"]
 helpviewer_keywords: ["C1046"]
-ms.assetid: 822ec5f5-b0b0-4711-99e1-fc237b619af6
 ---
 # Fatal Error C1046
 
-compiler limit : structure nested too deeply
+> compiler limit : structure nested too deeply
+
+## Remarks
 
 The structure, union, or class exceeded the nesting limit, which is 15 levels. Rewrite the definition to reduce the nesting level. Split the structure, union, or class into two or more parts by using **`typedef`** to define one or more of the nested structures.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1047.md b/docs/error-messages/compiler-errors-1/fatal-error-c1047.md
index c868dfe415..caf2bd6d44 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1047.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1047.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1047"
 title: "Fatal Error C1047"
+description: "Learn more about: Fatal Error C1047"
 ms.date: 10/22/2021
 f1_keywords: ["C1047"]
 helpviewer_keywords: ["C1047"]
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1049.md b/docs/error-messages/compiler-errors-1/fatal-error-c1049.md
index 658e780882..81455150da 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1049.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1049.md
@@ -1,7 +1,7 @@
 ---
 title: "Fatal Error C1049"
 description: "Describes compiler fatal error C1049, invalid numerical argument, and explains how to resolve it."
-ms.date: "11/04/2019"
+ms.date: 11/04/2019
 f1_keywords: ["C1049"]
 helpviewer_keywords: ["C1049"]
 ---
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C1049"]
 
 > invalid numerical argument '*value*'
 
+## Remarks
+
 The CL.EXE command-line parser found *value* where it was expecting a numerical argument.
 
 A C1049 error may occur when the compiler can't find a numerical argument for one of these compiler options:
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1051.md b/docs/error-messages/compiler-errors-1/fatal-error-c1051.md
index da1b46802d..d2aab16d09 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1051.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1051.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1051"
 title: "Fatal Error C1051"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1051"
+ms.date: 11/04/2016
 f1_keywords: ["C1051"]
 helpviewer_keywords: ["C1051"]
-ms.assetid: 87dcbd3b-0952-499a-bd42-64f9e8de2605
 ---
 # Fatal Error C1051
 
-program database file, 'pdbfile', has an obsolete format, delete it and recompile
+> program database file, 'pdbfile', has an obsolete format, delete it and recompile
+
+## Remarks
 
 The compiler cannot update the program database file, which has an older version number. Delete the file and recompile your program with **/Zi** or **/ZI**. For more information, see [/Z7, /Zi, /ZI (Debug Information Format)](../../build/reference/z7-zi-zi-debug-information-format.md)
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1052.md b/docs/error-messages/compiler-errors-1/fatal-error-c1052.md
index 7a564c3f29..37f4cfe70c 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1052.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1052.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1052"
 title: "Fatal Error C1052"
-ms.date: "05/08/2017"
+description: "Learn more about: Fatal Error C1052"
+ms.date: 05/08/2017
 f1_keywords: ["C1052"]
 helpviewer_keywords: ["C1052"]
-ms.assetid: f2c09a2f-d3c1-4420-9501-ffcb65caf87b
 ---
 # Fatal Error C1052
 
 > program database file, '*filename*', was generated by the linker with /DEBUG:fastlink; compiler cannot update such PDB files; please delete it or use /Fd to specify a different PDB filename
 
+## Remarks
+
 The compiler cannot update the same program database (PDB) files which are generated by the linker when the [/DEBUG:fastlink](../../build/reference/debug-generate-debug-info.md) option is specified. Normally the compiler-generated PDB files and the linker-generated PDB files have different names. However, if they are set to use the same names, this error can result.
 
 To fix this issue, you can explicitly delete the PDB files before you compile again, or you can create different names for the compiler-generated and linker-generated PDB files.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1053.md b/docs/error-messages/compiler-errors-1/fatal-error-c1053.md
index b97c1b622f..111e9c5fcb 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1053.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1053.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1053"
 title: "Fatal Error C1053"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1053"
+ms.date: 11/04/2016
 f1_keywords: ["C1053"]
 helpviewer_keywords: ["C1053"]
-ms.assetid: f50c1c6a-d9cc-42fa-984e-4e2e6e9cd1b1
 ---
 # Fatal Error C1053
 
-'\<identifier>' : function too large
+> '\<identifier>' : function too large
+
+## Remarks
 
 The function is too large to compile.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1054.md b/docs/error-messages/compiler-errors-1/fatal-error-c1054.md
index ff4963cff7..826abb4906 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1054.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1054.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1054"
 title: "Fatal Error C1054"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1054"
+ms.date: 11/04/2016
 f1_keywords: ["C1054"]
 helpviewer_keywords: ["C1054"]
-ms.assetid: 9cfb7307-b22a-4418-b7c0-2621b0ab5b1b
 ---
 # Fatal Error C1054
 
-compiler limit : initializers nested too deeply
+> compiler limit : initializers nested too deeply
+
+## Remarks
 
 The code exceeds the nesting limit on initializers (10-15 levels, depending on the combination of types being initialized).
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1055.md b/docs/error-messages/compiler-errors-1/fatal-error-c1055.md
index b60f41acd7..d3106aef98 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1055.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1055.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1055"
 title: "Fatal Error C1055"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1055"
+ms.date: 11/04/2016
 f1_keywords: ["C1055"]
 helpviewer_keywords: ["C1055"]
-ms.assetid: a9fb9190-d7eb-4d5f-b1a2-a41e584a28c1
 ---
 # Fatal Error C1055
 
-compiler limit : out of keys
+> compiler limit : out of keys
+
+## Remarks
 
 The source file contains too many symbols. The compiler ran out of hash keys for the symbol table.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1057.md b/docs/error-messages/compiler-errors-1/fatal-error-c1057.md
index 238df928a7..646398bb39 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1057.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1057.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1057"
 title: "Fatal Error C1057"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1057"
+ms.date: 11/04/2016
 f1_keywords: ["C1057"]
 helpviewer_keywords: ["C1057"]
-ms.assetid: 1e67e727-963d-42c5-8c32-c0e370d32735
 ---
 # Fatal Error C1057
 
-unexpected end of file in macro expansion
+> unexpected end of file in macro expansion
+
+## Remarks
 
 The compiler reached the end of the source file while gathering macro-invocation arguments, probably due to a missing right parenthesis in the macro invocation.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1060.md b/docs/error-messages/compiler-errors-1/fatal-error-c1060.md
index 60e1f7a1e3..d3d409b2d1 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1060.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1060.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1060"
 title: "Fatal Error C1060"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1060"
+ms.date: 11/04/2016
 f1_keywords: ["C1060"]
 helpviewer_keywords: ["C1060"]
-ms.assetid: feaf305c-c84c-4160-b974-50e283412849
 ---
 # Fatal Error C1060
 
-compiler is out of heap space
+> compiler is out of heap space
+
+## Remarks
 
 The operating system or run-time library cannot fill a request for memory.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1061.md b/docs/error-messages/compiler-errors-1/fatal-error-c1061.md
index 9e17fd39f8..96b7691a60 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1061.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1061.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1061"
 title: "Fatal Error C1061"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1061"
+ms.date: 11/04/2016
 f1_keywords: ["C1061"]
 helpviewer_keywords: ["C1061"]
-ms.assetid: 9366c0bc-96e0-4967-aa7d-4ebf098de806
 ---
 # Fatal Error C1061
 
-compiler limit : blocks nested too deeply
+> compiler limit : blocks nested too deeply
+
+## Remarks
 
 Nesting of code blocks exceeds the limit of 128 nesting levels. This is a hard limit in the compiler for both C and C++, in both the 32-bit and 64-bit tool set. The count of nesting levels can be increased by anything that creates a scope or block. For example, namespaces, using directives, preprocessor expansions, template expansion, exception handling, loop constructs, and else-if clauses can all increase the nesting level seen by the compiler.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1064.md b/docs/error-messages/compiler-errors-1/fatal-error-c1064.md
index e3f16ff5dc..c1469fc91e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1064.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1064.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1064"
 title: "Fatal Error C1064"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1064"
+ms.date: 11/04/2016
 f1_keywords: ["C1064"]
 helpviewer_keywords: ["C1064"]
-ms.assetid: d4598a28-b8f6-4e78-a0c6-db324f5bdfc3
 ---
 # Fatal Error C1064
 
-compiler limit : token overflowed internal buffer
+> compiler limit : token overflowed internal buffer
+
+## Remarks
 
 An identifier exceeds the length of the internal buffer used for identifiers. Shorten the name.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1065.md b/docs/error-messages/compiler-errors-1/fatal-error-c1065.md
index 2db2bf5c21..b0650fec32 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1065.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1065.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1065"
 title: "Fatal Error C1065"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1065"
+ms.date: 11/04/2016
 f1_keywords: ["C1065"]
 helpviewer_keywords: ["C1065"]
-ms.assetid: 80a27e13-696d-4199-a284-0d6b07446ff3
 ---
 # Fatal Error C1065
 
-compiler limit : out of tags
+> compiler limit : out of tags
+
+## Remarks
 
 The source file contains more than 65,523 classes, structs, unions, namespaces, or enums.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1067.md b/docs/error-messages/compiler-errors-1/fatal-error-c1067.md
index b9d556d5a6..f9a3bfd24e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1067.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1067.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1067"
 title: "Fatal Error C1067"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1067"
+ms.date: 11/04/2016
 f1_keywords: ["C1067"]
 helpviewer_keywords: ["C1067"]
-ms.assetid: e2c94be6-4573-4571-aac9-73d657fe9f96
 ---
 # Fatal Error C1067
 
-compiler limit : 64K limit on size of a type record has been exceeded
+> compiler limit : 64K limit on size of a type record has been exceeded
+
+## Remarks
 
 This error could occur if a symbol has a decorated name exceeding 247 characters.  To resolve, shorten the symbol name.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1068.md b/docs/error-messages/compiler-errors-1/fatal-error-c1068.md
index ff9d25709d..86414b2659 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1068.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1068.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1068"
 title: "Fatal Error C1068"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1068"
+ms.date: 11/04/2016
 f1_keywords: ["C1068"]
 helpviewer_keywords: ["C1068"]
-ms.assetid: 3b4abd16-4552-4900-84be-54f6ebb6c785
 ---
 # Fatal Error C1068
 
-cannot open file 'file'
+> cannot open file 'file'
+
+## Remarks
 
 Ensure that `file` is not in use by another program.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1070.md b/docs/error-messages/compiler-errors-1/fatal-error-c1070.md
index a1cc8f0a77..df482bb1aa 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1070.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1070.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1070"
 title: "Fatal Error C1070"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1070"
+ms.date: 11/04/2016
 f1_keywords: ["C1070"]
 helpviewer_keywords: ["C1070"]
-ms.assetid: 1058269a-5db6-4c23-a97f-b5269eb9188b
 ---
 # Fatal Error C1070
 
-mismatched #if/#endif pair in file 'filename'
+> mismatched #if/#endif pair in file 'filename'
+
+## Remarks
 
 An `#if`, `#ifdef`, or `#ifndef` directive has no corresponding `#endif`.
 
-The following sample generates C1070:
+## Example
+
+The following example generates C1070:
 
 ```cpp
 // C1070.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1071.md b/docs/error-messages/compiler-errors-1/fatal-error-c1071.md
index 82f1926458..bb3ba4b6f5 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1071.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1071.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1071"
 title: "Fatal Error C1071"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1071"
+ms.date: 11/04/2016
 f1_keywords: ["C1071"]
 helpviewer_keywords: ["C1071"]
-ms.assetid: 489f1786-370e-4ecd-af67-538fe6e5bd4e
 ---
 # Fatal Error C1071
 
-unexpected end of file found in comment
+> unexpected end of file found in comment
+
+## Remarks
 
 The compiler reached the end of the file while scanning a comment.
 
@@ -18,7 +19,9 @@ The compiler reached the end of the file while scanning a comment.
 
 1. Missing newline character after a comment on the last line of a source file.
 
-The following sample generates C1071:
+## Example
+
+The following example generates C1071:
 
 ```cpp
 // C1071.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1073.md b/docs/error-messages/compiler-errors-1/fatal-error-c1073.md
index 5bdfc8ee77..8a58d0814a 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1073.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1073.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1073"
 title: "Fatal Error C1073"
+description: "Learn more about: Fatal Error C1073"
 ms.date: 08/17/2022
 f1_keywords: ["C1073"]
 helpviewer_keywords: ["C1073"]
-ms.assetid: a946fcf1-674e-4a7a-a28c-b1effacbabe1
 ---
 # Fatal Error C1073
 
 > Internal error involving incremental compilation (compiler file '*filename*', line *number*)
 
+## Remarks
+
 Recompile the file without using incremental compilation.
 
 This error is obsolete in Visual Studio 2022 and later versions.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1074.md b/docs/error-messages/compiler-errors-1/fatal-error-c1074.md
index 4058a24309..0966a7fdc7 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1074.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1074.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1074"
 title: "Fatal Error C1074"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1074"
+ms.date: 11/04/2016
 f1_keywords: ["C1074"]
 helpviewer_keywords: ["C1074"]
-ms.assetid: 979d4ab2-0f1a-472a-85f8-71f48297274f
 ---
 # Fatal Error C1074
 
-'IDB' is illegal extension for PDB file: filename
+> 'IDB' is illegal extension for PDB file: filename
+
+## Remarks
 
 The compiler expects program databases to have the .pdb extension.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1075.md b/docs/error-messages/compiler-errors-1/fatal-error-c1075.md
index e63540537d..8ecce1735e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1075.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1075.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1075"
 title: "Fatal Error C1075"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1075"
+ms.date: 11/04/2016
 f1_keywords: ["C1075"]
 helpviewer_keywords: ["C1075"]
-ms.assetid: 69a74e3d-b53f-4526-a440-2c94e6403355
 ---
 # Fatal Error C1075
 
-the left token was unmatched at the end of the file
+> the left token was unmatched at the end of the file
+
+## Remarks
 
 The compiler expected matching *token* before it reached the end of file.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1076.md b/docs/error-messages/compiler-errors-1/fatal-error-c1076.md
index 42d68e8210..e0851683ca 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1076.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1076.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1076"
 title: "Fatal Error C1076"
-ms.date: "03/08/2019"
+description: "Learn more about: Fatal Error C1076"
+ms.date: 03/08/2019
 f1_keywords: ["C1076"]
 helpviewer_keywords: ["C1076"]
-ms.assetid: 84ac1180-3e8a-48e8-9f77-7f18a778b964
 ---
 # Fatal Error C1076
 
 > compiler limit : internal heap limit reached; use /Zm to specify a higher limit
 
+## Remarks
+
 This error can be caused by too many symbols, or too many template instantiations. Starting in Visual Studio 2015, this message may result from Windows virtual memory pressure caused by too many parallel build processes. In this case, the recommendation to use the **/Zm** option should be ignored unless you are using a `#pragma hdrstop` directive.
 
 To resolve this error:
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1077.md b/docs/error-messages/compiler-errors-1/fatal-error-c1077.md
index a759bcabfa..fb66328c98 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1077.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1077.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1077"
 title: "Fatal Error C1077"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1077"
+ms.date: 11/04/2016
 f1_keywords: ["C1077"]
 helpviewer_keywords: ["C1077"]
-ms.assetid: 514d66f4-b512-479a-b793-ebf45c91e15b
 ---
 # Fatal Error C1077
 
-compiler limit : cannot have more than number command line options
+> compiler limit : cannot have more than number command line options
+
+## Remarks
 
 The number of command-line options exceeds the internal limit.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1079.md b/docs/error-messages/compiler-errors-1/fatal-error-c1079.md
index d66d45a595..0b3c371018 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1079.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1079.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1079"
 title: "Fatal Error C1079"
+description: "Learn more about: Fatal Error C1079"
 ms.date: 08/17/2022
 f1_keywords: ["C1079"]
 helpviewer_keywords: ["C1079"]
-ms.assetid: cf06a65a-f9a5-4bd8-8128-201a6cbe2113
 ---
 # Fatal Error C1079
 
 > compiler limit : PCH file size limit exceeded
 
+## Remarks
+
 The PCH file exceeds the 4 GB size limit.
 
 This error is obsolete in Visual Studio 2022 and later versions.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1080.md b/docs/error-messages/compiler-errors-1/fatal-error-c1080.md
index c5d058e6e8..3868560b97 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1080.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1080.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1080"
 title: "Fatal Error C1080"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1080"
+ms.date: 11/04/2016
 f1_keywords: ["C1080"]
 helpviewer_keywords: ["C1080"]
-ms.assetid: 01e9e7c0-6a20-4539-b9d2-d27e7afcc8e6
 ---
 # Fatal Error C1080
 
-compiler limit : command line option exceeded limit of number characters
+> compiler limit : command line option exceeded limit of number characters
+
+## Remarks
 
 An argument passed to the compiler exceeds 256 characters.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1081.md b/docs/error-messages/compiler-errors-1/fatal-error-c1081.md
index dabb2798dc..8922f2cb05 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1081.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1081.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1081"
 title: "Fatal Error C1081"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1081"
+ms.date: 11/04/2016
 f1_keywords: ["C1081"]
 helpviewer_keywords: ["C1081"]
-ms.assetid: e58adf17-cbe1-4955-a5c7-80622bbba249
 ---
 # Fatal Error C1081
 
-'symbol': file name too long
+> 'symbol': file name too long
+
+## Remarks
 
 The length of a file pathname exceeds `_MAX_PATH` (defined by STDLIB.h as 260 characters). Shorten the name of the file.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1082.md b/docs/error-messages/compiler-errors-1/fatal-error-c1082.md
index ff154134ce..c0052079a2 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1082.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1082.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1082"
 title: "Fatal Error C1082"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1082"
+ms.date: 11/04/2016
 f1_keywords: ["C1082"]
 helpviewer_keywords: ["C1082"]
-ms.assetid: 173179f1-1e14-4a91-9451-122f8a53c0b8
 ---
 # Fatal Error C1082
 
-Cannot close filetype file: 'file': message
+> Cannot close filetype file: 'file': message
+
+## Remarks
 
 If the message says "bad file number", the file may have been closing in the foreground while compiling in the background.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1083.md b/docs/error-messages/compiler-errors-1/fatal-error-c1083.md
index 740cef0703..06c6ff63ab 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1083.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1083.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Fatal Error C1083"
 title: "Fatal Error C1083"
-ms.date: "09/01/2017"
+description: "Learn more about: Fatal Error C1083"
+ms.date: 09/01/2017
 f1_keywords: ["C1083"]
 helpviewer_keywords: ["C1083"]
 ---
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C1083"]
 
 > Cannot open *filetype* file: '*file*': *message*
 
+## Remarks
+
 The compiler generates a C1083 error when it can't find a file. There are many possible causes for this error. An incorrect include search path or missing or misnamed header files are the most common causes, but other file types and issues can also cause C1083. Here are some of the common reasons why the compiler generates this error.
 
 ## The specified file name is wrong
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1084.md b/docs/error-messages/compiler-errors-1/fatal-error-c1084.md
index f4fc81eada..d5cfb9d0bc 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1084.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1084.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1084"
 title: "Fatal Error C1084"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1084"
+ms.date: 11/04/2016
 f1_keywords: ["C1084"]
 helpviewer_keywords: ["C1084"]
-ms.assetid: b2f273ef-3a14-4d5f-8ce0-7a11a0388fe6
 ---
 # Fatal Error C1084
 
-Cannot read filetype file: 'file': message
+> Cannot read filetype file: 'file': message
+
+## Remarks
 
 This error is generally the result of a failed internal system API call made by the compiler. The message shown when this error is encountered is often generated by either [_wcserror_s](../../c-runtime-library/reference/strerror-s-strerror-s-wcserror-s-wcserror-s.md) or [FormatMessage](/windows/win32/api/winbase/nf-winbase-formatmessage).
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1085.md b/docs/error-messages/compiler-errors-1/fatal-error-c1085.md
index dd3fff0adf..b7a9acd4f4 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1085.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1085.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Fatal Error C1085"
 title: "Fatal Error C1085"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1085"
+ms.date: 11/04/2016
 f1_keywords: ["C1085"]
 helpviewer_keywords: ["C1085"]
-ms.assetid: f2766365-d09b-4299-8a98-12e5aca98568
 ---
 # Fatal Error C1085
 
-Cannot write filetype file: 'file': message
+> Cannot write filetype file: 'file': message
 
 ### To fix by checking the following possible causes
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1086.md b/docs/error-messages/compiler-errors-1/fatal-error-c1086.md
index f5686a8a74..d89d6f0efb 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1086.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1086.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1086"
 title: "Fatal Error C1086"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1086"
+ms.date: 11/04/2016
 f1_keywords: ["C1086"]
 helpviewer_keywords: ["C1086"]
-ms.assetid: 8e3c32c9-cafe-48bf-87bf-f70a1f0367f0
 ---
 # Fatal Error C1086
 
-Cannot seek filetype file: 'file': message
+> Cannot seek filetype file: 'file': message
+
+## Remarks
 
 The compiler cannot complete an I/O operation.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1087.md b/docs/error-messages/compiler-errors-1/fatal-error-c1087.md
index 80fd48be9c..84d1dd3314 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1087.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1087.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1087"
 title: "Fatal Error C1087"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1087"
+ms.date: 11/04/2016
 f1_keywords: ["C1087"]
 helpviewer_keywords: ["C1087"]
-ms.assetid: 2fb4c14e-c6ea-45e4-8ce5-a51d15811a01
 ---
 # Fatal Error C1087
 
-Cannot tell filetype file: 'file': message
+> Cannot tell filetype file: 'file': message
+
+## Remarks
 
 The compiler cannot complete an I/O operation.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1088.md b/docs/error-messages/compiler-errors-1/fatal-error-c1088.md
index f037f7af44..8359676108 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1088.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1088.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1088"
 title: "Fatal Error C1088"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1088"
+ms.date: 11/04/2016
 f1_keywords: ["C1088"]
 helpviewer_keywords: ["C1088"]
-ms.assetid: e61ebbb4-ab50-4a66-b2f6-3cc4400d8511
 ---
 # Fatal Error C1088
 
-Cannot flush filetype file: 'file': message
+> Cannot flush filetype file: 'file': message
+
+## Remarks
 
 The compiler cannot complete an I/O operation.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1089.md b/docs/error-messages/compiler-errors-1/fatal-error-c1089.md
index 753f67e2f7..0b1c98a1e8 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1089.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1089.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1089"
 title: "Fatal Error C1089"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1089"
+ms.date: 11/04/2016
 f1_keywords: ["C1089"]
 helpviewer_keywords: ["C1089"]
-ms.assetid: c4f1e8e5-62c5-464a-9112-99b0790a0fb7
 ---
 # Fatal Error C1089
 
-Cannot truncate filetype file: 'file': message
+> Cannot truncate filetype file: 'file': message
+
+## Remarks
 
 The compiler cannot shrink a file to zero length.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1090.md b/docs/error-messages/compiler-errors-1/fatal-error-c1090.md
index 3764f4cd32..7602b77725 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1090.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1090.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1090 PDB API call failed"
 title: "Fatal Error C1090"
+description: "Learn more about: Fatal Error C1090 PDB API call failed"
 ms.date: 04/01/2021
 f1_keywords: ["C1090"]
 helpviewer_keywords: ["C1090"]
@@ -9,6 +9,8 @@ helpviewer_keywords: ["C1090"]
 
 > PDB API call failed, error code '*error-number*': *message*
 
+## Remarks
+
 An error occurred in processing a PDB file.
 
 Error C1090 is a catch-all for uncommon compiler PDB file errors that aren't reported separately. We only have generic advice for resolving this issue:
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1091.md b/docs/error-messages/compiler-errors-1/fatal-error-c1091.md
index dfdc32778c..fb5e7195d9 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1091.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1091.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1091"
 title: "Fatal Error C1091"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1091"
+ms.date: 11/04/2016
 f1_keywords: ["C1091"]
 helpviewer_keywords: ["C1091"]
-ms.assetid: 812d4201-9154-48b0-b9af-5959c082ca33
 ---
 # Fatal Error C1091
 
-compiler limit: string exceeds 'length' bytes in length
+> compiler limit: string exceeds 'length' bytes in length
+
+## Remarks
 
 A string constant exceeded the current limit on the length of strings.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1092.md b/docs/error-messages/compiler-errors-1/fatal-error-c1092.md
index 396f6b007a..a34f58ab35 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1092.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1092.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1092"
 title: "Fatal Error C1092"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1092"
+ms.date: 11/04/2016
 f1_keywords: ["C1092"]
 helpviewer_keywords: ["C1092"]
-ms.assetid: bcaa87f0-fbfc-4a33-844b-3b9f5d67f279
 ---
 # Fatal Error C1092
 
-Edit and Continue does not support changes to data types; build required
+> Edit and Continue does not support changes to data types; build required
+
+## Remarks
 
 You changed or added a data type since the last successful build.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1093.md b/docs/error-messages/compiler-errors-1/fatal-error-c1093.md
index 4d6e7437f7..b975a6552d 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1093.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1093.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1093"
 title: "Fatal Error C1093"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1093"
+ms.date: 11/04/2016
 f1_keywords: ["C1093"]
 helpviewer_keywords: ["C1093"]
-ms.assetid: 61b120e2-44cc-4824-981a-7eb72aa57745
 ---
 # Fatal Error C1093
 
 > API call '*function name*' failed '*location of call*' : '*text from run-time*'
 
+## Remarks
+
 A call to a .NET function failed. The *text from run-time* string may or may not be supplied by the COM runtime.
 
 For more information about system error messages, see the winerror.h system file, and [FormatMessage](/windows/win32/api/winbase/nf-winbase-formatmessage).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1094.md b/docs/error-messages/compiler-errors-1/fatal-error-c1094.md
index bc80c63eeb..7bc3d76726 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1094.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1094.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Fatal Error C1094"
 title: "Fatal Error C1094"
+description: "Learn more about: Fatal Error C1094"
 ms.date: 08/17/2022
 f1_keywords: ["C1094"]
 helpviewer_keywords: ["C1094"]
-ms.assetid: 9e1193b2-cb95-44f9-bf6f-019e0d41dd97
 ---
 # Fatal Error C1094
 
@@ -16,7 +15,7 @@ The value that is passed to [`/Yc`](../../build/reference/yc-create-precompiled-
 
 ## Example
 
-The following sample generates C1094:
+The following example generates C1094:
 
 ```
 // C1094.h
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1098.md b/docs/error-messages/compiler-errors-1/fatal-error-c1098.md
index d28a67c510..4a2b422fb3 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1098.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1098.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1098"
 title: "Fatal Error C1098"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1098"
+ms.date: 11/04/2016
 f1_keywords: ["C1098"]
 helpviewer_keywords: ["C1098"]
-ms.assetid: 09a1a14b-95bd-49db-b644-192efbaf9f45
 ---
 # Fatal Error C1098
 
-Version mismatch with Edit and Continue engine
+> Version mismatch with Edit and Continue engine
+
+## Remarks
 
 The debugger version you are using does not match the compiler used to create the executable. If recompiling does not fix the problem, you may need to reinstall Visual C++ to make sure you have the proper versions of the debugger and compiler.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1099.md b/docs/error-messages/compiler-errors-1/fatal-error-c1099.md
index 5cf10883dc..0b55641fd0 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1099.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1099.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1099"
 title: "Fatal Error C1099"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1099"
+ms.date: 11/04/2016
 f1_keywords: ["C1099"]
 helpviewer_keywords: ["C1099"]
-ms.assetid: c050b074-a06a-4026-9e10-569029cc0739
 ---
 # Fatal Error C1099
 
-Edit and Continue engine terminating compile
+> Edit and Continue engine terminating compile
+
+## Remarks
 
 Edit and Continue loaded a precompiled header file in preparation for compiling code changes, but subsequent actions (such as code changes prior to the precompiled header `#include` statement or stopping the debugger) prevented Edit and Continue from finishing the compile with that process. You do not need to take any action to fix this error.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1100.md b/docs/error-messages/compiler-errors-1/fatal-error-c1100.md
index 77c7b876b7..71ab285e1b 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1100.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1100.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1100"
 title: "Fatal Error C1100"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1100"
+ms.date: 11/04/2016
 f1_keywords: ["C1100"]
 helpviewer_keywords: ["C1100"]
-ms.assetid: d4d877ea-acd6-4ec7-961e-55e460d98820
 ---
 # Fatal Error C1100
 
-unable to initialize OLE : system error message
+> unable to initialize OLE : system error message
+
+## Remarks
 
 The compiler cannot initialize the Component Object Model (COM) library. See [CoInitialize](/windows/win32/api/objbase/nf-objbase-coinitialize).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1103.md b/docs/error-messages/compiler-errors-1/fatal-error-c1103.md
index 7b102186fe..8d252ac10e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1103.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1103.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Fatal Error C1103"
 title: "Fatal Error C1103"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1103"
+ms.date: 11/04/2016
 f1_keywords: ["C1103"]
 helpviewer_keywords: ["C1103"]
-ms.assetid: 9d276939-9c47-4235-9d20-76b8434f9731
 ---
 # Fatal Error C1103
 
-fatal error importing progid: 'message'
+> fatal error importing progid: 'message'
+
+## Remarks
 
 The compiler detected a problem importing a type library.  For example, you cannot specify a type library with progid and also specify `no_registry`.
 
 For more information, see [#import Directive](../../preprocessor/hash-import-directive-cpp.md).
 
-The following sample will generate C1103:
+## Example
+
+The following example will generate C1103:
 
 ```cpp
 // C1103.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1104.md b/docs/error-messages/compiler-errors-1/fatal-error-c1104.md
index d942c0c4c7..4e5f7e9d27 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1104.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1104.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Fatal Error C1104"
 title: "Fatal Error C1104"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1104"
+ms.date: 11/04/2016
 f1_keywords: ["C1104"]
 helpviewer_keywords: ["C1104"]
-ms.assetid: 45bd85c4-77d3-4d3c-b167-49c563aefb4d
 ---
 # Fatal Error C1104
 
-fatal error importing libid: 'message'
+> fatal error importing libid: 'message'
+
+## Remarks
 
 The compiler detected a problem importing a type library.  For example, you cannot specify a type library with libid and also specify `no_registry`.
 
 For more information, see [#import Directive](../../preprocessor/hash-import-directive-cpp.md).
 
-The following sample will generate C1104:
+## Example
+
+The following example will generate C1104:
 
 ```cpp
 // C1104.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1107.md b/docs/error-messages/compiler-errors-1/fatal-error-c1107.md
index 7ec4ba1fb4..0033caaaac 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1107.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1107.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1107"
 title: "Fatal Error C1107"
+description: "Learn more about: Fatal Error C1107"
 ms.date: 11/22/2021
 f1_keywords: ["C1107"]
 helpviewer_keywords: ["C1107"]
-ms.assetid: 541a4d9f-10bc-4dd8-b68e-15e548f3dc0a
 ---
 # Fatal Error C1107
 
 > could not find assembly '*file*': please specify the assembly search path using `/AI` or by setting the `LIBPATH` environment variable
 
+## Remarks
+
 A metadata file was passed to a [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive that the compiler was unable to locate.
 
 LIBPATH, which is described in the article for `#using`, and the [`/AI`](../../build/reference/ai-specify-metadata-directories.md) compiler option allow you to specify directories in which the compiler will look for referenced metadata files.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1108.md b/docs/error-messages/compiler-errors-1/fatal-error-c1108.md
index 98678a609e..4e44ae651e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1108.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1108.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1108"
 title: "Fatal Error C1108"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1108"
+ms.date: 11/04/2016
 f1_keywords: ["C1108"]
 helpviewer_keywords: ["C1108"]
-ms.assetid: 3cadf07b-b7a7-41c7-ad5c-06ceb8af8c3b
 ---
 # Fatal Error C1108
 
 > unable to find DLL: '*dll name*'
 
+## Remarks
+
 The specified DLL (*dll name*) could not be found in the path.
 
 To resolve this error, reinstall Visual C++ or copy the appropriate .dll file from the installation to your computer.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1109.md b/docs/error-messages/compiler-errors-1/fatal-error-c1109.md
index 01bc560c94..98e571d528 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1109.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1109.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1109"
 title: "Fatal Error C1109"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1109"
+ms.date: 11/04/2016
 f1_keywords: ["C1109"]
 helpviewer_keywords: ["C1109"]
-ms.assetid: df385e46-e54d-412c-88f8-42582b59909c
 ---
 # Fatal Error C1109
 
-unable to find 'entry point' in DLL 'dll'
+> unable to find 'entry point' in DLL 'dll'
+
+## Remarks
 
 An entry point in a [delay-loaded DLL](../../build/reference/linker-support-for-delay-loaded-dlls.md) required by the compiler could not be found.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1113.md b/docs/error-messages/compiler-errors-1/fatal-error-c1113.md
index c23e479a0e..dbc382ae0b 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1113.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1113.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1113"
 title: "Fatal Error C1113"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1113"
+ms.date: 11/04/2016
 f1_keywords: ["C1113"]
 helpviewer_keywords: ["C1113"]
-ms.assetid: 1c7c3ce7-2827-4822-9c63-0abc8615ea39
 ---
 # Fatal Error C1113
 
-\#using failed on 'file'
+> #using failed on 'file'
+
+## Remarks
 
 Only a file in the Microsoft Intermediate Language (MSIL) format can be passed to a [#using](../../preprocessor/hash-using-directive-cpp.md) directive. The [/clr](../../build/reference/clr-common-language-runtime-compilation.md) compiler option lets you create an MSIL output file. Other Visual Studio languages also produce MSIL files.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1116.md b/docs/error-messages/compiler-errors-1/fatal-error-c1116.md
index 7a5fba81b0..79274cc6b1 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1116.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1116.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1116"
 title: "Fatal Error C1116"
+description: "Learn more about: Fatal Error C1116"
 ms.date: 08/17/2022
 f1_keywords: ["C1116"]
 helpviewer_keywords: ["C1116"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1116"]
 
 > unrecoverable error importing module/headerunit '*name*'. Specialization of '*primary-template*' with arguments '*argument-list*'
 
+## Remarks
+
 Error C1116 can happen when the creation of the specialization requires the compiler to parse a token-stream and it encounters an identifier without a matching symbol. To resolve the issue, verify that all template specification arguments are defined and spelled correctly.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1117.md b/docs/error-messages/compiler-errors-1/fatal-error-c1117.md
index af3886d74f..1c1856a052 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1117.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1117.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Fatal Error C1117"
 title: "Fatal Error C1117"
+description: "Learn more about: Fatal Error C1117"
 ms.date: 08/17/2022
 f1_keywords: ["C1117"]
 helpviewer_keywords: ["C1117"]
@@ -9,4 +9,6 @@ helpviewer_keywords: ["C1117"]
 
 > unrecoverable error importing module/headerunit '*name*': symbol '*symbol-name*' has already been defined
 
+## Remarks
+
 The compiler found a redefinition of an existing type. To resolve the issue, verify that the symbol has only one definition across modules and translation units.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1120.md b/docs/error-messages/compiler-errors-1/fatal-error-c1120.md
index f828f4e012..4152492f55 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1120.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1120.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1120"
 title: "Fatal Error C1120"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1120"
+ms.date: 11/04/2016
 f1_keywords: ["C1120"]
 helpviewer_keywords: ["C1120"]
-ms.assetid: 34212b64-f4e5-4c55-9acc-6f6b2ab5f1c0
 ---
 # Fatal Error C1120
 
-call to GetProcAddress failed for 'function'
+> call to GetProcAddress failed for 'function'
+
+## Remarks
 
 This error indicates Visual C++ needs to be reinstalled.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1121.md b/docs/error-messages/compiler-errors-1/fatal-error-c1121.md
index 32816f5b50..ed1e1c77aa 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1121.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1121.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1121"
 title: "Fatal Error C1121"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1121"
+ms.date: 11/04/2016
 f1_keywords: ["C1121"]
 helpviewer_keywords: ["C1121"]
-ms.assetid: d16e51c5-4c50-4303-a028-ca60f7a3273c
 ---
 # Fatal Error C1121
 
-call to CryptoAPI failed
+> call to CryptoAPI failed
+
+## Remarks
 
 The compiler made a call to the CryptoAPI and the call failed. Reinstall Visual Studio and possibly reinstall the operating system.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1126.md b/docs/error-messages/compiler-errors-1/fatal-error-c1126.md
index 444c7d0111..cc63a25192 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1126.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1126.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1126"
 title: "Fatal Error C1126"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1126"
+ms.date: 11/04/2016
 f1_keywords: ["C1126"]
 helpviewer_keywords: ["C1126"]
-ms.assetid: f22b26a6-8ad7-47cf-a237-196c8ea60aca
 ---
 # Fatal Error C1126
 
-'identifier' : automatic allocation exceeds size
+> 'identifier' : automatic allocation exceeds size
+
+## Remarks
 
 Space allocated for local variables of a function (plus a limited amount of space used by the compiler, such as an extra 20 bytes for swappable functions) exceeds the limit.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1128.md b/docs/error-messages/compiler-errors-1/fatal-error-c1128.md
index 083737e4b4..3df616a677 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1128.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1128.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1128"
 title: "Fatal Error C1128"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1128"
+ms.date: 11/04/2016
 f1_keywords: ["C1128"]
 helpviewer_keywords: ["C1128"]
-ms.assetid: 6f9580fd-ecef-48be-9780-dcf666704279
 ---
 # Fatal Error C1128
 
-number of sections exceeded object file format limit : compile with /bigobj
+> number of sections exceeded object file format limit : compile with /bigobj
+
+## Remarks
 
 An .obj file exceeded the number of allowable sections, a COFF object file format limitation.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1189.md b/docs/error-messages/compiler-errors-1/fatal-error-c1189.md
index 91233b4299..791eb9e225 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1189.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1189.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Fatal Error C1189"
 title: "Fatal Error C1189"
-ms.date: "04/27/2018"
+description: "Learn more about: Fatal Error C1189"
+ms.date: 04/27/2018
 f1_keywords: ["C1189"]
 helpviewer_keywords: ["C1189"]
-ms.assetid: 2e5c8a78-edd4-411c-b619-558a96be148a
 ---
 # Fatal Error C1189
 
@@ -16,7 +15,7 @@ C1189 is generated by the `#error` directive. The developer who codes the direct
 
 ## Example
 
-The following sample generates C1189. In the sample, the developer issues a custom error message because the `_WIN32` identifier is not defined:
+The following example generates C1189. In the example, the developer issues a custom error message because the `_WIN32` identifier is not defined:
 
 ```cpp
 // C1189.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1190.md b/docs/error-messages/compiler-errors-1/fatal-error-c1190.md
index da144884d9..b02620a88f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1190.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1190.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Fatal Error C1190"
 title: "Fatal Error C1190"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1190"
+ms.date: 11/04/2016
 f1_keywords: ["C1190"]
 helpviewer_keywords: ["C1190"]
-ms.assetid: dee2266d-6c40-4f6e-91db-f01e65f8d2bc
 ---
 # Fatal Error C1190
 
-managed targeted code requires a '/clr' option
+> managed targeted code requires a '/clr' option
+
+## Remarks
 
 You are using CLR constructs but you did not specify **/clr**.
 
 For more information, see [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md).
 
-The following sample generates C1190:
+## Example
+
+The following example generates C1190:
 
 ```cpp
 // C1190.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1191.md b/docs/error-messages/compiler-errors-1/fatal-error-c1191.md
index 523f3574ff..d6bf50086a 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1191.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1191.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1191"
 title: "Fatal Error C1191"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1191"
+ms.date: 11/04/2016
 f1_keywords: ["C1191"]
 helpviewer_keywords: ["C1191"]
-ms.assetid: 2888c6c4-b4e6-449e-8ee0-7917f31086df
 ---
 # Fatal Error C1191
 
-'dll' can only be imported at global scope
+> 'dll' can only be imported at global scope
+
+## Remarks
 
 The instruction to import mscorlib.dll into a program that uses /clr programming cannot appear in a namespace or function, but must appear at global scope.
 
-The following sample generates C1191:
+## Example
+
+The following example generates C1191:
 
 ```cpp
 // C1191.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1192.md b/docs/error-messages/compiler-errors-1/fatal-error-c1192.md
index 93ece1e127..2c374cd29f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1192.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1192.md
@@ -1,12 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1192"
 title: "Fatal Error C1192"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1192"
+ms.date: 11/04/2016
 f1_keywords: ["C1192"]
 helpviewer_keywords: ["C1192"]
 ---
 # Fatal Error C1192
 
-\#using failed on 'file'
+> #using failed on 'file'
+
+## Remarks
 
 Only a file in the Microsoft Intermediate Language (MSIL) format can be passed to a [#using](../../preprocessor/hash-using-directive-cpp.md) directive. The [/clr](../../build/reference/clr-common-language-runtime-compilation.md) compiler option lets you create an MSIL output file. Other Visual Studio languages also produce MSIL files.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1196.md b/docs/error-messages/compiler-errors-1/fatal-error-c1196.md
index ff1a771628..8ae577e8b4 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1196.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1196.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1196"
 title: "Fatal Error C1196"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1196"
+ms.date: 11/04/2016
 f1_keywords: ["C1196"]
 helpviewer_keywords: ["C1196"]
-ms.assetid: 10a79b3f-3423-4ee3-98fa-e9e59cddabb1
 ---
 # Fatal Error C1196
 
-'identifier' : identifier found in type library 'typelib' is not a valid C++ identifier
+> 'identifier' : identifier found in type library 'typelib' is not a valid C++ identifier
+
+## Remarks
 
 One of the identifiers in your type library is not a valid C++ identifier. The type library is not available for use with [#import](../../preprocessor/hash-import-directive-cpp.md).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1197.md b/docs/error-messages/compiler-errors-1/fatal-error-c1197.md
index f08b1d92a2..3a63aaa836 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1197.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1197.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1197"
 title: "Fatal Error C1197"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1197"
+ms.date: 11/04/2016
 f1_keywords: ["C1197"]
 helpviewer_keywords: ["C1197"]
-ms.assetid: 22b801b7-e792-41f6-a461-973c03c69f25
 ---
 # Fatal Error C1197
 
-cannot reference 'mscorlib.dll_1' as the program has already referenced 'mscorlib.dll_2'
+> cannot reference 'mscorlib.dll_1' as the program has already referenced 'mscorlib.dll_2'
+
+## Remarks
 
 The compiler is matched to a version of the common language runtime.  However, an attempt was made to reference a version of a common language runtime file from a previous version.
 
@@ -16,7 +17,7 @@ To resolve this error, only reference files from the version of the common langu
 
 ## Example
 
-The following sample generates C1197:
+The following example generates C1197:
 
 ```cpp
 // C1197.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1201.md b/docs/error-messages/compiler-errors-1/fatal-error-c1201.md
index a318e4523e..f726151d89 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1201.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1201.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1201"
 title: "Fatal Error C1201"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1201"
+ms.date: 11/04/2016
 f1_keywords: ["C1201"]
 helpviewer_keywords: ["C1201"]
-ms.assetid: e58b9b9a-2c6f-454d-8719-9773aca765d1
 ---
 # Fatal Error C1201
 
-unable to continue after syntax error in class template definition
+> unable to continue after syntax error in class template definition
+
+## Remarks
 
 An unexpected error occurred while parsing a class template definition.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1202.md b/docs/error-messages/compiler-errors-1/fatal-error-c1202.md
index 54eb826104..4e2c9efccf 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1202.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1202.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1202"
 title: "Fatal Error C1202"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1202"
+ms.date: 11/04/2016
 f1_keywords: ["C1202"]
 helpviewer_keywords: ["C1202"]
-ms.assetid: c859adb8-17a7-4fa1-a1f3-5820b7bf3849
 ---
 # Fatal Error C1202
 
-recursive type or function dependency context too complex
+> recursive type or function dependency context too complex
+
+## Remarks
 
 A template definition was recursive or exceeded complexity limits.
 
-## Examples
+## Example
 
-The following sample generates C1202.
+The following example generates C1202.
 
 ```cpp
 // C1202.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1205.md b/docs/error-messages/compiler-errors-1/fatal-error-c1205.md
index 37af5602e9..d66fd0f779 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1205.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1205.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1205"
 title: "Fatal Error C1205"
+description: "Learn more about: Fatal Error C1205"
 ms.date: 08/17/2022
 f1_keywords: ["C1205"]
 helpviewer_keywords: ["C1205"]
-ms.assetid: f855c145-8cf7-4dd1-bb19-257ee38b8382
 ---
 # Fatal Error C1205
 
 > Generics are not supported by the version of the runtime installed
 
+## Remarks
+
 The version of the common language runtime that the compiler is using isn't a version of the runtime supported by the current compiler.  For example, the generics feature requires a runtime that is matched to the compiler.
 
 Your path specification may need to be modified.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1206.md b/docs/error-messages/compiler-errors-1/fatal-error-c1206.md
index 0859695a79..c519b7e27c 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1206.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1206.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1206"
 title: "Fatal Error C1206"
+description: "Learn more about: Fatal Error C1206"
 ms.date: 08/17/2022
 f1_keywords: ["C1206"]
 helpviewer_keywords: ["C1206"]
-ms.assetid: 2211428f-ad86-4f7b-82eb-f1ba89b0510e
 ---
 # Fatal Error C1206
 
 > Per-appdomain data is not supported by the version of the runtime installed
 
+## Remarks
+
 Some features, such as per application domain data, are only supported by the common language runtime that supports the feature.
 
 C1206 indicates that the latest version of the runtime isn't installed on your computer. Install the common language runtime version that is intended for use with your compiler.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1207.md b/docs/error-messages/compiler-errors-1/fatal-error-c1207.md
index 5302f9c823..abcb64a7f3 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1207.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1207.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1207"
 title: "Fatal Error C1207"
+description: "Learn more about: Fatal Error C1207"
 ms.date: 08/17/2022
 f1_keywords: ["C1207"]
 helpviewer_keywords: ["C1207"]
-ms.assetid: cd31b410-9523-47db-883c-e69a9351ffa2
 ---
 # Fatal Error C1207
 
 > Managed templates not supported by the version of the runtime installed
 
+## Remarks
+
 C1207 occurs when you have a compiler for the current release, but a common language runtime from a previous release.
 
 Some functionality of the compiler may not work on a previous version of the run time.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1208.md b/docs/error-messages/compiler-errors-1/fatal-error-c1208.md
index 304879dfc5..57732dfda0 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1208.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1208.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1208"
 title: "Fatal Error C1208"
+description: "Learn more about: Fatal Error C1208"
 ms.date: 08/17/2022
 f1_keywords: ["C1208"]
 helpviewer_keywords: ["C1208"]
-ms.assetid: 4eefd8f0-5c2e-4a11-9e63-293e1139db65
 ---
 # Fatal Error C1208
 
 > Allocating reference classes on the stack is not supported by the version of the runtime installed
 
+## Remarks
+
 C1208 occurs when you have a compiler for the current release, but a common language runtime from a previous release.
 
 Some functionality of the compiler may not work on a previous version of the run time.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1209.md b/docs/error-messages/compiler-errors-1/fatal-error-c1209.md
index 1029773c30..3967da97ec 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1209.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1209.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1209"
 title: "Fatal Error C1209"
+description: "Learn more about: Fatal Error C1209"
 ms.date: 08/17/2022
 f1_keywords: ["C1209"]
 helpviewer_keywords: ["C1209"]
-ms.assetid: aa9ee10f-abe3-4683-9792-adca4cbbabb5
 ---
 # Fatal Error C1209
 
 > Friend assemblies not supported by the version of the runtime installed
 
+## Remarks
+
 C1208 occurs when you have a compiler for the current release, but a common language runtime from a previous release.
 
 Some functionality of the compiler may not work on a previous version of the run time.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1210.md b/docs/error-messages/compiler-errors-1/fatal-error-c1210.md
index 09aac9e2bd..70c37bc8c7 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1210.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1210.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1210"
 title: "Fatal Error C1210"
+description: "Learn more about: Fatal Error C1210"
 ms.date: 08/17/2022
 f1_keywords: ["C1210"]
 helpviewer_keywords: ["C1210"]
-ms.assetid: e2208309-c284-425c-a7e8-48e96e66f35b
 ---
 # Fatal Error C1210
 
 > `/clr:pure` and `/clr:safe` are not supported by the version of the runtime installed
 
+## Remarks
+
 The **`/clr:pure`** and **`/clr:safe`** compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017.
 
 C1210 occurs when you have a compiler for the current release, but a common language runtime from a previous release.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1211.md b/docs/error-messages/compiler-errors-1/fatal-error-c1211.md
index 174c78ea00..24359b9c00 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1211.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1211.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1211"
 title: "Fatal Error C1211"
+description: "Learn more about: Fatal Error C1211"
 ms.date: 08/17/2022
 f1_keywords: ["C1211"]
 helpviewer_keywords: ["C1211"]
-ms.assetid: df0ca70d-ec6e-4400-926a-b877e2599978
 ---
 # Fatal Error C1211
 
 > The TypeForwardedTo Custom Attribute is not supported by the version of the runtime installed
 
+## Remarks
+
 C1211 occurs when you have a compiler for the current release, but a common language runtime from a previous release.
 
 Some functionality of the compiler may not work on a previous version of the run time.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1305.md b/docs/error-messages/compiler-errors-1/fatal-error-c1305.md
index 35a90daf3c..398c483eb5 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1305.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1305.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1305"
 title: "Fatal Error C1305"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1305"
+ms.date: 11/04/2016
 f1_keywords: ["C1305"]
 helpviewer_keywords: ["C1305"]
-ms.assetid: 1629c850-e2db-4678-83d8-9bfc85323bc5
 ---
 # Fatal Error C1305
 
-profile database 'pgd_file' is for a different architecture
+> profile database 'pgd_file' is for a different architecture
+
+## Remarks
 
 A .pgd file that was generated from the /LTCG:PGINSTRUMENT operation for another platform was passed to [/LTCG:PGOPTIMIZE](../../build/reference/ltcg-link-time-code-generation.md) . [Profile-guided optimizations](../../build/profile-guided-optimizations.md) are available for x86 and x64 platforms. However, a .pgd file generated with a /LTCG:PGINSTRUMENT operation for one platform is not valid as input to a /LTCG:PGOPTIMIZE for a different platform.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1307.md b/docs/error-messages/compiler-errors-1/fatal-error-c1307.md
index d358e2bbd8..27c1ed010e 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1307.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1307.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1307"
 title: "Fatal Error C1307"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1307"
+ms.date: 11/04/2016
 f1_keywords: ["C1307"]
 helpviewer_keywords: ["C1307"]
-ms.assetid: 6f77d3d4-ba8a-476c-b540-aff19eb4efc4
 ---
 # Fatal Error C1307
 
-program has been edited since profile data was collected
+> program has been edited since profile data was collected
+
+## Remarks
 
 When using [/LTCG:PGOPTIMIZE](../../build/reference/ltcg-link-time-code-generation.md), the linker detected an input module that was recompiled after /LTCG:PGINSTRUMENT and that the module was changed to the point where existing profile data is no longer relevant. For example, if the call graph changed in the recompiled module, the compiler will generate C1307.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1308.md b/docs/error-messages/compiler-errors-1/fatal-error-c1308.md
index 045cd2f5e4..81335e1a83 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1308.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1308.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Fatal Error C1308"
 title: "Fatal Error C1308"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1308"
+ms.date: 11/04/2016
 f1_keywords: ["C1308"]
 helpviewer_keywords: ["C1308"]
-ms.assetid: 46177997-069e-433a-8e20-93c846d78ffd
 ---
 # Fatal Error C1308
 
-linking assemblies is not supported
+> linking assemblies is not supported
+
+## Remarks
 
 A .netmodule is allowed as input to the linker, but an assembly is not. This error can be generated when an attempt is made to link an assembly compiled with `/clr:safe`.
 
 For more information, see [.netmodule Files as Linker Input](../../build/reference/netmodule-files-as-linker-input.md).
 
-The following sample generates C1308:
+## Example
+
+The following example generates C1308:
 
 ```cpp
 // C1308.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1309.md b/docs/error-messages/compiler-errors-1/fatal-error-c1309.md
index f70ecf7bd4..0bd33544bf 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1309.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1309.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1309"
 title: "Fatal Error C1309"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1309"
+ms.date: 11/04/2016
 f1_keywords: ["C1309"]
 helpviewer_keywords: ["C1309"]
-ms.assetid: a95363d6-a4f3-45fb-9690-aa7e552093b7
 ---
 # Fatal Error C1309
 
-Mismatched versions of C2.DLL and PGODB\<version>.DLL
+> Mismatched versions of C2.DLL and PGODB\<version>.DLL
+
+## Remarks
 
 The toolset you are using to build and use [Profile-Guided Optimizations](../../build/profile-guided-optimizations.md) contains mismatched components.  If you cannot manually resolve this error, reinstall Visual C++.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1310.md b/docs/error-messages/compiler-errors-1/fatal-error-c1310.md
index 233ae5c7e4..5fef1f9c37 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1310.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1310.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Fatal Error C1310"
 title: "Fatal Error C1310"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1310"
+ms.date: 11/04/2016
 f1_keywords: ["C1310"]
 helpviewer_keywords: ["C1310"]
-ms.assetid: ac48aa51-8023-42fe-b844-3f8bf228fbef
 ---
 # Fatal Error C1310
 
-profile guided optimizations are not available with OpenMP
+> profile guided optimizations are not available with OpenMP
+
+## Remarks
 
 You will not be able to link with [/LTCG:PGI](../../build/reference/ltcg-link-time-code-generation.md) any module that was compiled with [/GL](../../build/reference/gl-whole-program-optimization.md).
 
-The following sample generates C1310:
+## Example
+
+The following example generates C1310:
 
 ```cpp
 // C1310.cpp
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1311.md b/docs/error-messages/compiler-errors-1/fatal-error-c1311.md
index 93d5084e29..fdb102ebbd 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1311.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1311.md
@@ -1,19 +1,22 @@
 ---
-description: "Learn more about: Fatal Error C1311"
 title: "Fatal Error C1311"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1311"
+ms.date: 11/04/2016
 f1_keywords: ["C1311"]
 helpviewer_keywords: ["C1311"]
-ms.assetid: 6590a06c-ce9d-4f17-8f62-c809343143b8
 ---
 # Fatal Error C1311
 
-COFF format cannot statically initialize 'var' with number byte(s) of an address
+> COFF format cannot statically initialize 'var' with number byte(s) of an address
+
+## Remarks
 
 An address whose value is not known at compile time cannot be statically assigned to a variable whose type has storage of less than four bytes.
 
 This error can occur on code that is otherwise valid C++.
 
+## Example
+
 The following example shows one condition that might cause C1311.
 
 ```
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1312.md b/docs/error-messages/compiler-errors-1/fatal-error-c1312.md
index 03699b2824..3173bfba07 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1312.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1312.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1312"
 title: "Fatal Error C1312"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1312"
+ms.date: 11/04/2016
 f1_keywords: ["C1312"]
 helpviewer_keywords: ["C1312"]
-ms.assetid: 1aa7cd0e-d45f-4ae7-a85d-015ebb962eaf
 ---
 # Fatal Error C1312
 
-Too many conditional branches in function. Simplify or refactor source code.
+> Too many conditional branches in function. Simplify or refactor source code.
+
+## Remarks
 
 The code is too complex for the compiler to process without running out of stack memory.  Simplify your code.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1313.md b/docs/error-messages/compiler-errors-1/fatal-error-c1313.md
index 629767d027..90814b3406 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1313.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1313.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1313"
 title: "Fatal Error C1313"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1313"
+ms.date: 11/04/2016
 f1_keywords: ["C1313"]
 helpviewer_keywords: ["C1313"]
-ms.assetid: 6c7631c8-6fd7-476a-9303-564717fda0f9
 ---
 # Fatal Error C1313
 
-compiler limit : type blocks may not be nested deeper than number levels
+> compiler limit : type blocks may not be nested deeper than number levels
+
+## Remarks
 
 Exception handling (or structured exception handling) blocks were nested too deeply.  Simplify your code.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1350.md b/docs/error-messages/compiler-errors-1/fatal-error-c1350.md
index 96c160733c..dcb1474a08 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1350.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1350.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1350"
 title: "Fatal Error C1350"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1350"
+ms.date: 11/04/2016
 f1_keywords: ["C1350"]
 helpviewer_keywords: ["C1350"]
-ms.assetid: 8bb47c23-ac9c-4a33-9ede-4d63ed9d4ba8
 ---
 # Fatal Error C1350
 
-error loading dll 'dll': dll not found
+> error loading dll 'dll': dll not found
+
+## Remarks
 
 The DLL that supports the attempted operation was not found.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1351.md b/docs/error-messages/compiler-errors-1/fatal-error-c1351.md
index 9e772faf2c..2019a26324 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1351.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1351.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1351"
 title: "Fatal Error C1351"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1351"
+ms.date: 11/04/2016
 f1_keywords: ["C1351"]
 helpviewer_keywords: ["C1351"]
-ms.assetid: 1f8502e4-1049-49c7-bbe3-fa101c79021e
 ---
 # Fatal Error C1351
 
 > error loading dll '*dll*': incompatible version
 
+## Remarks
+
 The wrong version of a DLL was found.
 
 This indicates a problem with your installation, and you should reinstall Visual Studio.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1352.md b/docs/error-messages/compiler-errors-1/fatal-error-c1352.md
index 3becb52d1f..581c286495 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1352.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1352.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1352"
 title: "Fatal Error C1352"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1352"
+ms.date: 11/04/2016
 f1_keywords: ["C1352"]
 helpviewer_keywords: ["C1352"]
-ms.assetid: d044e8b0-b6ef-4d57-8eb5-6254071be707
 ---
 # Fatal Error C1352
 
-Invalid or corrupt MSIL in function 'function' from module 'file'
+> Invalid or corrupt MSIL in function 'function' from module 'file'
+
+## Remarks
 
 A .netmodule was passed to the compiler, but the compiler detected corruption in the file.  Ask the person who produced the .netmodule to investigate.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1353.md b/docs/error-messages/compiler-errors-1/fatal-error-c1353.md
index d36fe25864..48b39279dd 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1353.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1353.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1353"
 title: "Fatal Error C1353"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1353"
+ms.date: 11/04/2016
 f1_keywords: ["C1353"]
 helpviewer_keywords: ["C1353"]
-ms.assetid: 37f55b1d-9e7a-4932-a41e-d593190895d3
 ---
 # Fatal Error C1353
 
-metadata operation failed: runtime not installed or version mismatch
+> metadata operation failed: runtime not installed or version mismatch
+
+## Remarks
 
 Reinstall your CLR or Visual Studio.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1382.md b/docs/error-messages/compiler-errors-1/fatal-error-c1382.md
index f90ab23a6c..f61a7a1fa0 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1382.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1382.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1382"
 title: "Fatal Error C1382"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1382"
+ms.date: 11/04/2016
 f1_keywords: ["C1382"]
 helpviewer_keywords: ["C1382"]
-ms.assetid: 7a100f8c-3179-4927-a2f1-98de4c753850
 ---
 # Fatal Error C1382
 
-the PCH file 'file' has been rebuilt since 'obj' was generated. Please rebuild this object
+> the PCH file 'file' has been rebuilt since 'obj' was generated. Please rebuild this object
+
+## Remarks
 
 When using [/LTCG](../../build/reference/ltcg-link-time-code-generation.md), the compiler detected a .pch file that is newer than a CIL .obj that points to it. The information in the CIL .obj file is out of date. Rebuild the object.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1383.md b/docs/error-messages/compiler-errors-1/fatal-error-c1383.md
index 787baf5bba..f826a4c3a1 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1383.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1383.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1383"
 title: "Fatal Error C1383"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1383"
+ms.date: 11/04/2016
 f1_keywords: ["C1383"]
 helpviewer_keywords: ["C1383"]
-ms.assetid: ca224d14-d687-4fd6-80c2-8b82f28924ea
 ---
 # Fatal Error C1383
 
-compiler option /GL is incompatible with the installed version of common language runtime
+> compiler option /GL is incompatible with the installed version of common language runtime
+
+## Remarks
 
 C1383 occurs when you are using a previous version of the common language runtime with a newer compiler, and when you compile with **/clr** and **/GL.**
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1506.md b/docs/error-messages/compiler-errors-1/fatal-error-c1506.md
index e439909d46..2509bc5f2b 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1506.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1506.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1506"
 title: "Fatal Error C1506"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1506"
+ms.date: 11/04/2016
 f1_keywords: ["C1506"]
 helpviewer_keywords: ["C1506"]
-ms.assetid: c73d5702-c898-4a32-b0fa-a118601a1e14
 ---
 # Fatal Error C1506
 
-unrecoverable block scoping error
+> unrecoverable block scoping error
+
+## Remarks
 
 The block was too large to compile.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1508.md b/docs/error-messages/compiler-errors-1/fatal-error-c1508.md
index 1954f3cf0b..394368d429 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1508.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1508.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1508"
 title: "Fatal Error C1508"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1508"
+ms.date: 11/04/2016
 f1_keywords: ["C1508"]
 helpviewer_keywords: ["C1508"]
-ms.assetid: 1112c17d-d60f-470d-b886-fd1a9556c0ea
 ---
 # Fatal Error C1508
 
-compiler limit : 'function' : more than 65535 argument bytes
+> compiler limit : 'function' : more than 65535 argument bytes
+
+## Remarks
 
 The formal parameters to the function exceed the limit of 65535 bytes.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1509.md b/docs/error-messages/compiler-errors-1/fatal-error-c1509.md
index b716a1d9a1..1a17d1c7f5 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1509.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1509.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1509"
 title: "Fatal Error C1509"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1509"
+ms.date: 11/04/2016
 f1_keywords: ["C1509"]
 helpviewer_keywords: ["C1509"]
-ms.assetid: 40dd100d-c6ba-451c-bd26-2c99ec1c36d6
 ---
 # Fatal Error C1509
 
-compiler limit : too many exception handler states in function 'function'. simplify function
+> compiler limit : too many exception handler states in function 'function'. simplify function
+
+## Remarks
 
 The code exceeds an internal limit on exception handler states (32,768 states).
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1510.md b/docs/error-messages/compiler-errors-1/fatal-error-c1510.md
index 382b7e07cb..640a564c8f 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1510.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1510.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1510"
 title: "Fatal Error C1510"
-ms.date: "04/11/2017"
+description: "Learn more about: Fatal Error C1510"
+ms.date: 04/11/2017
 f1_keywords: ["C1510"]
 helpviewer_keywords: ["C1510"]
-ms.assetid: 150c827f-9514-41a9-8d7e-82f820749bcb
 ---
 # Fatal Error C1510
 
-Cannot open language resource clui.dll
+> Cannot open language resource clui.dll
+
+## Remarks
 
 The compiler can't load the language resource DLL.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1601.md b/docs/error-messages/compiler-errors-1/fatal-error-c1601.md
index b0ccf6cebf..f36aca8a88 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1601.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1601.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1601"
 title: "Fatal Error C1601"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1601"
+ms.date: 11/04/2016
 f1_keywords: ["C1601"]
 helpviewer_keywords: ["C1601"]
-ms.assetid: 25797c39-f085-4d75-9eab-159ecd36ef49
 ---
 # Fatal Error C1601
 
-unsupported inline assembly opcode
+> unsupported inline assembly opcode
+
+## Remarks
 
 This error indicates a mismatch in your compiler .exe files, which may have occurred because of an incomplete installation. For example, you may have installed a service pack but not the Processor Pack. Install all required products.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1602.md b/docs/error-messages/compiler-errors-1/fatal-error-c1602.md
index 5565ea2d13..5f29077c41 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1602.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1602.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1602"
 title: "Fatal Error C1602"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1602"
+ms.date: 11/04/2016
 f1_keywords: ["C1602"]
 helpviewer_keywords: ["C1602"]
-ms.assetid: a9365c58-fe66-49c4-a702-9bb75429cc1a
 ---
 # Fatal Error C1602
 
-unsupported intrinsic
+> unsupported intrinsic
+
+## Remarks
 
 This error indicates a mismatch in your compiler .exe files, which may have occurred because of an incomplete installation. For example, you may have installed a service pack but not the Processor Pack. Install all required products.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1603.md b/docs/error-messages/compiler-errors-1/fatal-error-c1603.md
index 4f6744a59e..8e8fe6f378 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1603.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1603.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1603"
 title: "Fatal Error C1603"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1603"
+ms.date: 11/04/2016
 f1_keywords: ["C1603"]
 helpviewer_keywords: ["C1603"]
-ms.assetid: e5a06925-f916-4637-8240-6d2d280e6124
 ---
 # Fatal Error C1603
 
-inline assembly branch target out of range by 'number' bytes
+> inline assembly branch target out of range by 'number' bytes
+
+## Remarks
 
 The computed distance between a JCXZ or JECXZ instruction and its specified target label was greater than 128 bytes. Update your code so that the label is closer to the instruction.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1852.md b/docs/error-messages/compiler-errors-1/fatal-error-c1852.md
index 9c42b79c0b..06b8fd90e3 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1852.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1852.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1852"
 title: "Fatal Error C1852"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1852"
+ms.date: 11/04/2016
 f1_keywords: ["C1852"]
 helpviewer_keywords: ["C1852"]
-ms.assetid: fa011004-b8d6-46f1-ba80-4785e4ce137f
 ---
 # Fatal Error C1852
 
-'filename' is not a valid precompiled header file
+> 'filename' is not a valid precompiled header file
+
+## Remarks
 
 The file is not a precompiled header.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md
index 1b77c8c0bb..6ff6d7e1dd 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1853"
 title: "Fatal Error C1853"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1853"
+ms.date: 11/04/2016
 f1_keywords: ["C1853"]
 helpviewer_keywords: ["C1853"]
-ms.assetid: ceb9b4a5-92bf-4573-8a9f-3109cc7743ce
 ---
 # Fatal Error C1853
 
 > '*filename*' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
 
+## Remarks
+
 Possible causes:
 
 - The precompiled header was compiled with a previous compiler version. Try recompiling the header with the current compiler.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1854.md b/docs/error-messages/compiler-errors-1/fatal-error-c1854.md
index 6280c869d4..460413ed4c 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1854.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1854.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1854"
 title: "Fatal Error C1854"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1854"
+ms.date: 11/04/2016
 f1_keywords: ["C1854"]
 helpviewer_keywords: ["C1854"]
-ms.assetid: 8c21a9cc-1737-475c-9e57-8725cd8937c1
 ---
 # Fatal Error C1854
 
 > cannot overwrite information formed during creation of the precompiled header in object file: '*filename*'
 
+## Remarks
+
 You specified the [/Yu (Use Precompiled Header File)](../../build/reference/yu-use-precompiled-header-file.md) option after specifying the [/Yc (Create Precompiled Header File)](../../build/reference/yc-create-precompiled-header-file.md) option for the same file.
 
 To fix this issue, in general, set only one file in your project to be compiled by using the **/Yc** option, and set all other files to compile by using the **/Yu** option. For details on the use of the **/Yc** option, and how to set it in the Visual Studio IDE, see [/Yc (Create Precompiled Header File)](../../build/reference/yc-create-precompiled-header-file.md). For more information on using precompiled headers, see [Creating Precompiled Header Files](../../build/creating-precompiled-header-files.md).
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1900.md b/docs/error-messages/compiler-errors-1/fatal-error-c1900.md
index 5634a9b78b..8d67b8fd8d 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1900.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1900.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Fatal Error C1900"
 title: "Fatal Error C1900"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1900"
+ms.date: 11/04/2016
 f1_keywords: ["C1900"]
 helpviewer_keywords: ["C1900"]
-ms.assetid: 3aaa583b-4c1a-45de-aa34-527d806f2cb5
 ---
 # Fatal Error C1900
 
 > Il mismatch between '*tool1*' version '*number1*' and '*tool2*' version '*number2*'
 
+## Remarks
+
 Tools run in various passes of the compiler do not match. *number1* and *number2* refer to the dates on the files. For example, in pass 1, the compiler front end runs (c1.dll) and in pass 2, the compiler back end runs (c2.dll). The dates on the files must match.
 
 To fix this issue, make sure that all updates have been applied to Visual Studio. If the problem persists, use **Programs and Features** in the Windows Control Panel to repair or reinstall Visual Studio.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1902.md b/docs/error-messages/compiler-errors-1/fatal-error-c1902.md
index 8bde156cbf..2433f0dc9d 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1902.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1902.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1902"
 title: "Fatal Error C1902"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1902"
+ms.date: 11/04/2016
 f1_keywords: ["C1902"]
 helpviewer_keywords: ["C1902"]
-ms.assetid: 2dc066cc-fcb1-4725-8bcb-9f44dd0905b7
 ---
 # Fatal Error C1902
 
-program database manager mismatch; please check your installation
+> program database manager mismatch; please check your installation
+
+## Remarks
 
 A program database file (.pdb) was created using a newer version of mspdb*XXX*.dll than the one the compiler found on your system. This error usually indicates that mspdbsrv.exe or mspdbcore.dll are missing or have different versions than mspdb*XXX*.dll. (The *XXX* placeholder in the mspdb*XXX*.dll file name changes with each product release. For example, in Visual Studio 2015, the file name is mspdb140.dll.)
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1903.md b/docs/error-messages/compiler-errors-1/fatal-error-c1903.md
index 1f818efeaf..d7d3f8cc18 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1903.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1903.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Fatal Error C1903"
 title: "Fatal Error C1903"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1903"
+ms.date: 11/04/2016
 f1_keywords: ["C1903"]
 helpviewer_keywords: ["C1903"]
-ms.assetid: 4b4719d6-35d2-4ca5-81ce-903ecd28dfb9
 ---
 # Fatal Error C1903
 
-unable to recover from previous error(s); stopping compilation
+> unable to recover from previous error(s); stopping compilation
+
+## Remarks
 
 The compiler found too many errors to continue. Fix the errors and recompile.
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1904.md b/docs/error-messages/compiler-errors-1/fatal-error-c1904.md
index a3443127d9..2fd23f2397 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1904.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1904.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1904"
 title: "Fatal Error C1904"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1904"
+ms.date: 11/04/2016
 f1_keywords: ["C1904"]
 helpviewer_keywords: ["C1904"]
-ms.assetid: 10f66015-146f-41a7-8011-327b29dedec8
 ---
 # Fatal Error C1904
 
-bad provider interaction: 'file'
+> bad provider interaction: 'file'
+
+## Remarks
 
 This error indicates the failure of an attribute provider.
 
diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1905.md b/docs/error-messages/compiler-errors-1/fatal-error-c1905.md
index 69b567fcd5..89b8a800a5 100644
--- a/docs/error-messages/compiler-errors-1/fatal-error-c1905.md
+++ b/docs/error-messages/compiler-errors-1/fatal-error-c1905.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Fatal Error C1905"
 title: "Fatal Error C1905"
-ms.date: "11/04/2016"
+description: "Learn more about: Fatal Error C1905"
+ms.date: 11/04/2016
 f1_keywords: ["C1905"]
 helpviewer_keywords: ["C1905"]
-ms.assetid: fefc6769-477f-45a2-9878-6f0a5f42472c
 ---
 # Fatal Error C1905
 
-Front end and back end not compatible (must target same processor)
+> Front end and back end not compatible (must target same processor)
+
+## Remarks
 
 This error occurs when a .obj file is generated by a compiler front end (C1.dll) that targets one processor, such as x86, ARM, or x64, but is being read by a back end (C2.dll) that targets a different processor.
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md
index 6b59cfc2b6..975747ca34 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Error C2548"
 title: "Compiler error C2548"
-ms.date: "03/01/2024"
+description: "Learn more about: Compiler Error C2548"
+ms.date: 03/01/2024
 f1_keywords: ["C2548"]
 helpviewer_keywords: ["C2548"]
 ---
@@ -21,8 +21,8 @@ The following sample generates C2548 for:
 The following sample doesn't generate C2548 for:
 
 - `func2` because all the required default arguments are supplied.
--  The second `func4` declaration because the default argument `c` is supplied in the preceding declaration and is in the same scope.
--  The third `func4` declaration because both default arguments `b` and `c` are provided previously.
+- The second `func4` declaration because the default argument `c` is supplied in the preceding declaration and is in the same scope.
+- The third `func4` declaration because both default arguments `b` and `c` are provided previously.
 
 ```cpp
 // C2548.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2556.md b/docs/error-messages/compiler-errors-2/compiler-error-c2556.md
index c53302f927..25a188c34c 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2556.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2556.md
@@ -1,25 +1,26 @@
 ---
-description: "Learn more about: Compiler Error C2556"
 title: "Compiler Error C2556"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2556"
+ms.date: 06/29/2025
 f1_keywords: ["C2556"]
 helpviewer_keywords: ["C2556"]
-ms.assetid: fc4399ad-45b3-49fd-be1f-0b13956a595a
 ---
 # Compiler Error C2556
 
-'identifier' : overloaded functions only differ by return type
+> '*function1*': overloaded function differs only by return type from '*function2*'
+
+## Remarks
 
 The overloaded functions have different return types but the same parameter list. Each overloaded function must have a distinct formal parameter list.
 
-The following sample generates C2556:
+## Example
+
+The following example generates C2556:
 
 ```cpp
 // C2556.cpp
 // compile with: /c
-class C {
-   int func();
-   double func();   // C2556
-   int func(int i);   // ok parameter lists differ
-};
+int func();
+double func();     // C2556
+int func(int i);   // OK parameter lists differ
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2574.md b/docs/error-messages/compiler-errors-2/compiler-error-c2574.md
index 0581e78c1f..cc557824ff 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2574.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2574.md
@@ -1,25 +1,30 @@
 ---
-description: "Learn more about: Compiler Error C2574"
 title: "Compiler Error C2574"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2574"
+ms.date: 06/04/2025
 f1_keywords: ["C2574"]
 helpviewer_keywords: ["C2574"]
-ms.assetid: 3e1c5c18-ee8b-4dbb-bfc0-d3b8991af71b
 ---
 # Compiler Error C2574
 
-'destructor' : cannot be declared static
+> '*function*': cannot be declared static
+
+## Remarks
 
-Neither destructors nor constructors can be declared **`static`**.
+Neither [constructors](../../cpp/constructors-cpp.md) nor [destructors](../../cpp/destructors-cpp.md) can be declared **`static`**.
 
-The following sample generates C2574:
+## Example
+
+The following example generates C2574:
 
 ```cpp
 // C2574.cpp
 // compile with: /c
-class A {
-   virtual static ~A();   // C2574
-   //  try the following line instead
-   // virtual ~A();
+struct S
+{
+    static S() {}   // C2574
+
+    // Try the following line instead:
+    // S() {}
 };
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md
index c6e7b9a608..9097b0b6b3 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2581"
 title: "Compiler Error C2581"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2581"
+ms.date: 11/04/2016
 f1_keywords: ["C2581"]
 helpviewer_keywords: ["C2581"]
-ms.assetid: 24a4e4c1-24d3-4e42-b760-7dcaf9740b16
 ---
 # Compiler Error C2581
 
-'type' : static 'operator =' function is illegal
+> 'type' : static 'operator =' function is illegal
+
+## Remarks
 
 The assignment (`=`) operator is incorrectly declared as **`static`**. Assignment operators cannot be **`static`**. For more information, see [User-Defined Operators (C++/CLI)](../../dotnet/user-defined-operators-cpp-cli.md).
 
 ## Example
 
-The following sample generates C2581.
+The following example generates C2581.
 
 ```cpp
 // C2581.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md
index 82484c7c1a..2a57df672e 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2582"
 title: "Compiler Error C2582"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2582"
+ms.date: 11/04/2016
 f1_keywords: ["C2582"]
 helpviewer_keywords: ["C2582"]
-ms.assetid: ee1b9378-8bcd-4792-b87e-6d7a466d29ed
 ---
 # Compiler Error C2582
 
-'function' function is unavailable in 'type'
+> 'function' function is unavailable in 'type'
+
+## Remarks
 
 An attempt was made to assign to an object that does not have an assignment operator.
 
-The following sample generates C2582:
+## Example
+
+The following example generates C2582:
 
 ```cpp
 // C2582.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2583.md b/docs/error-messages/compiler-errors-2/compiler-error-c2583.md
index be529b59a7..e6a0d84075 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2583.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2583.md
@@ -1,28 +1,30 @@
 ---
-description: "Learn more about: Compiler Error C2583"
 title: "Compiler Error C2583"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2583"
+ms.date: 06/06/2025
 f1_keywords: ["C2583"]
 helpviewer_keywords: ["C2583"]
-ms.assetid: b1c952dc-872c-47e4-9fc8-4dd72bcee6f9
 ---
 # Compiler Error C2583
 
-'identifier' : 'const/volatile' 'this' pointer is illegal for constructors/destructors
+> '*identifier*': '*const/volatile*' 'this' pointer is illegal for constructors/destructors
+
+## Remarks
+
+A [constructor](../../cpp/constructors-cpp.md) or [destructor](../../cpp/destructors-cpp.md) can't be declared **`const`** or **`volatile`**.
 
-A constructor or destructor is declared **`const`** or **`volatile`**. This is not allowed.
+## Example
 
-The following sample generates C2583:
+The following example generates C2583:
 
 ```cpp
 // C2583.cpp
 // compile with: /c
-class A {
-public:
-   int i;
-   A() const;   // C2583
+struct S
+{
+    S() const {}   // C2583
 
-   // try the following line instead
-   // A();
+    // Try the following line instead:
+    // S() {}
 };
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md
index e63ec9e054..8164ce8b38 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2584"
 title: "Compiler Error C2584"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2584"
+ms.date: 11/04/2016
 f1_keywords: ["C2584"]
 helpviewer_keywords: ["C2584"]
-ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e
 ---
 # Compiler Error C2584
 
-'Class' : direct base 'Base2' is inaccessible; already a base of 'Base1'
+> 'Class' : direct base 'Base2' is inaccessible; already a base of 'Base1'
+
+## Remarks
 
 `Class` already derives directly from `Base1`. `Base2` also derives from `Base1`. `Class` cannot derive from `Base2` because that would mean inheriting (indirectly) from `Base1` again, which is not legal because `Base1` is already a direct base class.
 
 ## Example
 
-The following sample generates C2584.
+The following example generates C2584.
 
 ```cpp
 // C2584.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md
index 7ced014cea..32c34f271a 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2585"
 title: "Compiler Error C2585"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2585"
+ms.date: 11/04/2016
 f1_keywords: ["C2585"]
 helpviewer_keywords: ["C2585"]
-ms.assetid: 05bb1a9c-28fb-4a88-a1b5-aea85ebdee1c
 ---
 # Compiler Error C2585
 
-explicit conversion to 'type' is ambiguous
+> explicit conversion to 'type' is ambiguous
+
+## Remarks
 
 The type conversion can produce more than one result.
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md
index a5767ea958..412a45f14d 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2586"
 title: "Compiler Error C2586"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2586"
+ms.date: 11/04/2016
 f1_keywords: ["C2586"]
 helpviewer_keywords: ["C2586"]
-ms.assetid: dae703c7-5c38-4db6-8411-4d1b22713eb5
 ---
 # Compiler Error C2586
 
-incorrect user-defined conversion syntax : illegal indirections
+> incorrect user-defined conversion syntax : illegal indirections
+
+## Remarks
 
 Indirection of a conversion operator is not allowed.
 
-The following sample generates C2586:
+## Example
+
+The following example generates C2586:
 
 ```cpp
 // c2586.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md
index dd0b86bde4..f70167f35f 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2587"
 title: "Compiler Error C2587"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2587"
+ms.date: 11/04/2016
 f1_keywords: ["C2587"]
 helpviewer_keywords: ["C2587"]
-ms.assetid: 7637a2c7-35d4-4b5a-a8f2-515a7bda98fd
 ---
 # Compiler Error C2587
 
-'identifier' : illegal use of local variable as default parameter
+> 'identifier' : illegal use of local variable as default parameter
+
+## Remarks
 
 Local variables are not allowed as default parameters.
 
-The following sample generates C2587:
+## Example
+
+The following example generates C2587:
 
 ```cpp
 // C2587.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md
index 97560fa93c..774f364b96 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2588"
 title: "Compiler Error C2588"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2588"
+ms.date: 11/04/2016
 f1_keywords: ["C2588"]
 helpviewer_keywords: ["C2588"]
-ms.assetid: 19a0cabd-ca13-44a5-9be3-ee676abf9bc4
 ---
 # Compiler Error C2588
 
-'::~identifier' : illegal global destructor
+> '::~identifier' : illegal global destructor
+
+## Remarks
 
 The destructor is defined for something other than a class, structure, or union. This is not allowed.
 
 This error can be caused by a missing class, structure, or union name on the left side of the scope resolution (`::`) operator.
 
-The following sample generates C2588:
+## Example
+
+The following example generates C2588:
 
 ```cpp
 // C2588.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md
index e712be3b26..3f7e4fa6da 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2589"
 title: "Compiler Error C2589"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2589"
+ms.date: 11/04/2016
 f1_keywords: ["C2589"]
 helpviewer_keywords: ["C2589"]
-ms.assetid: 1d7942c7-8a81-4bb4-b272-76a0019e8513
 ---
 # Compiler Error C2589
 
-'identifier' : illegal token on right side of '::'
+> 'identifier' : illegal token on right side of '::'
+
+## Remarks
 
 If a class, structure, or union name appears to the left of the scope-resolution operator (double colons), the token on the right must be a class, structure, or union member. Otherwise, any global identifier can appear on the right.
 
 The scope-resolution operator cannot be overloaded.
 
-The following sample generates C2589:
+## Example
+
+The following example generates C2589:
 
 ```cpp
 // C2589.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md
index 637edee978..054f08281e 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2592"
 title: "Compiler Error C2592"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2592"
+ms.date: 11/04/2016
 f1_keywords: ["C2592"]
 helpviewer_keywords: ["C2592"]
-ms.assetid: 833a4d7b-66ef-4d4c-ae83-a533c2b0eb07
 ---
 # Compiler Error C2592
 
-'class': 'base_class_2' is inherited from 'base_class_1' and cannot be re-specified
+> 'class': 'base_class_2' is inherited from 'base_class_1' and cannot be re-specified
+
+## Remarks
 
 You can only specify base classes that do not inherit from other base classes. In this case, only `base_class_1` is needed in the specification of **`class`** because `base_class_1` already inherits `base_class_2`.
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md
index b12f1563fd..b31ff336de 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2593"
 title: "Compiler Error C2593"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2593"
+ms.date: 11/04/2016
 f1_keywords: ["C2593"]
 helpviewer_keywords: ["C2593"]
-ms.assetid: 4a0fe9bb-2163-447d-91f6-1890ed8250f6
 ---
 # Compiler Error C2593
 
-'operator identifier' is ambiguous
+> 'operator identifier' is ambiguous
+
+## Remarks
 
 More than one possible operator is defined for an overloaded operator.
 
 This error may be fixed if you use an explicit cast on one or more actual parameters.
 
-The following sample generates C2593:
+## Examples
+
+The following example generates C2593:
 
 ```cpp
 // C2593.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md
index a68fd0ce54..c962231113 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2594"
 title: "Compiler Error C2594"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2594"
+ms.date: 11/04/2016
 f1_keywords: ["C2594"]
 helpviewer_keywords: ["C2594"]
-ms.assetid: 68cd708f-266e-44b0-a211-3e3ab63b11bf
 ---
 # Compiler Error C2594
 
-'operator' : ambiguous conversions from 'type1' to 'type2'
+> 'operator' : ambiguous conversions from 'type1' to 'type2'
+
+## Remarks
 
 No conversion from *type1* to *type2* was more direct than any other. We suggest two possible solutions to converting from *type1* to *type2*. The first option is to define a direct conversion from *type1* to *type2*, and the second option is to specify a sequence of conversions from *type1* to *type2*.
 
-The following sample generates C2594. The suggested resolution to the error is a sequence of conversions:
+## Example
+
+The following example generates C2594. The suggested resolution to the error is a sequence of conversions:
 
 ```cpp
 // C2594.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md
index 1c77cfc600..ed1bcf191c 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md
@@ -1,14 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2597"
 title: "Compiler Error C2597"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2597"
+ms.date: 11/04/2016
 f1_keywords: ["C2597"]
 helpviewer_keywords: ["C2597"]
-ms.assetid: 2e48127d-e3ff-4a40-8156-2863e45b1a38
 ---
 # Compiler Error C2597
 
-illegal reference to non-static member 'identifier'
+> illegal reference to non-static member 'identifier'
+
+## Remarks
 
 Possible causes:
 
@@ -18,7 +19,9 @@ Possible causes:
 
 1. A member access operator refers to a nonmember function.
 
-1. The following sample generates C2597 and shows how to fix it:
+## Example
+
+1. The following example generates C2597 and shows how to fix it:
 
 ```cpp
 // C2597.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md
index 017757d46f..9e996c4837 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2598"
 title: "Compiler Error C2598"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2598"
+ms.date: 11/04/2016
 f1_keywords: ["C2598"]
 helpviewer_keywords: ["C2598"]
-ms.assetid: 40777c62-39ba-441e-b081-f49f94b43547
 ---
 # Compiler Error C2598
 
-linkage specification must be at global scope
+> linkage specification must be at global scope
+
+## Remarks
 
 The linkage specifier is declared at local scope.
 
-The following sample generates C2598:
+## Example
+
+The following example generates C2598:
 
 ```cpp
 // C2598.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md
index 4d8490f277..56a13a45ee 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2599"
 title: "Compiler Error C2599"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2599"
+ms.date: 11/04/2016
 f1_keywords: ["C2599"]
 helpviewer_keywords: ["C2599"]
-ms.assetid: 88515f36-7589-47e2-862e-0de8b18d6668
 ---
 # Compiler Error C2599
 
-'enum' : forward declaration of enum type is not allowed
+> 'enum' : forward declaration of enum type is not allowed
+
+## Remarks
 
 The compiler no longer supports forward declaration of a managed enumeration.
 
 Forward declaration of an enum type is not allowed under [/Za](../../build/reference/za-ze-disable-language-extensions.md).
 
-The following sample generates C2599:
+## Example
+
+The following example generates C2599:
 
 ```cpp
 // C2599.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md
index 75038e37b8..63dcc2d64a 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md
@@ -1,20 +1,23 @@
 ---
-description: "Learn more about: Compiler Error C2600"
 title: "Compiler Error C2600"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2600"
+ms.date: 11/04/2016
 f1_keywords: ["C2600"]
 helpviewer_keywords: ["C2600"]
-ms.assetid: cce11943-ea01-4bee-a7b0-b67d24ec6493
 ---
 # Compiler Error C2600
 
-'function' : cannot define a compiler-generated special member function (must be declared in the class first)
+> 'function' : cannot define a compiler-generated special member function (must be declared in the class first)
+
+## Remarks
 
 Before member functions such as constructors or destructors can be defined for a class, they must be declared in the class. The compiler can generate default constructors and destructors (called special member functions) if none are declared in the class. However, if you define one of these functions without a matching declaration in the class, the compiler detects a conflict.
 
 To fix this error, in the class declaration, declare each member function that you define outside the class declaration.
 
-The following sample generates C2600:
+## Example
+
+The following example generates C2600:
 
 ```cpp
 // C2600.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2601.md b/docs/error-messages/compiler-errors-2/compiler-error-c2601.md
index 451d97d15c..0a5225628f 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2601.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2601.md
@@ -1,28 +1,51 @@
 ---
-description: "Learn more about: Compiler Error C2601"
 title: "Compiler Error C2601"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2601"
+ms.date: 06/04/2025
 f1_keywords: ["C2601"]
 helpviewer_keywords: ["C2601"]
-ms.assetid: 88275582-5f37-45d7-807d-05f06ba00965
 ---
 # Compiler Error C2601
 
-'function' : local function definitions are illegal
+> '*function*': local function definitions are illegal
+
+## Remarks
 
 Code tries to define a function within a function.
 
-Or, there may be an extra brace in your source code before the location of the C2601 error.
+Or, there may be an extra/missing brace before the location of the C2601 error.
 
-The following sample generates C2601:
+## Examples
+
+### Define function within a function
+
+[Lambda Expressions](../../cpp/lambda-expressions-in-cpp.md) may be used to emulate the behavior of local functions:
 
 ```cpp
-// C2601.cpp
-int main() {
-   int i = 0;
+// C2601a.cpp
+int main()
+{
+    int increment(int value)   // C2601
+    {
+        return value + 1;
+    }
+
+    // Try the following line instead:
+    // auto increment = [](int value) { return value + 1; };
 
-   void funcname(int j) {   // C2601
-      j++;
-   }
+    int two = increment(1);
 }
 ```
+
+### Missing closing brace
+
+If a preceding function is missing a closing brace, the subsequent function is taken to be a local function:
+
+```cpp
+// C2601b.cpp
+void func()
+{
+// missing '}' brace here
+
+int main() {}   // C2601
+```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md
index dabc0048be..bc32d316af 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md
@@ -1,18 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2602"
 title: "Compiler Error C2602"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2602"
+ms.date: 11/04/2016
 f1_keywords: ["C2602"]
 helpviewer_keywords: ["C2602"]
-ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952
 ---
 # Compiler Error C2602
 
-'class::Identifier' is not a member of a base class of 'class'
+> 'class::Identifier' is not a member of a base class of 'class'
+
+## Remarks
 
 `Identifier` cannot be accessed because it is not a member inherited from any base class.
 
-The following sample generates C2602:
+## Example
+
+The following example generates C2602:
 
 ```cpp
 // C2602.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md
index c66a5ff3e1..c4700923f0 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: Compiler Error C2603"
 title: "Compiler Error C2603"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2603"
+ms.date: 11/04/2016
 f1_keywords: ["C2603"]
 helpviewer_keywords: ["C2603"]
-ms.assetid: 9ca520d0-f082-4b65-933d-17c3bcf8b02c
 ---
 # Compiler Error C2603
 
 > '*function*' : Too many block scope static objects with constructor/destructors in function
 
+## Remarks
+
 In versions of the Microsoft C++ compiler before Visual Studio 2015, or when the [/Zc:threadSafeInit-](../../build/reference/zc-threadsafeinit-thread-safe-local-static-initialization.md) compiler option is specified, there is a limit of 31 on the number of static objects you can have in an externally visible inline function.
 
 To resolve this issue, we recommend you adopt more recent version of the Microsoft C++ compiler toolset, or if possible, remove the /Zc:threadSafeInit- compiler option. If this is not possible, consider combining your static objects. If the objects are of the same type, consider use of a single static array of that type, and reference individual members as required.
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md
index a11f99a7a3..ee73a6aa64 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md
@@ -1,20 +1,21 @@
 ---
-description: "Learn more about: Compiler Error C2605"
 title: "Compiler Error C2605"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2605"
+ms.date: 11/04/2016
 f1_keywords: ["C2605"]
 helpviewer_keywords: ["C2605"]
-ms.assetid: a0e6f132-5acf-4e19-b277-ddf196d182bf
 ---
 # Compiler Error C2605
 
-'name' : this method is reserved within a managed or WinRT class
+> 'name' : this method is reserved within a managed or WinRT class
+
+## Remarks
 
 Certain names are reserved by the compiler for internal functions.  For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers).
 
 ## Example
 
-The following sample generates C2605.
+The following example generates C2605.
 
 ```cpp
 // C2605.cpp
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md
index 7b3c6312ac..c8ef3814a7 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2614"
 title: "Compiler Error C2614"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2614"
+ms.date: 11/04/2016
 f1_keywords: ["C2614"]
 helpviewer_keywords: ["C2614"]
-ms.assetid: a550c1d5-8718-4e17-a888-b2619e00fe11
 ---
 # Compiler Error C2614
 
@@ -21,12 +20,12 @@ The following sample generates C2614.
 // compile with: /c
 struct A {
    int i;
-   A( int ia ) : B( i ) {};   // C2614 B is not a member of A
+   A( int ia ) : B( i ) {}   // C2614 B is not a member of A
 };
 
 struct A2 {
    int B;
    int i;
-   A2( int ia ) : B( i ) {};   // OK
+   A2( int ia ) : B( i ) {}   // OK
 };
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md
index c1467898ef..5014adb77d 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md
@@ -1,23 +1,25 @@
 ---
-description: "Learn more about: Compiler Error C2640"
 title: "Compiler Error C2640"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2640"
+ms.date: "03/17/2025"
 f1_keywords: ["C2640"]
 helpviewer_keywords: ["C2640"]
-ms.assetid: e4d137ab-ed1d-457c-9eec-b70d97f1b0b4
 ---
 # Compiler Error C2640
 
-'identifier' : __based modifier illegal on reference
+> 'abstract declarator': __based modifier illegal on reference
 
-The **`__based`** modifier can be used on pointers only.
+The [**`__based`**](../../cpp/based-pointers-cpp.md) modifier can be used on pointers only.
 
 The following sample generates C2640:
 
 ```cpp
 // C2640.cpp
-void f(int i) {
-    void *vp;
-    int _based(vp) &vr = I;  // C2640
+int* ptr;
+
+int main()
+{
+    int __based(ptr)& based_ref;   // C2640
+    int __based(ptr)* based_ptr;   // OK
 }
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md
index 20f2b56c02..736eee85d9 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2647"
 title: "Compiler Error C2647"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2647"
+ms.date: 11/04/2016
 f1_keywords: ["C2647"]
 helpviewer_keywords: ["C2647"]
-ms.assetid: 1034589e-bc3e-41a6-831f-2a1a4b8a2500
 ---
 # Compiler Error C2647
 
 'operator': cannot dereference a 'type1' on a 'type2'
 
-The left operand of a pointer-to-member operator ( `->*` or `.*` ) cannot be implicitly converted to a type related to the right operator.
+The left operand of a pointer-to-member operator (`->*` or `.*`) cannot be implicitly converted to a type related to the right operator.
 
 The following sample generates C2647:
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md
index b1cbd55778..dba63492f1 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2653"
 title: "Compiler Error C2653"
-ms.date: "11/30/2017"
+description: "Learn more about: Compiler Error C2653"
+ms.date: 11/30/2017
 f1_keywords: ["C2653"]
 helpviewer_keywords: ["C2653"]
-ms.assetid: 3f49e731-affd-43a0-a8d0-181db7650bc3
 ---
 # Compiler Error C2653
 
@@ -14,7 +13,7 @@ The language syntax requires a class, structure, union, or namespace name here.
 
 This error can occur when you use a name that has not been declared as a class, structure, union, or namespace in front of a scope operator. To fix this issue, declare the name or include the header that declares the name before it is used.
 
-C2653 is also possible if you try to define a *compound namespace*, a namespace that contains one or more scope-nested namespace names. Compound namespace definitions are not allowed in C++ prior to C++17. Compound namespaces are supported starting in Visual Studio 2015 Update 3 when you specify the [`/std:c++latest`](../../build/reference/std-specify-language-standard-version.md) compiler option. Starting in Visual Studio 2017 version 15.5, the compiler supports compound namespace definitions when the `[/std:c++17`](../../build/reference/std-specify-language-standard-version.md) or later option is specified.
+C2653 is also possible if you try to define a *compound namespace*, a namespace that contains one or more scope-nested namespace names. Compound namespace definitions are not allowed in C++ prior to C++17. Compound namespaces are supported starting in Visual Studio 2015 Update 3 when you specify the [`/std:c++latest`](../../build/reference/std-specify-language-standard-version.md) compiler option. Starting in Visual Studio 2017 version 15.5, the compiler supports compound namespace definitions when the [`/std:c++17`](../../build/reference/std-specify-language-standard-version.md) or later option is specified.
 
 ## Examples
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md
index c7146ee907..0c712df820 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2664"
 title: "Compiler Error C2664"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2664"
+ms.date: 11/04/2016
 f1_keywords: ["C2664"]
 helpviewer_keywords: ["C2664"]
-ms.assetid: 3595d66e-cf87-4fda-a896-c0cd81f95db4
 ---
 # Compiler Error C2664
 
@@ -34,13 +33,13 @@ The following sample generates C2664 and shows how to fix it.
 // C2664.cpp
 // C2664
 struct A {
-   void f(int i) {};
+   void f(int i) {}
 };
 
 struct B : public A {
    // To fix, uncomment the following line.
    // using A::f;
-   void f(A a) {};
+   void f(A a) {}
 };
 
 int main() {
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md
index 534107c500..8860220e66 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2724"
 title: "Compiler Error C2724"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2724"
+ms.date: 11/04/2016
 f1_keywords: ["C2724"]
 helpviewer_keywords: ["C2724"]
-ms.assetid: 4e4664bc-8c96-4156-b79f-03436f532ea8
 ---
 # Compiler Error C2724
 
@@ -20,7 +19,7 @@ class C {
    static void func();
 };
 
-static void C::func(){};   // C2724
+static void C::func(){}   // C2724
 // try the following line instead
-// void C::func(){};
+// void C::func(){}
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md
index ad5301bf1e..534c621993 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2758"
 title: "Compiler Error C2758"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2758"
+ms.date: 11/04/2016
 f1_keywords: ["C2758"]
 helpviewer_keywords: ["C2758"]
-ms.assetid: 1d273034-194c-4926-9869-142d1b219cbe
 ---
 # Compiler Error C2758
 
@@ -20,8 +19,8 @@ The following sample generates C2758:
 struct A {
    const int i;
 
-   A(int n) { };   // C2758
+   A(int n) { }   // C2758
    // try the following line instead
-   // A(int n) : i{n} {};
+   // A(int n) : i{n} {}
 };
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md
index e00d03d485..08850d7647 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2765"
 title: "Compiler Error C2765"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2765"
+ms.date: 11/04/2016
 f1_keywords: ["C2765"]
 helpviewer_keywords: ["C2765"]
-ms.assetid: 47ad86f3-a7e0-47ad-85ff-0f5534458cb9
 ---
 # Compiler Error C2765
 
@@ -16,7 +15,7 @@ The following sample generates C2765:
 
 ```cpp
 // C2765.cpp
-template<class T> void f(T t) {};
+template<class T> void f(T t) {}
 
 template<> void f<char>(char c = 'a') {}   // C2765
 // try the following line instead
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md
index 7dc731a466..9b3f1a04db 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2797"
 title: "Compiler Error C2797"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2797"
+ms.date: 11/04/2016
 f1_keywords: ["C2797"]
 helpviewer_keywords: ["C2797"]
-ms.assetid: 9fb26d35-eb5c-46fc-9ff5-756fba5bdaff
 ---
 # Compiler Error C2797
 
@@ -14,7 +13,7 @@ This warning is obsolete in Visual Studio 2015. In Visual Studio 2013 and earlie
 
 This example generates C2797:
 
-```
+```cpp
 #include <vector>
 struct S {
     S() : v1{1} {} // C2797, VS2013 RTM incorrectly calls 'vector(size_type)'
@@ -26,7 +25,7 @@ struct S {
 
 This example also generates C2797:
 
-```
+```cpp
 struct S1 {
     int i;
 };
@@ -40,7 +39,7 @@ struct S2 {
 
 To fix this issue, you can use explicit construction of inner lists. For example:
 
-```
+```cpp
 #include <vector>
 typedef std::vector<int> Vector;
 struct S {
@@ -53,7 +52,7 @@ struct S {
 
 If you do not require list initialization:
 
-```
+```cpp
 struct S {
     S() : s1("") {}
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md
index 4dbcb7c9d5..ae076c90af 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2835"
 title: "Compiler Error C2835"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2835"
+ms.date: 11/04/2016
 f1_keywords: ["C2835"]
 helpviewer_keywords: ["C2835"]
-ms.assetid: 41c70630-983f-4da2-8342-513cf48b0519
 ---
 # Compiler Error C2835
 
@@ -22,12 +21,12 @@ public:
 
    A() {
       v_char = 'A';
-   };
+   }
    operator char(char a) {   // C2835
    // try the following line instead
    // operator char() {
       return v_char + 1;
-   };
+   }
 };
 
 int main() {
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md
index cfc30eecb9..eed0d34ea2 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2888"
 title: "Compiler Error C2888"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2888"
+ms.date: 11/04/2016
 f1_keywords: ["C2888"]
 helpviewer_keywords: ["C2888"]
-ms.assetid: 244f593e-ff25-4dad-b31f-84dafa3bc84a
 ---
 # Compiler Error C2888
 
@@ -23,7 +22,7 @@ namespace M {
       void f2();
    }
 
-   void N::f1() {}   // OK: namspace M encloses N
+   void N::f1() {}   // OK: namespace M encloses N
 }
 
 namespace O {
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md
index e092c0a18b..f9b41d6007 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2891"
 title: "Compiler Error C2891"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2891"
+ms.date: 11/04/2016
 f1_keywords: ["C2891"]
 helpviewer_keywords: ["C2891"]
-ms.assetid: e12cfb2d-df45-4b0d-b155-c51d17e812fa
 ---
 # Compiler Error C2891
 
@@ -12,13 +11,13 @@ ms.assetid: e12cfb2d-df45-4b0d-b155-c51d17e812fa
 
 You can't take the address of a template parameter unless it is an lvalue. Type parameters are not lvalues because they have no address. Non-type values in template parameter lists that are not lvalues also do not have an address. This is an example of code that causes Compiler Error C2891, because the value passed as the template parameter is a compiler-generated copy of the template argument.
 
-```
+```cpp
 template <int i> int* f() { return &i; }
 ```
 
 Template parameters that are lvalues, such as reference types, can have their address taken.
 
-```
+```cpp
 template <int& r> int* f() { return &r; }
 ```
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md
index 7e1fab4903..01cb21c042 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C2893"
 title: "Compiler Error C2893"
+description: "Learn more about: Compiler Error C2893"
 ms.date: "11/04/2016"
 f1_keywords: ["C2893"]
 helpviewer_keywords: ["C2893"]
-ms.assetid: ec0cbe43-005d-45da-8742-aaeb9b81d28e
 ---
 # Compiler Error C2893
 
@@ -21,7 +20,7 @@ C2893 occurs because `f`'s template parameter `T` is deduced to be `std::map<int
 ```cpp
 // C2893.cpp
 // compile with: /c /EHsc
-#include<map>
+#include <map>
 using namespace std;
 class MyClass {};
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md
index 4426147e9a..cf6adef493 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: Compiler Error C2978"
 title: "Compiler Error C2978"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2978"
+ms.date: 11/04/2016
 f1_keywords: ["C2978"]
 helpviewer_keywords: ["C2978"]
-ms.assetid: 5e7bee82-e266-4ccd-ad2e-ee89606ec5bf
 ---
 # Compiler Error C2978
 
 syntax error : expected 'keyword1' or 'keyword2'; found type 'keyword3'; non-type parameters are not supported in generics
 
-A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md)for more information.
+A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md) for more information.
 
 ## Example
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2998.md b/docs/error-messages/compiler-errors-2/compiler-error-c2998.md
index 78bb229325..f140107112 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c2998.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c2998.md
@@ -1,21 +1,14 @@
 ---
-description: "Learn more about: Compiler Error C2998"
 title: "Compiler Error C2998"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C2998"
+ms.date: 06/29/2025
 f1_keywords: ["C2998"]
 helpviewer_keywords: ["C2998"]
-ms.assetid: 8193d491-b5d9-4477-acb1-cf166889c070
 ---
 # Compiler Error C2998
 
-'identifier' : cannot be a template definition
+> '*identifier*': cannot be a template definition
 
-The compiler could not process the syntax used in the template definition.
+## Remarks
 
-The following sample generates C2998:
-
-```cpp
-// C2998.cpp
-// compile with: /c
-template <class T> int x = 1018; // C2998
-```
+The compiler could not process the syntax used in the template definition.
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md
index ef02c39022..22e5e30c36 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3068"
 title: "Compiler Error C3068"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3068"
+ms.date: 11/04/2016
 f1_keywords: ["C3068"]
 helpviewer_keywords: ["C3068"]
-ms.assetid: 613e3447-b4a8-4268-a661-297bed63ccdf
 ---
 # Compiler Error C3068
 
@@ -42,5 +41,5 @@ void b(A){}
 
 __declspec(naked) void c() {
    b(A());   // C3068
-};
+}
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md
index cad61481f3..315365082c 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3185"
 title: "Compiler Error C3185"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3185"
+ms.date: 11/04/2016
 f1_keywords: ["C3185"]
 helpviewer_keywords: ["C3185"]
-ms.assetid: 5bf96279-043c-4981-9d02-b4550071b192
 ---
 # Compiler Error C3185
 
@@ -25,5 +24,5 @@ int main() {
    Base ^pb = pd;
    const type_info & t1 = typeid(pb);   // C3185
    System::Type ^ MyType = Base::typeid;   // OK
-};
+}
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md
index 151c01319f..4b97bea6db 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3457"
 title: "Compiler Error C3457"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3457"
+ms.date: 11/04/2016
 f1_keywords: ["C3457"]
 helpviewer_keywords: ["C3457"]
-ms.assetid: 5c1e366a-fa75-4cca-b9a3-86d4ebe4090e
 ---
 # Compiler Error C3457
 
@@ -16,7 +15,7 @@ Source annotation attributes, unlike CLR custom attribute or compiler attributes
 
 The following sample generates C3457.
 
-```
+```cpp
 #include "SourceAnnotations.h"
 [vc_attributes::Post( 1 )] int f();   // C3457
 [vc_attributes::Post( Valid=vc_attributes::Yes )] int f2();   // OK
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md
index 1701d26b5a..0e13e6df59 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3536"
 title: "Compiler Error C3536"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3536"
+ms.date: 11/04/2016
 f1_keywords: ["C3536"]
 helpviewer_keywords: ["C3536"]
-ms.assetid: 8d866075-866b-49eb-9979-ee27b308f7e3
 ---
 # Compiler Error C3536
 
@@ -31,7 +30,7 @@ int main()
    auto* d = &d;   //C3536
    auto& e = e;    //C3536
    return 0;
-};
+}
 ```
 
 ## See also
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md
index bb36c2a954..72f066bf8e 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3554"
 title: "Compiler Error C3554"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3554"
+ms.date: 11/04/2016
 f1_keywords: ["C3554"]
 helpviewer_keywords: ["C3554"]
-ms.assetid: aede18d5-fefc-4da9-9b69-adfe90bfa742
 ---
 # Compiler Error C3554
 
@@ -12,7 +11,7 @@ ms.assetid: aede18d5-fefc-4da9-9b69-adfe90bfa742
 
 You cannot qualify the `decltype()` keyword with any type specifier. For example, the following code fragment yields error C3554.
 
-```
+```cpp
 int x;
 unsigned decltype(x); // C3554
 ```
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md
index 3624f2563d..d217e41c36 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3672"
 title: "Compiler Error C3672"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3672"
+ms.date: 11/04/2016
 f1_keywords: ["C3672"]
 helpviewer_keywords: ["C3672"]
-ms.assetid: da971041-1766-467a-aecf-1d8655c6cb7a
 ---
 # Compiler Error C3672
 
@@ -22,7 +21,7 @@ template<typename T>
 void f(T* pT) {
    &pT->T::~T;   // C3672
    pT->T::~T();   // OK
-};
+}
 
 int main() {
    int i;
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md
index 7a889e735f..b1d20b40c5 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3733"
 title: "Compiler Error C3733"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3733"
+ms.date: 11/04/2016
 f1_keywords: ["C3733"]
 helpviewer_keywords: ["C3733"]
-ms.assetid: 0cc1a9fe-1400-4be3-b35a-16435cba7a5a
 ---
 # Compiler Error C3733
 
@@ -14,7 +13,7 @@ The wrong syntax was used for a COM event. To fix this error, change the event t
 
 The following sample generates C3733:
 
-```
+```cpp
 #define _ATL_ATTRIBUTES 1
 #include "atlbase.h"
 #include "atlcom.h"
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md
index 3daf52e404..bdcf2c8966 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3771"
 title: "Compiler Error C3771"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Error C3771"
+ms.date: 11/04/2016
 f1_keywords: ["C3771"]
 helpviewer_keywords: ["C3771"]
-ms.assetid: 68c23b25-7f21-4eaa-8f7e-38fda1130a69
 ---
 # Compiler Error C3771
 
@@ -26,7 +25,7 @@ The following code example declares a class template and function in namespace `
 
 namespace NA {
 template<class T> class A {
-    void aFunction(T t) {};
+    void aFunction(T t) {}
     };
 }
 // using namespace NA;
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md
index 3675124e82..738a3e76f4 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3861"
 title: "Compiler Error C3861"
+description: "Learn more about: Compiler Error C3861"
 ms.date: 06/29/2022
 f1_keywords: ["C3861"]
 helpviewer_keywords: ["C3861"]
-ms.assetid: 0a1eee30-b3db-41b1-b1e5-35949c3924d7
 ---
 # Compiler Error C3861
 
@@ -98,7 +97,7 @@ int main() {
 
 ### ADL and friend functions
 
-The following sample generates C3767 because the compiler can't use argument dependent lookup for `FriendFunc`:
+The following sample generates C3861 because the compiler can't use argument dependent lookup for `FriendFunc`:
 
 ```cpp
 namespace N {
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md
index 8a22a876fe..db31e6aef7 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Error C3867"
 title: "Compiler Error C3867"
+description: "Learn more about: Compiler Error C3867"
 ms.date: "11/04/2016"
 f1_keywords: ["C3867"]
 helpviewer_keywords: ["C3867"]
-ms.assetid: bc5de03f-e01a-4407-88c3-2c63f0016a1e
 ---
 # Compiler Error C3867
 
@@ -42,7 +41,7 @@ The following sample generates C3867 and shows how to fix it.
 
 ```cpp
 // C3867_2.cpp
-#include<stdio.h>
+#include <stdio.h>
 
 struct S {
    char *func() {
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md
index 5ffa8913d6..6ed6a89c19 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Error C3883"
 title: "Compiler Error C3883"
+description: "Learn more about: Compiler Error C3883"
 ms.date: "11/04/2016"
 f1_keywords: ["C3883"]
 helpviewer_keywords: ["C3883"]
-ms.assetid: cdd1c1f4-f268-4469-9c62-d52303114b0c
 ---
 # Compiler Error C3883
 
-'var' : an initonly static data member must be initialized
+> '*member*': an initonly static data member must be initialized
 
 A variable marked with [initonly](../../dotnet/initonly-cpp-cli.md) was not initialized correctly.
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md
index 2caa56307c..8716a20d4f 100644
--- a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md
@@ -13,7 +13,7 @@ helpviewer_keywords: ["C7688"]
 
 OpenMP restricts expressions in `#pragma omp atomic` constructs to scalar type.
 
-Compiler error C7688 is new in Visual Studio 2022 version 17.4. In previous compiler versions, the compiler would emit error [C3048](./compiler-error-c3048.md).
+Compiler error C7688 is new in Visual Studio 2022 version 17.4. In previous compiler versions, the compiler would emit error [C3048](compiler-error-c3048.md).
 
 ## Example
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7742.md b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md
new file mode 100644
index 0000000000..32847771dd
--- /dev/null
+++ b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md
@@ -0,0 +1,43 @@
+---
+description: "Learn more about: Compiler Error C7742"
+title: "Compiler Error C7742"
+ms.date: "07/02/2025"
+ai-usage: ai-assisted
+f1_keywords: ["C7742"]
+helpviewer_keywords: ["C7742"]
+---
+# Compiler Error C7742
+
+> *Identifier*: a forward declaration of an enum can only use a simple identifier
+
+The C++ Standard doesn't allow declaring an opaque enumeration using a qualified-id. An opaque enum declaration specifies the name and the underlying type, but doesn't list the enumerators or their values.
+
+The following example generates C7742:
+
+```cpp
+// C7742.cpp
+class MyClass
+{ 
+public: 
+    enum MyEnum
+    { 
+        e1, 
+        e2 
+    }; 
+}; 
+  
+enum MyClass::MyEnum;   // C7742
+```
+
+To fix this error, remove the opaque enumeration declaration because it doesn't add anything to the program.
+
+However, you can define an enumeration with a qualified-id. For example:
+
+```cpp
+struct S
+{
+   enum E : int;
+};
+
+enum S::E : int { e1, e2, e3 };
+```
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md
index dc47e09a5b..d6a27711af 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C2500 Through C2599"
 title: "Compiler errors C2500 Through C2599"
-ms.date: "04/21/2019"
+description: "Learn more about: Compiler errors C2500 Through C2599"
+ms.date: 04/21/2019
 f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"]
 helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"]
-ms.assetid: a869aaed-e9f6-49e3-b273-00ea7f45bed7
 ---
 # Compiler errors C2500 Through C2599
 
@@ -34,7 +33,7 @@ The articles in this section of the documentation explain a subset of the error
 |Compiler error C2515|'*identifier*': 'vtguard' can only be applied to class declarations or definitions|
 |[Compiler error C2516](compiler-error-C2516.md)|'*class*': is not a legal base class|
 |[Compiler error C2517](compiler-error-C2517.md)|'*identifier*': right of '::' is undefined|
-|[Compiler error C2518](compiler-error-C2518.md)|keyword '*keyword*' illegal in base class list; ignored|
+|[Compiler error C2518](compiler-error-C2518.md)|keyword '*keyword*' is invalid in a base class list; expected a `class` name|
 |Compiler error C2519|'*identifier*': WinRT attributes may only contain public fields|
 |Compiler error C2520|'*class*': no non-explicit constructor available for implicit conversion|
 |[Compiler error C2521](compiler-error-C2521.md)|a destructor/finalizer does not take any arguments|
@@ -64,14 +63,15 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2545](compiler-error-C2545.md)|'*operator*': unable to find overloaded operator|
 |Compiler error C2546|'*identifier*': when a type is defined in both a PIA and a no-PIA the PIA must be referenced first|
 |Compiler error C2547|'*identifier*': All parameters of a published method must be explicitly named on the declaration|
-|[Compiler error C2548](compiler-error-C2548.md)|'*function*': missing default parameter for parameter *parameter*|
+|[Compiler error C2548](compiler-error-C2548.md)|'*function*': missing default argument for parameter *parameter*|
 |[Compiler error C2549](compiler-error-C2549.md)|user-defined conversion cannot specify a return type|
 |[Compiler error C2550](compiler-error-C2550.md)|'*identifier*': constructor initializer lists are only allowed on constructor definitions|
 |[Compiler error C2551](compiler-error-C2551.md)|'void *' type needs explicit cast|
 |[Compiler error C2552](compiler-error-C2552.md)|'*identifier*': non-aggregates cannot be initialized with an initializer list|
 |[Compiler error C2553](compiler-error-C2553.md)|'*type* *derived_class*::*function*': overriding virtual function return type differs from '*type* *base_class*::*function*'|
+|Compiler error C2554|'*variable*': 'constinit' only allowed on a variable declaration with static or thread storage duration|
 |[Compiler error C2555](compiler-error-C2555.md)|'*derived_class*::*function*': overriding virtual function return type differs and is not covariant from '*base_class*::*function*'|
-|[Compiler error C2556](compiler-error-C2556.md)|'*type1* *class*::*function*': overloaded function differs only by return type from '*type2* *class*::*function*'|
+|[Compiler error C2556](compiler-error-C2556.md)|'*function1*': overloaded function differs only by return type from '*function2*'|
 |[Compiler error C2557](compiler-error-C2557.md)|'*identifier*': private and protected members cannot be initialized without a constructor|
 |[Compiler error C2558](compiler-error-C2558.md)|class '*class*': no copy constructor available or copy constructor is declared 'explicit'|
 |Compiler error C2559|'*identifier*': cannot overload a member function without ref-qualifier with a member function with ref-qualifier|
@@ -89,7 +89,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2571](compiler-error-C2571.md)|'*identifier*': virtual function cannot be in union '*union*'|
 |[Compiler error C2572](compiler-error-C2572.md)|'*function*': redefinition of default argument: parameter *number*|
 |[Compiler error C2573](compiler-error-C2573.md)|'*class*': cannot delete pointers to objects of this type; the class has no non-placement overload for 'operator delete'. Use ::delete, or add 'operator delete(void*)' to the class|
-|[Compiler error C2574](compiler-error-C2574.md)|'*destructor*': cannot be declared static|
+|[Compiler error C2574](compiler-error-C2574.md)|'*function*': cannot be declared static|
 |[Compiler error C2575](compiler-error-C2575.md)|'*identifier*': only member functions and bases can be virtual|
 |Compiler error C2576|'*identifier*': cannot introduce a new virtual method as 'public'. Consider making the method non-virtual, or change the accessibility to 'internal' or 'protected private'|
 |[Compiler error C2577](compiler-error-C2577.md)|'*identifier*': a destructor/finalizer cannot have a return type|
@@ -98,7 +98,7 @@ The articles in this section of the documentation explain a subset of the error
 |Compiler error C2580|'*identifier*': multiple versions of a defaulted special member functions are not allowed|
 |[Compiler error C2581](compiler-error-C2581.md)|'*type*': static 'operator =' function is illegal|
 |[Compiler error C2582](compiler-error-C2582.md)|'operator *operator*' function is unavailable in '*type*'|
-|[Compiler error C2583](compiler-error-C2583.md)|'*identifier*': 'const/volatile' 'this' pointer is illegal for constructors/destructors|
+|[Compiler error C2583](compiler-error-C2583.md)|'*identifier*': '*const/volatile*' 'this' pointer is illegal for constructors/destructors|
 |[Compiler error C2584](compiler-error-C2584.md)|'*class*': direct base '*base_class2*' is inaccessible; already a base of '*base_class1*'|
 |[Compiler error C2585](compiler-error-C2585.md)|explicit conversion to '*type*' is ambiguous|
 |[Compiler error C2586](compiler-error-C2586.md)|incorrect user-defined conversion syntax: illegal indirections|
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md
index 4c6182230c..e8cbf106a7 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C2600 Through C2699"
 title: "Compiler errors C2600 Through C2699"
+description: "Learn more about: Compiler errors C2600 Through C2699"
 ms.date: "04/21/2019"
 f1_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"]
 helpviewer_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"]
-ms.assetid: 73c6319f-cbea-4a2f-913b-90dc1af61f64
 ---
 # Compiler errors C2600 Through C2699
 
@@ -24,17 +23,17 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2605](compiler-error-c2605.md)|'*identifier*': this method is reserved within a managed/WinRT class|
 |Compiler error C2606|'*class1*': cannot re-implement '*member*', as it is inherited from runtime base '*class2*'|
 |Compiler error C2607|static assertion failed|
-|Compiler error C2608|Obsolete.|
-|Compiler error C2609|Obsolete.|
+|Compiler error C2608|invalid token '*token*' in macro parameter list|
+|Compiler error C2609|missing ')' in macro parameter list|
 |Compiler error C2610|'*class*::*member*': is not a special member function which can be defaulted|
 |[Compiler error C2611](compiler-error-c2611.md)|'*token*': illegal following '~' (expected identifier)|
 |[Compiler error C2612](compiler-error-c2612.md)|trailing '*character*' illegal in base/member initializer list|
 |[Compiler error C2613](compiler-error-c2613.md)|trailing '*character*' illegal in base class list|
 |[Compiler error C2614](compiler-error-c2614.md)|'*class*': illegal member initialization: '*identifier*' is not a base or member|
-|Compiler error C2615|Obsolete.|
+|Compiler error C2615|'`offsetof`' cannot be applied to non-class type '*type*'|
 |[Compiler error C2616](compiler-error-c2616.md)|'*conversion*': cannot implicitly convert a non-lvalue '*type1*' to a '*type2*' that is not const|
 |[Compiler error C2617](compiler-error-c2617.md)|'*function*': inconsistent return statement|
-|Compiler error C2618|Obsolete.|
+|Compiler error C2618|illegal member designator in `offsetof`|
 |[Compiler error C2619](compiler-error-c2619.md)|'*identifier*': a static data member is not allowed in an anonymous struct/union|
 |Compiler error C2620|Obsolete.|
 |Compiler error C2621|Obsolete.|
@@ -55,12 +54,12 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2636](compiler-error-c2636.md)|'*identifier*': pointer to reference member is illegal|
 |[Compiler error C2637](compiler-error-c2637.md)|'*identifier*': cannot modify pointers to data members|
 |[Compiler error C2638](compiler-error-c2638.md)|'*identifier*': __based modifier illegal on pointer to member|
-|Compiler error C2639|Obsolete.|
-|[Compiler error C2640](compiler-error-c2640.md)|'*identifier*': __based modifier illegal on reference|
-|Compiler error C2641|Obsolete.|
-|Compiler error C2642|Obsolete.|
-|Compiler error C2643|Obsolete.|
-|Compiler error C2644|Obsolete.|
+|Compiler error C2639|trailing return type '*type*' of deduction guide should be a specialization of '*class template*'|
+|[Compiler error C2640](compiler-error-c2640.md)|'abstract declarator': __based modifier illegal on reference|
+|Compiler error C2641|cannot deduce template arguments for '*template name*'|
+|Compiler error C2642|two deduction guide declarations for the same class template cannot have equivalent parameter list and template head|
+|Compiler error C2643|deduction guide should be declared in the same scope as the corresponding class template '*template name*'|
+|Compiler error C2644|deduction guide should have the same access as the corresponding class template '*template name*'|
 |[Compiler error C2645](compiler-error-c2645.md)|no qualified name for pointer to member (found ':: *')|
 |[Compiler error C2646](compiler-error-c2646.md)|an anonymous struct/union at global or namespace scope must be declared static|
 |[Compiler error C2647](compiler-error-c2647.md)|'*operator*': cannot dereference a '*type1*' on a '*type2*'|
@@ -79,11 +78,11 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2660](compiler-error-c2660.md)|'*function*': function does not take *number* arguments|
 |[Compiler error C2661](compiler-error-c2661.md)|'*function*': no overloaded function takes *number* arguments|
 |[Compiler error C2662](compiler-error-c2662.md)|'*function*': cannot convert 'this' pointer from '*type1*' to '*type2*'|
-|[Compiler error C2663](compiler-error-c2663.md)|'*function*': *number* overloads have no legal conversion for 'this' pointer|
+|[Compiler error C2663](compiler-error-c2663.md)|'*function*': no overloaded function has valid conversion for '`this`' pointer|
 |[Compiler error C2664](compiler-error-c2664.md)|'*function*': cannot convert argument *number* from '*type1*' to '*type2*'|
-|[Compiler error C2665](compiler-error-c2665.md)|'*function*': none of the *number* overloads could convert all the argument types|
-|[Compiler error C2666](compiler-error-c2666.md)|'*function*': *number* overloads have similar conversions|
-|[Compiler error C2667](compiler-error-c2667.md)|'*function*': none of *number* overloads have a best conversion|
+|[Compiler error C2665](compiler-error-c2665.md)|'*function*': no overloaded function could convert all the argument types|
+|[Compiler error C2666](compiler-error-c2666.md)|'*function*': overloaded functions have similar conversions|
+|[Compiler error C2667](compiler-error-c2667.md)|'*function*': no overloaded function has a best conversion|
 |[Compiler error C2668](compiler-error-c2668.md)|'*function*': ambiguous call to overloaded function|
 |[Compiler error C2669](compiler-error-c2669.md)|member function not allowed in anonymous union|
 |[Compiler error C2670](compiler-error-c2670.md)|'*function*': the function template cannot convert parameter *number* from type '*type*'|
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md
index 9d44ce11f4..1a597951d4 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md
@@ -4,7 +4,6 @@ title: "Compiler errors C2700 Through C2799"
 ms.date: "04/21/2019"
 f1_keywords: ["C2716", "C2717", "C2727", "C2729", "C2737", "C2740", "C2741", "C2742", "C2744", "C2746", "C2747", "C2759", "C2763", "C2769", "C2772", "C2789", "C2796", "C2799"]
 helpviewer_keywords: ["C2716", "C2717", "C2727", "C2729", "C2737", "C2740", "C2741", "C2742", "C2744", "C2746", "C2747", "C2759", "C2763", "C2769", "C2772", "C2789", "C2796", "C2799"]
-ms.assetid: 6ee257bb-94bc-42b9-af2c-3c73926afba4
 ---
 # Compiler errors C2700 Through C2799
 
@@ -49,7 +48,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2730](compiler-error-c2730.md)|'*class*': cannot be a base class of itself|
 |[Compiler error C2731](compiler-error-c2731.md)|'*function*': function cannot be overloaded|
 |[Compiler error C2732](compiler-error-c2732.md)|linkage specification contradicts earlier specification for '*function*'|
-|[Compiler error C2733](compiler-error-c2733.md)|'*function*': second C linkage of overloaded function not allowed|
+|[Compiler error C2733](compiler-error-c2733.md)|'*function*': you cannot overload a function with '`extern "C"`' linkage|
 |[Compiler error C2734](compiler-error-c2734.md)|'*identifier*': 'const' object must be initialized if not 'extern'|
 |[Compiler error C2735](compiler-error-c2735.md)|'*keyword*' keyword is not permitted in formal parameter type specifier|
 |[Compiler error C2736](compiler-error-c2736.md)|'*keyword*' keyword is not permitted in cast|
@@ -81,7 +80,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2762](compiler-error-c2762.md)|'*template*': invalid expression as a template argument for '*parameter*'|
 |Compiler error C2763|'*template*': invalid use of a string literal as a template argument for '*parameter*'|
 |[Compiler error C2764](compiler-error-c2764.md)|'*parameter*': template parameter not used or deducible in partial specialization '*specialization*'|
-|[Compiler error C2765](compiler-error-c2765.md)|'*function*': an explicit specialization of a function template cannot have any default arguments|
+|[Compiler error C2765](compiler-error-c2765.md)|'*function*': an explicit specialization or instantiation of a function template cannot have any default arguments|
 |[Compiler error C2766](compiler-error-c2766.md)|explicit specialization; '*specialization*' has already been defined|
 |[Compiler error C2767](compiler-error-c2767.md)|managed/WinRT array dimension mismatch: expected *number* argument(s) - *number* provided|
 |[Compiler error C2768](compiler-error-c2768.md)|'*function*': illegal use of explicit template arguments|
@@ -113,7 +112,7 @@ The articles in this section of the documentation explain a subset of the error
 |[Compiler error C2794](compiler-error-c2794.md)|'*identifier*': is not a member of any direct or indirect base class of '*class*'|
 |[Compiler error C2795](compiler-error-c2795.md)|'super::*identifier*' is not a member function|
 |Compiler error C2796|'ref new' may only be used to create an instance of a WinRT type|
-|[Compiler error C2797](compiler-error-c2797.md)|(Obsolete) '*identifier*': list initialization inside member initializer list or non-static data member initializer is not implemented|
+|[Compiler error C2797](compiler-error-c2797.md)|'*identifier*': list initialization inside member initializer list or non-static data member initializer is not implemented|
 |[Compiler error C2798](compiler-error-c2798.md)|'super::*identifier*' is ambiguous|
 |Compiler error C2799|'*identifier*': an object of const-qualified class type without a user-provided default constructor must be initialized|
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md
index 3b351c5ffe..6ad3bb045b 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md
@@ -4,7 +4,6 @@ title: "Compiler errors C2800 Through C2899"
 ms.date: 06/01/2022
 f1_keywords: ["C2816", "C2820", "C2822", "C2826", "C2832", "C2836", "C2837", "C2840", "C2841", "C2848", "C2851", "C2852", "C2853", "C2866", "C2880", "C2887", "C2889", "C2895", "C2899"]
 helpviewer_keywords: ["C2816", "C2820", "C2822", "C2826", "C2832", "C2836", "C2837", "C2840", "C2841", "C2848", "C2851", "C2852", "C2853", "C2866", "C2880", "C2887", "C2889", "C2895", "C2899"]
-ms.assetid: e5de1e92-746a-4315-a331-c5d9efb76dbb
 ---
 # Compiler errors C2800 Through C2899
 
@@ -108,7 +107,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C2889 | '*class*': a managed/WinRT class type cannot be a virtual base class |
 | [Compiler error C2890](compiler-error-c2890.md) | '*class*': a ref class can only have one non-interface base class |
 | [Compiler error C2891](compiler-error-c2891.md) | '*parameter*': cannot take the address of a template parameter |
-| [Compiler error C2892](compiler-error-c2892.md) | local class shall not have member templates |
+| [Compiler error C2892](compiler-error-c2892.md) | a template cannot be a member of a local class |
 | [Compiler error C2893](compiler-error-c2893.md) | Failed to specialize function template '*template*' |
 | [Compiler error C2894](compiler-error-c2894.md) | templates cannot be declared to have 'C' linkage |
 | Compiler error C2895 | '*declaration*': cannot explicitly instantiate a function template that has been declared with dllimport |
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md
index 9bb91a7e7c..f426601753 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md
@@ -2,9 +2,8 @@
 description: "Learn more about: Compiler errors C2900 Through C2999"
 title: "Compiler errors C2900 Through C2999"
 ms.date: 06/01/2022
-f1_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2956", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997", "C2999"]
-helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2956", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997", "C2999"]
-ms.assetid: e3440738-e11b-4878-9ae3-6bc6c53ba461
+f1_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"]
+helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"]
 ---
 # Compiler errors C2900 Through C2999
 
@@ -99,10 +98,10 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C2980 | C++ exception handling is not supported with /kernel |
 | Compiler error C2981 | the dynamic form of '*keyword*' is not supported with /kernel |
 | Compiler error C2982 | '*declaration*': different __declspec(code_seg(...)) used: was '*identifier1*' now '*identifier2*' |
-| Compiler error C2983 | '*declaration*': all declarations must have an identical __declspec(code_seg(...)) |
+| Compiler error C2983 | '*name*': a definition must have the same `__declspec(code_seg(...))` as the prior declaration |
 | Compiler error C2984 | Obsolete. |
 | Compiler error C2985 | '*argument*': the argument to __declspec(code_seg(...)) must be a text section |
-| Compiler error C2986 | '*identifier*': __declspec(code_seg(...)) can only be applied to a class or a function |
+| Compiler error C2986 | '`__declspec(code_seg(...))`' can only be applied to a class or a function |
 | Compiler error C2987 | a declaration cannot have both __declspec(code_seg('*identifier*')) and __declspec(code_seg('*value*')) |
 | [Compiler error C2988](compiler-error-c2988.md) | unrecognizable template declaration/definition |
 | [Compiler error C2989](compiler-error-c2989.md) | '*class*': class template/generic has already been declared as a non-class template/generic |
@@ -114,7 +113,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C2995](compiler-error-c2995.md) | '*declaration*': function template has already been defined |
 | [Compiler error C2996](compiler-error-c2996.md) | '*function*': recursive function template definition |
 | Compiler error C2997 | '*function*': array bound cannot be deduced from a default member initializer |
-| [Compiler error C2998](compiler-error-c2998.md) | '*declarator*': cannot be a template definition |
+| [Compiler error C2998](compiler-error-c2998.md) | '*identifier*': cannot be a template definition |
 
 ## See also
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md
index a4abebdc6d..bcdc2b953e 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md
@@ -2,9 +2,8 @@
 description: "Learn more about: Compiler errors C3000 Through C3099"
 title: "Compiler errors C3000 Through C3099"
 ms.date: 06/01/2022
-f1_keywords: ["C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"]
-helpviewer_keywords: ["C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"]
-ms.assetid: 01b7b9cb-b351-4b5a-8cb0-1fcddb08d2ab
+f1_keywords: ["C3000", "C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"]
+helpviewer_keywords: ["C3000", "C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"]
 ---
 # Compiler errors C3000 Through C3099
 
@@ -64,11 +63,11 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3045](compiler-error-c3045.md) | Expected a compound statement following OpenMP 'sections' directive. Missing '{' |
 | [Compiler error C3046](compiler-error-c3046.md) | Missing structured block in an OpenMP '#pragma omp sections' region |
 | [Compiler error C3047](compiler-error-c3047.md) | Structured block in an OpenMP 'sections' region must be preceded by '#pragma omp section' (Obsolete in Visual Studio 2022.) |
-| [Compiler error C3048](compiler-error-c3048.md) | Expression following '#pragma omp atomic' has improper form |
+| [Compiler error C3048](compiler-error-c3048.md) | '`#pragma omp atomic`*statement*': expression or block-statement following pragma does not conform to the OpenMP specification |
 | [Compiler error C3049](compiler-error-c3049.md) | '*argument*': invalid argument in OpenMP 'default' clause |
 | [Compiler error C3050](compiler-error-c3050.md) | '*class*': a ref class cannot inherit from '*identifier*' |
 | Compiler error C3051 | Obsolete. |
-| [Compiler error C3052](compiler-error-c3052.md) | '*identifier*': variable doesn't appear in a data-sharing clause under a default(none) clause |
+| [Compiler error C3052](compiler-error-c3052.md) | '*identifier*': variable reference occurs under a `default(none)` clause and must have explicitly specified data sharing attributes |
 | [Compiler error C3053](compiler-error-c3053.md) | '*identifier*': 'threadprivate' is only valid for global or static data items |
 | [Compiler error C3054](compiler-error-c3054.md) | '#pragma omp parallel' is currently not supported in a generic class or function (Obsolete in Visual Studio 2022.) |
 | [Compiler error C3055](compiler-error-c3055.md) | '*identifier*': symbol cannot be referenced before it is used in 'threadprivate' directive |
@@ -81,8 +80,8 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3062](compiler-error-c3062.md) | '*identifier*': enumerator requires value since the underlying type is '*type*' |
 | [Compiler error C3063](compiler-error-c3063.md) | operator '*operator*': all operands must have the same enumeration type |
 | Compiler error C3064 | '*identifier*': must be a simple type or resolve to one |
-| [Compiler error C3065](compiler-error-c3065.md) | property declaration at non-class scope is not allowed |
-| [Compiler error C3066](compiler-error-c3066.md) | there are multiple ways that an object of this type can be called with these arguments |
+| [Compiler error C3065](compiler-error-c3065.md) | '`__declspec(`*specifier*`)`' at non-class scope is not allowed |
+| [Compiler error C3066](compiler-error-c3066.md) | call to an object of this type is ambiguous |
 | Compiler error C3067 | an initializer list cannot be used with the built-in operator[] |
 | [Compiler error C3068](compiler-error-c3068.md) | '*identifier*': a 'naked' function cannot contain objects that would require unwinding if a C++ exception occurred |
 | [Compiler error C3069](compiler-error-c3069.md) | operator '*operator*': not allowed for enumeration type |
@@ -94,7 +93,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3075](compiler-error-c3075.md) | '*identifier*': you cannot embed an instance of a reference type, '*type*', in a value-type |
 | [Compiler error C3076](compiler-error-c3076.md) | '*identifier*': you cannot embed an instance of a reference type, '*type*', in a native type |
 | [Compiler error C3077](compiler-error-c3077.md) | '*identifier*': a finalizer can only be a member of a reference type |
-| Compiler error C3078 | array size must be specified in new expressions |
+| Compiler error C3078 | array size must be specified in new expressions without an initializer |
 | Compiler error C3079 | an initializer list cannot be used as the right operand of this assignment operator |
 | [Compiler error C3080](compiler-error-c3080.md) | '*finalizer*': a finalizer cannot have a storage-class-specifier |
 | Compiler error C3081 | Obsolete. |
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md
index 9bec78ffec..338e4eceb9 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md
@@ -2,9 +2,8 @@
 description: "Learn more about: Compiler errors C3100 Through C3199"
 title: "Compiler errors C3100 Through C3199"
 ms.date: 06/01/2022
-f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3188", "C3191", "C3193"]
-helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3188", "C3191", "C3193"]
-ms.assetid: 7bc40c2f-6a8d-488a-b665-f39375afee77
+f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"]
+helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"]
 ---
 # Compiler errors C3100 Through C3199
 
@@ -82,7 +81,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3163](compiler-error-c3163.md) | '*class*': attributes inconsistent with previous declaration |
 | Compiler error C3164 | Obsolete. |
 | Compiler error C3165 | '*value*': cannot convert to an integral or floating point value |
-| [Compiler error C3166](compiler-error-c3166.md) | Obsolete. '*type*': a data member of a managed/WinRT class cannot have type '*pointer_type* to interior *managed_pointer_type*' |
+| [Compiler error C3166](compiler-error-c3166.md) | '*type*': a data member of a managed/WinRT class cannot have type '*pointer_type* to interior *managed_pointer_type*' |
 | [Compiler error C3167](compiler-error-c3167.md) | Unable to initialize .NET Framework: make sure it is installed |
 | [Compiler error C3168](compiler-error-c3168.md) | '*type*': illegal underlying type for enum |
 | Compiler error C3169 | '*type*': cannot deduce type for 'auto' from '*type*' |
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md
index e835858c67..87483c7cfe 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md
@@ -4,7 +4,6 @@ title: "Compiler errors C3200 Through C3299"
 ms.date: 06/01/2022
 f1_keywords: ["C3220", "C3221", "C3245", "C3249", "C3250", "C3256", "C3257", "C3258", "C3259", "C3260", "C3261", "C3263", "C3267", "C3281", "C3294"]
 helpviewer_keywords: ["C3220", "C3221", "C3245", "C3249", "C3250", "C3256", "C3257", "C3258", "C3259", "C3260", "C3261", "C3263", "C3267", "C3281", "C3294"]
-ms.assetid: 6b3104f6-63bc-4823-b6f3-b8a16be4b87f
 ---
 # Compiler errors C3200 Through C3299
 
@@ -64,7 +63,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C3245 | '*function*': use of a variable template requires template argument list |
 | [Compiler error C3246](compiler-error-c3246.md) | '*class*': cannot inherit from '*base_class*' as it has been declared as '*inheritance*' |
 | [Compiler error C3247](compiler-error-c3247.md) | '*coclass*': a coclass cannot inherit from another coclass '*base_class*' |
-| [Compiler error C3248](compiler-error-c3248.md) | Obsolete. '*function*': function declared as 'sealed' cannot be overridden by '*function*' |
+| [Compiler error C3248](compiler-error-c3248.md) | '*function*': function declared as '`sealed`' cannot be overridden by '*function*' |
 | Compiler error C3249 | illegal statement or sub-expression for '`constexpr`' function (Obsolete in Visual Studio 2022.) |
 | Compiler error C3250 | '*declaration*': declaration is not allowed in '`constexpr`' function body (Obsolete in Visual Studio 2022.) |
 | [Compiler error C3251](compiler-error-c3251.md) | cannot invoke base class method on a value type instance (Obsolete in Visual Studio 2022.) |
@@ -77,7 +76,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C3258 | Obsolete. |
 | Compiler error C3259 | '`constexpr`' functions can only have one `return` statement (Obsolete in Visual Studio 2022.) |
 | Compiler error C3260 | '*token*': skipping unexpected token(s) before lambda body |
-| Compiler error C3261 | a function returning a managed/WinRT array must have array brackets at the end of the declaration: '*identifier*(...) \[]' |
+| Compiler error C3261 | a function returning a managed/WinRT array must have array brackets at the end of the declaration: '*identifier*(...) []' |
 | [Compiler error C3262](compiler-error-c3262.md) | invalid array indexing: *number* dimension(s) specified for *number*-dimensional '*type*' |
 | Compiler error C3263 | Obsolete. |
 | [Compiler error C3264](compiler-error-c3264.md) | '*identifier*': a class-constructor cannot have a return type |
@@ -102,7 +101,7 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3283](compiler-error-c3283.md) | '*interface*': an interface cannot have an instance constructor |
 | [Compiler error C3284](compiler-error-c3284.md) | the constraints for generic parameter '*parameter*' of function '*declarator*' must match the constraints for generic parameter '*parameter*' of function '*declarator*' |
 | [Compiler error C3285](compiler-error-c3285.md) | for each statement cannot operate on variables of type '*type*' |
-| [Compiler error C3286](compiler-error-c3286.md) | '*specifier*': an iteration variable cannot have any storage-class specifiers |
+| [Compiler error C3286](compiler-error-c3286.md) | A for-range-declaration cannot have a storage class other than '`constexpr`' |
 | [Compiler error C3287](compiler-error-c3287.md) | the type '*type*' (return type of `GetEnumerator`) must have a suitable public `MoveNext` member function and public `Current` property |
 | [Compiler error C3288](compiler-error-c3288.md) | '*type*': illegal dereference of a handle type |
 | [Compiler error C3289](compiler-error-c3289.md) | '*identifier*': a trivial property cannot be indexed |
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md
index fa4967f500..691f9c0e36 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md
@@ -54,7 +54,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C3336 | This operation must be performed at class scope |
 | Compiler error C3337 | '*identifier*': defaultvtable must be an event source for a coclass '*class*' |
 | Compiler error C3338 | '*identifier*': There can be at most one default interface that is also an event source for a coclass '*class*' |
-| Compiler error C3339 | template parameter requires either 'class' or 'typename' after the parameter list |
+| Compiler error C3339 | template template parameter requires either '`class`' or '`typename`' after the parameter list |
 | [Compiler error C3340](compiler-error-c3340.md) | '*identifier*': interface cannot be both 'restricted' and 'default' in coclass '*class*' |
 | Compiler error C3341 | '*interface*': a defaultvtable interface must be either 'dual' or 'custom' |
 | [Compiler error C3342](compiler-error-c3342.md) | '*identifier*': ambiguous attribute |
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md
index ce25161b6d..688a5b80ca 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md
@@ -3,8 +3,7 @@ description: "Learn more about: Compiler errors C3400 Through C3499"
 title: "Compiler errors C3400 Through C3499"
 ms.date: 06/01/2022
 f1_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3423", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3447", "C3448", "C3449", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"]
-helpviewer_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"]
-ms.assetid: a5651dfb-c402-4e01-b3ae-28f371e51d6a
+helpviewer_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3423", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3447", "C3448", "C3449", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"]
 ---
 # Compiler errors C3400 Through C3499
 
@@ -44,7 +43,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C3425 | cannot throw pointer to object of incomplete type '*type*' |
 | Compiler error C3426 | cannot throw object of incomplete type '*type*' |
 | Compiler error C3427 | '*context*': '*keyword*' cannot be used with layout_version(*number*) |
-| Compiler error C3428 | '*context*': '*keyword*' can only be applied to class declarations or definitions |
+| Compiler error C3428 | '`__declspec(`*keyword*`)`' can only be applied to class declarations or definitions |
 | Compiler error C3429 | '*context*': '*keyword*' cannot be applied to a union |
 | Compiler error C3430 | a scoped enumeration must have a name |
 | Compiler error C3431 | '*identifier*': *type1* cannot be redeclared as *type2* |
@@ -93,8 +92,8 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C3474 | could not open output file '*filename*' |
 | Compiler error C3475 | syntax error in input file '*filename*' |
 | Compiler error C3476 | could not open file '*filename*' for input |
-| Compiler error C3477 | a lambda cannot appear in an unevaluated context |
-| Compiler error C3478 | '*identifier*': an array cannot be captured by copy |
+| Compiler error C3477 | a lambda can only appear in an unevaluated context with '*C++ version*' or later |
+| Compiler error C3478 | '*identifier*': an array of unknown bounds cannot be captured by copy |
 | Compiler error C3479 | SAL annotations on lambdas are not supported |
 | [Compiler error C3480](compiler-error-c3480.md) | '*variable*': a lambda capture variable must be from an enclosing function scope |
 | [Compiler error C3481](compiler-error-c3481.md) | '*identifier*': lambda capture variable not found |
@@ -104,16 +103,16 @@ The articles in this section of the documentation explain a subset of the error
 | [Compiler error C3485](compiler-error-c3485.md) | a lambda definition cannot have any cv-qualifiers (Obsolete in Visual Studio 2022.) |
 | Compiler error C3486 | a parameter for a lambda cannot have a default argument (Obsolete in Visual Studio 2022.) |
 | [Compiler error C3487](compiler-error-c3487.md) | '*type*': all return expressions must deduce to the same type: previously it was '*type*' |
-| [Compiler error C3488](compiler-error-c3488.md) | '&*identifier*' is not allowed when the default capture mode is by-reference |
-| [Compiler error C3489](compiler-error-c3489.md) | '&*identifier*' is required when the default capture mode is by copy |
+| [Compiler error C3488](compiler-error-c3488.md) | '`&`*identifier*' cannot be explicitly captured when the default capture mode is by reference (`&`) |
+| [Compiler error C3489](compiler-error-c3489.md) | '`&`*identifier*' is required when the default capture mode is by copy (`=`) |
 | [Compiler error C3490](compiler-error-c3490.md) | '*identifier*' cannot be modified because it is being accessed through a const object |
 | [Compiler error C3491](compiler-error-c3491.md) | '*identifier*': a by copy capture cannot be modified in a non-mutable lambda |
 | [Compiler error C3492](compiler-error-c3492.md) | '*identifier*': you cannot capture a member of an anonymous union |
 | [Compiler error C3493](compiler-error-c3493.md) | '*identifier*' cannot be implicitly captured because no default capture mode has been specified |
 | Compiler error C3494 | 'this' cannot be explicitly captured because an enclosing capture mode does not allow it |
-| [Compiler error C3495](compiler-error-c3495.md) | '*identifier*': identifier in capture must be a variable with automatic storage duration declared in the reaching scope of the lambda |
-| [Compiler error C3496](compiler-error-c3496.md) | 'this' is always captured by value: '&' ignored |
-| Compiler error C3497 | you cannot construct an instance of a lambda |
+| [Compiler error C3495](compiler-error-c3495.md) | '*identifier*': a simple capture must be a variable with automatic storage duration declared in the reaching scope of the lambda |
+| [Compiler error C3496](compiler-error-c3496.md) | '`this`' is always captured by copy: '`&`' ignored |
+| Compiler error C3497 | cannot construct an instance of this lambda |
 | [Compiler error C3498](compiler-error-c3498.md) | '*identifier*': you cannot capture a variable that has a managed/WinRT type |
 | [Compiler error C3499](compiler-error-c3499.md) | a lambda that has been specified to have a void return type cannot return a value |
 
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md
index 1d3dffd179..e1469d0230 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md
@@ -1,8 +1,9 @@
 ---
-description: "Learn more about: Compiler errors C3500 through C3999"
 title: "Compiler errors C3500 through C3999"
+description: "Learn more about: Compiler errors C3500 through C3999"
 ms.date: 05/25/2022
-f1_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3635", "C3636", "C3639", "C3643", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998", "C3999"]
+f1_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"]
+helpviewer_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"]
 ---
 # Compiler errors C3500 through C3999
 
@@ -104,7 +105,7 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3587|dynamic_cast is unsupported in amp restricted code|
 |Compiler error C3588|casting from '*type1*' to '*type2*' is unsupported in amp restricted code|
 |Compiler error C3589|'*string*': unsupported usage of string literals in amp restricted code|
-|Compiler error C3590|'*token*': by-reference capture or 'this' capture is unsupported if the lambda is amp restricted|
+|Compiler error C3590|capture of '*value*' is unsupported if the lambda is amp restricted|
 |Compiler error C3591|typeid operator is unsupported in amp restricted code|
 |Compiler error C3592|Inline native assembly ('__asm') is unsupported in amp restricted code|
 |Compiler error C3593|'goto' is unsupported in amp restricted code|
@@ -262,7 +263,7 @@ The articles in this section explain a subset of the error messages generated by
 |[Compiler error C3747](compiler-error-c3747.md)|missing default template/generic parameter: parameter *number*|
 |[Compiler error C3748](compiler-error-c3748.md)|'*interface*': unmanaged interfaces may not fire events|
 |[Compiler error C3749](compiler-error-c3749.md)|'*attribute*': a custom attribute may not be used inside a function|
-|Compiler error C3750|'*token*': unexpected token in attribute list|
+|Compiler error C3750|'*token*': unexpected token in attribute specifier|
 |Compiler error C3751|'*identifier*': unexpected identifier in attribute list|
 |[Compiler error C3752](compiler-error-c3752.md)|'*attribute*': cannot classify attribute; '*keyword*' should not be used in this context|
 |[Compiler error C3753](compiler-error-c3753.md)|a generic property is not allowed|
@@ -285,7 +286,7 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3770|'*type*': is not a valid base class|
 |[Compiler error C3771](compiler-error-c3771.md)|'*identifier*': friend declaration cannot be found in the nearest namespace scope|
 |[Compiler error C3772](compiler-error-c3772.md)|'*identifier*': invalid friend template declaration|
-|Compiler error C3773|please use /await compiler switch to enable coroutines|
+|Compiler error C3773|Use of '*feature*' in this context is a non-conforming extension in `C++`*version*|
 |Compiler error C3774|cannot find '*scope*::*identifier*': Please include *header_name* header|
 |Compiler error C3775|return type of '*function*' should not be '*type*'|
 |Compiler error C3776|cannot return an expression of type void in a coroutine with non-void eventual return type|
@@ -296,7 +297,7 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3781|'*keyword*': cannot be a used in a coroutine of type '*type*'. Either *keyword* or *keyword* must be present in associated promise_type|
 |Compiler error C3782|*type*: a coroutine's promise cannot contain both *keyword* and *keyword*|
 |Compiler error C3783|'*identifier*': cannot be a coroutine|
-|Compiler error C3784|*keyword* expression cannot appear in this context|
+|Compiler error C3784|*keyword* cannot appear in this context|
 |Compiler error C3785|the first template argument to 'std::integer_sequence' must be an integer type|
 |Compiler error C3786|the second template argument to 'std::make_integer_sequence' must be an integer constant greater than or equal to zero|
 |Compiler error C3787|cannot deduce the return type of this coroutine|
@@ -341,7 +342,7 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3826|Obsolete.|
 |Compiler error C3827|standard attribute 'deprecated' may have either no arguments or one string literal describing the reason|
 |[Compiler error C3828](compiler-error-c3828.md)|placement arguments cannot be specified for a '*keyword*' expression for type '*type*'|
-|Compiler error C3829|standard attribute 'noreturn' may only be applied to functions|
+|Compiler error C3829|attribute `[[`*attribute name*`]]` may only be applied to a function declaration|
 |[Compiler error C3830](compiler-error-c3830.md)|'*type1*': cannot inherit from '*type2*', value types can only inherit from interface classes|
 |[Compiler error C3831](compiler-error-c3831.md)|'*identifier*': '*type*' cannot have a pinned data member or a member function returning a pinning pointer|
 |[Compiler error C3832](compiler-error-c3832.md)|'*typelib*': type library looks as if it was built for 32-bit pointers; please change the 'ptrsize' qualifier|
@@ -376,7 +377,7 @@ The articles in this section explain a subset of the error messages generated by
 |[Compiler error C3861](compiler-error-c3861.md)|'*identifier*': identifier not found|
 |[Compiler error C3862](compiler-error-c3862.md)|'*function*': cannot compile an unmanaged function with `/clr:pure` or `/clr:safe`|
 |Compiler error C3863|array type '*type*' is not assignable|
-|Compiler error C3864|Obsolete.|
+|Compiler error C3864|'*context*': requires clause is incompatible with the declaration|
 |[Compiler error C3865](compiler-error-c3865.md)|'*keyword*': can only be used on native member functions|
 |[Compiler error C3866](compiler-error-c3866.md)|destructor/finalizer call missing argument list|
 |[Compiler error C3867](compiler-error-c3867.md)|'*function*': non-standard syntax; use '&' to create a pointer to member|
@@ -390,17 +391,18 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3875|call of non-static member function missing argument list|
 | Compiler error C3876 | hexadecimal floating literal requires an exponent |
 | Compiler error C3877 | invalid type argument to the TypeForwardedTo attribute |
-| Compiler error C3878 | syntax error: unexpected token '%1$L' following '%2s' |
+| Compiler error C3878 | syntax error: unexpected token '*name*' following '*context*' |
 |Compiler error C3879|'*member*': cannot be an initonly data member|
 |[Compiler error C3880](compiler-error-c3880.md)|'*member*': cannot be a literal data member|
 |Compiler error C3881|can only inherit constructor from direct base|
 |Compiler error C3882|'*class*': constructor has already been inherited from '*class*'|
-|Compiler error C3883|'*member*': an initonly static data member must be initialized|
+|[Compiler error C3883](compiler-error-c3883.md)|'*member*': an initonly static data member must be initialized|
 |Compiler error C3884|'*type*': An array of unknown size cannot be value-initialized|
 |Compiler error C3885|'*type*': An array of unknown size cannot be initialized with an empty initializer list|
 |[Compiler error C3886](compiler-error-c3886.md)|'*member*': a literal data member must be initialized|
 |[Compiler error C3887](compiler-error-c3887.md)|'*member*': the initializer for a literal data member must be a constant expression|
 |[Compiler error C3888](compiler-error-c3888.md)|'*member*': the const expression associated with this literal data member is not supported by C++/CLI|
+|Compiler error C3889|call to object of class type '*type*': no matching call operator found|
 |[Compiler error C3890](compiler-error-c3890.md)|'*member*': you cannot take the address of a literal data member|
 |[Compiler error C3891](compiler-error-c3891.md)|'*member*': a literal data member cannot be used as a l-value|
 |[Compiler error C3892](compiler-error-c3892.md)|'*variable*': you cannot assign to a variable that is const|
@@ -433,12 +435,14 @@ The articles in this section explain a subset of the error messages generated by
 |[Compiler error C3919](compiler-error-c3919.md)|'*function*': function must have type '*return_type* (*type*)'|
 |[Compiler error C3920](compiler-error-c3920.md)|'*operator*': cannot define a postfix increment/decrement CLR/WinRT operator Calling the postfix CLR/WinRT operator will call the corresponding prefix CLR/WinRT operator (op_Increment/op_Decrement), but with postfix semantics|
 |Compiler error C3921|Obsolete.|
+|Compiler error C3922|'*name*': argument must be a constant expression|
 |[Compiler error C3923](compiler-error-c3923.md)|'*member*': local class, struct or union definitions are not allowed in a member function of a managed/WinRT class|
 |Compiler error C3924|error in argument #*number* of delegate constructor call '*constructor*':|
 |Compiler error C3925|expected a loop (`for`, `while`, or `do`) following '*directive_name*' directive|
 |Compiler error C3926|invalid constant in 'parallel' directive|
 |Compiler error C3927|'->': trailing return type is not allowed after a non-function declarator|
 |Compiler error C3928|'->': trailing return type is not allowed after a parenthesized declarator|
+|Compiler error C3929|'`collapse(`*count*`)`' specified but found only *value* loops following '`#pragma omp for`'|
 |Compiler error C3930|'*function*': no overloaded function has restriction specifiers that are compatible with the ambient context '*context*'|
 |Compiler error C3931|'*type*': cannot call a function that has restriction specifiers that are incompatible with the ambient context|
 |Compiler error C3932|Obsolete.|
@@ -451,6 +455,9 @@ The articles in this section explain a subset of the error messages generated by
 |Compiler error C3939|'*identifier*': pointer to member functions, function pointers, references to functions with 'amp' restriction specifier are not allowed|
 |Compiler error C3940|'*identifier*': identifier not found - possible mismatch between compiler and library versions. Please ensure vccorlib.h/.lib, vccorlib120.dll and c1xx.dll match|
 |Compiler error C3941|'*condition*': requires '/clr' command line option|
+|Compiler error C3942|'`#pragma omp atomic capture`': expression on right of '`=`' must be an lvalue-expression of scalar type|
+|Compiler error C3943|'`#pragma omp atomic`': operator '*operator*' is overloaded; only built-in operators are allowed|
+|Compiler error C3944|'`#pragma omp atomic`': lvalue expression required as left operand of '*operator*'|
 |Compiler error C3945|'*type*': unable to throw or catch a winrt object which doesn't derive from Platform::Exception|
 |Compiler error C3946|'*type*': typeid cannot be applied to this type|
 |Compiler error C3947|'*typeid*': typeid cannot be applied to a pack expansion|
@@ -508,5 +515,5 @@ The articles in this section explain a subset of the error messages generated by
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \
+[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\
 [Compiler errors C2000 - C3999, C7000 - C7999](../compiler-errors-1/compiler-errors-c2000-c3999.md)
diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md
index 9bd380066b..984ce5a3d8 100644
--- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md
+++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md
@@ -2,8 +2,8 @@
 description: "Learn more about: Compiler errors C7500 through C7999"
 title: "Compiler errors C7500 through C7999"
 ms.date: 10/13/2023
-f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7696", "C7700", "C7701", "C7702", "C7703", "C7704"]
-helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7696", "C7700", "C7701", "C7702", "C7703", "C7704"]
+f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"]
+helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"]
 ---
 # Compiler errors C7500 through C7999
 
@@ -42,7 +42,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7524 | 'inline' specifier cannot appear on a block-scope declaration or non-static data member |
 | Compiler error C7525 | inline variables require at least '%1$M' |
 | Compiler error C7526 | '%$I': inline variable is undefined |
-| Compiler error C7527 | '%$I': template parameter name cannot be redeclared |
+| Compiler error C7527 | '*identifier*': a template parameter name cannot be reused within its scope |
 | Compiler error C7528 | '%1$S': A default constructor or its exception specification cannot be used within a data member initializer of the same class |
 | Compiler error C7529 | multiple using-declarators require at least '%1$M' |
 | Compiler error C7530 | applying a pack-expansion to a using-declaration requires at least '%1$M' |
@@ -58,7 +58,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7540 | '%1$I': member cannot have the same name as the enclosing class |
 | Compiler error C7541 | '%1$I': C++17 inline static data members are not compatible with managed types |
 | Compiler error C7542 | '%1$S': expected a type |
-| Compiler error C7543 | likelihood attributes can only be applied to statements and labels |
+| Compiler error C7543 | attribute `[[`*attribute*`]]` can only be applied to statements and labels |
 | Compiler error C7544 | standard attributes '%1$s' and '%2$s' are mutually exclusive |
 | Compiler error C7545 | attribute '%sno_unique_address' can only be applied to a non-static data member that is not a bitfield |
 | Compiler error C7546 | binary operator '<=>': unsupported operand types '%$T' and '%$T' |
@@ -113,6 +113,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7595 | '%1$S': call to immediate function is not a constant expression |
 | Compiler error C7596 | '%1$S': cannot take address of immediate function outside of an immediate invocation |
 | Compiler error C7597 | '%1$D': 'consteval': overriding function must match overridden function |
+| Compiler error C7598 | the constraint expression cannot use the concept name '*identifier*'|
 | Compiler error C7599 | '%1$S': a trailing requires clause is only allowed on a templated function |
 | Compiler error C7600 | '%1$S': the concept designated by a type constraint shall be a type concept |
 | Compiler error C7601 | the associated constraints are not satisfied |
@@ -123,7 +124,7 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7606 | '%1$S': concept cannot be explicitly instantiated, explicitly specialized or partially specialized |
 | Compiler error C7607 | atomic constraint should be a constant expression of type 'bool', not '%1$T' |
 | Compiler error C7608 | atomic constraint should be a constant expression |
-| Compiler error C7609 | '%1$S': type constraint expects a concept name |
+| Compiler error C7609 | '*identifier*': expected a concept name for type constraint |
 | Compiler error C7610 | operator '%$L': not allowed between enumeration types and floating-point types |
 | Compiler error C7611 | operator '%$L': not allowed for array types |
 | Compiler error C7612 | could not find header unit for '%s' |
@@ -163,8 +164,8 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7646 | destroying operator delete functions cannot be array delete operators 'operator delete[]' |
 | Compiler error C7647 | destroying operator delete functions must be usual deallocation functions |
 | Compiler error C7648 | a conversion function cannot have a trailing return type |
-| Compiler error C7649 | attribute 'xfg::rename' may only be applied to structs, classes and virtual methods |
-| Compiler error C7650 | attribute 'xfg::rename' must be passed a string argument |
+| Compiler error C7649 | attribute '`[[xfg::rename]]`' may only be applied to structs, classes and virtual methods |
+| Compiler error C7650 | attribute '`[[xfg::rename]]`' must be passed a string argument |
 | Compiler error C7651 | %1$I cannot be used with /await. Use '%2$M' or later for standard coroutine support |
 | Compiler error C7652 | if a member function has a trailing requires clause then another member function with the same signature, ignoring any trailing requires clause, cannot be virtual |
 | Compiler error C7653 | '%1$S': failed to select a destructor for the class |
@@ -173,17 +174,80 @@ The articles in this section of the documentation explain a subset of the error
 | Compiler error C7656 | private module fragment cannot be redeclared |
 | Compiler error C7657 | private module fragment cannot be declared before a module declaration |
 | Compiler error C7658 | '%1$S': the initializer must be the address of a variable |
-| Compiler error C7659 | attribute 'xfg::rename' may not be applied to nested class hierarchies |
+| Compiler error C7659 | attribute '`[[xfg::rename]]`' may not be applied to nested class hierarchies |
 | Compiler error C7660 | '%s': requires '%s' command line option(s) |
 | Compiler error C7661 | header-name '%s' has an ambiguous resolution to header '%s' |
 | Compiler error C7662 | '%$S': a coroutine cannot be constexpr or consteval |
+| Compiler error C7665 | '*operator*': you cannot assign to '`this`' as it is not an lvalue |
+| Compiler error C7666 | you cannot apply '*operator*' to '`this`' as it is not an lvalue |
+| Compiler error C7667 | no global `operator delete` function found |
+| Compiler error C7668 | a function with an explicit object parameter must be a member function |
+| Compiler error C7669 | a function with an explicit object parameter cannot be declared '`static`' |
+| Compiler error C7670 | only the first parameter may be an explicit object parameter |
+| Compiler error C7671 | a member function with an explicit object parameter may only have one such parameter |
+| Compiler error C7672 | a member function with an explicit object parameter may not have trailing implicit object parameter specifiers |
+| Compiler error C7673 | explicit object member functions requires at least '*C++ language version*' |
+| Compiler error C7674 | member function '*function 1*' with explicit object parameter of type '*type 1*' cannot overload member function '*function 2*' with implicit object parameter of type '*type 2*' |
+| Compiler error C7675 | cannot overload static member function with member function declaring the same non-object parameter types |
+| Compiler error C7676 | member functions with an explicit object parameter cannot be defaulted |
+| Compiler error C7677 | constructors cannot contain an explicit object parameter |
+| Compiler error C7678 | member functions with an explicit object parameter cannot be virtual |
+| Compiler error C7679 | an explicit object parameter cannot be a parameter pack |
+| Compiler error C7680 | only function parameters may be explicit object parameters |
+| Compiler error C7682 | '*declaration*': a non-defining declaration of an enumeration with a fixed underlying type is only permitted as a standalone declaration |
+| Compiler error C7683 | you cannot create a reference to '`void`' |
+| Compiler error C7684 | module name '*name*' has an ambiguous resolution to IFC |
+| Compiler error C7685 | there is no type named '*identifier*' in '*type*' |
+| Compiler error C7686 | attribute `[[msvc::constexpr]]` cannot be applied to a '`constexpr`' or '`consteval`' function |
+| Compiler error C7687 | attribute `[[`*attribute*`]]` may only be applied to statements and functions |
 | [Compiler error C7688](compiler-error-c7688.md) | '`#pragma omp atomic`': expected an expression of scalar type |
-| Compiler error C7686 | TOML parse error |
+| Compiler error C7689 | attribute `[[msvc::intrinsic]]` cannot be applied to explicit specializations |
+| Compiler error C7690 | attribute `[[msvc::intrinsic]]` cannot be applied to a recursive function |
+| Compiler error C7691 | '`__super`' is not supported as '`/allowSuper-`' was specified |
+| Compiler error C7692 | '*name*': rewritten candidate function was excluded from overload resolution because a corresponding `operator!=` declared in the same scope |
+| Compiler error C7693 | constraints are not supported for managed types and constructs |
+| Compiler error C7694 | managed type '*type*' used in a constraint definition or evaluation or in an entity that uses constraints |
+| Compiler error C7695 | coroutine promise type '*type*' cannot be abstract |
+| Compiler error C7696 | TOML parse error: *error name*; see '*TOML filename*' |
+| Compiler error C7697 | '*header unit*' is not a recognized header-name lookup |
+| Compiler error C7698 | '`__declspec(`*name*`(...))`' requires a single string argument |
+| Compiler error C7699 | file mapping must be unique.  Both '*name 1*' and '*name 2*' map to '*filename*' |
 | Compiler error C7700 | type '%$T' in _Generic association compatible with previous association type '%$T' |
 | Compiler error C7701 | default _Generic association previously specified |
 | Compiler error C7702 | no compatible type for '%$T' in _Generic association list |
 | Compiler error C7703 | inline nested namespaces requires at least '%1$M' |
 | Compiler error C7704 | '_Alignas' specifier can be used on variables and structure fields only |
+| Compiler error C7705 | '`_Atomic`' type '*typename*' cannot be an array or function |
+| Compiler error C7706 | '`_Atomic`' type '*typename*' cannot be atomic or CVR qualified |
+| Compiler error C7707 | call to '*function*': argument type '*type*' must be a pointer to an atomic type |
+| Compiler error C7708 | '*variable*': '`thread_local`' is only valid on variables at file or block scope |
+| Compiler error C7709 | '*variable*': '`thread_local`' variables at block scope must be marked `static` |
+| Compiler error C7710 | '*variable*': bit-fields cannot be atomic |
+| Compiler error C7711 | '`_Atomic`' cannot be applied to incomplete type '*type*' |
+| Compiler error C7712 | address argument to atomic operation must be a pointer to an atomic integer, '*type*' is not valid |
+| Compiler error C7713 | a statement-expression may only appear inside a function body |
+| Compiler error C7714 | the syntax for a 'statement-expression' is '`__extension__ ({ S1; ... ; Sn; })`' |
+| Compiler error C7720 | bound for nested loop to be collapsed does not conform to the OpenMP specification |
+| Compiler error C7730 | '`#`*directive*' directive requires '*language version*' or later |
+| Compiler error C7731 | '*name*' is not allowed on a constructor declaration |
+| Compiler error C7732 | expected an expression before '`]`' |
+| Compiler error C7733 | the built-in subscript operator expects a single expression |
+| Compiler error C7734 | '`size_t`' literal is out of range of possible '`size_t`' values |
+| Compiler error C7735 | a lambda cannot be both '`static`' and '`mutable`' |
+| Compiler error C7736 | a static lambda must have an empty capture-clause |
+| Compiler error C7737 | a lambda with an explicit object parameter shall be neither '`mutable`' nor '`static`' |
+| Compiler error C7738 | '`if consteval`' requires a compound statement |
+| Compiler error C7739 | cannot jump from this `goto` statement to its label |
+| Compiler error C7740 | cannot jump to case label |
+| Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics |
+| [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier |
+| Compiler error C7800 | duplicate explicit instantiation definition of '*name*' |
+| Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute |
+| Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator |
+| Compiler error C7803 | '*identifier*': a capability must be associated with a non-overloaded, non-virtual function |
+| Compiler error C7804 | '*identifier*': cannot find a matching default dispatch function |
+| Compiler error C7806 | support for the '`msvc::dispatch`' attribute requires '`/experimental:loadTimeSelection`' |
+| Compiler error C7807 | expecting a narrow string literal |
 
 ## See also
 
diff --git a/docs/error-messages/compiler-warnings/c4834.md b/docs/error-messages/compiler-warnings/c4834.md
index 7012f5c3c6..62746b0fce 100644
--- a/docs/error-messages/compiler-warnings/c4834.md
+++ b/docs/error-messages/compiler-warnings/c4834.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn about the cause and fixes for Compiler warning (level 1) C4834."
 title: "Compiler warning (Level 1) C4834"
+description: "Learn about the cause and fixes for Compiler warning (level 1) C4834."
 ms.date: 01/18/2024
 f1_keywords: ["C4834"]
 helpviewer_keywords: ["C4834"]
@@ -43,7 +43,7 @@ int square_of(int i) { return i * i; }
 int main()
 {
     square_of(42); // warning C4834: discarding return value of function with 'nodiscard' attribute
-    // If ignoring the [[nodiscard] attribute is unintentional, make use of the return value as intended:
+    // If ignoring the [[nodiscard]] attribute is unintentional, make use of the return value as intended:
     // For example:
     std::cout << "square_of(42) = " << square_of(42) << "\n"; // Ok
     // Or:
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md
index f32d4d86f9..57d328a58f 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4355"
 title: "Compiler Warning (level 1 and level 4, off) C4355"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4355"
+ms.date: 11/04/2016
 f1_keywords: ["C4355"]
 helpviewer_keywords: ["C4355"]
 ---
@@ -25,7 +25,7 @@ The following sample generates C4355:
 class CDerived;
 class CBase {
 public:
-   CBase(CDerived *derived): m_pDerived(derived) {};
+   CBase(CDerived *derived): m_pDerived(derived) {}
    ~CBase();
    virtual void function() = 0;
 
@@ -34,8 +34,8 @@ public:
 
 class CDerived : public CBase {
 public:
-   CDerived() : CBase(this) {};   // C4355 "this" used in derived c'tor
-   virtual void function() {};
+   CDerived() : CBase(this) {}   // C4355 "this" used in derived c'tor
+   virtual void function() {}
 };
 
 CBase::~CBase() {
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md
index 15c04e3b0f..6814fb10c3 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md
@@ -1,36 +1,33 @@
 ---
-description: "Learn more about: Compiler Warning C4430"
-title: "Compiler Warning C4430"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1, error) C4430"
+title: "Compiler warning (level 1, error) C4430"
+ms.date: 04/22/2025
 f1_keywords: ["C4430"]
 helpviewer_keywords: ["C4430"]
-ms.assetid: 12efbfff-aa58-4a86-a7d6-2c6a12d01dd3
 ---
-# Compiler Warning C4430
+# Compiler Warning (level 1, Error) C4430
 
-missing type specifier - int assumed. Note: C++ does not support default-int
+> missing type specifier - int assumed. Note: C++ does not support default-int
 
-This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: all declarations must explicitly specify the type; int is no longer assumed.
+This warning is issued when a type specifier is missing in a declaration. The compiler used to assume the type was `int` in this case. But due to compiler conformance work done for Visual Studio 2005, all declarations must explicitly specify the type.
 
-C4430 is always issued as an error.  You can turn off this warning with the `#pragma warning` or **/wd**; see [warning](../../preprocessor/warning.md) or [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](../../build/reference/compiler-option-warning-level.md) for more information.
+C4430 is always issued as an error. You can turn off this warning with the `#pragma warning` or `/wd`. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md).
 
 ## Example
 
-The following sample generates C4430.
+The following sample generates C4430:
 
 ```cpp
-// C4430.cpp
 // compile with: /c
 struct CMyClass {
    CUndeclared m_myClass;  // C4430
-   int m_myClass;  // OK
 };
 
 typedef struct {
-   POINT();   // C4430
-   // try the following line instead
-   // int POINT();
+   someFunction();   // C4430
    unsigned x;
    unsigned y;
 } POINT;
 ```
+
+To fix this code, you'd need to define the type `CUndeclared` and the function `someFunction` prior to their use.
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md
index f8d402b838..9608a6c02c 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md
@@ -1,22 +1,21 @@
 ---
-description: "Learn more about: Compiler Warning C4439"
-title: "Compiler Warning C4439"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1, error) C4439"
+title: "Compiler warning (level 1, error) C4439"
+ms.date: "1/22/2025"
 f1_keywords: ["C4439"]
 helpviewer_keywords: ["C4439"]
-ms.assetid: 9449958f-f407-4824-829b-9e092f2af97d
 ---
-# Compiler Warning C4439
+# Compiler warning C4439
 
-'function' : function definition with a managed type in the signature must have a __clrcall calling convention
+> '*function name*': function definition with a managed type in the signature must have a `__clrcall` calling convention
 
 The compiler implicitly replaced a calling convention with [`__clrcall`](../../cpp/clrcall.md). To resolve this warning, remove the **`__cdecl`** or **`__stdcall`** calling convention.
 
-C4439 is always issued as an error. You can turn off this warning with the `#pragma warning` or **`/wd`**; see [warning](../../preprocessor/warning.md) or [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](../../build/reference/compiler-option-warning-level.md) for more information.
+C4439 is always issued as an error. You can turn off this warning with the `#pragma warning` or **`/wd`**. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md).
 
 ## Example
 
-The following sample generates C4439.
+The following sample generates C4439:
 
 ```cpp
 // C4439.cpp
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4172.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4172.md
index 45e27ccfbd..393c35c0c6 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4172.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4172.md
@@ -1,29 +1,43 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4172"
 title: "Compiler Warning (level 1) C4172"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4172"
+ms.date: 06/25/2025
 f1_keywords: ["C4172"]
 helpviewer_keywords: ["C4172"]
-ms.assetid: a8d2bf65-d8b1-4fe3-8340-a223d7e7fde6
 ---
 # Compiler Warning (level 1) C4172
 
-returning address of local variable or temporary
+> returning address of local variable or temporary : *optional_context*
+
+## Remarks
 
 A function returns the address of a local variable or temporary object. Local variables and temporary objects are destroyed when a function returns, so the address returned is not valid.
 
 Redesign the function so that it does not return the address of a local object.
 
-The following sample generates C4172:
+## Example
+
+The following example generates C4172:
 
 ```cpp
 // C4172.cpp
-// compile with: /W1 /LD
-float f = 10;
+// compile with: /c /W1
+
+const int* func1()
+{
+    int i = 42;
+    return &i;   // C4172
+}
+
+float f = 1.f;
 
-const double& bar() {
-// try the following line instead
-// const float& bar() {
-   return f;   // C4172
+const double& func2()
+// Try one of the following lines instead:
+// const float& func2()
+// const auto& func2()
+{
+    // The problem is that a temporary is created to convert f to a double.
+    // C4172 in this case refers to returning the address of a temporary.
+    return f;   // C4172
 }
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md
index f6151e2d0f..036ad1f925 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4183"
 title: "Compiler Warning (level 1) C4183"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4183"
+ms.date: 11/04/2016
 f1_keywords: ["C4183"]
 helpviewer_keywords: ["C4183"]
-ms.assetid: dc48312c-4b34-44dd-80ff-eb5f11d5ca47
 ---
 # Compiler Warning (level 1) C4183
 
@@ -20,6 +19,6 @@ The following sample generates C4183:
 #pragma warning(disable : 4430)
 class MyClass1;
 class MyClass2 {
-   MyClass1() {};   // C4183
+   MyClass1() {}   // C4183
 };
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md
index 5045a15a4c..1056b7868c 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: Compiler Warning (level 2) C4251"
 title: "Compiler Warning (level 2) C4251"
+description: "Learn more about: Compiler Warning (level 2) C4251"
 ms.date: 12/01/2023
 f1_keywords: ["C4251"]
 helpviewer_keywords: ["C4251"]
 ---
 # Compiler Warning (level 2) C4251
 
-> '*type*' : class '*type1*' needs to have dll-interface to be used by clients of class '*type2*'
+> '*type*': '*type1*' needs to have dll-interface to be used by clients of '*type2*'
 
 ## Remarks
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md
index 3a8fdd16f4..faa8737853 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4269"
 title: "Compiler Warning (level 1) C4269"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4269"
+ms.date: 11/04/2016
 f1_keywords: ["C4269"]
 helpviewer_keywords: ["C4269"]
-ms.assetid: 96c97bbc-068a-4b65-8cd8-4ed5dca04c15
 ---
 # Compiler Warning (level 1) C4269
 
@@ -24,7 +23,7 @@ public:
 
 void g() {
    const X x1;   // C4269
-};
+}
 ```
 
 Since this instance of the class is generated on the stack, the initial value of `m_data` can be anything. Also, since it is a **`const`** instance, the value of `m_data` can never be changed.
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md
index afade9f92f..3ca31ea006 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4353"
 title: "Compiler Warning (level 1) C4353"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4353"
+ms.date: 11/04/2016
 f1_keywords: ["C4353"]
 helpviewer_keywords: ["C4353"]
-ms.assetid: 6e79f186-ed82-4c95-9923-0ad5bb9c4db1
 ---
 # Compiler Warning (level 1) C4353
 
@@ -17,7 +16,7 @@ The following sample generates C4353:
 ```cpp
 // C4353.cpp
 // compile with: /W1
-void MyPrintf(void){};
+void MyPrintf(void){}
 #define X 0
 #if X
    #define DBPRINT MyPrint
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md
index 2e6e126ead..9b3e694ede 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md
@@ -1,35 +1,31 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4436"
-title: "Compiler Warning (level 1) C4436"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1 and level 4) C4436"
+title: "Compiler warning (level 1 and level 4) C4436"
+ms.date: "1/22/2025"
 f1_keywords: ["C4436"]
 helpviewer_keywords: ["C4436"]
-ms.assetid: 2b54a1fc-c9c6-4cc9-90be-faa44fc715d5
 ---
-# Compiler Warning (level 1) C4436
+# Compiler warning (level 1) C4436
 
-dynamic_cast from virtual base 'class1' to 'class2' in constructor or destructor could fail with partially-constructed object        Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect
+> `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object
 
-The compiler has encountered a **`dynamic_cast`** operation with the following characteristics.
+A `dynamic_cast` operation is used when:
 
 - The cast is from a base class pointer to a derived class pointer.
-
 - The derived class virtually inherits the base class.
+- The derived class doesn't have a `vtordisp` field for the virtual base.
+- The cast is found in a constructor or destructor of the derived class, or a class that inherits from the derived class.
 
-- The derived class does not have a `vtordisp` field for the virtual base.
-
-- The cast is found in a constructor or destructor of the derived class, or some class which further inherits from the derived class.
-
-The warning indicates the **`dynamic_cast`** might not perform correctly, if it is operating on a partially-constructed object.  That happens if the derived constructor/destructor is operating on a sub-object of some further derived object.  If the derived class named in the warning is never further derived, the warning can be ignored.
+This warning indicates that the `dynamic_cast` might not perform correctly if it is applied to a partially constructed object. Which happens if the derived constructor/destructor is operating on a subobject of some further derived object. If the derived class named in the warning isn't further derived, you can ignore the warning.
 
 ## Example
 
-The following sample generates C4436 and demonstrates the code generation issue that arises from the missing `vtordisp` field.
+The following sample generates C4436 and demonstrates the code generation issue due to the missing `vtordisp` field:
 
 ```cpp
 // C4436.cpp
 // To see the warning and runtime assert, compile with: /W1
-// To eliminate the warning and assert, compile with: /W1 /vd2
+// To eliminate the warning and assert, compile with: /W1 /vd2 
 //       or compile with: /W1 /DFIX
 #include <cassert>
 
@@ -48,7 +44,7 @@ struct B : virtual A
     {
         A* a = static_cast<A*>(this);
         B* b = dynamic_cast<B*>(a);     // C4436
-        assert(this == b);              // assert unless compiled with /vd2
+        assert(this == b);              // asserts unless compiled with /vd2
     }
 };
 #if defined(FIX)
@@ -68,6 +64,6 @@ int main()
 
 ## See also
 
-[dynamic_cast Operator](../../cpp/dynamic-cast-operator.md)<br/>
-[vtordisp](../../preprocessor/vtordisp.md)<br/>
-[Compiler Warning (level 4) C4437](../../error-messages/compiler-warnings/compiler-warning-level-4-c4437.md)
+[`dynamic_cast` Operator](../../cpp/dynamic-cast-operator.md)\
+[`vtordisp`](../../preprocessor/vtordisp.md)\
+[Compiler Warning (level 1 and level 4, off) C4437](compiler-warning-level-4-c4437.md)
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md
index 371adf13d2..1d14bf8eb5 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4556"
 title: "Compiler Warning (level 1) C4556"
-ms.date: "08/27/2018"
+description: "Learn more about: Compiler Warning (level 1) C4556"
+ms.date: "03/28/2025"
 f1_keywords: ["C4556"]
 helpviewer_keywords: ["C4556"]
-ms.assetid: e4c0e296-b747-4db1-9608-30b8b74feac2
 ---
 # Compiler Warning (level 1) C4556
 
-> value of intrinsic immediate argument '*value*' is out of range '*lowerbound* - *upperbound*'
+> value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'
 
 ## Remarks
 
@@ -16,21 +15,18 @@ An intrinsic matches a hardware instruction. The hardware instruction has a fixe
 
 ## Example
 
-The following sample generates C4556:
+The following example generates C4556:
 
 ```cpp
 // C4556.cpp
 // compile with: /W1
-// processor: x86 IPF
+// processor: x86
 #include <xmmintrin.h>
 
-void test()
-{
-   __m64 m;
-   _m_pextrw(m, 5);   // C4556
-}
-
 int main()
 {
+    __m64 m = _mm_setzero_si64();
+    _m_pextrw(m, 5);   // C4556
+    _mm_empty();
 }
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md
index 14ff9e25bd..30659c1bb7 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4722"
 title: "Compiler Warning (level 1) C4722"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4722"
+ms.date: 11/04/2016
 f1_keywords: ["C4722"]
 helpviewer_keywords: ["C4722"]
-ms.assetid: d8660710-f67b-4f59-a5fd-59259475529e
 ---
 # Compiler Warning (level 1) C4722
 
@@ -25,7 +24,7 @@ The following sample generates C4722:
 class C {
 public:
    C();
-   ~C() { exit(1); };   // C4722
+   ~C() { exit(1); }   // C4722
 };
 
 extern void func (C*);
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md
index 3c788f2d51..d8c6e56aaf 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (Level 1) C4744"
 title: "Compiler Warning (Level 1) C4744"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (Level 1) C4744"
+ms.date: 11/04/2016
 f1_keywords: ["C4744"]
 helpviewer_keywords: ["C4744"]
-ms.assetid: f2a7d0b5-afd5-4926-abc3-cfbd367e3ff5
 ---
 # Compiler Warning (Level 1) C4744
 
@@ -37,7 +36,7 @@ The following sample generates C4744.
 
 extern unsigned global;
 
-main()
+int main()
 {
     printf_s("%d\n", global);
 }
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md
index 9b7dd21797..4c6c42a9a4 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4747"
 title: "Compiler Warning (level 1) C4747"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4747"
+ms.date: 11/04/2016
 f1_keywords: ["C4747"]
 helpviewer_keywords: ["C4747"]
-ms.assetid: af37befd-ba1f-4bdc-96e1-a953f7a2ad9c
 ---
 # Compiler Warning (level 1) C4747
 
@@ -35,5 +34,5 @@ The following sample generates C4747.
 
 BOOL WINAPI DllMain(HANDLE hInstance, ULONG Command, LPVOID Reserved) {
    return TRUE;
-};
+}
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md
index 279721640b..696cc4eacd 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (Level 1) C4789"
 title: "Compiler Warning (Level 1) C4789"
+description: "Learn more about: Compiler Warning (Level 1) C4789"
 ms.date: 08/30/2022
 f1_keywords: ["C4789"]
 helpviewer_keywords: ["C4789"]
-ms.assetid: 5800c301-5afb-4af0-85c1-ceb54d775234
 ---
 # Compiler Warning (Level 1) C4789
 
@@ -19,9 +18,7 @@ ms.assetid: 5800c301-5afb-4af0-85c1-ceb54d775234
 The warning occurs if the copy uses the intrinsic form of one of these CRT functions:
 
 - [`strcpy`](../../c-runtime-library/reference/strcpy-wcscpy-mbscpy.md)
-
 - [`memset`](../../c-runtime-library/reference/memset-wmemset.md)
-
 - [`memcpy`](../../c-runtime-library/reference/memcpy-wmemcpy.md), [`wmemcpy`](../../c-runtime-library/reference/memcpy-wmemcpy.md)
 
 The warning also appears when you cast a parameter to a larger data type, and then make a copy assignment from an lvalue reference.
@@ -31,7 +28,7 @@ Visual C++ might generate this warning for a code path that never executes. You
 ```cpp
 #pragma warning( push )
 #pragma warning( disable : 4789 )
-// unused code that generates compiler warning C4789`
+// unused code that generates compiler warning C4789
 #pragma warning( pop )
 ```
 
@@ -41,7 +38,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl
 
 ## Examples
 
-The following sample generates C4789.
+The following sample generates C4789:
 
 ```cpp
 // C4789.cpp
@@ -63,7 +60,7 @@ int main()
 }
 ```
 
-The following sample also generates C4789.
+The following sample also generates C4789:
 
 ```cpp
 // C4789b.cpp
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md
index ec6ba0260e..a5c280ad86 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md
@@ -1,17 +1,35 @@
 ---
-description: "Learn more about: Compiler Warning (level 1) C4799"
 title: "Compiler Warning (level 1) C4799"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1) C4799"
+ms.date: "03/28/2025"
 f1_keywords: ["C4799"]
 helpviewer_keywords: ["C4799"]
-ms.assetid: 8ecbd06f-c778-4371-a2fb-c690b6743ec8
 ---
 # Compiler Warning (level 1) C4799
 
-> No EMMS at end of function '*function*'
+> function '*function*' has no EMMS instruction
 
-The function has at least one MMX instruction, but does not have an `EMMS` instruction. When a multimedia instruction is used, an `EMMS` instruction or `_mm_empty` intrinsic should also be used to clear the multimedia tag word at the end of the MMX code.
+The function has at least one MMX instruction, but does not have an `EMMS` instruction. When a multimedia instruction is used, an `EMMS` instruction or [`_mm_empty`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_empty) intrinsic should also be used to clear the multimedia tag word at the end of the MMX code.
 
-You may get C4799 when using ivec.h, indicating that the code does not use properly execute the EMMS instruction before returning. This is a false warning for these headers. You may turn these off by defining _SILENCE_IVEC_C4799 in ivec.h. However, be aware that this will also keep the compiler from giving correct warnings of this type.
+You may get C4799 when using `ivec.h`, indicating that the code does not properly execute the `EMMS` instruction before returning. This is a false warning for these headers. You may turn these off by defining `_SILENCE_IVEC_C4799` in `ivec.h`. However, be aware that this will also keep the compiler from giving correct warnings of this type.
 
 For related information, see [Intel's MMX Instruction Set](../../assembler/inline/intel-s-mmx-instruction-set.md).
+
+## Example
+
+The following example generates C4799:
+
+```cpp
+// C4799.cpp
+// compile with: /W1
+// processor: x86
+#include <mmintrin.h>
+
+int main()
+{
+    __m64 m = _mm_setzero_si64();
+
+    // Uncomment the following line to resolve the warning:
+    // _mm_empty();
+}   // C4799
+```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md
index 40fd5f1901..813ec5943a 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: Compiler Warning (level 2) C4099"
 title: "Compiler Warning (level 2) C4099"
+description: "Learn more about: Compiler Warning (level 2) C4099"
 ms.date: "11/04/2016"
 f1_keywords: ["C4099"]
 helpviewer_keywords: ["C4099"]
-ms.assetid: 00bb803d-cae7-4ab8-8969-b46f54139ac8
 ---
 # Compiler Warning (level 2) C4099
 
-'identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2'
+> '*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*'
 
 An object declared as a structure is defined as a class, or an object declared as a class is defined as a structure. The compiler uses the type given in the definition.
 
@@ -20,5 +19,5 @@ The following sample generates C4099.
 // C4099.cpp
 // compile with: /W2 /c
 struct A;
-class A {};   // C4099, use different identifer or use same object type
+class A {};   // C4099, use different identifier or use same object type
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md
index 3540ce83ae..5cf2284477 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about: Compiler warning (level 2) C4146"
 title: "Compiler warning (level 2) C4146"
-ms.date: 08/30/2022
+ms.date: 04/22/2025
 f1_keywords: ["C4146"]
 helpviewer_keywords: ["C4146"]
 ---
@@ -9,21 +9,20 @@ helpviewer_keywords: ["C4146"]
 
 > unary minus operator applied to unsigned type, result still unsigned
 
-Unsigned types can hold only non-negative values, so unary minus (negation) usually doesn't make sense when applied to an unsigned type. Both the operand and the result are non-negative.
+Unsigned types only hold non-negative values. So unary minus (negation) usually doesn't make sense when applied to an unsigned type. Both the operand and the result are non-negative.
 
 ## Remarks
 
-When you express a negative integer literal, the **`-`** in front of the value is parsed as a [unary negation](../../cpp/unary-plus-and-negation-operators-plus-and.md) operator. The compiler applies the operator after it parses the numeric value. If the numeric value fits in the range of an unsigned integer type, but not the corresponding signed integer type, the compiler interprets the value as unsigned. An unsigned value is unchanged by the unary negation operator.
+When you express a negative integer literal, the **`-`** in front of the value is parsed as a [unary negation](../../cpp/unary-plus-and-negation-operators-plus-and.md) operator. The compiler applies the operator after it parses the numeric value. If the numeric value fits in the range of an unsigned integer type, but not the corresponding signed integer type, the compiler interprets the value as unsigned.
 
-This warning often occurs when you try to express the minimum **`int`** value, -2147483648, or the minimum **`long long`** value, -9223372036854775808. These values can't be written as -2147483648 or -9223372036854775808ll, respectively. The reason is because the compiler processes the expression in two stages: first, it parses the numeric value, then it applies the negation operator. For example, when the compiler parses -2147483648, it follows these steps:
+This warning often occurs when you try to express the minimum **`int`** value, -2147483648, or the minimum **`long long`** value, -9223372036854775808. These values can't be written as -2147483648 or -9223372036854775808ll. The reason is because the compiler processes the expression in two stages: first, it parses the numeric value, then it applies the negation operator. For example, when the compiler parses -2147483648, it follows these steps:
 
 1. The number 2147483648 is evaluated. Because it's greater than the maximum **`int`** value of 2147483647, but still fits in an **`unsigned int`**, the type of 2147483648 is **`unsigned int`**.
-
 1. Unary minus is applied to the unsigned value, with an unsigned result, which also happens to be 2147483648.
 
 The unsigned type of the result can cause unexpected behavior. If the result is used in a comparison, then an unsigned comparison might be used, for example, when the other operand is an **`int`**.
 
-You can avoid C4146 by using `INT_MIN` or `LLONG_MIN` from *`<limits.h>`* or the C++ equivalent, *`<climits>`*. These values have signed types.
+You can avoid **C4146** by using `INT_MIN` or `LLONG_MIN` from *`<limits.h>`* or the C++ equivalent, *`<climits>`*. These values have signed types.
 
 The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enable-additional-security-checks.md) compiler option elevates this warning to an error.
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md
index 9d0fbe858c..3fcab81522 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Warning (level 2) C4150"
 title: Compiler warning (level 2) C4150
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 2) C4150"
+ms.date: 11/04/2016
 f1_keywords: ["C4150"]
 helpviewer_keywords: ["C4150"]
 ---
@@ -75,7 +75,6 @@ void NoDestruct( IncClass* pIncClass )
 {
    delete pIncClass;
 }
-
 ```
 
 ## See also
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md
index 2c6d5bb4fa..3ef99e9709 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md
@@ -1,35 +1,33 @@
 ---
-description: "Learn more about: Compiler Warning (level 2) C4412"
-title: "Compiler Warning (level 2) C4412"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 2, off) C4412"
+title: "Compiler warning (level 2, off) C4412"
+ms.date: "1/22/2025"
 f1_keywords: ["C4412"]
 helpviewer_keywords: ["C4412"]
-ms.assetid: f28dc531-1a98-497b-a366-0a13e1bc81c7
 ---
-# Compiler Warning (level 2) C4412
+# Compiler warning (level 2, off) C4412
 
-> '*function*' : function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.
+> '*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.
 
 ## Remarks
 
-The **/clr:pure** compiler option is deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. If you have code that needs to be pure, we recommend that you port it to C#.
+The `/clr:pure` compiler option is deprecated in Visual Studio 2015, and unsupported starting in Visual Studio 2017. If you have code that needs to be CLR pure, we recommend that you port it to C#.
 
-The compiler detected a potentially unsafe situation that could result in a runtime error: a call is being made from a **/clr:pure** compiland to a function that was imported via dllimport and the function signature contains an unsafe type. A type is unsafe if it contains a member function or has a data member that is an unsafe type or an indirection to an unsafe type.
+The compiler detected a potentially unsafe situation that could result in a runtime error: a call is being made from code compiled with `/clr:pure` to a function imported via `dllimport`, and the function signature contains an unsafe type. A type is unsafe if it contains a member function or has a data member that is an unsafe type or an indirection to an unsafe type.
 
-This is unsafe because of the difference in the default calling conventions between pure and native code (or mixed native and managed). When importing (via `dllimport`) a function into a **/clr:pure** compiland, ensure that the declarations of each type in the signature are identical to those in the compiland that exports the function (being especially careful about differences in implicit calling conventions).
+This pattern is unsafe because of the difference in the default calling conventions between pure and native code (or mixed native and managed). When importing a function via `dllimport` into code compiled with `/clr:pure`, ensure that the declarations of each type in the signature are identical to the signature in the compiland that exports the function (being especially careful about differences in implicit calling conventions).
 
-A virtual member function is especially prone to give unexpected results.  However, even a non-virtual function should be tested to ensure that you get the correct results. If you are sure that you are getting the correct results, you can ignore this warning.
+A virtual member function is especially prone to give unexpected results. However, even a nonvirtual function should be tested to ensure that you get the correct results. This warning can be ignored once you ensure the result is correct.
 
-C4412 is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) and [dllexport, dllimport](../../cpp/dllexport-dllimport.md) for more information.
+C4412 is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) and [`dllexport`, `dllimport`](../../cpp/dllexport-dllimport.md).
 
 To resolve this warning, remove all functions from the type.
 
-## Examples
+## Example
 
-The following sample generates C4412.
+The following sample generates C4412:
 
 ```cpp
-// C4412.cpp
 // compile with: /c /W2 /clr:pure
 #pragma warning (default : 4412)
 
@@ -52,7 +50,7 @@ int main() {
 }
 ```
 
-The following sample is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function.
+The following sample is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function:
 
 ```cpp
 // C4412.h
@@ -70,7 +68,7 @@ struct Safe {
 };
 ```
 
-This sample exports functions with the types defined in the header file.
+This sample exports functions with the types defined in the header file:
 
 ```cpp
 // C4412_2.cpp
@@ -85,9 +83,9 @@ __declspec(dllexport) Unsafe * __cdecl func() { return new Unsafe; }
 __declspec(dllexport) Safe * __cdecl func2() { return new Safe; }
 ```
 
-The default calling convention in a **/clr:pure** compilation is different from a native compilation.  When C4412.h is included, `Test` defaults to `__clrcall`. If you compile and run this program (do not use **/c**), the program will throw an exception.
+The default calling convention in a `/clr:pure` compilation is different from a native compilation. When `C4412.h` is included, `Test` defaults to `__clrcall`.
 
-The following sample generates C4412.
+The following sample generates C4412 and throws an exception at runtime:
 
 ```cpp
 // C4412_3.cpp
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md
index fc3a8e001c..46b90ba9e2 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Warning (level 3, off) C4191"
 title: "Compiler Warning (level 3, off) C4191"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 3, off) C4191"
+ms.date: 11/04/2016
 f1_keywords: ["C4191"]
 helpviewer_keywords: ["C4191"]
 ---
@@ -46,5 +46,5 @@ int main() {
 
    fnptr1 fp3 = (fnptr1) &f2;   // C4191
    fnptr2 fp4 = (fnptr2) &f1;   // C4191
-};
+}
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md
index ea6813c8f3..8fab32eef4 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 3) C4243"
 title: "Compiler Warning (level 3) C4243"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 3) C4243"
+ms.date: 11/04/2016
 f1_keywords: ["C4243"]
 helpviewer_keywords: ["C4243"]
-ms.assetid: ca72f9ad-ce0b-43a9-a68c-106e1f8b90ef
 ---
 # Compiler Warning (level 3) C4243
 
@@ -21,7 +20,7 @@ The following sample generates C4243:
 struct B {
    int f() {
       return 0;
-   };
+   }
 };
 
 struct D : private B {};
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md
index a899f9b100..b4b8cfae66 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md
@@ -1,26 +1,24 @@
 ---
 description: "Learn more about: Compiler Warning (level 4) C4100"
 title: "Compiler Warning (level 4) C4100"
-ms.date: "11/04/2016"
+ms.date: 04/22/2025
 f1_keywords: ["C4100"]
 helpviewer_keywords: ["C4100"]
-ms.assetid: 478ed97d-e502-49e4-9afb-ac2a6c61194b
 ---
 # Compiler Warning (level 4) C4100
 
-'identifier' : unreferenced formal parameter
+> 'identifier' : unreferenced formal parameter
 
 The formal parameter is not referenced in the body of the function. The unreferenced parameter is ignored.
 
-C4100 can also be issued when code calls a destructor on a otherwise unreferenced parameter of primitive type.  This is a limitation of the Microsoft C++ compiler.
+C4100 can also be issued when code calls a destructor on an otherwise unreferenced parameter of primitive type.
 
 The following sample generates C4100:
 
 ```cpp
 // C4100.cpp
 // compile with: /W4
-void func(int i) {   // C4100, delete the unreferenced parameter to
-                     //resolve the warning
+void func(int i) {   // C4100, delete the unreferenced parameter to resolve the warning
    // i;   // Or uncomment this line to add a reference
 }
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md
index 82848a4a96..2deee61561 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4205"
 title: "Compiler Warning (level 4) C4205"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4) C4205"
+ms.date: 11/04/2016
 f1_keywords: ["C4205"]
 helpviewer_keywords: ["C4205"]
-ms.assetid: 39b5108c-7230-41b4-b2fe-2293eb6aae28
 ---
 # Compiler Warning (level 4) C4205
 
@@ -20,7 +19,7 @@ With Microsoft extensions (/Ze), **`static`** functions can be declared inside a
 void func1()
 {
    static int func2();  // C4205
-};
+}
 
 int main()
 {
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md
index bf894af558..dd344270a6 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4220"
 title: "Compiler Warning (level 4) C4220"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4) C4220"
+ms.date: 11/04/2016
 f1_keywords: ["C4220"]
 helpviewer_keywords: ["C4220"]
-ms.assetid: aba18868-825f-4763-9af6-3296406a80e4
 ---
 # Compiler Warning (level 4) C4220
 
@@ -23,7 +22,7 @@ int ( *pFunc2) ( int a, int b);
 
 int main()
 {
-   if ( pFunc1 != pFunc2 ) {};  // C4220
+   if ( pFunc1 != pFunc2 ) {}   // C4220
 }
 ```
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md
index 7a9386692c..dbcbdcc801 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Compiler Warning (level 4, off) C4254"
 title: "Compiler Warning (level 4, off) C4254"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4, off) C4254"
+ms.date: 11/04/2016
 f1_keywords: ["C4254"]
 helpviewer_keywords: ["C4254"]
 ---
@@ -31,5 +31,5 @@ int main() {
    x->a = 4;
    x->a = x->b;    // OK
    x->b = x->a;    // C4254
-};
+}
 ```
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md
index 071fc9c192..a97330018c 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md
@@ -1,16 +1,15 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4400"
-title: "Compiler Warning (level 4) C4400"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4, error) C4400"
+title: "Compiler warning (level 4, error) C4400"
+ms.date: "1/22/2025"
 f1_keywords: ["C4400"]
 helpviewer_keywords: ["C4400"]
-ms.assetid: f135fe98-4f92-4e07-9d71-2621b36ee755
 ---
-# Compiler Warning (level 4) C4400
+# Compiler warning (level 4, error) C4400
 
-'type' : const/volatile qualifiers on this type are not supported
+> '*type*': `const`/`volatile` qualifiers on this type are not supported
 
-The [const](../../cpp/const-cpp.md)and [volatile](../../cpp/volatile-cpp.md)qualifiers will not work with variables of common language runtime types.
+The [`const`](../../cpp/const-cpp.md) and [`volatile`](../../cpp/volatile-cpp.md) qualifiers don't work with common language runtime typed variables.
 
 ## Example
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md
index c60d859b88..8b30d0111b 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md
@@ -1,18 +1,17 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4435"
-title: "Compiler Warning (level 4) C4435"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4, off) C4435"
+title: "Compiler Warning (level 4, off) C4435"
+ms.date: "1/22/2025"
 f1_keywords: ["C4435"]
 helpviewer_keywords: ["C4435"]
-ms.assetid: a04524af-2b71-4ff9-9729-d9d1d1904ed7
 ---
-# Compiler Warning (level 4) C4435
+# Compiler warning (level 4, off) C4435
 
-'class1' : Object layout under /vd2 will change due to virtual base 'class2'
+> '*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*'
 
-This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information.
+This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md).
 
-Under the default compile option of /vd1, the derived class does not have a `vtordisp` field for the indicated virtual base.  If /vd2 or `#pragma vtordisp(2)` is in effect, a `vtordisp` field will be present, changing the object layout.  This can lead to binary compatibility problems if interacting modules are compiled with different `vtordisp` settings.
+Under the default compile option of `/vd1`, the derived class doesn't have a `vtordisp` field for the indicated virtual base. If `/vd2` or `#pragma vtordisp(2)` is in effect, a `vtordisp` field is present, changing the object layout. This difference can lead to binary compatibility problems if interacting modules are compiled with different `vtordisp` settings.
 
 ## Example
 
@@ -34,5 +33,5 @@ class B : public virtual A  // C4435
 
 ## See also
 
-[vtordisp](../../preprocessor/vtordisp.md)<br/>
-[/vd (Disable Construction Displacements)](../../build/reference/vd-disable-construction-displacements.md)
+[`vtordisp`](../../preprocessor/vtordisp.md)\
+[`/vd` (Disable Construction Displacements)](../../build/reference/vd-disable-construction-displacements.md)
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md
index a2207a1ad8..6a5a36565b 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md
@@ -1,32 +1,28 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4437"
-title: "Compiler Warning (level 4) C4437"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4437"
+title: "Compiler warning (level 1 and level 4, off) C4437"
+ms.date: "1/22/2025"
 f1_keywords: ["C4437"]
 helpviewer_keywords: ["C4437"]
-ms.assetid: dc07e350-20eb-474c-a7ad-f841ae7ec339
 ---
-# Compiler Warning (level 4) C4437
+# Compiler warning (level 1 and level 4, off) C4437
 
-dynamic_cast from virtual base 'class1' to 'class2' could fail in some contexts        Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect
+> `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts
 
-This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information.
+This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md).
 
-The compiler has encountered a **`dynamic_cast`** operation with the following characteristics.
+A `dynamic_cast` operation is used when:
 
 - The cast is from a base class pointer to a derived class pointer.
-
 - The derived class virtually inherits the base class.
+- The derived class doesn't have a `vtordisp` field for the virtual base.
+- The cast is found in a constructor or destructor of the derived class, or a class that inherits from the derived class. Otherwise, compiler warning [C4436](compiler-warning-level-1-c4436.md) is emitted issued of C4435.
 
-- The derived class does not have a `vtordisp` field for the virtual base.
-
-- The cast is not found in a constructor or destructor of the derived class, or some class which further inherits from the derived class (otherwise, compiler warning C4436 will be issued).
-
-The warning indicates that the **`dynamic_cast`** might not perform correctly if it is operating on a partially-constructed object.  This situation occurs when the enclosing function is called from a constructor or destructor of a class that inherits the derived class that is named in the warning.  If the derived class that is named in the warning is never further derived, or the enclosing function is not called during object construction or destruction, the warning can be ignored.
+This warning indicates that the `dynamic_cast` might not perform correctly when applied to a partially constructed object. This situation occurs when the enclosing function is called from a constructor or destructor of a class that inherits from *derived_class*. You can ignore the error if *derived_class* is never further derived, or the enclosing function isn't called during object construction or destruction.
 
 ## Example
 
-The following sample generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field.
+The following sample generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field:
 
 ```cpp
 // C4437.cpp
@@ -76,6 +72,6 @@ int main()
 
 ## See also
 
-[dynamic_cast Operator](../../cpp/dynamic-cast-operator.md)<br/>
-[vtordisp](../../preprocessor/vtordisp.md)<br/>
-[Compiler Warning (level 1) C4436](../../error-messages/compiler-warnings/compiler-warning-level-1-c4436.md)
+[`dynamic_cast` Operator](../../cpp/dynamic-cast-operator.md)\
+[`vtordisp`](../../preprocessor/vtordisp.md)\
+[Compiler Warning (level 1) C4436](compiler-warning-level-1-c4436.md)
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md
index 289950c660..277e3e6f83 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Compiler Warning (level 4) C4626"
 title: "Compiler Warning (level 4) C4626"
-ms.date: "11/04/2016"
+description: "Learn more about: Compiler Warning (level 4) C4626"
+ms.date: 11/04/2016
 f1_keywords: ["C4626"]
 helpviewer_keywords: ["C4626"]
-ms.assetid: 7f822ff4-a4a3-4f17-b45b-e8b7b4659a14
 ---
 # Compiler Warning (level 4) C4626
 
@@ -16,7 +15,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default](
 
 The following sample generates C4626 and shows how to fix it:
 
-```
+```cpp
 // C4626
 // compile with: /W4
 #pragma warning(default : 4626)
diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md
index 6fa2feebb0..d31d01fd41 100644
--- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md
+++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md
@@ -1,70 +1,65 @@
 ---
 description: "Learn more about: Compiler Warning (level 4) C4706"
 title: "Compiler Warning (level 4) C4706"
-ms.date: "11/04/2016"
+ms.date: "3/5/2025"
 f1_keywords: ["C4706"]
 helpviewer_keywords: ["C4706"]
-ms.assetid: 89cd3f4f-812c-4a4b-9426-65a5a6d1b99c
 ---
 # Compiler Warning (level 4) C4706
 
-assignment within conditional expression
+> assignment used as a condition
 
-The test value in a conditional expression was the result of an assignment.
+The test value in a conditional expression is the result of an assignment.
 
 An assignment has a value (the value on the left side of the assignment) that can be used legally in another expression, including a test expression.
 
 The following sample generates C4706:
 
 ```cpp
-// C4706a.cpp
 // compile with: /W4
 int main()
 {
    int a = 0, b = 0;
-   if ( a  = b ) // C4706
+   if (a = b) // C4706
    {
    }
 }
 ```
 
-The warning will occur even if you double the parentheses around the test condition:
+Suppress the warning with `((`*expression*`))`. For example:
 
 ```cpp
-// C4706b.cpp
 // compile with: /W4
 int main()
 {
    int a = 0, b = 0;
-   if ( ( a  =  b ) ) // C4706
+   if ((a = b)) // No warning
    {
    }
 }
 ```
 
-If your intention is to test a relation and not to make an assignment, use the `==` operator. For example, the following line tests whether a and b are equal:
+If your intention is to test a relation, not to make an assignment, use the `==` operator. For example, the following tests whether a and b are equal:
 
 ```cpp
-// C4706c.cpp
 // compile with: /W4
 int main()
 {
    int a = 0, b = 0;
-   if ( a == b )
+   if (a == b)
    {
    }
 }
 ```
 
-If you intend to make your test value the result of an assignment, test to ensure that the assignment is non-zero or not null. For example, the following code will not generate this warning:
+If you intend to make your test value the result of an assignment, test to ensure that the assignment is non-zero or non-null. For example, the following code doesn't generate this warning:
 
 ```cpp
-// C4706d.cpp
 // compile with: /W4
 int main()
 {
    int a = 0, b = 0;
-   if ( ( a = b ) != 0 )
+   if ((a = b) != 0)
    {
    }
 }
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md
index 87f1ff8efc..f68e772b83 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md
@@ -12,48 +12,50 @@ These versions of the compiler introduced new warnings:
 
 | Product | Compiler version number |
 |--|--|
-| Visual Studio 2002 | 13.00.9466 |
-| Visual Studio 2003 | 13.10.3077 |
-| Visual Studio 2005 | 14.00.50727.762 |
-| Visual Studio 2008 | 15.00.21022.08 |
-| Visual Studio 2010 | 16.00.40219.01 |
-| Visual Studio 2012 | 17.00.51106.1 |
-| Visual Studio 2013 | 18.00.21005.1 |
-| Visual Studio 2015 RTM | 19.00.23026.0 |
-| Visual Studio 2015 Update 1 | 19.00.23506.0 |
-| Visual Studio 2015 Update 2 | 19.00.23918.0 |
-| Visual Studio 2015 Update 3 | 19.00.24215.1 |
-| Visual Studio 2017 RTM | 19.10.25017.0 |
-| Visual Studio 2017 version 15.3 | 19.11.25506.0 |
-| Visual Studio 2017 version 15.5 | 19.12.25830.0 |
-| Visual Studio 2017 version 15.6 | 19.13.26128.0 |
-| Visual Studio 2017 version 15.7 | 19.14.26428.0 |
-| Visual Studio 2017 version 15.8 | 19.15.26726.0 |
-| Visual Studio 2017 version 15.9 | 19.16.26926.0 |
-| Visual Studio 2019 RTM | 19.20.27004.0 |
-| Visual Studio 2019 version 16.1 | 19.21.27702.0 |
-| Visual Studio 2019 version 16.2 | 19.22.27905.0 |
-| Visual Studio 2019 version 16.3 | 19.23.28105.0 |
-| Visual Studio 2019 version 16.4 | 19.24.28314.0 |
-| Visual Studio 2019 version 16.5 | 19.25.28610.0 |
-| Visual Studio 2019 version 16.6 | 19.26.28805.0 |
-| Visual Studio 2019 version 16.7 | 19.27.29112.0 |
-| Visual Studio 2019 version 16.8 | 19.28.29333.0 |
-| Visual Studio 2019 version 16.9 | 19.28.29700.0 |
-| Visual Studio 2019 version 16.10 | 19.29.30000.0 |
-| Visual Studio 2019 version 16.11 | 19.29.30100.0 |
-| Visual Studio 2022 version 17.0 RTW | 19.30 |
-| Visual Studio 2022 version 17.1 | 19.31 |
-| Visual Studio 2022 version 17.2 | 19.32 |
-| Visual Studio 2022 version 17.3 | 19.33 |
-| Visual Studio 2022 version 17.4 | 19.34 |
-| Visual Studio 2022 version 17.5 | 19.35 |
-| Visual Studio 2022 version 17.6 | 19.36 |
-| Visual Studio 2022 version 17.7 | 19.37 |
-| Visual Studio 2022 version 17.8 | 19.38 |
-| Visual Studio 2022 version 17.9 | 19.39 |
+| Visual Studio 2022 version 17.13 | 19.43 |
+| Visual Studio 2022 version 17.12 | 19.42 |
+| Visual Studio 2022 version 17.11 | 19.41 |
 | Visual Studio 2022 version 17.10 | 19.40 |
-
+| Visual Studio 2022 version 17.9 | 19.39 |
+| Visual Studio 2022 version 17.8 | 19.38 |
+| Visual Studio 2022 version 17.7 | 19.37 |
+| Visual Studio 2022 version 17.6 | 19.36 |
+| Visual Studio 2022 version 17.5 | 19.35 |
+| Visual Studio 2022 version 17.4 | 19.34 |
+| Visual Studio 2022 version 17.3 | 19.33 |
+| Visual Studio 2022 version 17.2 | 19.32 |
+| Visual Studio 2022 version 17.1 | 19.31 |
+| Visual Studio 2022 version 17.0 RTW | 19.30 |
+| Visual Studio 2019 version 16.11 | 19.29.30100.0 |
+| Visual Studio 2019 version 16.10 | 19.29.30000.0 |
+| Visual Studio 2019 version 16.9 | 19.28.29700.0 |
+| Visual Studio 2019 version 16.8 | 19.28.29333.0 |
+| Visual Studio 2019 version 16.7 | 19.27.29112.0 |
+| Visual Studio 2019 version 16.6 | 19.26.28805.0 |
+| Visual Studio 2019 version 16.5 | 19.25.28610.0 |
+| Visual Studio 2019 version 16.4 | 19.24.28314.0 |
+| Visual Studio 2019 version 16.3 | 19.23.28105.0 |
+| Visual Studio 2019 version 16.2 | 19.22.27905.0 |
+| Visual Studio 2019 version 16.1 | 19.21.27702.0 |
+| Visual Studio 2019 RTM | 19.20.27004.0 |
+| Visual Studio 2017 version 15.9 | 19.16.26926.0 |
+| Visual Studio 2017 version 15.8 | 19.15.26726.0 |
+| Visual Studio 2017 version 15.7 | 19.14.26428.0 |
+| Visual Studio 2017 version 15.6 | 19.13.26128.0 |
+| Visual Studio 2017 version 15.5 | 19.12.25830.0 |
+| Visual Studio 2017 version 15.3 | 19.11.25506.0 |
+| Visual Studio 2017 RTM | 19.10.25017.0 |
+| Visual Studio 2015 Update 3 | 19.00.24215.1 |
+| Visual Studio 2015 Update 2 | 19.00.23918.0 |
+| Visual Studio 2015 Update 1 | 19.00.23506.0 |
+| Visual Studio 2015 RTM | 19.00.23026.0 |
+| Visual Studio 2013 | 18.00.21005.1 |
+| Visual Studio 2012 | 17.00.51106.1 |
+| Visual Studio 2010 | 16.00.40219.01 |
+| Visual Studio 2008 | 15.00.21022.08 |
+| Visual Studio 2005 | 14.00.50727.762 |
+| Visual Studio 2003 | 13.10.3077 |
+| Visual Studio 2002 | 13.00.9466 |
 
 You can specify only the major number, the major and minor numbers, or the major, minor, and build numbers to the **`/Wv`** option. The compiler reports all warnings that match versions that begin with the specified number. It suppresses all warnings for versions greater than the specified number. For example, **`/Wv:17`** reports warnings introduced in or before any version of Visual Studio 2012, and suppresses warnings introduced by any compiler from Visual Studio 2013 (version 18) or later. To suppress warnings introduced in Visual Studio 2015 update 2 and later, you can use **`/Wv:19.00.23506`**. Use **`/Wv:19.11`** to report the warnings introduced in any version of Visual Studio before Visual Studio 2017 version 15.5, but suppress warnings introduced in Visual Studio 2017 version 15.5 and later.
 
@@ -61,9 +63,35 @@ The following sections list the warnings introduced by each version of Visual C+
 
 ::: moniker range=">= msvc-170"
 
+## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43)
+
+These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.42`**.
+
+| Warning | Message |
+|--|--|
+|C5277| type trait optimization for '*class name*' is disabled
+|C5308| Modifying reserved macro name '*macro name*' may cause undefined behavior
+|C5309| literal suffix '*name*' requires at least '*language version*'
+
+## Warnings introduced in Visual Studio 2022 version 17.12 (compiler version 19.42)
+
+These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.41`**.
+
+| Warning | Message |
+|--|--|
+|C5086| Arch setting *arch* and vector length *number* are not allowed. Using the default vector length - *number*.
+|C5276| `/experimental:ifcDebugRecords` currently requires `/Z7` to be enabled.  Please recompile with `/Z7` enabled.
+|C5306| parameter array behavior change: overload '*identifier 1*' resolved to '*identifier 2*'; previously, it would have resolved to '*identifier 3*'. Use `/clr:ECMAParamArray` to revert to old behavior
+|C5307| '*function*': argument (*argument number*) converted from '*type 1*' to '*type 2*'. Missing '`L`' encoding-prefix for character literal?
+
+
+## Warnings introduced in Visual Studio 2022 version 17.11 (compiler version 19.41)
+
+There were no new warnings introduced in 17.11
+
 ## Warnings introduced in Visual Studio 2022 version 17.10 (compiler version 19.40)
 
-These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.40`**.
+These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.39`**.
 
 | Warning | Message |
 |--|--|
@@ -78,7 +106,7 @@ These warnings, and all warnings in later versions, are suppressed by using the
 
 ## Warnings introduced in Visual Studio 2022 version 17.9 (compiler version 19.39)
 
-These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.39`**.
+These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.38`**.
 
 | Warning | Message |
 |--|--|
@@ -87,7 +115,7 @@ These warnings, and all warnings in later versions, are suppressed by using the
 
 ## Warnings introduced in Visual Studio 2022 version 17.8 (compiler version 19.38)
 
-These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.38`**.
+These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.37`**.
 
 | Warning | Message |
 |--|--|
@@ -925,7 +953,7 @@ These warnings, and all warnings in later versions, are suppressed by using the
 | [C4792](compiler-warning-level-3-c4792.md) | `function 'function' declared using sysimport and referenced from native code; import library required to link` |
 | [C4794](compiler-warning-level-1-c4794.md) | `segment of thread local storage variable 'name' changed from 'segment' to 'segment'` |
 | C4798 | `native code generated for p-code function 'name' with exception handler or unwind semantics` |
-| [C4799](compiler-warning-level-1-c4799.md) | `function 'name' has no EMMS instruction` |
+| [C4799](compiler-warning-level-1-c4799.md) | `function 'function' has no EMMS instruction` |
 | [C4803](compiler-warning-level-1-c4803.md) | `'declaration': the raise method has a different storage class from that of the event, 'declaration'` |
 | [C4810](compiler-warning-level-1-c4810.md) | `value of pragma pack(show) == number` |
 | [C4811](compiler-warning-level-1-c4811.md) | `value of pragma conform(forScope, show) == value` |
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md
index 6f687f9a8c..83f1da2def 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md
@@ -1,8 +1,9 @@
 ---
-description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199"
 title: "Microsoft C/C++ compiler (MSVC) warnings C4000 through C4199"
+description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199"
 ms.date: "04/21/2019"
-f1_keywords: ["C4000", "C4035", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"]
+f1_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"]
+helpviewer_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"]
 ---
 # Microsoft C/C++ compiler warnings C4000 through C4199
 
@@ -15,8 +16,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |Warning|Message|
 |-------------|-------------|
 |[Compiler warning (level 4, no longer emitted) C4001](compiler-warning-level-4-c4001.md)|nonstandard extension 'single line comment' was used|
-|[Compiler warning (level 1, Error) C4002](compiler-warning-level-1-c4002.md)|too many arguments for function-like macro invocation '*identifier*'|
-|[Compiler warning (level 1, Error) C4003](compiler-warning-level-1-c4003.md)|not enough arguments for function-like macro invocation '*identifier*'|
+|[Compiler warning (level 1, error) C4002](compiler-warning-level-1-c4002.md)|too many arguments for function-like macro invocation '*identifier*'|
+|[Compiler warning (level 1, error) C4003](compiler-warning-level-1-c4003.md)|not enough arguments for function-like macro invocation '*identifier*'|
 |[Compiler warning (level 1) C4005](compiler-warning-level-1-c4005.md)|'*identifier*': macro redefinition|
 |[Compiler warning (level 1) C4006](compiler-warning-level-1-c4006.md)|`#undef` expected an identifier|
 |[Compiler warning (level 3) C4007](compiler-warning-level-2-c4007.md)|'*function*': must be '*attribute*'|
@@ -27,10 +28,10 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 3) C4018](compiler-warning-level-3-c4018.md)|'*expression*': signed/unsigned mismatch|
 |[Compiler warning (level 4) C4019](compiler-warning-level-4-c4019.md)|empty statement at global scope|
 |[Compiler warning (level 1) C4020](compiler-warning-level-1-c4020.md)|'function': too many actual parameters|
-|[Compiler warning (level 1) C4022](compiler-warning-level-1-c4022.md)|'*function*': pointer mismatch for actual parameter '*parameter_number*'|
-|Compiler warning (level 1) C4023|'*function*': based pointer passed to unprototyped function: parameter '*parameter_number*'|
-|[Compiler warning (level 1) C4024](compiler-warning-level-1-c4024.md)|'*function*': different types for formal and actual parameter '*parameter_number*'|
-|[Compiler warning (level 1) C4025](compiler-warning-level-1-c4025.md)|'*function*': based pointer passed to function with variable arguments: parameter '*parameter_number*'|
+|[Compiler warning (level 1) C4022](compiler-warning-level-1-c4022.md)|'*function*': pointer mismatch for actual parameter *parameter_number*|
+|Compiler warning (level 1) C4023|'*function*': based pointer passed to unprototyped function: parameter *parameter_number*|
+|[Compiler warning (level 1) C4024](compiler-warning-level-1-c4024.md)|'*function*': different types for formal and actual parameter *parameter_number*|
+|[Compiler warning (level 1) C4025](compiler-warning-level-1-c4025.md)|'*function*': based pointer passed to function with variable arguments: parameter *parameter_number*|
 |[Compiler warning (level 1) C4026](compiler-warning-level-1-c4026.md)|function declared with formal parameter list|
 |[Compiler warning (level 1) C4027](compiler-warning-level-1-c4027.md)|function declared without formal parameter list|
 |[Compiler warning (level 1) C4028](compiler-warning-level-1-c4028.md)|formal parameter *parameter_number* different from declaration|
@@ -68,7 +69,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 3) C4073](compiler-warning-level-3-c4073.md)|initializers put in library initialization area|
 |[Compiler warning (level 1) C4074](compiler-warning-level-1-c4074.md)|initializers put in compiler reserved initialization area|
 |[Compiler warning (level 1) C4075](compiler-warning-level-1-c4075.md)|initializers put in unrecognized initialization area|
-|[Compiler warning (level 1) C4076](compiler-warning-level-1-c4076.md)|'*type_modifier*': can't be used with type '*typename*'|
+|[Compiler warning (level 1) C4076](compiler-warning-level-1-c4076.md)|'*type_modifier*': cannot be used with type '*typename*'|
 |[Compiler warning (level 1) C4077](compiler-warning-level-1-c4077.md)|unknown check_stack option|
 |[Compiler warning (level 1) C4079](compiler-warning-level-1-c4079.md)|unexpected token '*token*'|
 |[Compiler warning (level 1) C4080](compiler-warning-level-1-c4080.md)|expected identifier for segment name; found '*symbol*'|
@@ -77,8 +78,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1) C4085](compiler-warning-level-1-c4085.md)|expected pragma parameter to be '`on`' or '`off`'|
 |[Compiler warning (level 1) C4086](compiler-warning-level-1-c4086.md)|expected pragma parameter to be '1', '2', '4', '8', or '16'|
 |[Compiler warning (level 1) C4087](compiler-warning-level-1-c4087.md)|'function': declared with '`void`' parameter list|
-|[Compiler warning (level 1) C4088](compiler-warning-level-1-c4088.md)|'*function*': pointer mismatch in actual parameter '*parameter_number*', formal parameter '*parameter_number*'|
-|[Compiler warning (level 1) C4089](compiler-warning-level-1-c4089.md)|'*function*': different types in actual parameter '*parameter_number*', formal parameter '*parameter_number*'|
+|[Compiler warning (level 1) C4088](compiler-warning-level-1-c4088.md)|'*function*': pointer mismatch in actual parameter *parameter_number*, formal parameter *parameter_number*|
+|[Compiler warning (level 1) C4089](compiler-warning-level-1-c4089.md)|'*function*': different types in actual parameter *parameter_number*, formal parameter *parameter_number*|
 |[Compiler warning (level 1) C4090](compiler-warning-level-1-c4090.md)|'*operation*': different '*modifier*' qualifiers|
 |[Compiler warning (level 1 and level 2) C4091](compiler-warning-level-1-c4091.md)|'*keyword*': ignored on left of '*type*' when no variable is declared|
 |[Compiler warning (level 4) C4092](compiler-warning-level-4-c4092.md)|sizeof returns 'unsigned long'|
@@ -87,12 +88,12 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1) C4097](compiler-warning-level-1-c4097.md)|expected pragma parameter to be '`restore`' or '`off`'|
 |[Compiler warning (level 1) C4098](compiler-warning-level-1-c4098.md)|'*function*': '`void`' function returning a value|
 |[Compiler warning (level 2) C4099](compiler-warning-level-2-c4099.md)|'*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*'|
-|[Compiler warning (level 4) C4100](compiler-warning-level-4-c4100.md)|'*identifier*': unreferenced formal parameter|
+|[Compiler warning (level 4) C4100](compiler-warning-level-4-c4100.md)|'*identifier*': unreferenced parameter|
 |[Compiler warning (level 3 and level 4) C4101](compiler-warning-level-3-c4101.md)|'*identifier*': unreferenced local variable|
 |[Compiler warning (level 3) C4102](compiler-warning-level-3-c4102.md)|'*label*': unreferenced label|
 |[Compiler warning (level 1) C4103](compiler-warning-level-1-c4103.md)|alignment changed after including header, may be due to missing `#pragma pack(pop)`|
 |[Compiler warning (level 1) C4109](compiler-warning-level-1-c4109.md)|unexpected identifier '*identifier*'|
-|[Compiler warning (level 1 and level 4) C4112](compiler-warning-levels-1-and-4-c4112.md)|`#line` requires an integer between 1 and '*line_count*'|
+|[Compiler warning (level 1 and level 4) C4112](compiler-warning-levels-1-and-4-c4112.md)|`#line` requires an integer between 1 and *line_count*|
 |[Compiler warning (level 1) C4113](compiler-warning-level-1-c4113.md)|'*identifier1*' differs in parameter lists from '*identifier2*'|
 |[Compiler warning (level 1) C4114](compiler-warning-level-1-c4114.md)|same type qualifier used more than once|
 |[Compiler warning (level 1 and level 4) C4115](compiler-warning-levels-1-and-4-c4115.md)|'*type*': named type definition in parentheses|
@@ -113,7 +114,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1 and level 3) C4133](compiler-warning-level-3-c4133.md)|'*expression*': incompatible types - from '*type1*' to '*type2*'|
 |Compiler warning C4137|'function': no return value from floating-point function|
 |[Compiler warning (level 1) C4138](compiler-warning-level-1-c4138.md)|'`*/`' found outside of comment|
-|[Compiler warning (level 1, Error) C4141](compiler-warning-level-1-c4141.md)|'*modifier*': used more than once|
+|[Compiler warning (level 1, error) C4141](compiler-warning-level-1-c4141.md)|'*modifier*': used more than once|
 |[Compiler warning (level 1) C4142](compiler-warning-level-1-c4142.md)|'*identifier*': benign redefinition of type|
 |[Compiler warning (level 1) C4143](compiler-warning-level-1-c4143.md)|`pragma` 'same_seg' not supported; use `__based` allocation|
 |[Compiler warning (level 1) C4144](compiler-warning-level-1-c4144.md)|'*expression*': relational expression as switch expression|
@@ -126,10 +127,10 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1) C4155](compiler-warning-level-1-c4155.md)|deletion of an array expression without using the array form of 'delete'|
 |[Compiler warning (level 2) C4156](compiler-warning-level-2-c4156.md)|deletion of an array expression without using the array form of 'delete'; array form substituted|
 |[Compiler warning (level 1) C4157](compiler-warning-level-1-c4157.md)|pragma was ignored by C compiler|
-|[Compiler warning (level 1) C4158](compiler-warning-level-1-c4158.md)|assuming `#pragma pointers_to_members(full_generality, `'*inheritance_type*'`)`|
-|[Compiler warning (level 3) C4159](compiler-warning-level-3-c4159.md)|`#pragma `'*pragma*'`(pop,...)`: has popped previously pushed identifier '*identifier*'|
-|[Compiler warning (level 1) C4160](compiler-warning-level-1-c4160.md)|`#pragma `'*pragma*'`(pop,...)`: did not find previously pushed identifier '*identifier*'|
-|[Compiler warning (level 3) C4161](compiler-warning-level-3-c4161.md)|`#pragma `'*pragma*'`(pop...)`: more pops than pushes|
+|[Compiler warning (level 1) C4158](compiler-warning-level-1-c4158.md)|assuming `#pragma pointers_to_members(full_generality, `*inheritance_type*`)`|
+|[Compiler warning (level 3) C4159](compiler-warning-level-3-c4159.md)|`#pragma `*pragma*`(pop,...)`: has popped previously pushed identifier '*identifier*'|
+|[Compiler warning (level 1) C4160](compiler-warning-level-1-c4160.md)|`#pragma `*pragma*`(pop,...)`: did not find previously pushed identifier '*identifier*'|
+|[Compiler warning (level 3) C4161](compiler-warning-level-3-c4161.md)|`#pragma `*pragma*`(pop...)`: more pops than pushes|
 |[Compiler warning (level 1) C4162](compiler-warning-level-1-c4162.md)|'*identifier*': no function with C linkage found|
 |[Compiler warning (level 1) C4163](compiler-warning-level-1-c4163.md)|'*identifier*': not available as an intrinsic function|
 |[Compiler warning (level 1) C4164](compiler-warning-level-1-c4164.md)|'*function*': intrinsic function not declared|
@@ -137,7 +138,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1) C4166](compiler-warning-level-1-c4166.md)|illegal calling convention for constructor/destructor|
 |[Compiler warning (level 1) C4167](compiler-warning-level-1-c4167.md)|'*function*': only available as an intrinsic function|
 |[Compiler warning (level 1) C4168](compiler-warning-level-1-c4168.md)|compiler limit: out of debugger types, delete program database '*database*' and rebuild|
-|[Compiler warning (level 1) C4172](compiler-warning-level-1-c4172.md)|returning address of local variable or temporary *optional_context*|
+|[Compiler warning (level 1) C4172](compiler-warning-level-1-c4172.md)|returning address of local variable or temporary : *optional_context*|
 |[Compiler warning (level 1) C4174](compiler-warning-level-1-c4174.md)|'*name*': not available as a `#pragma component`|
 |[Compiler warning (level 1) C4175](compiler-warning-level-1-c4175.md)|`#pragma component(browser, on)`: browser info must initially be specified on the command line|
 |[Compiler warning (level 1) C4176](compiler-warning-level-1-c4176.md)|'*subcomponent*': unknown subcomponent for `#pragma component` browser|
@@ -148,12 +149,12 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |Compiler warning C4181|qualifier applied to reference type; ignored|
 |[Compiler warning (level 1) C4182](compiler-warning-level-1-c4182.md)|`#include` nesting level is *nest_count* deep; possible infinite recursion|
 |[Compiler warning (level 1) C4183](compiler-warning-level-1-c4183.md)|'*identifier*': missing return type; assumed to be a member function returning '`int`'|
-|[Compiler warning (level 1) C4185](compiler-warning-level-1-c4185.md)|ignoring unknown `#import` attribute '*attribute*'|
-|[Compiler warning (level 1) C4186](compiler-warning-level-1-c4186.md)|`#`*import* attribute '*attribute*' requires '*argument_count*' arguments; ignored|
+|[Compiler warning (level 1) C4185](compiler-warning-level-1-c4185.md)|ignoring unknown `#`*import* attribute '*attribute*'|
+|[Compiler warning (level 1) C4186](compiler-warning-level-1-c4186.md)|`#`*import* attribute '*attribute*' requires *argument_count* arguments; ignored|
 |[Compiler warning (level 1) C4187](compiler-warning-level-1-c4187.md)|`#import` attributes '*attribute1*' and '*attribute2*' are incompatible; both ignored|
 |Compiler warning (level 1) C4188|constant expression is not integral|
 |[Compiler warning (level 3 and level 4) C4189](compiler-warning-level-4-c4189.md)|'*identifier*': local variable is initialized but not referenced|
-|[Compiler warning (level 1) C4190](compiler-warning-level-1-c4190.md)|'*identifier1*' has C-linkage specified, but returns UDT '*identifier2*' which is incompatible with C|
+|[Compiler warning (level 1) C4190](compiler-warning-level-1-c4190.md)|'*identifier1*' has C-linkage specified, but returns '*identifier2*' which is incompatible with C|
 |[Compiler warning (level 3, off) C4191](compiler-warning-level-3-c4191.md)|'*operation*': unsafe conversion from '*type_of_expression*' to '*type_required*'<br/>Making a function call using the resulting pointer may cause your program to fail|
 |[Compiler warning (level 3) C4192](compiler-warning-level-3-c4192.md)|automatically excluding '*identifier*' while importing type library '*library*'|
 |Compiler warning (level 3) C4193|`#pragma warning(pop)`: no matching '`#pragma warning(push)`'|
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md
index 276cb8c9c9..08698aef3a 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md
@@ -3,6 +3,7 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4200 through C4399"
 description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4200 through C4399."
 ms.date: 10/18/2020
 f1_keywords: ["C4203", "C4277", "C4279", "C4298", "C4299", "C4301", "C4303", "C4314", "C4315", "C4317", "C4318", "C4321", "C4322", "C4323", "C4327", "C4328", "C4330", "C4338", "C4352", "C4362", "C4367", "C4370", "C4380", "C4387"]
+helpviewer_keywords: ["C4203", "C4277", "C4279", "C4298", "C4299", "C4301", "C4303", "C4314", "C4315", "C4317", "C4318", "C4321", "C4322", "C4323", "C4327", "C4328", "C4330", "C4338", "C4352", "C4362", "C4367", "C4370", "C4380", "C4387"]
 ---
 # Microsoft C/C++ compiler warnings C4200 through C4399
 
@@ -54,7 +55,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 2 and level 3 and level 4) C4244](compiler-warning-levels-3-and-4-c4244.md)|'*conversion_type*': conversion from '*type1*' to '*type2*', possible loss of data|
 |[Compiler warning (level 4) C4245](compiler-warning-level-4-c4245.md)|'*conversion_type*': conversion from '*type1*' to '*type2*', signed/unsigned mismatch|
 |[Compiler warning (level 2) C4250](compiler-warning-level-2-c4250.md)|'*classname*': inherits '*base_classname*::*member*' via dominance|
-|[Compiler warning (level 2) C4251](compiler-warning-level-1-c4251.md)|'*object_type1*': '*identifier1*' needs to have dll-interface to be used by clients of '*identfier2*'|
+|[Compiler warning (level 2) C4251](compiler-warning-level-1-c4251.md)|'*type*': '*type1*' needs to have dll-interface to be used by clients of '*type2*'|
 |[Compiler warning (level 4, off) C4254](compiler-warning-level-4-c4254.md)|'*operator*': conversion from '*type1*':'*field_bits*' to '*type2*':'*field_bits*', possible loss of data|
 |[Compiler warning (level 4, off) C4255](compiler-warning-level-4-c4255.md)|'*function*': no function prototype given: converting '()' to '(void)'|
 |[Compiler warning (level 4) C4256](compiler-warning-level-4-c4256.md)|'*function*': constructor for class with virtual bases has '`...`'; calls may not be compatible with older versions of Visual C++|
@@ -125,7 +126,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 4) C4336](compiler-warning-level-4-c4336.md)|import cross-referenced type library '*library1*' before importing '*library2*'|
 |[Compiler warning (level 4) C4337](compiler-warning-level-4-c4337.md)|cross-referenced type library '*library1*' in '*library2*' is being automatically imported|
 |Compiler warning (level 4) C4338|#pragma *directive*: standard section '*section*' is used|
-|[Compiler warning (level 4, off) C4339](compiler-warning-level-4-c4339.md)|'*type*': use of undefined type detected in 'WinRT\|CLR' meta-data - use of this type may lead to a runtime exception|
+|[Compiler warning (level 4, off) C4339](compiler-warning-level-4-c4339.md)|'*type*': use of undefined type detected in *WinRT/CLR* meta-data - use of this type may lead to a runtime exception|
 |[Compiler warning (level 1) C4340](compiler-warning-level-1-c4340.md)|'*value*': value wrapped from positive to negative value|
 |[Compiler warning (level 1, off, no longer emitted) C4342](compiler-warning-level-1-c4342.md)|behavior change: '*function*' called, but a member operator was called in previous versions|
 |[Compiler warning (level 4) C4343](compiler-warning-level-4-c4343.md)|`#pragma optimize("g",off)` overrides `/Og` option|
@@ -135,7 +136,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 |[Compiler warning (level 1, off, no longer emitted) C4350](compiler-warning-level-1-c4350.md)|behavior change: '*member1*' called instead of '*member2*'|
 |Compiler warning (level 1) C4352|'*identifier*': intrinsic function already defined|
 |[Compiler warning (level 1) C4353](compiler-warning-level-1-c4353.md)|nonstandard extension used: constant 0 as function expression.  Use '__noop' function intrinsic instead|
-|[Compiler warning (level 1 and level 4, off) C4355](compiler-warning-c4355.md)Compiler warning (level 1 and level 4) C4355|'this': used in base member initializer list|
+|[Compiler warning (level 1 and level 4, off) C4355](compiler-warning-c4355.md)|'this': used in base member initializer list|
 |[Compiler warning (level 2) C4356](compiler-warning-level-2-c4356.md)|'*member*': static data member cannot be initialized via derived class|
 |[Compiler warning (level 3) C4357](compiler-warning-level-3-c4357.md)|param array argument found in formal argument list for delegate '*delegate*' ignored when generating '*function*'|
 |[Compiler warning (level 1) C4358](compiler-warning-level-1-c4358.md)|'*operator*': return type of combined delegates is not 'void'; returned value is undefined|
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md
index 01f55ec356..03b421b60e 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md
@@ -1,7 +1,7 @@
 ---
 title: "Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599"
 description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599"
-ms.date: "04/21/2019"
+ms.date: "1/22/2025"
 f1_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"]
 helpviewer_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"]
 ---
@@ -15,186 +15,186 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 
 |Warning|Message|
 |-------------|-------------|
-|[Compiler warning (level 1) C4600](compiler-warning-level-1-c4600.md)|#pragma '*macro name*': expected a valid non-empty string|
-|[Compiler warning (level 4) C4400](../../error-messages/compiler-warnings/compiler-warning-level-4-c4400.md)|'*type*': const/volatile qualifiers on this type are not supported|
-|[Compiler warning (level 1) C4401](../../error-messages/compiler-warnings/compiler-warning-level-1-c4401.md)|'*bitfield*': member is bit field|
-|[Compiler warning (level 1) C4402](../../error-messages/compiler-warnings/compiler-warning-level-1-c4402.md)|must use PTR operator|
-|[Compiler warning (level 1) C4403](../../error-messages/compiler-warnings/compiler-warning-level-1-c4403.md)|illegal PTR operator|
-|[Compiler warning (level 3) C4404](../../error-messages/compiler-warnings/compiler-warning-level-3-c4404.md)|period on directive ignored|
-|[Compiler warning (level 1) C4405](../../error-messages/compiler-warnings/compiler-warning-level-1-c4405.md)|'*identifier*': identifier is reserved word|
-|[Compiler warning (level 1) C4406](../../error-messages/compiler-warnings/compiler-warning-level-1-c4406.md)|operand on directive ignored|
-|[Compiler warning (level 1) C4407](../../error-messages/compiler-warnings/compiler-warning-level-1-c4407.md)|cast between different pointer to member representations, compiler may generate incorrect code|
-|[Compiler warning (level 4) C4408](../../error-messages/compiler-warnings/compiler-warning-level-4-c4408.md)|anonymous 'struct\|union' did not declare any data members|
-|[Compiler warning (level 1) C4409](../../error-messages/compiler-warnings/compiler-warning-level-1-c4409.md)|illegal instruction size|
-|[Compiler warning (level 1) C4410](../../error-messages/compiler-warnings/compiler-warning-level-1-c4410.md)|illegal size for operand|
-|[Compiler warning (level 1) C4411](../../error-messages/compiler-warnings/compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register|
-|[Compiler warning (level 2) C4412](../../error-messages/compiler-warnings/compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.|
-|Compiler warning C4413|'classname::member': reference member is initialized to a temporary that doesn't persist after the constructor exits|
-|[Compiler warning (level 3) C4414](../../error-messages/compiler-warnings/compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near|
-|Compiler warning (level 1) C4415|duplicate __declspec(code_seg('*name*'))|
-|Compiler warning (level 1) C4416|__declspec(code_seg(...)) contains empty string: ignored|
-|Compiler warning (level 1) C4417|an explicit template instantiation cannot have __declspec(code_seg(...)): ignored|
-|Compiler warning (level 1) C4418|__declspec(code_seg(...)) ignored on an enum|
-|Compiler warning (level 3) C4419|'*symbol*' has no effect when applied to private ref class '*class*'.|
-|[Compiler warning (level 1) C4420](../../error-messages/compiler-warnings/compiler-warning-level-1-c4420.md)|'*checked_operator*': operator not available, using '*operator*' instead; run-time checking may be compromised|
+|[Compiler warning (level 4, Error) C4400](compiler-warning-level-4-c4400.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported|
+|[Compiler warning (level 1) C4401](compiler-warning-level-1-c4401.md)|'*bitfield*': member is bit field|
+|[Compiler warning (level 1) C4402](compiler-warning-level-1-c4402.md)|must use `PTR` operator|
+|[Compiler warning (level 1) C4403](compiler-warning-level-1-c4403.md)|illegal `PTR` operator|
+|[Compiler warning (level 3) C4404](compiler-warning-level-3-c4404.md)|period on directive ignored|
+|[Compiler warning (level 1) C4405](compiler-warning-level-1-c4405.md)|'*identifier*': identifier is reserved word|
+|[Compiler warning (level 1) C4406](compiler-warning-level-1-c4406.md)|operand on directive ignored|
+|[Compiler warning (level 1) C4407](compiler-warning-level-1-c4407.md)|cast between different pointer to member representations, compiler may generate incorrect code|
+|[Compiler warning (level 4) C4408](compiler-warning-level-4-c4408.md)|anonymous *struct/union* did not declare any data members|
+|[Compiler warning (level 1) C4409](compiler-warning-level-1-c4409.md)|illegal instruction size|
+|[Compiler warning (level 1) C4410](compiler-warning-level-1-c4410.md)|illegal size for operand|
+|[Compiler warning (level 1) C4411](compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register|
+|[Compiler warning (level 2, off) C4412](compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.|
+|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that doesn't persist after the constructor exits|
+|[Compiler warning (level 3) C4414](compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near|
+|Compiler warning (level 1) C4415|duplicate `__declspec(code_seg(`'*name*'`))`|
+|Compiler warning (level 1) C4416|`__declspec(code_seg(...))` contains empty string: ignored|
+|Compiler warning (level 1) C4417|an explicit template instantiation cannot have `__declspec(code_seg(...))`: ignored|
+|Compiler warning (level 1) C4418|`__declspec(code_seg(...))` ignored on an `enum`|
+|Compiler warning (level 3) C4419|'*symbol*' has no effect when applied to `private ref class` '*class*'.|
+|[Compiler warning (level 1) C4420](compiler-warning-level-1-c4420.md)|'*checked_operator*': operator not available, using '*operator*' instead; run-time checking may be compromised|
 |Compiler warning (level 3) C4421|'*parameter*': a reference parameter on a resumable function is potentially unsafe|
-|Compiler warning (level 3) C4423|'std::bad_alloc': will be caught by class ('*type*') on line *number*|
-|Compiler warning (level 3) C4424|catch for '*type1*' preceded by '*type2*' on line *number*; unpredictable behavior may result if 'std::bad_alloc' is thrown|
-|Compiler warning (level 1) C4425|A SAL annotation cannot be applied to '...'|
-|Compiler warning (level 1) C4426|optimization flags changed after including header, may be due to #pragma optimize()|
+|Compiler warning (level 3) C4423|'`std::bad_alloc`': will be caught by class ('*type*') on line *number*|
+|Compiler warning (level 3) C4424|catch for '*type1*' preceded by '*type2*' on line *number*; unpredictable behavior may result if '`std::bad_alloc`' is thrown|
+|Compiler warning (level 1) C4425|A SAL annotation cannot be applied to '`...`'|
+|Compiler warning (level 1, off) C4426|optimization flags changed after including header, may be due to `#pragma optimize()`|
 |Compiler warning (level 1) C4427|'*operator*': overflow in constant division, undefined behavior|
-|[Compiler warning (level 4) C4429](../../error-messages/compiler-warnings/compiler-warning-level-4-c4429.md)|possible incomplete or improperly formed universal-character-name|
-|[Compiler warning (Error) C4430](../../error-messages/compiler-warnings/compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ does not support default-int|
-|[Compiler warning (level 4) C4431](../../error-messages/compiler-warnings/compiler-warning-level-4-c4431.md)|missing type specifier - int assumed. Note: C no longer supports default-int|
-|[Compiler warning (level 4) C4434](../../error-messages/compiler-warnings/compiler-warning-level-4-c4434.md)|a static constructor must have private accessibility; changing to private access|
-|[Compiler warning (level 4) C4435](../../error-messages/compiler-warnings/compiler-warning-level-4-c4435.md)|'*derived_class*': Object layout under /vd2 will change due to virtual base '*base_class*'|
-|[Compiler warning (level 1) C4436](../../error-messages/compiler-warnings/compiler-warning-level-1-c4436.md)|dynamic\_cast from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object|
-|[Compiler warning (level 4) C4437](../../error-messages/compiler-warnings/compiler-warning-level-4-c4437.md)|dynamic\_cast from virtual base '*base_class*' to '*derived_class*' could fail in some contexts|
-|Compiler warning C4438|'*function*': cannot be called safely in /await:clrcompat mode. If '*function*' calls into the CLR it may result in CLR head corruption|
-|[Compiler warning (Error) C4439](../../error-messages/compiler-warnings/compiler-warning-c4439.md)|'*function*': function definition with a managed type in the signature must have a __clrcall calling convention|
-|[Compiler warning (level 1) C4440](../../error-messages/compiler-warnings/compiler-warning-level-1-c4440.md)|calling convention redefinition from '*calling_convention1*' to '*calling_convenction2*' ignored|
-|[Compiler warning (level 1) C4441](../../error-messages/compiler-warnings/compiler-warning-level-1-c4441.md)|calling convention of '*calling_convention1*' ignored; '*calling_convention2*' used instead|
-|Compiler warning (level 1) C4442|embedded null terminator in __annotation argument.  Value will be truncated.|
-|Compiler warning (level 1) C4443|expected pragma parameter to be '0', '1', or '2'|
-|Compiler warning (level 3) C4444|'*identifier*': top level '__unaligned' is not implemented in this context|
-|[Compiler warning (level 1) C4445](../../error-messages/compiler-warnings/compiler-warning-level-1-c4445.md)|'*function*': in a 'WinRT\|managed' type a virtual method cannot be private|
+|[Compiler warning (level 4) C4429](compiler-warning-level-4-c4429.md)|possible incomplete or improperly formed universal-character-name|
+|[Compiler warning (level 1, Error) C4430](compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ does not support default-int|
+|[Compiler warning (level 4) C4431](compiler-warning-level-4-c4431.md)|missing type specifier - int assumed. Note: C no longer supports default-int|
+|[Compiler warning (level 4) C4434](compiler-warning-level-4-c4434.md)|a static constructor must have private accessibility; changing to private access|
+|[Compiler warning (level 4, off) C4435](compiler-warning-level-4-c4435.md)|'*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*'|
+|[Compiler warning (level 1 and level 4) C4436](compiler-warning-level-1-c4436.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object|
+|[Compiler warning (level 1 and level 4, off) C4437](compiler-warning-level-4-c4437.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts|
+|Compiler warning C4438|'*function*': cannot be called safely in `/await:clrcompat` mode. If '*function*' calls into the CLR it may result in CLR head corruption|
+|[Compiler warning (level 1, Error) C4439](compiler-warning-c4439.md)|'*function*': function definition with a managed type in the signature must have a `__clrcall` calling convention|
+|[Compiler warning (level 1) C4440](compiler-warning-level-1-c4440.md)|calling convention redefinition from '*calling_convention1*' to '*calling_convenction2*' ignored|
+|[Compiler warning (level 1) C4441](compiler-warning-level-1-c4441.md)|calling convention of '*calling_convention1*' ignored; '*calling_convention2*' used instead|
+|Compiler warning (level 1) C4442|embedded null terminator in `__annotation` argument.  Value will be truncated.|
+|Compiler warning (level 1) C4443|expected pragma parameter to be '`0`', '`1`', or '`2`'|
+|Compiler warning (level 3, off) C4444|'*identifier*': top level '`__unaligned`' is not implemented in this context|
+|[Compiler warning (level 1) C4445](compiler-warning-level-1-c4445.md)|'*function*': in a *WinRT/managed* type a virtual method cannot be private|
 |Compiler warning (level 1) C4446|'*type*': cannot map member '*name1*' into this type, due to conflict with the type name. The method was renamed to '*name2*'|
-|Compiler warning (level 1) C4447|'main' signature found without threading model. Consider using 'int main(Platform::Array\<Platform::String^>^ args)'.|
-|Compiler warning C4448|'*type*1' does not have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.|
-|Compiler warning C4449|'*type*' an unsealed type should be marked as '[WebHostHidden]'|
-|Compiler warning C4450|'*type1*' should be marked as '[WebHostHidden]' because it derives from '*type2*'|
-|Compiler warning (level 4) C4451|'classname1::member': Usage of ref class 'classname2::member' inside this context can lead to invalid marshaling of object across contexts|
-|Compiler warning (level 1) C4452|'*identifier*': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output .winmd file.|
-|Compiler warning (level 1) C4453|'*type*': A '[WebHostHidden]' type should not be used on the published surface of a public type that is not '[WebHostHidden]'|
-|Compiler warning (level 1) C4454|'*function*' is overloaded by more than the number of input parameters without having [DefaultOverload] specified. Picking '*declaration*' as the default overload|
+|Compiler warning (level 1) C4447|'`main`' signature found without threading model. Consider using '`int main(Platform::Array<Platform::String^>^ args)`'.|
+|Compiler warning (level 1) C4448|'*type1*' does not have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.|
+|Compiler warning C4449|'*type*' an unsealed type should be marked as '`[WebHostHidden]`'|
+|Compiler warning C4450|'*type1*' should be marked as '`[WebHostHidden]`' because it derives from '*type2*'|
+|Compiler warning (level 3 and level 4) C4451|'*classname1::member*': Usage of ref class '*classname2::member*' inside this context can lead to invalid marshaling of object across contexts|
+|Compiler warning (level 1, Error) C4452|'*identifier*': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output `.winmd` file.|
+|Compiler warning (level 1) C4453|'*type*': A '`[WebHostHidden]`' type should not be used on the published surface of a public type that is not '`[WebHostHidden]`'|
+|Compiler warning (level 1) C4454|'*function*' is overloaded by more than the number of input parameters without having `[DefaultOverload]` specified. Picking '*declaration*' as the default overload|
 |Compiler warning (level 1) C4455|'operator *operator*': literal suffix identifiers that do not start with an underscore are reserved|
-|[Compiler warning (level 4) C4456](compiler-warning-level-4-c4456.md)|declaration of '*identifier*' hides previous local declaration|
-|[Compiler warning (level 4) C4457](compiler-warning-level-4-c4457.md)|declaration of '*identifier*' hides function parameter|
-|[Compiler warning (level 4) C4458](compiler-warning-level-4-c4458.md)|declaration of '*identifier*' hides class member|
-|[Compiler warning (level 4) C4459](compiler-warning-level-4-c4459.md)|declaration of '*identifier*' hides global declaration|
-|[Compiler warning (level 4) C4460](../../error-messages/compiler-warnings/compiler-warning-level-4-c4460.md)|'WinRT\|managed' operator '*operator*', has parameter passed by reference. 'WinRT\|managed' operator '*operator*' has different semantics from C++ operator '*cpp_operator*', did you intend to pass by value?|
-|[Compiler warning (level 1) C4461](../../error-messages/compiler-warnings/compiler-warning-level-1-c4461.md)|'*classname*': this class has a finalizer '!*finalizer*' but no destructor '~*dtor*'|
-|[Compiler warning (level 1, Error) C4462](../../error-messages/compiler-warnings/compiler-warning-level-1-c4462.md)|'*type*' : cannot determine the GUID of the type. Program may fail at runtime.|
-|[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning '*value*' to bit-field that can only hold values from '*min_value*' to '*max_value*'|
-|[Compiler warning (level 4) C4464](../../error-messages/compiler-warnings/compiler-warning-level-4-c4464.md)|relative include path contains '..'|
+|[Compiler warning (level 1 and level 4) C4456](compiler-warning-level-4-c4456.md)|declaration of '*identifier*' hides previous local declaration|
+|[Compiler warning (level 1 and level 4) C4457](compiler-warning-level-4-c4457.md)|declaration of '*identifier*' hides function parameter|
+|[Compiler warning (level 1 and level 4) C4458](compiler-warning-level-4-c4458.md)|declaration of '*identifier*' hides class member|
+|[Compiler warning (level 1 and level 4) C4459](compiler-warning-level-4-c4459.md)|declaration of '*identifier*' hides global declaration|
+|[Compiler warning (level 4) C4460](compiler-warning-level-4-c4460.md)|*WinRT/managed* operator '*operator*', has parameter passed by reference. *WinRT/managed* operator '*operator*' has different semantics from C++ operator '*cpp_operator*', did you intend to pass by value?|
+|[Compiler warning (level 1) C4461](compiler-warning-level-1-c4461.md)|'*classname*': this class has a finalizer '`!`*finalizer*' but no destructor '`~`*dtor*'|
+|[Compiler warning (level 1, Error) C4462](compiler-warning-level-1-c4462.md)|'*type*' : cannot determine the GUID of the type. Program may fail at runtime.|
+|[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning *value* to bit-field that can only hold values from *min_value* to *max_value*|
+|[Compiler warning (level 4, off) C4464](compiler-warning-level-4-c4464.md)|relative include path contains '`..`'|
 |Compiler warning C4466|Could not perform coroutine heap elision|
+|Compiler warning (level 1) C4465|'*identifier*': use of dependent template requires `::template`|
 |Compiler warning (level 1) C4467|Usage of ATL attributes is deprecated|
-|Compiler warning (level 1) C4468|The [[fallthrough]] attribute must be followed by a `case` label or a `default` label|
-|[Compiler warning (level 1) C4470](../../error-messages/compiler-warnings/compiler-warning-level-1-c4470.md)|floating-point control pragmas ignored under /clr|
-|[Compiler warning (level 4) C4471](compiler-warning-level-4-c4471.md)|'*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type (int assumed)|
-|Compiler warning (level 1) C4472|'*identifier*' is a native enum: add an access specifier (private/public) to declare a 'WinRT\|managed' enum|
+|Compiler warning (level 1) C4468|The `[[fallthrough]]` attribute must be followed by a `case` label or a `default` label|
+|[Compiler warning (level 1) C4470](compiler-warning-level-1-c4470.md)|floating-point control pragmas ignored under `/clr`|
+|[Compiler warning (level 4, off) C4471](compiler-warning-level-4-c4471.md)|'*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type|
+|Compiler warning (level 1) C4472|'*identifier*' is a native enum: add an access specifier (private/public) to declare a 'WinRT/managed' enum|
 |[Compiler warning (level 1) C4473](c4473.md)|'*function*' : not enough arguments passed for format string|
 |Compiler warning (level 3) C4474|'*function*' : too many arguments passed for format string|
 |Compiler warning (level 3) C4475|'*function*' : length modifier '*modifier*' cannot be used with type field character '*character*' in format specifier|
 |Compiler warning (level 3) C4476|'*function*' : unknown type field character '*character*' in format specifier|
 |[Compiler warning (level 1) C4477](c4477.md)|'*function*' : format string '*string*' requires an argument of type '*type*', but variadic argument *number* has type '*type*'|
 |Compiler warning (level 1) C4478|'*function*' : positional and non-positional placeholders cannot be mixed in the same format string|
-|Compiler warning (Error) C4480|nonstandard extension used: specifying underlying type for enum '*enumeration*'|
-|[Compiler warning (level 4) C4481](../../error-messages/compiler-warnings/compiler-warning-level-4-c4481.md)|nonstandard extension used: override specifier '*keyword*'|
-|Compiler warning C4482|nonstandard extension used: enum '*enumeration*' used in qualified name|
+|Compiler warning (Error) C4480|nonstandard extension used: specifying underlying type for `enum` '*enumeration*'|
+|[Compiler warning (level 4, Error) C4481](compiler-warning-level-4-c4481.md)|nonstandard extension used: override specifier '*keyword*'|
+|Compiler warning C4482|nonstandard extension used: `enum` '*enumeration*' used in qualified name|
 |Compiler warning (level 1, Error) C4483|syntax error: expected C++ keyword|
-|[Compiler warning (Error) C4484](../../error-messages/compiler-warnings/compiler-warning-c4484.md)|'*override_function*': matches base ref class method '*base_class_function*', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed|
-|[Compiler warning (Error) C4485](../../error-messages/compiler-warnings/compiler-warning-c4485.md)|'*override_function*': matches base ref class method '*base_class_function*', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed|
-|[Compiler warning (level 1) C4486](../../error-messages/compiler-warnings/compiler-warning-level-1-c4486.md)|'*function*': a private virtual method of a ref class or value class should be marked 'sealed'|
-|[Compiler warning (level 4) C4487](../../error-messages/compiler-warnings/compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but is not explicitly marked 'new'|
-|[Compiler warning (level 1) C4488](../../error-messages/compiler-warnings/compiler-warning-level-1-c4488.md)|'*function*': requires '*keyword*' keyword to implement the interface method '*interface_method*'|
-|[Compiler warning (level 1) C4489](../../error-messages/compiler-warnings/compiler-warning-level-1-c4489.md)|'*specifier*': not allowed on interface method '*method*'; override specifiers are only allowed on ref class and value class methods|
-|[Compiler warning (level 1) C4490](../../error-messages/compiler-warnings/compiler-warning-level-1-c4490.md)|'override': incorrect use of override specifier; '*function*' does not match a base ref class method|
+|[Compiler warning (level 1, Error) C4484](compiler-warning-c4484.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but is not marked '`virtual`', '`new`' or '`override`'; '`new`' (and not '`virtual`') is assumed|
+|[Compiler warning (level 1, Error) C4485](compiler-warning-c4485.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but is not marked '`new`' or '`override`'; '`new`' (and '`virtual`') is assumed|
+|[Compiler warning (level 1) C4486](compiler-warning-level-1-c4486.md)|'*function*': a private virtual method of a `ref class` or value class should be marked '`sealed`'|
+|[Compiler warning (level 4) C4487](compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but is not explicitly marked '`new`'|
+|[Compiler warning (level 1) C4488](compiler-warning-level-1-c4488.md)|'*function*': requires '*keyword*' keyword to implement the interface method '*interface_method*'|
+|[Compiler warning (level 1) C4489](compiler-warning-level-1-c4489.md)|'*specifier*': not allowed on interface method '*method*'; override specifiers are only allowed on ref class and value class methods|
+|[Compiler warning (level 1) C4490](compiler-warning-level-1-c4490.md)|'*override*': incorrect use of override specifier; '*function*' does not match a base ref class method|
 |Compiler warning (level 1) C4491|'*name*': has an illegal IDL version format|
-|Compiler warning (level 1, Error) C4492|'*function1*': matches base ref class method '*function2*', but is not marked 'override'|
-|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' does not have 'public' accessibility|
-|Compiler warning (level 1) C4494|'*function*' : Ignoring __declspec(allocator) because the function return type is not a pointer or reference|
-|Compiler warning C4495|nonstandard extension '__super' used: replace with explicit base class name|
-|Compiler warning C4496|nonstandard extension 'for each' used: replace with ranged-for statement|
-|Compiler warning C4497|nonstandard extension 'sealed' used: replace with 'final'|
-|Compiler warning C4498|nonstandard extension used: '*extension*'|
-|Compiler warning (level 4) C4499|'*function*' : an explicit specialization cannot have a storage class (ignored)"|
-|[Compiler warning (level 1) C4502](../../error-messages/compiler-warnings/compiler-warning-level-1-c4502.md)|'*linkage specification*' requires use of keyword 'extern' and must precede all other specifiers|
-|[Compiler warning (level 1) C4503](../../error-messages/compiler-warnings/compiler-warning-level-1-c4503.md)|'*identifier*': decorated name length exceeded, name was truncated|
-|[Compiler warning (level 4) C4505](../../error-messages/compiler-warnings/compiler-warning-level-4-c4505.md)|'*function*': unreferenced local function has been removed|
-|[Compiler warning (level 1) C4506](../../error-messages/compiler-warnings/compiler-warning-level-1-c4506.md)|no definition for inline function '*function*'|
-|[Compiler warning (level 1) C4508](../../error-messages/compiler-warnings/compiler-warning-level-1-c4508.md)|'*function*': function should return a value; 'void' return type assumed|
+|Compiler warning (level 1, Error) C4492|'*function1*': matches base `ref class` method '*function2*', but is not marked '`override`'|
+|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' does not have '`public`' accessibility|
+|Compiler warning (level 1) C4494|'*function*' : Ignoring `__declspec(allocator)` because the function return type is not a pointer or reference|
+|Compiler warning (level 4, off) C4495|nonstandard extension '`__super`' used: replace with explicit base class name|
+|Compiler warning (level 4, Error, off) C4496|nonstandard extension '`for each`' used: replace with ranged-for statement|
+|Compiler warning (level 4, off) C4497|nonstandard extension '`sealed`' used: replace with '`final`'|
+|Compiler warning (level 4, off) C4498|nonstandard extension used: '*extension*'|
+|Compiler warning (level 4) C4499|'*function*': an explicit specialization cannot have a storage class (ignored)|
+|[Compiler warning (level 1) C4502](compiler-warning-level-1-c4502.md)|'linkage specification' requires use of keyword '`extern`' and must precede all other specifiers|
+|[Compiler warning (level 1) C4503](compiler-warning-level-1-c4503.md)|'*identifier*': decorated name length exceeded, name was truncated|
+|[Compiler warning (level 4) C4505](compiler-warning-level-4-c4505.md)|'*function*': unreferenced function with internal linkage has been removed|
+|[Compiler warning (level 1) C4506](compiler-warning-level-1-c4506.md)|no definition for inline function '*function*'|
+|[Compiler warning (level 1) C4508](compiler-warning-level-1-c4508.md)|'*function*': function should return a value; '`void`' return type assumed|
 |Compiler warning C4509|nonstandard extension used: '*function*' uses SEH and '*object*' has destructor|
-|[Compiler warning (level 4) C4510](../../error-messages/compiler-warnings/compiler-warning-level-4-c4510.md)|'*class*': default constructor was implicitly defined as deleted|
-|[Compiler warning (level 3) C4511](../../error-messages/compiler-warnings/compiler-warning-level-3-c4511.md)|'*class*': copy constructor was implicitly defined as deleted|
-|[Compiler warning (level 4) C4512](../../error-messages/compiler-warnings/compiler-warning-level-4-c4512.md)|'*class*': assignment operator was implicitly defined as deleted|
-|[Compiler warning (level 4) C4513](../../error-messages/compiler-warnings/compiler-warning-level-4-c4513.md)|'*class*': destructor was implicitly defined as deleted|
-|[Compiler warning (level 4) C4514](../../error-messages/compiler-warnings/compiler-warning-level-4-c4514.md)|'*function*': unreferenced inline function has been removed|
-|[Compiler warning (level 4) C4515](../../error-messages/compiler-warnings/compiler-warning-level-4-c4515.md)|'*namespace*': namespace uses itself|
-|[Compiler warning (level 4) C4516](../../error-messages/compiler-warnings/compiler-warning-level-4-c4516.md)|'class::symbol': access-declarations are deprecated; member using-declarations provide a better alternative|
-|[Compiler warning (level 4) C4517](../../error-messages/compiler-warnings/compiler-warning-level-4-c4517.md)|access-declarations are deprecated; member using-declarations provide a better alternative|
-|[Compiler warning (level 1) C4518](../../error-messages/compiler-warnings/compiler-warning-level-1-c4518.md)|'*specifier*': storage-class or type specifier(s) unexpected here; ignored|
-|Compiler warning (Error) C4519|default template arguments are only allowed on a class template|
-|[Compiler warning (level 3) C4521](../../error-messages/compiler-warnings/compiler-warning-level-3-c4521.md)|'*class*': multiple copy constructors specified|
-|[Compiler warning (level 3) C4522](../../error-messages/compiler-warnings/compiler-warning-level-3-c4522.md)|'*class*': multiple assignment operators specified|
-|[Compiler warning (level 3) C4523](../../error-messages/compiler-warnings/compiler-warning-level-3-c4523.md)|'*class*': multiple destructors specified|
-|[Compiler warning (level 1) C4526](../../error-messages/compiler-warnings/compiler-warning-level-1-c4526.md)|'*function*': static member function cannot override virtual function '*virtual function*' override ignored, virtual function will be hidden|
-|[Compiler warning (level 1) C4530](../../error-messages/compiler-warnings/compiler-warning-level-1-c4530.md)|C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc|
+|[Compiler warning (level 4) C4510](compiler-warning-level-4-c4510.md)|'*class*': default constructor was implicitly defined as deleted|
+|[Compiler warning (level 4) C4511](compiler-warning-level-3-c4511.md)|'*class*': copy constructor was implicitly defined as deleted|
+|[Compiler warning (level 4) C4512](compiler-warning-level-4-c4512.md)|'*class*': assignment operator was implicitly defined as deleted|
+|[Compiler warning (level 4) C4513](compiler-warning-level-4-c4513.md)|'*class*': destructor was implicitly defined as deleted|
+|[Compiler warning (level 4, off) C4514](compiler-warning-level-4-c4514.md)|'*function*': unreferenced inline function has been removed|
+|[Compiler warning (level 4) C4515](compiler-warning-level-4-c4515.md)|'*namespace*': namespace uses itself|
+|[Compiler warning (level 4) C4516](compiler-warning-level-4-c4516.md)|'*class*::*symbol*': access-declarations are deprecated; member using-declarations provide a better alternative|
+|[Compiler warning (level 4) C4517](compiler-warning-level-4-c4517.md)|access-declarations are deprecated; member using-declarations provide a better alternative|
+|[Compiler warning (level 1) C4518](compiler-warning-level-1-c4518.md)|'*specifier*': storage-class or type specifier(s) unexpected here; ignored|
+|Compiler warning (level1, Error, no longer emitted) C4519|default template arguments are only allowed on a class template|
+|[Compiler warning (level 3) C4521](compiler-warning-level-3-c4521.md)|'*class*': multiple copy constructors specified|
+|[Compiler warning (level 3) C4522](compiler-warning-level-3-c4522.md)|'*class*': multiple assignment operators specified|
+|[Compiler warning (level 3) C4523](compiler-warning-level-3-c4523.md)|'*class*': multiple destructors specified|
+|[Compiler warning (level 1) C4526](compiler-warning-level-1-c4526.md)|'*function*': static member function cannot override virtual function '*virtual function*'<br/>override ignored, virtual function will be hidden|
+|[Compiler warning (level 1) C4530](compiler-warning-level-1-c4530.md)|C++ exception handler used, but unwind semantics are not enabled. Specify `/EHsc`|
 |Compiler warning (level 1) C4531|C++ exception handling not available on Windows CE. Use Structured Exception Handling|
-|[Compiler warning (level 1) C4532](../../error-messages/compiler-warnings/compiler-warning-level-1-c4532.md)|'continue': jump out of '__finally/finally' block has undefined behavior during termination handling|
-|[Compiler warning (level 1) C4533](../../error-messages/compiler-warnings/compiler-warning-level-1-c4533.md)|initialization of '*variable*' is skipped by '*goto label*'|
-|[Compiler warning (level 3) C4534](../../error-messages/compiler-warnings/compiler-warning-level-3-c4534.md)|'*constructor*' will not be a default constructor for 'class/struct' '*identifier*' due to the default argument|
-|[Compiler warning (level 3) C4535](../../error-messages/compiler-warnings/compiler-warning-level-3-c4535.md)|calling _set_se_translator() requires /EHa|
-|[Compiler warning (level 4) C4536](../../error-messages/compiler-warnings/compiler-warning-level-4-c4536.md)|'*typename*': type-name exceeds meta-data limit of '*character_limit*' characters|
-|[Compiler warning (level 1) C4537](../../error-messages/compiler-warnings/compiler-warning-level-1-c4537.md)|'*object*': '.' applied to non-UDT type|
-|[Compiler warning (level 3) C4538](../../error-messages/compiler-warnings/compiler-warning-level-3-c4538.md)|'*type*': const/volatile qualifiers on this type are not supported|
-|[Compiler warning (level 1) C4540](../../error-messages/compiler-warnings/compiler-warning-level-1-c4540.md)|dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')|
-|[Compiler warning (level 1) C4541](../../error-messages/compiler-warnings/compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result|
+|[Compiler warning (level 1) C4532](compiler-warning-level-1-c4532.md)|'*continue*': jump out of *__finally/finally* block has undefined behavior during termination handling|
+|[Compiler warning (level 1) C4533](compiler-warning-level-1-c4533.md)|initialization of '*variable*' is skipped by '`goto` *label*'|
+|[Compiler warning (level 3) C4534](compiler-warning-level-3-c4534.md)|'*constructor*' will not be a default constructor for *class/struct* '*identifier*' due to the default argument|
+|[Compiler warning (level 3) C4535](compiler-warning-level-3-c4535.md)|calling `_set_se_translator()` requires `/EHa`|
+|[Compiler warning (level 4, off) C4536](compiler-warning-level-4-c4536.md)|'*typename*': type-name exceeds meta-data limit of '*character_limit*' characters|
+|[Compiler warning (level 1) C4537](compiler-warning-level-1-c4537.md)|'*object*': '`.`' applied to non-UDT type|
+|[Compiler warning (level 3) C4538](compiler-warning-level-3-c4538.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported|
+|[Compiler warning (level 1) C4540](compiler-warning-level-1-c4540.md)|`dynamic_cast` used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')|
+|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with `/GR-`; unpredictable behavior may result|
 |Compiler warning (level 1) C4542|Skipping generation of merged injected text file, cannot write *filetype* file: '*issue*': *message*|
-|[Compiler warning (level 3) C4543](../../error-messages/compiler-warnings/compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute 'no\_injected_text'|
-|[Compiler warning (level 1) C4544](../../error-messages/compiler-warnings/compiler-warning-level-1-c4544.md)|'*declaration*': default template argument ignored on this template declaration|
-|[Compiler warning (level 1) C4545](../../error-messages/compiler-warnings/compiler-warning-level-1-c4545.md)|expression before comma evaluates to a function which is missing an argument list|
-|[Compiler warning (level 1) C4546](../../error-messages/compiler-warnings/compiler-warning-level-1-c4546.md)|function call before comma missing argument list|
-|[Compiler warning (level 1) C4547](../../error-messages/compiler-warnings/compiler-warning-level-1-c4547.md)|'*operator*': operator before comma has no effect; expected operator with side-effect|
-|[Compiler warning (level 1) C4548](../../error-messages/compiler-warnings/compiler-warning-level-1-c4548.md)|expression before comma has no effect; expected expression with side-effect|
-|[Compiler warning (level 1) C4549](../../error-messages/compiler-warnings/compiler-warning-level-1-c4549.md)|'*operator*': operator before comma has no effect; did you intend '*operator*'?|
-|[Compiler warning (level 1) C4550](../../error-messages/compiler-warnings/compiler-warning-level-1-c4550.md)|expression evaluates to a function which is missing an argument list|
-|[Compiler warning (level 1) C4551](../../error-messages/compiler-warnings/compiler-warning-level-1-c4551.md)|function call missing argument list|
-|[Compiler warning (level 1) C4552](../../error-messages/compiler-warnings/compiler-warning-level-1-c4552.md)|'*operator*': operator has no effect; expected operator with side-effect|
-|[Compiler warning (level 1) C4553](../../error-messages/compiler-warnings/compiler-warning-level-1-c4553.md)|'*operator*': operator has no effect; did you intend 'operator'?|
-|[Compiler warning (level 3) C4554](../../error-messages/compiler-warnings/compiler-warning-level-3-c4554.md) C4554|'*operator*': check operator precedence for possible error; use parentheses to clarify precedence|
-|[Compiler warning (level 1) C4555](../../error-messages/compiler-warnings/compiler-warning-level-1-c4555.md)|expression has no effect; expected expression with side-effect|
-|[Compiler warning (level 1) C4556](../../error-messages/compiler-warnings/compiler-warning-level-1-c4556.md)|value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'|
-|[Compiler warning (level 3) C4557](../../error-messages/compiler-warnings/compiler-warning-level-3-c4557.md)|'__assume' contains effect '*effect*'|
-|[Compiler warning (level 1) C4558](../../error-messages/compiler-warnings/compiler-warning-level-1-c4558.md)|value of operand '*value*' is out of range '*lower_bound* - *upper_bound*'|
-|[Compiler warning (level 4) C4559](../../error-messages/compiler-warnings/compiler-warning-level-4-c4559.md)|'*function*': redefinition; the function gains __declspec(modifier)|
-|[Compiler warning (level 1) C4561](../../error-messages/compiler-warnings/compiler-warning-level-1-c4561.md)|'__fastcall' incompatible with the '/clr' option: converting to '__stdcall'|
-|Compiler warning (level 4) C4562|fully prototyped functions are required with the '/clr' option: converting '()' to '(void)'|
-|[Compiler warning (level 4) C4564](../../error-messages/compiler-warnings/compiler-warning-level-4-c4564.md)|method '*method*' of 'class' '*classname*' defines unsupported default parameter '*parameter*'|
-|[Compiler warning (level 4) C4565](../../error-messages/compiler-warnings/compiler-warning-level-4-c4565.md)|'*function*': redefinition; the symbol was previously declared with __declspec(modifier)|
-|[Compiler warning (level 1) C4566](../../error-messages/compiler-warnings/compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' cannot be represented in the current code page (*number*)|
+|[Compiler warning (level 3) C4543](compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute '`no_injected_text`'|
+|[Compiler warning (level 1) C4544](compiler-warning-level-1-c4544.md)|the default template argument for '*declaration*' is ignored on this template declaration|
+|[Compiler warning (level 1, off) C4545](compiler-warning-level-1-c4545.md)|expression before comma evaluates to a function which is missing an argument list|
+|[Compiler warning (level 1, off) C4546](compiler-warning-level-1-c4546.md)|function call before comma missing argument list|
+|[Compiler warning (level 1, off) C4547](compiler-warning-level-1-c4547.md)|'*operator*': operator before comma has no effect; expected operator with side-effect|
+|[Compiler warning (level 1, off) C4548](compiler-warning-level-1-c4548.md)|expression before comma has no effect; expected expression with side-effect|
+|[Compiler warning (level 1, off) C4549](compiler-warning-level-1-c4549.md)|'*operator*': operator before comma has no effect; did you intend '*operator*'?|
+|[Compiler warning (level 1) C4550](compiler-warning-level-1-c4550.md)|expression evaluates to a function which is missing an argument list|
+|[Compiler warning (level 1) C4551](compiler-warning-level-1-c4551.md)|function call missing argument list|
+|[Compiler warning (level 1) C4552](compiler-warning-level-1-c4552.md)|'*operator*': result of expression not used|
+|[Compiler warning (level 1) C4553](compiler-warning-level-1-c4553.md)|'*operator*': result of expression not used; did you intend '*operator*'?|
+|[Compiler warning (level 3) C4554](compiler-warning-level-3-c4554.md) C4554|'*operator*': check operator precedence for possible error; use parentheses to clarify precedence|
+|[Compiler warning (level 1, off) C4555](compiler-warning-level-1-c4555.md)|result of expression not used|
+|[Compiler warning (level 1) C4556](compiler-warning-level-1-c4556.md)|value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'|
+|[Compiler warning (level 3, off) C4557](compiler-warning-level-3-c4557.md)|'`__assume`' contains effect '*effect*'|
+|[Compiler warning (level 1) C4558](compiler-warning-level-1-c4558.md)|value of operand '*value*' is out of range '*lower_bound* - *upper_bound*'|
+|[Compiler warning (level 4) C4559](compiler-warning-level-4-c4559.md)|'*function*': redefinition; the function gains `__declspec(`*modifier*`)`|
+|[Compiler warning (level 1) C4561](compiler-warning-level-1-c4561.md)|'`__fastcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'|
+|Compiler warning (level 4) C4562|fully prototyped functions are required with the '`/clr`' option: converting '`()`' to '`(void)`'|
+|[Compiler warning (level 4) C4564](compiler-warning-level-4-c4564.md)|method '*method*' of *class* '*classname*' defines unsupported default parameter '*parameter*'|
+|[Compiler warning (level 4) C4565](compiler-warning-level-4-c4565.md)|'*function*': redefinition; the symbol was previously declared with `__declspec(`*modifier*`)`|
+|[Compiler warning (level 1) C4566](compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' cannot be represented in the current code page (*number*)|
 |Compiler warning (level 1) C4568|'*function*': no members match the signature of the explicit override|
 |Compiler warning (level 3) C4569|'*function*': no members match the signature of the explicit override|
-|[Compiler warning (level 3) C4570](../../error-messages/compiler-warnings/compiler-warning-level-3-c4570.md)|'*type*': is not explicitly declared as abstract but has abstract functions|
-|[Compiler warning (level 4) C4571](../../error-messages/compiler-warnings/compiler-warning-level-4-c4571.md)|Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught|
-|[Compiler warning (level 1) C4572](../../error-messages/compiler-warnings/compiler-warning-level-1-c4572.md)|[ParamArray] attribute is deprecated under /clr, use '...' instead|
-|Compiler warning (level 1) C4573|the usage of '*lambda function*' requires the compiler to capture 'this' but the current default capture mode does not allow it|
-|Compiler warning (level 4) C4574|'*Identifier*' is defined to be '0': did you mean to use '#if identifier'?|
-|Compiler warning (level 1) C4575|'__vectorcall' incompatible with the '/clr' option: converting to '__stdcall'|
+|[Compiler warning (level 3) C4570](compiler-warning-level-3-c4570.md)|'*type*': is not explicitly declared as abstract but has abstract functions|
+|[Compiler warning (level 4) C4571](compiler-warning-level-4-c4571.md)|Informational: `catch(...)` semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught|
+|[Compiler warning (level 1) C4572](compiler-warning-level-1-c4572.md)|`[ParamArray]` attribute is deprecated under `/clr`, use '`...`' instead|
+|Compiler warning (level 1, Error) C4573|the usage of '*lambda function*' requires the compiler to capture '`this`' but the current default capture mode does not allow it|
+|Compiler warning (level 4, off) C4574|'*Identifier*' is defined to be '`0`': did you mean to use '`#if` *identifier*'?|
+|Compiler warning (level 1) C4575|'`__vectorcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'|
 |Compiler warning (level 1, Error) C4576|a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax|
-|[Compiler warning (level 1, Off) C4577](../../error-messages/compiler-warnings/compiler-warning-level-1-c4577.md)|'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc|
-|Compiler warning (level 1, Error) C4578|'abs': conversion from '*type1*' to '*type2*', possible loss of data (Did you mean to call '*function*' or to #include \<cmath>?)|
-|[Compiler warning (level 3) C4580](../../error-messages/compiler-warnings/compiler-warning-level-3-c4580.md)|[attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class|
-|[Compiler warning (level 1) C4581](../../error-messages/compiler-warnings/compiler-warning-level-1-c4581.md)|deprecated behavior: '"*string*"' replaced with '*string*' to process attribute|
-|Compiler warning (level 4) C4582|'*type*': constructor is not implicitly called|
-|Compiler warning (level 4) C4583|'*type*': destructor is not implicitly called|
-|[Compiler warning (level 1) C4584](../../error-messages/compiler-warnings/compiler-warning-level-1-c4584.md)|'*class1*': base-class '*class2*' is already a base-class of '*class3*'|
-|Compiler warning (level 1, Error) C4585|'*class*': A WinRT 'public ref class' must either be sealed or derive from an existing unsealed class|
-|Compiler warning (level 1, Error) C4586|'*type*': A public type cannot be declared in a top-level namespace called 'Windows'|
-|Compiler warning (level 1) C4587|'*anonymous_structure*': behavior change: constructor is no longer implicitly called|
-|Compiler warning (level 1) C4588|'*anonymous_structure*': behavior change: destructor is no longer implicitly called|
+|[Compiler warning (level 1, Off) C4577](compiler-warning-level-1-c4577.md)|'`noexcept`' used with no exception handling mode specified; termination on exception is not guaranteed. Specify `/EHsc`|
+|Compiler warning (level 1, Error) C4578|'`abs`': conversion from '*type1*' to '*type2*', possible loss of data (Did you mean to call '*function*' or to `#include <cmath>`?)|
+|[Compiler warning (level 3) C4580](compiler-warning-level-3-c4580.md)|`[attribute]` is deprecated; instead specify *namespace::*Attribute as a base class|
+|[Compiler warning (level 1) C4581](compiler-warning-level-1-c4581.md)|deprecated behavior: '"*string*"' replaced with '*string*' to process attribute|
+|Compiler warning (level 4, off) C4582|'*type*': constructor is not implicitly called|
+|Compiler warning (level 4, off) C4583|'*type*': destructor is not implicitly called|
+|[Compiler warning (level 1) C4584](compiler-warning-level-1-c4584.md)|'*class1*': base-class '*class2*' is already a base-class of '*class3*'|
+|Compiler warning (level 1, Error) C4585|'*class*': A WinRT '`public ref class`' must either be sealed or derive from an existing unsealed class|
+|Compiler warning (level 1, Error) C4586|'*type*': A public type cannot be declared in a top-level namespace called '`Windows`'|
+|Compiler warning (level 1, off) C4587|'*anonymous_structure*': behavior change: constructor is no longer implicitly called|
+|Compiler warning (level 1, off) C4588|'*anonymous_structure*': behavior change: destructor is no longer implicitly called|
 |Compiler warning (level 4) C4589|Constructor of abstract class '*class1*' ignores initializer for virtual base class '*class2*'|
-|Compiler warning (level 1) C4591|'constexpr' call-depth limit of *number* exceeded (/constexpr:depth\<NUMBER>)|
-|Compiler warning (level 3) C4592|'*function*': 'constexpr' call evaluation failed; function will be called at run-time|
-|Compiler warning (level 1) C4593|'*function*': 'constexpr' call evaluation step limit of '*limit*' exceeded; use /constexpr:steps\<NUMBER> to increase the limit|
-|Compiler warning (level 3) C4594|'*type*': destructor will not be implicitly called if an exception is thrown|
-|Compiler warning (level 1) C4595|'*type*': behavior change: destructor will no longer be implicitly called if an exception is thrown|
-|[Compiler warning (level 4) C4596](../../error-messages/compiler-warnings/c4596.md)|'*identifier*': illegal qualified name in member declaration|
-|[Compiler warning (error) C4597](c4597.md)|undefined behavior: offsetof applied to a member of a virtual base|
-|Compiler warning (level 1 and level 3) C4598|'#include "*header*"': header number *number* in the precompiled header does not match current compilation at that position|
-|Compiler warning (level 3) C4599|'*flag* *path*': command line argument number *number* does not match precompiled header|
+|Compiler warning (level 1, no longer emitted) C4591|'`constexpr`' call-depth limit of *number* exceeded (`/constexpr:depth<NUMBER>`)|
+|Compiler warning (level 1, Error) C4592|'*name*': symbol will be dynamically initialized (implementation limitation)|
+|Compiler warning (level 1, no longer emitted) C4593|'*function*': '`constexpr`' call evaluation step limit of '*limit*' exceeded; use `/constexpr:steps<NUMBER>` to increase the limit|
+|Compiler warning (level 1) C4594|class '*name*' can never be instantiated - indirect virtual base class '*name*' is inaccessible|
+|Compiler warning (level 3) C4595|'*name*': non-member operator new or delete functions may not be declared inline|
+|[Compiler warning (level 4, Error, off) C4596](c4596.md)|'*identifier*': illegal qualified name in member declaration|
+|[Compiler warning (error) C4597](c4597.md)|undefined behavior: *message*|
+|Compiler warning (level 1 and level 3) C4598|'`#include "`*header*`"`': header number *number* in the precompiled header does not match current compilation at that position|
+|Compiler warning (level 3, off) C4599|'*flag* *path*': command line argument number *number* does not match precompiled header|
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \
+[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\
 [Compiler warnings C4000 - C5999](compiler-warnings-c4000-c5999.md)
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md
index 3bdb97c94b..073da82641 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md
@@ -15,162 +15,162 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 
 |Warning|Message|
 |-------------|-------------|
-|[Compiler warning (level 1) C4600](../../error-messages/compiler-warnings/compiler-warning-level-1-c4600.md)|#pragma 'macro name': expected a valid non-empty string|
-|[Compiler warning (level 1) C4602](compiler-warning-level-1-c4602.md)|#pragma pop_macro: 'macro name' no previous #pragma push_macro for this identifier|
+|[Compiler warning (level 1) C4600](compiler-warning-level-1-c4600.md)|`#pragma `'*macro name*': expected a valid non-empty string|
+|[Compiler warning (level 1) C4602](compiler-warning-level-1-c4602.md)|`#pragma pop_macro: `'*macro name*' no previous `#pragma push_macro` for this identifier|
 |[Compiler warning (level 1) C4603](compiler-warning-level-1-c4603.md)|'*identifier*': macro is not defined or definition is different after precompiled header use|
-|Compiler warning (level 1) C4604|'*type*': passing argument by value across native and managed boundary requires valid copy constructor. Otherwise the runtime behavior is undefined|
-|Compiler warning (level 1) C4605|'/D*macro*' specified on current command line, but was not specified when precompiled header was built|
-|[Compiler warning (level 1) C4606](../../error-messages/compiler-warnings/compiler-warning-level-1-c4606.md)|#pragma warning: 'warning number' ignored; Code Analysis warnings are not associated with warning levels|
-|[Compiler warning (level 3) C4608](../../error-messages/compiler-warnings/compiler-warning-level-3-c4608.md)|'union_member' has already been initialized by another union member in the initializer list, 'union_member'|
-|Compiler warning (level 3, Error) C4609|'*type1*' derives from default interface '*interface*' on type '*type2*'. Use a different default interface for '*type1*', or break the base/derived relationship.|
-|[Compiler warning (level 4) C4610](../../error-messages/compiler-warnings/compiler-warning-level-4-c4610.md)|object 'class' can never be instantiated - user defined constructor required|
-|[Compiler warning (level 4) C4611](../../error-messages/compiler-warnings/compiler-warning-level-4-c4611.md)|interaction between 'function' and C++ object destruction is non-portable|
+|Compiler warning (level 1) C4604|'*type*': passing an argument of this type by value across the native/managed boundary requires the type to be move- or copy-constructible. Otherwise, the runtime behavior is undefined|
+|Compiler warning (level 1, off) C4605|'`/D`*macro*' specified on current command line, but was not specified when precompiled header was built|
+|[Compiler warning (level 1) C4606](compiler-warning-level-1-c4606.md)|`#pragma warning:` '*warning number*' ignored; Code Analysis warnings are not associated with warning levels|
+|[Compiler warning (level 3, off) C4608](compiler-warning-level-3-c4608.md)|Initializing multiple members of union: '*member1*' and '*member2*'|
+|Compiler warning (level 3, error) C4609|'*type1*' derives from default interface '*interface*' on type '*type2*'. Use a different default interface for '*type1*', or break the base/derived relationship.|
+|[Compiler warning (level 4) C4610](compiler-warning-level-4-c4610.md)|*class* '*name*' can never be instantiated - user defined constructor required|
+|[Compiler warning (level 4) C4611](compiler-warning-level-4-c4611.md)|interaction between '*function*' and C++ object destruction is non-portable|
 |[Compiler warning (level 1) C4612](compiler-warning-level-1-c4612.md)|error in include filename|
 |[Compiler warning (level 1) C4613](compiler-warning-level-1-c4613.md)|'*symbol*': class of segment cannot be changed|
-|[Compiler warning (level 1) C4615](../../error-messages/compiler-warnings/compiler-warning-level-1-c4615.md)|#pragma warning: unknown user warning type|
-|[Compiler warning (level 1) C4616](../../error-messages/compiler-warnings/compiler-warning-level-1-c4616.md)|#pragma warning: warning number 'number' not a valid compiler warning|
-|[Compiler warning (level 1) C4618](../../error-messages/compiler-warnings/compiler-warning-level-1-c4618.md)|pragma parameters included an empty string; pragma ignored|
-|[Compiler warning (level 3) C4619](../../error-messages/compiler-warnings/compiler-warning-level-3-c4619.md)|#pragma warning: there is no warning number 'number'|
-|[Compiler warning (level 1) C4620](compiler-warning-level-1-c4620.md)|no postfix form of 'operator ++' found for type 'type', using prefix form|
-|[Compiler warning (level 1) C4621](../../error-messages/compiler-warnings/compiler-warning-level-1-c4621.md)|no postfix form of 'operator --' found for type 'type', using prefix form|
-|[Compiler warning (level 3) C4622](compiler-warning-level-3-c4622.md)|overwriting debug information formed during creation of the precompiled header in object file: 'file'|
-|[Compiler warning (level 4) C4623](../../error-messages/compiler-warnings/compiler-warning-level-4-c4623.md)|'derived class': default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted|
-|[Compiler warning (level 1) C4624](../../error-messages/compiler-warnings/compiler-warning-level-1-c4624.md)|'derived class': destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted|
-|[Compiler warning (level 4) C4625](../../error-messages/compiler-warnings/compiler-warning-level-4-c4625.md)|'derived class': copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted|
-|[Compiler warning (level 4) C4626](../../error-messages/compiler-warnings/compiler-warning-level-4-c4626.md)|'derived class': assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted|
-|[Compiler warning (level 1) C4627](../../error-messages/compiler-warnings/compiler-warning-level-1-c4627.md)|'\<identifier>': skipped when looking for precompiled header use|
-|[Compiler warning (level 1) C4628](../../error-messages/compiler-warnings/compiler-warning-level-1-c4628.md)|digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for '%s'|
-|[Compiler warning (level 4) C4629](compiler-warning-level-4-c4629.md)|digraph used, character sequence 'digraph' interpreted as token 'char' (insert a space between the two characters if this is not what you intended)|
-|[Compiler warning (level 1) C4630](../../error-messages/compiler-warnings/compiler-warning-level-1-c4630.md)|'symbol': 'extern' storage-class specifier illegal on member definition|
-|Compiler warning (level 2) C4631|MSXML or XPath unavailable, XML document comments will not be processed. reason|
-|[Compiler warning (level 1) C4632](../../error-messages/compiler-warnings/compiler-warning-level-1-c4632.md)|XML document comment: file - access denied: reason|
-|[Compiler warning (level 3) C4633](../../error-messages/compiler-warnings/compiler-warning-level-3-c4633.md)|XML document comment target: error: reason|
-|[Compiler warning (level 4) C4634](compiler-warning-level-4-c4634.md)|XML document comment target: cannot be applied: reason|
-|[Compiler warning (level 3) C4635](compiler-warning-level-3-c4635.md)|XML document comment target: badly-formed XML: reason|
-|[Compiler warning (level 3) C4636](compiler-warning-level-3-c4636.md)|XML document comment applied to construct: tag requires non-empty 'attribute' attribute.|
-|[Compiler warning (level 3 and level 4) C4637](compiler-warning-level-3-c4637.md)|XML document comment target: \<include> tag discarded. Reason|
-|[Compiler warning (level 3) C4638](compiler-warning-level-3-c4638.md)|XML document comment target: reference to unknown symbol 'symbol'.|
-|[Compiler warning (level 4) C4639](../../error-messages/compiler-warnings/compiler-warning-level-4-c4639.md)|MSXML error, XML document comments will not be processed. Reason|
-|[Compiler warning (level 3) C4640](../../error-messages/compiler-warnings/compiler-warning-level-3-c4640.md)|'instance': construction of local static object is not thread-safe|
-|[Compiler warning (level 3) C4641](../../error-messages/compiler-warnings/compiler-warning-level-3-c4641.md)|XML document comment has an ambiguous cross reference:|
+|[Compiler warning (level 1) C4615](compiler-warning-level-1-c4615.md)|`#pragma warning`: unknown user warning type|
+|[Compiler warning (level 1) C4616](compiler-warning-level-1-c4616.md)|`#pragma warning`: warning number '*number*' not a valid compiler warning|
+|[Compiler warning (level 1) C4618](compiler-warning-level-1-c4618.md)|pragma parameters included an empty string; pragma ignored|
+|[Compiler warning (level 3, off) C4619](compiler-warning-level-3-c4619.md)|`#pragma warning`: there is no warning number '*number*'|
+|[Compiler warning (level 1) C4620](compiler-warning-level-1-c4620.md)|no postfix form of '`operator ++`' found for type '*type*', using prefix form|
+|[Compiler warning (level 1) C4621](compiler-warning-level-1-c4621.md)|no postfix form of '`operator --`' found for type '*type*', using prefix form|
+|[Compiler warning (level 3) C4622](compiler-warning-level-3-c4622.md)|overwriting debug information formed during creation of the precompiled header in object file: '*file*'|
+|[Compiler warning (level 1 and level 4, off) C4623](compiler-warning-level-4-c4623.md)|'*derived class*': default constructor was implicitly defined as deleted|
+|[Compiler warning (level 1 and level 4) C4624](compiler-warning-level-1-c4624.md)|'*derived class*': destructor was implicitly defined as deleted|
+|[Compiler warning (level 1 and level 4, off) C4625](compiler-warning-level-4-c4625.md)|'*derived class*': copy constructor was implicitly defined as deleted|
+|[Compiler warning (level 1 and level 4, off) C4626](compiler-warning-level-4-c4626.md)|'*derived class*': assignment operator was implicitly defined as deleted|
+|[Compiler warning (level 1, no longer emitted) C4627](compiler-warning-level-1-c4627.md)|'`identifier`': skipped when looking for precompiled header use|
+|[Compiler warning (level 1, off) C4628](compiler-warning-level-1-c4628.md)|digraphs not supported with `-Ze`. Character sequence '*digraph*' not interpreted as alternate token for '*token*'|
+|[Compiler warning (level 4, no longer emitted) C4629](compiler-warning-level-4-c4629.md)|digraph used, character sequence '*digraph*' interpreted as token '*char*' (insert a space between the two characters if this is not what you intended)|
+|[Compiler warning (level 1) C4630](compiler-warning-level-1-c4630.md)|'*symbol*': '*extern*' storage-class specifier illegal on member definition|
+|Compiler warning (level 2) C4631|`MSXML` or `XPath` unavailable, XML document comments will not be processed. *reason*|
+|[Compiler warning (level 1) C4632](compiler-warning-level-1-c4632.md)|XML document comment: *file* - access denied: *reason*|
+|[Compiler warning (level 3 and level 4) C4633](compiler-warning-level-3-c4633.md)|XML document comment *target*: error: *reason*|
+|[Compiler warning (level 4) C4634](compiler-warning-level-4-c4634.md)|XML document comment *target*: cannot be applied: *reason*|
+|[Compiler warning (level 3 and level 4) C4635](compiler-warning-level-3-c4635.md)|XML document comment *target*: badly-formed XML: *reason*|
+|[Compiler warning (level 3) C4636](compiler-warning-level-3-c4636.md)|XML document comment *target*: tag requires non-empty '*attribute*' attribute.|
+|[Compiler warning (level 3 and level 4) C4637](compiler-warning-level-3-c4637.md)|XML document comment *target*: `<include>` tag discarded. *Reason*|
+|[Compiler warning (level 3) C4638](compiler-warning-level-3-c4638.md)|XML document comment *target*: reference to unknown symbol '*symbol*'.|
+|[Compiler warning (level 2) C4639](compiler-warning-level-4-c4639.md)|`MSXML` error, XML document comments will not be processed. *Reason*|
+|[Compiler warning (level 3, off) C4640](compiler-warning-level-3-c4640.md)|'*instance*': construction of local static object is not thread-safe|
+|[Compiler warning (level 3) C4641](compiler-warning-level-3-c4641.md)|XML document comment has an ambiguous cross reference:|
 |Compiler warning (level 1) C4642|'*class*': could not import the constraints for generic parameter '*name*'|
 |Compiler warning (level 4, off) C4643|Forward declaring '*identifier*' in namespace std is not permitted by the C++ Standard.|
 |Compiler warning (level 1) C4644|usage of the macro-based `offsetof` pattern in constant expressions is non-standard; use `offsetof` defined in the C++ standard library instead|
-|[Compiler warning (level 3) C4645](compiler-warning-level-3-c4645.md)|function declared with __declspec(noreturn) has a return statement|
-|[Compiler warning (level 3) C4646](compiler-warning-level-3-c4646.md)|function declared with __declspec(noreturn) has non-void return type|
-|Compiler warning (level 3) C4647|behavior change: __is_pod(*type*) has different value in previous versions|
-|Compiler warning (level 3) C4648|standard attribute 'carries_dependency' is ignored|
+|[Compiler warning (level 3) C4645](compiler-warning-level-3-c4645.md)|function declared with '`noreturn`' has a return statement|
+|[Compiler warning (level 3) C4646](compiler-warning-level-3-c4646.md)|function declared with '`noreturn`' has non-void return type|
+|Compiler warning (level 3, off) C4647|behavior change: `__is_pod(`*type*`)` has different value in previous versions|
+|Compiler warning (level 3) C4648|standard attribute `[[`*attribute*`]]` is ignored|
 |Compiler warning (level 3) C4649|attributes are ignored in this context|
-|[Compiler warning (level 1) C4650](../../error-messages/compiler-warnings/compiler-warning-level-1-c4650.md)|debugging information not in precompiled header; only global symbols from the header will be available|
-|[Compiler warning (level 1) C4651](../../error-messages/compiler-warnings/compiler-warning-level-1-c4651.md)|'definition' specified for precompiled header but not for current compile|
-|[Compiler warning (level 1) C4652](../../error-messages/compiler-warnings/compiler-warning-level-1-c4652.md)|compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header|
-|[Compiler warning (level 2) C4653](../../error-messages/compiler-warnings/compiler-warning-level-2-c4653.md)|compiler option 'option' inconsistent with precompiled header; current command-line option ignored|
-|Compiler warning (level 4) C4654|Code placed before include of precompiled header line will be ignored. Add code to precompiled header.|
-|[Compiler warning (level 1) C4655](compiler-warning-level-1-c4655.md)|'symbol': variable type is new since the latest build, or is defined differently elsewhere|
-|[Compiler warning (level 1) C4656](../../error-messages/compiler-warnings/compiler-warning-level-1-c4656.md)|'symbol': data type is new or has changed since the latest build, or is defined differently elsewhere|
+|[Compiler warning (level 1) C4650](compiler-warning-level-1-c4650.md)|debugging information not in precompiled header; only global symbols from the header will be available|
+|[Compiler warning (level 1) C4651](compiler-warning-level-1-c4651.md)|'`/D`*definition*' specified for precompiled header but not for current compile|
+|[Compiler warning (level 1) C4652](compiler-warning-level-1-c4652.md)|compiler option '*option*' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header|
+|[Compiler warning (level 1) C4653](compiler-warning-level-2-c4653.md)|compiler option '*option*' inconsistent with precompiled header; current command-line option ignored|
+|Compiler warning (level 4, off) C4654|Code placed before include of precompiled header line will be ignored. Add code to precompiled header.|
+|[Compiler warning (level 1) C4655](compiler-warning-level-1-c4655.md)|'*symbol*': variable type is new since the latest build, or is defined differently elsewhere|
+|[Compiler warning (level 1) C4656](compiler-warning-level-1-c4656.md)|'*symbol*': data type is new or has changed since the latest build, or is defined differently elsewhere|
 |[Compiler warning (level 1) C4657](compiler-warning-level-1-c4657.md)|expression involves a data type that is new since the latest build|
-|Compiler warning (level 1) C4658|'function': function prototype is new since the latest build, or is declared differently elsewhere|
-|[Compiler warning (level 1) C4659](../../error-messages/compiler-warnings/compiler-warning-level-1-c4659.md)|#pragma 'pragma': use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...)|
-|[Compiler warning (level 1) C4661](../../error-messages/compiler-warnings/compiler-warning-level-1-c4661.md)|'identifier': no suitable definition provided for explicit template instantiation request|
-|[Compiler warning (level 1) C4662](compiler-warning-level-1-c4662.md)|explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2'|
-|[Compiler warning (level 1) C4667](../../error-messages/compiler-warnings/compiler-warning-level-1-c4667.md)|'function': no function template defined that matches forced instantiation|
-|[Compiler warning (level 4) C4668](../../error-messages/compiler-warnings/compiler-warning-level-4-c4668.md)|'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directive'|
-|[Compiler warning (level 1) C4669](../../error-messages/compiler-warnings/compiler-warning-level-1-c4669.md)|'cast': unsafe conversion: 'class' is a managed type object|
-|[Compiler warning (level 4) C4670](compiler-warning-level-4-c4670.md)|'identifier': this base class is inaccessible|
-|Compiler warning (level 4) C4671|'identifier': the copy constructor is inaccessible|
-|[Compiler warning (level 4) C4672](compiler-warning-level-4-c4672.md)|'identifier1': ambiguous. First seen as 'identifier2'|
-|[Compiler warning (level 4) C4673](../../error-messages/compiler-warnings/compiler-warning-level-4-c4673.md)|throwing 'identifier' the following types will not be considered at the catch site|
-|[Compiler warning (level 1) C4674](compiler-warning-level-1-c4674.md)|'method' should be declared 'static' and have exactly one parameter|
-|Compiler warning (level 4) C4676|'%s': the destructor is inaccessible|
-|[Compiler warning (level 1) C4677](../../error-messages/compiler-warnings/compiler-warning-level-1-c4677.md)|'function': signature of non-private member contains assembly private type 'private_type'|
-|[Compiler warning (level 1) C4678](compiler-warning-level-1-c4678.md)|base class 'base_type' is less accessible than 'derived_type'|
-|[Compiler warning (level 1) C4679](../../error-messages/compiler-warnings/compiler-warning-level-1-c4679.md)|'member': could not import member|
-|[Compiler warning (level 4) C4680](../../error-messages/compiler-warnings/compiler-warning-level-4-c4680.md)|'class': coclass does not specify a default interface|
-|[Compiler warning (level 4) C4681](compiler-warning-level-4-c4681.md)|'class': coclass does not specify a default interface that is an event source|
-|[Compiler warning (level 4) C4682](compiler-warning-level-4-c4682.md)|'parameter': no directional parameter attribute specified, defaulting to [in]|
-|[Compiler warning (level 1) C4683](../../error-messages/compiler-warnings/compiler-warning-level-1-c4683.md)|'function': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers|
-|[Compiler warning (level 1) C4684](../../error-messages/compiler-warnings/compiler-warning-level-1-c4684.md)|'attribute': WARNING!! attribute may cause invalid code generation: use with caution|
-|[Compiler warning (level 1) C4685](compiler-warning-level-1-c4685.md)|expecting '> >' found '>>' when parsing template parameters|
-|[Compiler warning (level 3) C4686](../../error-messages/compiler-warnings/compiler-warning-level-3-c4686.md)|'user-defined type': possible change in behavior, change in UDT return calling convention|
-|[Compiler warning (Error) C4687](../../error-messages/compiler-warnings/compiler-warning-c4687.md)|'class': a sealed abstract class cannot implement an interface 'interface'|
-|[Compiler warning (level 1) C4688](../../error-messages/compiler-warnings/compiler-warning-level-1-c4688.md)|'constraint': constraint list contains assembly private type 'type'|
-|Compiler warning (level 1) C4689|'%c': unsupported character in #pragma detect_mismatch; #pragma ignored|
-|[Compiler warning (level 4) C4690](../../error-messages/compiler-warnings/compiler-warning-level-4-c4690.md)|[ emitidl( pop ) ]: more pops than pushes|
-|[Compiler warning (level 1) C4691](../../error-messages/compiler-warnings/compiler-warning-level-1-c4691.md)|'type': type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead|
-|[Compiler warning (level 1) C4692](../../error-messages/compiler-warnings/compiler-warning-level-1-c4692.md)|'function': signature of non-private member contains assembly private native type 'native_type'|
-|[Compiler warning (level 1, Error) C4693](../../error-messages/compiler-warnings/compiler-warning-c4693.md)|'class': a sealed abstract class cannot have any instance members 'instance member'|
-|[Compiler warning (level 1, Error) C4694](../../error-messages/compiler-warnings/compiler-warning-c4694.md)|'class': a sealed abstract class cannot have a base-class 'base_class'|
-|Compiler warning (level 1) C4695|#pragma execution_character_set: 'character set' is not a supported argument: currently only 'UTF-8' is supported|
-|Compiler warning (level 1) C4696|/ZBvalue1 option out of range; assuming 'value2'|
-| [Compiler warning (level 3) C4698](../../error-messages/compiler-warnings/c4698.md) | '*feature*' is for evaluation purposes only and is subject to change or removal in future updates. |
-|[Compiler warning (level 1 and level 4) C4700](../../error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md)|uninitialized local variable 'name' used|
-|[Compiler warning (level 4) C4701](../../error-messages/compiler-warnings/compiler-warning-level-4-c4701.md)|potentially uninitialized local variable 'name' used|
-|[Compiler warning (level 4) C4702](../../error-messages/compiler-warnings/compiler-warning-level-4-c4702.md)|unreachable code|
-|[Compiler warning (level 4) C4703](../../error-messages/compiler-warnings/compiler-warning-level-4-c4703.md)|potentially uninitialized local pointer variable '%s' used|
-|[Compiler warning (level 4) C4706](../../error-messages/compiler-warnings/compiler-warning-level-4-c4706.md)|assignment within conditional expression|
-|[Compiler warning (level 4) C4709](../../error-messages/compiler-warnings/compiler-warning-level-4-c4709.md)|comma operator within array index expression|
-|[Compiler warning (level 4) C4710](../../error-messages/compiler-warnings/compiler-warning-level-4-c4710.md)|'function': function not inlined|
-|[Compiler warning (level 1) C4711](../../error-messages/compiler-warnings/compiler-warning-level-1-c4711.md)|function 'function' selected for automatic inline expansion|
-|[Compiler warning (level 4) C4714](../../error-messages/compiler-warnings/compiler-warning-level-4-c4714.md)|function 'function' marked as __forceinline not inlined|
-|[Compiler warning (level 1) C4715](../../error-messages/compiler-warnings/compiler-warning-level-1-c4715.md)|'function': not all control paths return a value|
-|[Compiler warning (level 1, Error) C4716](../../error-messages/compiler-warnings/compiler-warning-level-1-c4716.md)|'function': must return a value|
-|[Compiler warning (level 1) C4717](../../error-messages/compiler-warnings/compiler-warning-level-1-c4717.md)|'function': recursive on all control paths, function will cause runtime stack overflow|
+|Compiler warning (level 1) C4658|'*function*': function prototype is new since the latest build, or is declared differently elsewhere|
+|[Compiler warning (level 1) C4659](compiler-warning-level-1-c4659.md)|`#pragma `'*pragma*': use of reserved segment '*segment*' has undefined behavior, use `#pragma comment(linker, ...)`|
+|[Compiler warning (level 1) C4661](compiler-warning-level-1-c4661.md)|'*identifier*': no suitable definition provided for explicit template instantiation request|
+|[Compiler warning (level 1) C4662](compiler-warning-level-1-c4662.md)|explicit instantiation; template-class '*identifier1*' has no definition from which to specialize '*identifier2*'|
+|[Compiler warning (level 1) C4667](compiler-warning-level-1-c4667.md)|'*function*': cannot find a function template that matches the explicit instantiation|
+|[Compiler warning (level 4, off) C4668](compiler-warning-level-4-c4668.md)|'*symbol*' is not defined as a preprocessor macro, replacing with '`0`' for '*directive*'|
+|[Compiler warning (level 1) C4669](compiler-warning-level-1-c4669.md)|'*cast*': unsafe conversion: '*class*' is a *managed/WinRT* type object|
+|[Compiler warning (level 4) C4670](compiler-warning-level-4-c4670.md)|'*identifier*': this base class is inaccessible|
+|Compiler warning (level 4) C4671|'*identifier*': the copy constructor is inaccessible|
+|[Compiler warning (level 4) C4672](compiler-warning-level-4-c4672.md)|'*identifier1*': ambiguous. First seen as '*identifier2*'|
+|[Compiler warning (level 4) C4673](compiler-warning-level-4-c4673.md)|throwing '*identifier*' the following types will not be considered at the catch site|
+|[Compiler warning (level 1) C4674](compiler-warning-level-1-c4674.md)|'*method*' should be declared '`static`' and have exactly one parameter|
+|Compiler warning (level 4) C4676|'*class*': the destructor is inaccessible|
+|[Compiler warning (level 1) C4677](compiler-warning-level-1-c4677.md)|'*function*': signature of non-private member contains assembly private type '*private_type*'|
+|[Compiler warning (level 1) C4678](compiler-warning-level-1-c4678.md)|base class '*base_type*' is less accessible than '*derived_type*'|
+|[Compiler warning (level 1 and level 4) C4679](compiler-warning-level-1-c4679.md)|'*member*': could not import item or its associated custom attribute|
+|[Compiler warning (level 4) C4680](compiler-warning-level-4-c4680.md)|'*class*': `coclass` does not specify a default interface|
+|[Compiler warning (level 4) C4681](compiler-warning-level-4-c4681.md)|'*class*': `coclass` does not specify a default interface that is an event source|
+|[Compiler warning (level 4, off) C4682](compiler-warning-level-4-c4682.md)|'*parameter*': no directional parameter attribute specified, defaulting to `[in]`|
+|[Compiler warning (level 1) C4683](compiler-warning-level-1-c4683.md)|'*function*': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers|
+|[Compiler warning (level 1) C4684](compiler-warning-level-1-c4684.md)|'*attribute*': WARNING!! attribute may cause invalid code generation: use with caution|
+|[Compiler warning (level 1, no longer emitted) C4685](compiler-warning-level-1-c4685.md)|expecting '`> >`' found '`>>`' when parsing template parameters|
+|[Compiler warning (level 3, off) C4686](compiler-warning-level-3-c4686.md)|'*user-defined type*': possible change in behavior, change in UDT return calling convention|
+|[Compiler warning (level 1, error) C4687](compiler-warning-c4687.md)|'*class*': a sealed abstract class cannot implement an interface '*interface*'|
+|[Compiler warning (level 1) C4688](compiler-warning-level-1-c4688.md)|'*constraint*': constraint list contains assembly private type '*type*'|
+|Compiler warning (level 1) C4689|'*character*': unsupported character in `#pragma detect_mismatch`; `#pragma` ignored|
+|[Compiler warning (level 4) C4690](compiler-warning-level-4-c4690.md)|`[ emitidl( pop ) ]`: more pops than pushes|
+|[Compiler warning (level 1) C4691](compiler-warning-level-1-c4691.md)|'*type*': type referenced was expected in unreferenced *assembly* '*file*', type defined in current translation unit used instead|
+|[Compiler warning (level 1, off) C4692](compiler-warning-level-1-c4692.md)|'*function*': signature of non-private member contains assembly private native type '*native_type*'|
+|[Compiler warning (level 1, error) C4693](compiler-warning-c4693.md)|'*class*': a sealed abstract class cannot have any instance members '*instance member*'|
+|[Compiler warning (level 1, error) C4694](compiler-warning-c4694.md)|'*class*': a sealed abstract class cannot have a base-class '*base_class*'|
+|Compiler warning (level 1) C4695|`#pragma execution_character_set`: '*character set*' is not a supported argument: currently only '`UTF-8`' is supported|
+|Compiler warning (level 1) C4696|`/ZBvalue1` option out of range; assuming 'value2'|
+| [Compiler warning (level 3) C4698](c4698.md) | '*feature*' is for evaluation purposes only and is subject to change or removal in future updates. |
+|[Compiler warning (level 1 and level 4) C4700](compiler-warning-level-1-and-level-4-c4700.md)|uninitialized local variable 'name' used|
+|[Compiler warning (level 4) C4701](compiler-warning-level-4-c4701.md)|potentially uninitialized local variable 'name' used|
+|[Compiler warning (level 4) C4702](compiler-warning-level-4-c4702.md)|unreachable code|
+|[Compiler warning (level 4) C4703](compiler-warning-level-4-c4703.md)|potentially uninitialized local pointer variable '*identifier*' used|
+|[Compiler warning (level 4) C4706](compiler-warning-level-4-c4706.md)|assignment used as a condition|
+|[Compiler warning (level 4) C4709](compiler-warning-level-4-c4709.md)|comma operator within array index expression|
+|[Compiler warning (level 4, off) C4710](compiler-warning-level-4-c4710.md)|'*function*': function not inlined|
+|[Compiler warning (level 1) C4711](compiler-warning-level-1-c4711.md)|function 'function' selected for automatic inline expansion|
+|[Compiler warning (level 4) C4714](compiler-warning-level-4-c4714.md)|function '*function*' marked as `__forceinline` not inlined|
+|[Compiler warning (level 1) C4715](compiler-warning-level-1-c4715.md)|'function': not all control paths return a value|
+|[Compiler warning (level 1, error) C4716](compiler-warning-level-1-c4716.md)|'function': must return a value|
+|[Compiler warning (level 1) C4717](compiler-warning-level-1-c4717.md)|'function': recursive on all control paths, function will cause runtime stack overflow|
 |[Compiler warning (level 4) C4718](compiler-warning-level-4-c4718.md)|'function call': recursive call has no side effects, deleting|
 |Compiler warning (level 1) C4719|Double constant found when Qfast specified - use 'f' as a suffix to indicate single precision|
 |Compiler warning (level 2) C4720|in-line assembler reports: 'message'|
 |Compiler warning (level 1) C4721|'function': not available as an intrinsic|
 |[Compiler warning (level 1) C4722](compiler-warning-level-1-c4722.md)|'function': destructor never returns, potential memory leak|
-|[Compiler warning (level 3) C4723](../../error-messages/compiler-warnings/compiler-warning-level-3-c4723.md)|potential divide by 0|
+|[Compiler warning (level 3) C4723](compiler-warning-level-3-c4723.md)|potential divide by 0|
 |[Compiler warning (level 3) C4724](compiler-warning-level-3-c4724.md)|potential mod by 0|
 |Compiler warning (level 3) C4725|instruction may be inaccurate on some Pentiums|
-|Compiler warning C4726|ARM arch4/4T supports only '<cpsr_f> or <spsr_f>' with immediate value|
-|[Compiler warning (level 1) C4727](../../error-messages/compiler-warnings/compiler-warning-level-1-c4727.md)|PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2.  Using first PCH.|
-|Compiler warning (level 1) C4728|/Yl- option ignored because PCH reference is required|
+|Compiler warning C4726|ARM arch4/4T supports only '`<cpsr_f>` or `<spsr_f>`' with immediate value|
+|[Compiler warning (level 1) C4727](compiler-warning-level-1-c4727.md)|PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2.  Using first PCH.|
+|Compiler warning (level 1) C4728|`/Yl-` option ignored because PCH reference is required|
 |Compiler warning (level 4) C4729|function too big for flow graph based warnings|
-|[Compiler warning (Level 1) C4730](../../error-messages/compiler-warnings/compiler-warning-level-1-c4730.md)|'main': mixing _m64 and floating point expressions may result in incorrect code|
-|[Compiler warning (Level 1) C4731](../../error-messages/compiler-warnings/compiler-warning-level-1-c4731.md)|'pointer': frame pointer register 'register' modified by inline assembly code|
-|Compiler warning (level 1) C4732|intrinsic '%s' is not supported in this architecture|
-|[Compiler warning (Level 1) C4733](../../error-messages/compiler-warnings/compiler-warning-level-1-c4733.md)|Inline asm assigning to 'FS:0': handler not registered as safe handler|
+|[Compiler warning (Level 1) C4730](compiler-warning-level-1-c4730.md)|'main': mixing `_m64` and floating point expressions may result in incorrect code|
+|[Compiler warning (Level 1) C4731](compiler-warning-level-1-c4731.md)|'pointer': frame pointer register 'register' modified by inline assembly code|
+|Compiler warning (level 1) C4732|intrinsic '*identifier*' is not supported in this architecture|
+|[Compiler warning (Level 1) C4733](compiler-warning-level-1-c4733.md)|Inline asm assigning to '`FS:0`': handler not registered as safe handler|
 |Compiler warning C4734|More than 64k line numbers in a COFF debug info section; stop emitting COFF debug line numbers for module 'module'|
 |Compiler warning C4735|`align_function` attribute argument '*argument*' is not a power of two and is not positive. Ignoring attribute|
 |Compiler warning C4736|`align_function` attribute ignored because `/Gy` was not specified|
-|[Compiler warning (Level 3) C4738](../../error-messages/compiler-warnings/compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance|
+|[Compiler warning (Level 3) C4738](compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance|
 |[Compiler warning (level 1) C4739](compiler-warning-level-1-c4739.md)|reference to variable 'var' exceeds its storage space|
-|[Compiler warning (Level 4) C4740](../../error-messages/compiler-warnings/compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization|
-|[Compiler warning (Level 1) C4742](../../error-messages/compiler-warnings/compiler-warning-level-1-c4742.md)|'var' has different alignment in 'file1' and 'file2': number and number|
-|[Compiler warning (Level 1) C4743](../../error-messages/compiler-warnings/compiler-warning-level-1-c4743.md)|'type' has different size in 'file1' and 'file2': number and number bytes|
-|[Compiler warning (Level 1) C4744](../../error-messages/compiler-warnings/compiler-warning-level-1-c4744.md)|'var' has different type in 'file1' and 'file2': 'type1' and 'type2'|
+|[Compiler warning (Level 4) C4740](compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization|
+|[Compiler warning (Level 1) C4742](compiler-warning-level-1-c4742.md)|'var' has different alignment in 'file1' and 'file2': number and number|
+|[Compiler warning (Level 1) C4743](compiler-warning-level-1-c4743.md)|'type' has different size in 'file1' and 'file2': number and number bytes|
+|[Compiler warning (Level 1) C4744](compiler-warning-level-1-c4744.md)|'var' has different type in 'file1' and 'file2': 'type1' and 'type2'|
 |Compiler warning C4745|volatile access of 'name' cannot be honored due to its size|
-|[Compiler warning C4746](../../error-messages/compiler-warnings/compiler-warning-c4746.md)|volatile access of '*expression*' is subject to /volatile:\<iso\|ms> setting; consider using __iso_volatile_load/store intrinsic functions|
-|[Compiler warning (level 1) C4747](../../error-messages/compiler-warnings/compiler-warning-level-1-c4747.md)|Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint|
-|Compiler warning (level 4) C4749|conditionally supported: offsetof applied to non-standard-layout type '*type*'|
-|[Compiler warning (level 1) C4750](compiler-warning-level-1-c4750.md)|'identifier': function with _alloca() inlined into a loop|
-|Compiler warning (level 4) C4751|/arch:AVX does not apply to Intel(R) Streaming SIMD Extensions that are within inline ASM|
-|Compiler warning (level 4) C4752|found Intel(R) Advanced Vector Extensions; consider using /arch:AVX|
+|[Compiler warning C4746](compiler-warning-c4746.md)|volatile access of '*expression*' is subject to `/volatile:<iso|ms>` setting; consider using `__iso_volatile_load/store intrinsic functions`|
+|[Compiler warning (level 1) C4747](compiler-warning-level-1-c4747.md)|Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint|
+|Compiler warning (level 4, off) C4749|conditionally supported: *message*|
+|[Compiler warning (level 1) C4750](compiler-warning-level-1-c4750.md)|'identifier': function with `_alloca()` inlined into a loop|
+|Compiler warning (level 4) C4751|`/arch:AVX` does not apply to Intel(R) Streaming SIMD Extensions that are within inline ASM|
+|Compiler warning (level 4) C4752|found Intel(R) Advanced Vector Extensions; consider using `/arch:AVX`|
 |Compiler warning C4753|Cannot find bounds for pointer; MPX intrinsic function ignored|
 |[Compiler warning (level 4) C4754](compiler-warning-level-4-c4754.md)|Conversion rules for arithmetic operations in the comparison at %s(%d) mean that one branch cannot be executed. Cast '%s' to '%s' (or similar type of %d bytes).|
 |Compiler warning C4755|Conversion rules for arithmetic operations in the comparison at %s(%d) mean that one branch cannot be executed in an inlined function. Cast '%s' to '%s' (or similar type of %d bytes).|
-|[Compiler warning (level 2) C4756](../../error-messages/compiler-warnings/compiler-warning-level-2-c4756.md)|overflow in constant arithmetic|
+|[Compiler warning (level 2) C4756](compiler-warning-level-2-c4756.md)|overflow in constant arithmetic|
 |Compiler warning (level 4) C4757|subscript is a large unsigned value, did you intend a negative constant?|
 |Compiler warning C4761|integral size mismatch in argument; conversion supplied|
 |[Compiler warning (level 4) C4764](compiler-warning-level-4-c4764.md)|Can not align catch objects to greater than 16 bytes|
-|Compiler warning (level 4) C4767|section name '%s' is longer than 8 characters and will be truncated by the linker|
-|[Compiler warning (level 3) C4768](c4768.md)|__declspec attributes before linkage specification are ignored|
+|Compiler warning (level 4, off) C4767|section name '%s' is longer than 8 characters and will be truncated by the linker|
+|[Compiler warning (level 3, off) C4768](c4768.md)|`__declspec` attributes before linkage specification are ignored|
 | [Compiler warning (level 4) C4770](./c4770.md) | partially validated enum '*name*' used as index |
 |Compiler warning C4771|Bounds must be created using a simple pointer; MPX intrinsic function ignored|
-|[Compiler warning (level 1, Error) C4772](../../error-messages/compiler-warnings/compiler-warning-level-1-c4772.md)|#import referenced a type from a missing type library; 'missing_type' used as a placeholder|
-|Compiler warning (level 4) C4774|'*string*' : format string expected in argument *number* is not a string literal|
+|[Compiler warning (level 1, error) C4772](compiler-warning-level-1-c4772.md)|`#import` referenced a type from a missing type library; '*missing_type*' used as a placeholder|
+|Compiler warning (level 4, off) C4774|'*string*' : format string expected in argument *number* is not a string literal|
 |Compiler warning (level 3) C4775|nonstandard extension used in format string '*string*' of function '*function*'|
-|Compiler warning (level 1) C4776|'%*character*' is not allowed in the format string of function '*function*'|
-|Compiler warning (level 4) C4777|'*function*' : format string '*string*' requires an argument of type '*type1*', but variadic argument *number* has type '*type2*'|
+|Compiler warning (level 1) C4776|'`%`*character*' is not allowed in the format string of function '*function*'|
+|Compiler warning (level 4, off) C4777|'*function*' : format string '*string*' requires an argument of type '*type1*', but variadic argument *number* has type '*type2*'|
 |Compiler warning (level 3) C4778|'*function*' : unterminated format string '*string*'|
-|[Compiler warning (Level 1) C4788](../../error-messages/compiler-warnings/compiler-warning-level-1-c4788.md)|'identifier': identifier was truncated to 'number' characters|
-|[Compiler warning (Level 1) C4789](../../error-messages/compiler-warnings/compiler-warning-level-1-c4789.md)|buffer 'identifier' of size N bytes will be overrun; M bytes will be written starting at offset L|
-|Compiler warning (level 2) C4792|function '%s' declared using sysimport and referenced from native code; import library required to link|
-|[Compiler warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md)|'function': function compiled as native: 'reason'|
+|[Compiler warning (Level 1) C4788](compiler-warning-level-1-c4788.md)|'identifier': identifier was truncated to 'number' characters|
+|[Compiler warning (Level 1) C4789](compiler-warning-level-1-c4789.md)|buffer 'identifier' of size N bytes will be overrun; M bytes will be written starting at offset L|
+|Compiler warning (level 2) C4792|function '%s' declared using `sysimport` and referenced from native code; import library required to link|
+|[Compiler warning (level 1 and level 3) C4793](compiler-warning-level-1-and-3-c4793.md)|'*function*': function compiled as native:<br> *reason*|
 |[Compiler warning (level 1) C4794](compiler-warning-level-1-c4794.md)|segment of thread local storage variable '%s' changed from '%s' to '%s'|
 |Compiler warning C4798|native code generated for p-code function 'name' with exception handler or unwind semantics|
-|[Compiler warning (level 1) C4799](../../error-messages/compiler-warnings/compiler-warning-level-1-c4799.md)|function 'function' has no EMMS instruction|
+|[Compiler warning (level 1) C4799](compiler-warning-level-1-c4799.md)|function '*function*' has no EMMS instruction|
 
 ## See also
 
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md
index b33c69c14f..604fdbc580 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md
@@ -2,8 +2,8 @@
 title: "Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999"
 description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999."
 ms.date: 04/17/2024
-f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"]
-helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"]
+f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"]
+helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"]
 ---
 # Microsoft C/C++ compiler warnings C4800 through C4999
 
@@ -24,124 +24,124 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 | [Compiler warning (level 1) C4807](compiler-warning-level-1-c4807.md) | '*operation*': unsafe mix of type '*type1*' and signed bit field of type '*type2*' |
 | Compiler warning (level 1) C4808 | `case` '*value*' is not a valid value for `switch` condition of type '`bool`' |
 | Compiler warning (level 1) C4809 | `switch` statement has redundant '`default`' label; all possible '`case`' labels are given |
-| [Compiler warning (level 1) C4810](compiler-warning-level-1-c4810.md) | value of `pragma pack(show)` == n |
+| [Compiler warning (level 1) C4810](compiler-warning-level-1-c4810.md) | value of `pragma pack(show)` == *number* |
 | [Compiler warning (level 1) C4811](compiler-warning-level-1-c4811.md) | value of `pragma conform(forScope, show)` == *value* |
 | [Compiler warning (level 1) C4812](compiler-warning-level-1-c4812.md) | obsolete declaration style: please use '*new_syntax*' instead |
 | [Compiler warning (level 1) C4813](compiler-warning-level-1-c4813.md) | '*function*': a friend function of a local class must have been previously declared |
 | Compiler warning (level 4) C4815 | '*object name*': zero-sized array in stack object will have no elements (unless the object is an aggregate that has been aggregate initialized) |
 | [Compiler warning (level 4) C4816](compiler-warning-level-4-c4816.md) | '*param*': parameter has a zero-sized array which will be truncated (unless the object is passed by reference) |
-| [Compiler warning (level 1) C4817](compiler-warning-level-1-c4817.md) | '*member*': illegal use of '.' to access this member; compiler replaced with '->' |
-| [Compiler warning (level 1) C4819](compiler-warning-level-1-c4819.md) | The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss |
-| [Compiler warning (level 4, off) C4820](compiler-warning-level-4-c4820.md) | '*bytes*' bytes padding added after construct '*member_name*' |
+| [Compiler warning (level 1) C4817](compiler-warning-level-1-c4817.md) | '*member*': illegal use of '`.`' to access this member; compiler replaced with '`->`' |
+| [Compiler warning (level 1) C4819](compiler-warning-level-1-c4819.md) | The file contains a character that cannot be represented in the current code page (*number*). Save the file in Unicode format to prevent data loss |
+| [Compiler warning (level 4, off) C4820](compiler-warning-level-4-c4820.md) |'*type*': '*bytes*' bytes padding added after *class* '*member_name*'|
 | [Compiler warning (level 1) C4821](compiler-warning-level-1-c4821.md) | Unable to determine Unicode encoding type, please save the file with signature (BOM) |
-| [Compiler warning (level 1, off) C4822](compiler-warning-level-1-c4822.md) | 'member function': local class member function does not have a body |
+| [Compiler warning (level 4, off) C4822](compiler-warning-level-1-c4822.md) | '*member function*': local class member function does not have a body |
 | [Compiler warning (level 3) C4823](compiler-warning-level-3-c4823.md) | '*function*': uses pinning pointers but unwind semantics are not enabled. Consider using `/EHa` |
 | Compiler warning (level 2, off) C4826 | Conversion from '*type1*' to '*type2*' is sign-extended. This may cause unexpected runtime behavior. |
 | Compiler warning (level 3) C4827 | A public '`ToString`' method with 0 parameters should be marked as `virtual` and `override` |
-| Compiler warning (level 1) C4828 | The file contains a character starting at offset 0x*HexOffset* that is illegal in the current source character set (codepage *codepage*). |
+| Compiler warning (level 1) C4828 | The file contains a character starting at offset `0x`*HexOffset* that is illegal in the current source character set (codepage *codepage*). |
 | [Compiler warning (level 1) C4829](compiler-warning-level-1-c4829.md) | Possibly incorrect parameters to function `main`. Consider '`int main(Platform::Array<Platform::String^>^ argv)`' |
-| [Compiler warning (level 1) C4834](c4834.md) | discarding return value of function with 'nodiscard' attribute |
+| [Compiler warning (level 1) C4834](c4834.md) |discarding return value of function with `[[nodiscard]]` attribute|
 | [Compiler warning (level 1) C4835](compiler-warning-level-1-c4835.md) | '*variable*': the initializer for exported data will not be run until managed code is first executed in the host assembly |
 | Compiler warning (level 4, off) C4837 | trigraph detected: '`??`*character*' replaced by '*character*' |
 | [Compiler warning (level 1) C4838](compiler-warning-level-1-c4838.md) | conversion from '*type_1*' to '*type_2*' requires a narrowing conversion |
-| [Compiler warning (level 3) C4839](compiler-warning-level-3-c4839.md) | non-standard use of class '*type*' as an argument to a variadic function |
+| [Compiler warning (level 3, error) C4839](compiler-warning-level-3-c4839.md) | non-standard use of class '*type*' as an argument to a variadic function |
 | [Compiler warning (level 4) C4840](compiler-warning-level-4-c4840.md) | non-portable use of class '*type*' as an argument to a variadic function |
-| [Compiler warning (level 4, off) C4841](c4841.md) | non-standard extension used: compound member designator used in `offsetof` |
+| [Compiler warning (level 4, off) C4841](c4841.md) | non-standard extension used: *message* |
 | Compiler warning (level 4, off) C4842 | the result of '`offsetof`' applied to a type using multiple inheritance is not guaranteed to be consistent between compiler releases |
 | [Compiler warning (level 4) C4843](c4843.md) | '*type1*': An exception handler of reference to array or function type is unreachable, use '*type2*' instead |
 | Compiler warning (level 1) C4844 | '`export module` *`module_name`*`;`' is now the preferred syntax for declaring a module interface |
-| Compiler warning (level 4) C4845 | '`__declspec(no_init_all)`' is ignored if '`/d1initall[0|1|2|3]`' was not specified on the command line |
+| Compiler warning (level 4) C4845 |'`__declspec(no_init_all)`' is ignored unless '`/d1initall[0|1|2|3]`' or '`/presetPadding`' is specified on the command line|
 | Compiler warning (level 4) C4846 | '*value*' is not a valid argument for '`/d1initall`': command-line flag ignored |
-| Compiler warning (level 4) C4847 | '`__declspec(no_init_all)`' can only be applied to a function, a class type, or a local variable: ignored |
-| Compiler warning (level 1) C4848 | support for standard attribute '`no_unique_address`' in C++17 and earlier is a vendor extension |
+| Compiler warning (level 4) C4847 |'*identifier*': '`__declspec(no_init_all)`' can only be applied to a function, a class type, or a local variable: ignored |
+| Compiler warning (level 1) C4848 | support for attribute `[[`*attribute*`]]` in C++17 and earlier is a vendor extension |
 | Compiler warning (level 1) C4849 | OpenMP '*clause*' clause ignored in '*directive*' directive |
 | Compiler warning (Level 1, error) C4854 | binding dereferenced null pointer to reference has undefined behavior |
-| Compiler warning (level 1, off) C4855 | implicit capture of '`this`' via '`[=]`' is deprecated in 'version' |
-| Compiler warning (level 4) C4856 | '*value*' is not a valid argument for '`/d1initAll:FillPattern`' (value must be between 0 and 255). Command-line flag ignored |
-| Compiler warning (level 1) C4857 | C++/CLI mode does not support C++ versions newer than C++17; setting language to `/std:c++17` |
+| Compiler warning (level 1, off) C4855 | implicit capture of '`this`' via '`[=]`' is deprecated in '*version*' |
+| Compiler warning (level 4) C4856 | '*value*' is not a valid argument for '`/d1initAll:FillPattern`' (value must be between `0` and `255`). Command-line flag ignored |
+| Compiler warning (level 1) C4857 | C++/CLI mode does not support C++ versions newer than C++*ver*; setting language to `/std:c++`*ver* |
 | Compiler warning (level 1) C4858 | discarding return value: *function name* |
 | Compiler warning (level 4) C4859 | '*value*' is not a valid argument for '`/presetWarn`': it must be a decimal value > 0. Command-line flag ignored |
 | Compiler warning (level 4) C4860 | '*object name*': compiler zero initialized '*number*' bytes of storage |
 | Compiler warning (level 4) C4861 | compiler zero initialized '*number*' bytes of storage |
 | [Compiler warning (level 4) C4866](c4866.md) | compiler may not enforce left-to-right evaluation order for call to *operator_name* |
-| [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) | '*function*': function call missing argument list; use '*call*' to create a pointer to member |
+| [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) |'*function name*': non-standard syntax; use '`&`' to create a pointer to member|
 | [Compiler warning (level 4) C4868](compiler-warning-c4868.md) | '*file*(*line_number*)' compiler may not enforce left-to-right evaluation order in braced initialization list |
 | Compiler warning (level 3) C4869 | '`nodiscard`' may only be applied to classes, enumerations, and functions |
 | Compiler warning (level 2) C4872 | floating point division by zero detected when compiling the call graph for the `concurrency::parallel_for_each` at: '*location*' |
-| Compiler warning (level 1) C4880 | casting from 'const *type_1*' to '*type_2*': casting away constness from a pointer or reference may result in undefined behavior in an amp restricted function |
+| Compiler warning (level 1) C4880 | casting from '*const type_1*' to '*type_2*': casting away constness from a pointer or reference may result in undefined behavior in an `amp` restricted function |
 | Compiler warning (level 4) C4881 | the constructor and/or the destructor will not be invoked for `tile_static` variable '*variable-name*' |
 | Compiler warning (level 1) C4882 | passing functors with non-const call operators to `concurrency::parallel_for_each` is deprecated |
 | Compiler warning C4883 | '*function name*': function size suppresses optimizations |
 | [Compiler warning C4900](compiler-warning-level-1-c4900.md) | Il mismatch between '*tool1*' version '*version1*' and '*tool2*' version '*version2*' |
-| [Compiler warning (level 1, off) C4905](compiler-warning-level-1-c4905.md) | wide string literal cast to '`LPSTR`' |
-| [Compiler warning (level 1, off) C4906](compiler-warning-level-1-c4906.md) | string literal cast to '`LPWSTR`' |
-| Compiler warning (Error) C4907 | multiple calling conventions cannot be specified; last given will be used |
-| [Compiler warning (level 1) C4910](compiler-warning-level-1-c4910.md) | '\<identifier>: '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation |
+| [Compiler warning (level 1, off) C4905](compiler-warning-level-1-c4905.md) | wide string literal cast to '*type*' |
+| [Compiler warning (level 1, off) C4906](compiler-warning-level-1-c4906.md) | string literal cast to '*type*' |
+| Compiler warning (error) C4907 | multiple calling conventions cannot be specified; last given will be used |
+| [Compiler warning (level 1) C4910](compiler-warning-level-1-c4910.md) |'*identifier*': '`__declspec(dllexport)`' and '`extern`' are incompatible on an explicit instantiation|
 | [Compiler warning (level 1) C4912](compiler-warning-level-1-c4912.md) | '*attribute*': attribute has undefined behavior on a nested UDT |
 | [Compiler warning (level 4) C4913](compiler-warning-level-4-c4913.md) | user defined binary operator '`,`' exists but no overload could convert all operands, default built-in binary operator '`,`' used |
 | Compiler warning (level 1) C4916 | in order to have a `dispid`, '*description*': must be introduced by an interface |
 | [Compiler warning (level 1, off) C4917](compiler-warning-level-1-c4917.md) | '*declarator*': a GUID can only be associated with a class, interface or namespace |
 | [Compiler warning (level 4) C4918](compiler-warning-level-4-c4918.md) | '*character*': invalid character in pragma optimization list |
-| [Compiler warning (level 1) C4920](compiler-warning-level-1-c4920.md) | enum *enum-name* member *member_1*=*value_1* already seen in enum *enum-name* as *member_2*=*value_2* |
+| [Compiler warning (level 1) C4920](compiler-warning-level-1-c4920.md) | `enum` *enum-name* member *member_1*`=`*value_1* already seen in `enum` *enum-name* as *member_2*`=`*value_2* |
 | Compiler warning (level 3) C4921 | '*description*': attribute value '*attribute*' should not be multiply specified |
-| [Compiler warning (level 1) C4925](compiler-warning-level-1-c4925.md) | '*method*': dispinterface method cannot be called from script |
+| [Compiler warning (level 1) C4925](compiler-warning-level-1-c4925.md) | '*method*': `dispinterface` method cannot be called from script |
 | [Compiler warning (level 1) C4926](compiler-warning-level-1-c4926.md) | '*identifier*': symbol is already defined: attributes ignored |
 | [Compiler warning (level 1) C4927](compiler-warning-level-1-c4927.md) | illegal conversion; more than one user-defined conversion has been implicitly applied |
 | [Compiler warning (level 1, off) C4928](compiler-warning-level-1-c4928.md) | illegal copy-initialization; more than one user-defined conversion has been implicitly applied |
-| [Compiler warning (level 1) C4929](compiler-warning-level-1-c4929.md) | '*file*': typelibrary contains a union; ignoring the 'embedded_idl' qualifier |
+| [Compiler warning (level 1) C4929](compiler-warning-level-1-c4929.md) | '*file*': `typelibrary` contains a union; ignoring the '`embedded_idl`' qualifier |
 | [Compiler warning (level 1) C4930](compiler-warning-level-1-c4930.md) | '*prototype*': prototyped function not called (was a variable definition intended?) |
 | [Compiler warning (level 4, off) C4931](compiler-warning-level-4-c4931.md) | we are assuming the type library was built for *number*-bit pointers |
 | [Compiler warning (level 4) C4932](compiler-warning-level-4-c4932.md) | `__identifier(`*identifier*`)` and `__identifier(`*identifier*`)` are indistinguishable |
 | Compiler warning (level 1) C4934 | '`__delegate(multicast)`' is deprecated, use '`__delegate`' instead |
 | [Compiler warning (level 1) C4935](compiler-warning-level-1-c4935.md) | assembly access specifier modified from '*access*' |
-| [Compiler warning (level 1, Error) C4936](compiler-warning-c4936.md) | this __declspec is supported only when compiled with `/clr` or `/clr:pure` |
+| [Compiler warning (level 1, error) C4936](compiler-warning-c4936.md) | this `__declspec` is supported only when compiled with `/clr` or `/clr:pure` |
 | [Compiler warning (level 4) C4937](compiler-warning-level-4-c4937.md) | '*text1*' and '*text2*' are indistinguishable as arguments to '*directive*' |
 | [Compiler warning (level 4) C4938](compiler-warning-level-4-c4938.md) | '*var*': Floating point reduction variable may cause inconsistent results under `/fp:strict` or `#pragma fenv_access` |
-| [Compiler warning C4939](compiler-warning-level-1-c4939.md) | #pragma vtordisp is deprecated and will be removed in a future release of Visual C++ |
+| [Compiler warning (level 1) C4939](compiler-warning-level-1-c4939.md) | `#pragma vtordisp` is deprecated and will be removed in a future release of Visual C++ |
 | [Compiler warning (level 1) C4944](compiler-warning-level-1-c4944.md) | '*symbol*': cannot import symbol from '*assembly1*': as '*symbol*' already exists in the current scope |
 | [Compiler warning (level 1) C4945](compiler-warning-level-1-c4945.md) | '*symbol*': cannot import symbol from '*assembly1*': as '*symbol*' has already been imported from another assembly '*assembly2*' |
 | [Compiler warning (level 1, off) C4946](compiler-warning-level-1-c4946.md) | `reinterpret_cast` used between related classes: '*class1*' and '*class2*' |
 | [Compiler warning (level 1) C4947](compiler-warning-level-1-c4947.md) | '*type_or_member*': marked as obsolete |
 | [Compiler warning (level 2) C4948](compiler-warning-level-2-c4948.md) | return type of '*accessor*' does not match the last parameter type of the corresponding setter |
-| [Compiler warning (level 1 and level 4) C4949](compiler-warning-level-1-and-level-4-c4949.md) | pragmas '`managed`' and '`unmanaged`' are meaningful only when compiled with '`/clr[:option]`' |
-| [Compiler warning (level 1, Error) C4950](compiler-warning-c4950.md) | '*type_or_member*': marked as obsolete |
+| [Compiler warning (level 1 and level 4) C4949](compiler-warning-level-1-and-level-4-c4949.md) | `pragma` '*pragma*' is meaningful only when compiled with '`/clr[:option]`'|
+| [Compiler warning (level 1, error) C4950](compiler-warning-c4950.md) | '*type_or_member*': marked as obsolete |
 | [Compiler warning (level 1) C4951](compiler-warning-level-1-c4951.md) | '*function*' has been edited since profile data was collected, function profile data not used |
 | [Compiler warning (level 1) C4952](compiler-warning-level-1-c4952.md) | '*function*': no profile data found in program database '*pgd-file*' |
 | [Compiler warning (level 1) C4953](compiler-warning-level-1-c4953.md) | Inlinee '*function*' has been edited since profile data was collected, profile data not used |
 | Compiler warning C4954 | '*function*': not profiled (contains `__int64` switch expression) |
 | Compiler warning C4955 | '*import2*': import ignored; already imported from '*import1*' |
-| [Compiler warning (level 1, Error) C4956](compiler-warning-c4956.md) | '*type*': this type is not verifiable |
-| [Compiler warning (level 1, Error) C4957](compiler-warning-c4957.md) | '*cast*': explicit cast from '*cast_from*' to '*cast_to*' is not verifiable |
-| [Compiler warning (level 1, Error) C4958](compiler-warning-c4958.md) | '*operation*': pointer arithmetic is not verifiable |
-| [Compiler warning (level 1, Error) C4959](compiler-warning-c4959.md) | cannot define unmanaged type '*type*' in `/clr:safe` because accessing its members yields unverifiable code |
+| [Compiler warning (level 1, error) C4956](compiler-warning-c4956.md) | '*type*': this type is not verifiable |
+| [Compiler warning (level 1, error) C4957](compiler-warning-c4957.md) | '*cast*': explicit cast from '*cast_from*' to '*cast_to*' is not verifiable |
+| [Compiler warning (level 1, error) C4958](compiler-warning-c4958.md) | '*operation*': pointer arithmetic is not verifiable |
+| [Compiler warning (level 1, error) C4959](compiler-warning-c4959.md) | cannot define unmanaged *type* '*identifier*' in `/clr:safe` because accessing its members yields unverifiable code |
 | [Compiler warning (level 4) C4960](compiler-warning-level-4-c4960.md) | '*function*' is too big to be profiled |
 | [Compiler warning (level 1) C4961](compiler-warning-c4961.md) | No profile data was merged into '*pgd-file*', profile-guided optimizations disabled |
 | [Compiler warning (level 4, off) C4962](compiler-warning-c4962.md) | '*function*': Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent |
 | Compiler warning (level 1) C4963 | '*description*': no profile data found; different compiler options were used in instrumented build |
 | [Compiler warning (level 1) C4964](compiler-warning-level-1-c4964.md) | No optimization options were specified; profile info will not be collected |
-| [Compiler warning (level 1) C4965](compiler-warning-level-1-c4965.md) | implicit box of integer 0; use nullptr or explicit cast |
+| [Compiler warning (level 1) C4965](compiler-warning-level-1-c4965.md) | implicit box of integer `0`; use `nullptr` or explicit cast |
 | Compiler warning (level 1) C4966 | '*function*' has `__code_seg` annotation with unsupported segment name, annotation ignored |
 | Compiler warning C4970 | delegate constructor: target object ignored since '*type*' is static |
-| Compiler warning (level 1) C4971 | Argument order: \<target object>, \<target function> for delegate constructor is deprecated, use \<target function>, \<target object=""> |
-| [Compiler warning (level 1, Error) C4972](compiler-warning-c4972.md) | Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable |
+| Compiler warning (level 1, no longer emitted) C4971 |Argument order: `<target object>`, `<target function>` for delegate constructor is deprecated, use `<target function>`, `<target object>`|
+| [Compiler warning (level 1, error) C4972](compiler-warning-c4972.md) | Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable |
 | Compiler warning (level 1) C4973 | '*symbol*': marked as deprecated |
 | Compiler warning (level 1) C4974 | '*symbol*': marked as deprecated |
 | Compiler warning (level 1) C4975 | modopt '[*modifier*]' was ignored for formal parameter '*parameter*' |
-| Compiler warning (level 1) C4976 | invalid value '*value*' for '`/W`'; assuming '1' |
-| Compiler warning (level 3) C4981 | Warbird: function '*function*' marked as __forceinline not inlined because it contains exception semantics |
-| Compiler warning (level 3) C4983 | '/analyze:sarif:hashname' ignored because the argument to '/analyze:log' is a single file rather than a directory |
-| [Compiler warning C4984](compiler-warning-c4984.md) | '`if constexpr`' is a C++17 language extension |
-| [Compiler warning (level 4) C4985](compiler-warning-level-4-c4985.md) | '*symbol_name*': attributes not present on previous declaration. |
-| [Compiler warning (level 4, off) C4986](compiler-warning-c4986.md) | '*declaration*': exception specification does not match previous declaration |
+| Compiler warning (level 1) C4976 | invalid value '*value*' for '`/W`'; assuming '`1`' |
+| Compiler warning (level 3) C4981 | Warbird: function '*function*' marked as `__forceinline` not inlined because it contains exception semantics |
+| Compiler warning (level 3) C4983 | '`/analyze:sarif:hashname`' ignored because the argument to '`/analyze:log`' is a single file rather than a directory |
+| [Compiler warning (level 1) C4984](compiler-warning-c4984.md) | '`if constexpr`' is a C++17 language extension |
+| [Compiler warning (level 3) C4985](compiler-warning-level-4-c4985.md) | '*symbol_name*': attributes not present on previous declaration. |
+| [Compiler warning (level 2 and level 4, off) C4986](compiler-warning-c4986.md) | '*declaration*': exception specification does not match previous declaration |
 | Compiler warning (level 4, off) C4987 | nonstandard extension used: '`throw (...)`' |
 | Compiler warning (level 4, off) C4988 | '*variable*': variable declared outside class/function scope |
 | Compiler warning (level 4) C4989 | '*type*': type has conflicting definitions. |
 | Compiler warning (level 3) C4990 | Warbird: *message* |
 | Compiler warning (level 3) C4991 | Warbird: function '*function*' marked as `__forceinline` not inlined because protection level of inlinee is greater than the parent |
 | Compiler warning (level 3) C4992 | Warbird: function '*function-name*' marked as `__forceinline` not inlined because it contains inline assembly which cannot be protected |
-| [Compiler warning (level 3) C4995](compiler-warning-level-3-c4995.md) | '*function*': name was marked as #pragma deprecated |
-| [Compiler warning (level 3) C4996](compiler-warning-level-3-c4996.md) | '*deprecated-declaration*': *deprecation-message* (or "was declared deprecated") |
-| [Compiler warning (level 1) C4997](compiler-warning-level-1-c4997.md) | '*class*': coclass does not implement a COM interface or pseudo-interface |
+| [Compiler warning (level 3) C4995](compiler-warning-level-3-c4995.md) | '*function*': name was marked as `#pragma deprecated` |
+| [Compiler warning (level 3) C4996](compiler-warning-level-3-c4996.md) | '*deprecated-declaration*': *deprecation-message* |
+| [Compiler warning (level 1) C4997](compiler-warning-level-1-c4997.md) | '*class*': `coclass` does not implement a COM interface or pseudo-interface |
 | Compiler warning (level 1) C4998 | EXPECTATION FAILED: *expectation*(*value*) |
 
 ## See also
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md
index 5fd8d8a5fd..38f4e44895 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md
@@ -23,39 +23,39 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 | Compiler warning (level 1 and level 4, off) C5027 | '*type*': move assignment operator was implicitly defined as deleted |
 | Compiler warning (level 1) C5028 | '*name*': Alignment specified in prior declaration (*number*) not specified in definition |
 | Compiler warning (level 4, off) C5029 | nonstandard extension used: alignment attributes in C++ apply to variables, data members and tag types only |
-| Compiler warning (level 3) C5030 | attribute '*attribute-name*' is not recognized |
+| Compiler warning (level 3) C5030 | attribute `[[`*attribute_name*`]]` is not recognized |
 | Compiler warning (level 4, off) C5031 | `#pragma warning(pop)`: likely mismatch, popping warning state pushed in different file |
 | Compiler warning (level 4, off) C5032 | detected `#pragma warning(push)` with no corresponding `#pragma warning(pop)` |
 | [Compiler warning (level 1) C5033](c5033.md) | '*storage-class*' is no longer a supported storage class |
-| Compiler warning (level 5, off) C5034 | use of intrinsic '*intrinsic*' causes function *function-name* to be compiled as guest code |
-| Compiler warning (level 5, off) C5035 | use of feature '*feature*' causes function *function-name* to be compiled as guest code |
-| Compiler warning (level 1) C5036 | varargs function pointer conversion when compiling with `/hybrid:x86arm64` '*type1*' to '*type2*' |
-| [Compiler warning (error) C5037](c5037.md) | '*member-function*': an out-of-line definition of a member of a class template cannot have default arguments |
-| [Compiler warning (level 4, off) C5038](c5038.md) | data member '*member1*' will be initialized after data member '*member2*' |
-| Compiler warning (level 4, off) C5039 | '*function*': pointer or reference to potentially throwing function passed to `extern C` function under `-EHc`. Undefined behavior may occur if this function throws an exception. |
+| Compiler warning (level 4, off) C5034 | use of intrinsic '*intrinsic*' causes function *function-name* to be compiled as guest code |
+| Compiler warning (level 4, off) C5035 | use of feature '*feature*' causes function *function-name* to be compiled as guest code |
+| Compiler warning (level 1) C5036 | `varargs` function pointer conversion when compiling with /hybrid:x86arm64 from type '*type1*' to type '*type2*' |
+| [Compiler warning (level 3, error) C5037](c5037.md) | '*member-function*': an out-of-line definition of a member of a class template cannot have default arguments |
+| [Compiler warning (level 4, off) C5038](c5038.md) | *data member* '*member1*' will be initialized after *data member* '*member2*' |
+| Compiler warning (level 4, off) C5039 | '*function*': pointer or reference to potentially throwing function passed to '`extern "C"`' function under `-EHc`. Undefined behavior may occur if this function throws an exception. |
 | Compiler warning (level 3) C5040 | dynamic exception specifications are valid only in C++14 and earlier; treating as noexcept(false) |
-| Compiler warning (level 1, off) C5041 | '*definition*': out-of-line definition for constexpr static data member is not needed and is deprecated in C++17 |
-| Compiler warning (level 3, off) C5042 | '*declaration*': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier |
+| Compiler warning (level 4, off) C5041 | '*definition*': out-of-line definition for `constexpr` static data member is not needed and is deprecated in C++17 |
+| Compiler warning (level 3, off) C5042 | '*declaration*': function declarations at block scope cannot be specified '`inline`' in standard C++; remove '`inline`' specifier |
 | Compiler warning (level 2) C5043 | '*specification*': exception specification does not match previous declaration |
 | Compiler warning (level 4) C5044 | An argument to command-line option *option-name* points to a path '*path-name*' that does not exist |
-| [Compiler warning (level 4) C5045](c5045.md) | Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified |
+| [Compiler warning (level 4) C5045](c5045.md) | Compiler will insert Spectre mitigation for memory load if `/Qspectre` switch specified |
 | [Compiler warning (level 2) C5046](c5046.md) | '*function*': Symbol involving type with internal linkage not defined |
-| Compiler warning (level 1) C5047 | use of nonstandard `__if_exists` with modules is not supported |
+| Compiler warning (level 1, error) C5047 | use of nonstandard '*keyword*' with modules is not supported |
 | Compiler warning (level 1) C5048 | Use of macro '*macroname*' may result in non-deterministic output |
 | Compiler warning (level 1) C5049 | '*string*': Embedding a full path may result in machine-dependent output |
 | [Compiler warning (level 1) C5050](c5050.md) | Possible incompatible environment while importing module '*module_name*': *issue* |
-| Compiler warning (level 1) C5051 | attribute 'attribute-name' requires at least 'standard-level'; ignored |
-| Compiler warning (level 3, off) C5052 | Keyword 'keyword-name' was introduced in C++\<version> and requires use of the 'option-name' command-line option |
+| Compiler warning (level 1) C5051 | attribute `[[`*attribute-name*`]]` requires at least '*standard_version*'; ignored |
+| Compiler warning (level 3, off) C5052 | Keyword '*keyword-name*' was introduced in `C++`*version* and requires use of the '*switch*' command-line option |
 | Compiler warning (level 1) C5053 | support for '`explicit(<expr>)`' in C++17 and earlier is a vendor extension |
-| [Compiler warning (level 4) C5054](c5054.md) | operator 'operator-name': deprecated between enumerations of different types |
-| [Compiler warning (level 1) C5055](c5055.md) | operator 'operator-name': deprecated between enumerations and floating-point types |
-| [Compiler warning (level 1) C5056](c5056.md) | operator 'operator-name': deprecated for array types |
-| Compiler warning (level 1) C5057 | header unit reference to 'name' already exists.  Ignoring header unit 'header-name' |
-| Compiler warning (level 1) C5058 | file system error: cannot find header file 'file-name' for header unit 'unit-name' |
+| [Compiler warning (level 4) C5054](c5054.md) | operator '*operator-name*': deprecated between enumerations of different types |
+| [Compiler warning (level 1) C5055](c5055.md) | operator '*operator-name*': deprecated between enumerations and floating-point types |
+| [Compiler warning (level 1) C5056](c5056.md) | operator '*operator-name*': deprecated for array types |
+| Compiler warning (level 1) C5057 | header unit reference to '*name*' already exists.  Ignoring header unit '*header-name*' |
+| Compiler warning (level 1) C5058 | file system error: cannot find header file '*file-name*' for header unit '*unit-name*' |
 | Compiler warning C5059 | runtime checks and address sanitizer is not currently supported - disabling runtime checks |
 | Compiler warning (level 4) C5060 | `/Qpar` and address sanitizer not currently supported - disabling auto-parallelization |
 | Compiler warning (level 4) C5061 | the use of a comma operator as a subscript expression has been deprecated |
-| Compiler warning (level 4) C5062 | enum direct list initialization between 'type-1' and 'type-2' is no longer supported |
+| Compiler warning (level 4) C5062 | `enum` direct list initialization between '*type-1*' and '*type-2*' is no longer supported |
 | Compiler warning (level 1) C5063 | '`std::is_constant_evaluated`' always evaluates to true in manifestly constant-evaluated expressions |
 | [Compiler warning (level 1) C5072](compiler-warning-c5072.md) | ASAN enabled without debug information emission. Enable debug info for better ASAN error reporting |
 | Compiler warning (level 1) C5081 | Secure hotpatch is not supported with `/GENPROFILE`, `/FASTGENPROFILE` or `/LTCG:PGI`, disabling secure hotpatch. |
diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md
index 43dea219e0..1b66790fb1 100644
--- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md
+++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md
@@ -2,8 +2,8 @@
 title: "Microsoft C/C++ compiler (MSVC) compiler warnings C5200 through C5399"
 description: "Table of Microsoft C/C++ compiler (MSVC) warnings C5200 through C5399."
 ms.date: 04/19/2024
-f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5211", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"]
-helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5211", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"]
+f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"]
+helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"]
 ---
 # Microsoft C/C++ compiler warnings C5200 through C5399
 
@@ -15,29 +15,29 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 
 | Warning | Message |
 |--|--|
-| Compiler warning (level 1) C5200 | feature 'feature-name' requires compiler flag 'option-name' |
+| Compiler warning (level 1) C5200 | *feature* '*feature-name*' requires compiler flag '*option-name*' |
 | Compiler warning (level 1) C5201 | a module declaration can appear only at the start of a translation unit unless a global module fragment is used |
 | Compiler warning (level 1) C5202 | a global module fragment can only contain preprocessor directives |
-| Compiler warning (level 1) C5203 | a parenthesized declarator name after 'explicit' will be considered an explicit-specifier in C++20 |
-| Compiler warning (level 3, off) C5204 | 'type-name': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly |
-| Compiler warning (level 4) C5205 | delete of an abstract class 'type-name' that has a non-virtual destructor results in undefined behavior |
+| Compiler warning (level 1) C5203 | a parenthesized declarator name after '`explicit`' will be considered an explicit-specifier in C++20 |
+| Compiler warning (level 3, off) C5204 | '*type-name*': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly |
+| Compiler warning (level 4) C5205 | delete of an abstract class '*type-name*' that has a non-virtual destructor results in undefined behavior |
 | Compiler warning (level 3) C5206 | deduced return types for coroutines is a non-standard extension |
 | Compiler warning (level 1) C5207 | the simple requirement asserts the validity of expression '`e->id`'. Did you mean '`{ e } -> id`'? You can suppress the warning using '`{ e->id }`' |
-| [Compiler warning (level 1) C5208](c5208.md) | unnamed class used in `typedef` name cannot declare members other than non-static data members, member enumerations, or member classes |
-| Compiler warning (level 1) C5209 | the C++20 syntax for an init-capture has changed to '& ...opt identifier initializer' |
+| [Compiler warning (level 1, error) C5208](c5208.md) | unnamed class used in `typedef` name cannot declare members other than non-static data members, member enumerations, or member classes |
+| Compiler warning (level 1) C5209 | the C++20 syntax for an init-capture has changed to '`& ...opt identifier initializer`' |
 | Compiler warning (level 1) C5210 | '*name*' is not a valid header unit reference; ignoring |
 | Compiler warning (level 1) C5212 | '*name*' is not a valid named reference; treating as reference to file |
-| Compiler warning (level 1) C5213 | '*name*' named reference is treated as a named partition but the name is not specified; treating as reference to file |
+| Compiler warning (level 1) C5213 | '*name*' named reference is treated as a named partition but the *module* name is not specified; treating as reference to file |
 | Compiler warning (level 4, off) C5214 | applying '*modifier*' to an operand with a volatile qualified type is deprecated in C++20 |
 | Compiler warning (level 4, off) C5215 | '*name*' a function parameter with a volatile qualified type is deprecated in C++20 |
 | Compiler warning (level 4, off) C5216 | '*name*' a volatile qualified return type is deprecated in C++20 |
 | Compiler warning (level 4, off) C5217 | a structured binding declaration that includes volatile is deprecated in C++20 |
 | Compiler warning (level 1) C5218 | destroying delete may not behave as intended when non-conforming switches '`/Zc:sizedDealloc-`' or '`/Zc:alignedNew-`' are used |
 | Compiler warning (level 2, off) C5219 | implicit conversion from '*type-1*' to '*type-2*', possible loss of data |
-| Compiler warning (level 4, off) C5220 | '*name*': a non-static data member with a volatile qualified type no longer implies that compiler generated copy/move constructors and copy/move assignment operators are not trivial |
-| Compiler warning (level 1) C5221 | xfg::rename is deprecated. |
+| Compiler warning (level 4, off) C5220 | '*name*': a non-static data member with a volatile qualified type no longer implies<br> that compiler generated copy/move constructors and copy/move assignment operators are not trivial |
+| Compiler warning (level 1) C5221 | `xfg::rename` is deprecated. |
 | Compiler warning (level 3) C5222 | '*attribute-name*': all unscoped attribute names are reserved for future standardization |
-| Compiler warning (level 3) C5223 | all attribute names in the attribute namespace 'msvc' are reserved for the implementation |
+| Compiler warning (level 3) C5223 | all attribute names in the attribute namespace '`msvc`' are reserved for the implementation |
 | Compiler warning (level 3) C5224 | all attribute names in the attribute namespace '*namespace-name*' are reserved for future standardization |
 | Compiler warning (level 1) C5225 | '*symbol*': exported inline function defined in a private module fragment is a non-standard extension |
 | Compiler warning (level 1) C5226 | '*symbol*': exported template defined in private module fragment has no reachable instantiation |
@@ -45,7 +45,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 | Compiler warning (level 4) C5228 | nonstandard extension, '*identifier*' resolved to a member of a dependent base. This lookup is not allowed under `/permissive-`. |
 | Compiler warning (level 4) C5229 | nonstandard extension, the hidden friend function '*function-name*' was found by name lookup which isn't allowed under `/permissive-`. |
 | Compiler warning C5230 | nonstandard extension, '*identifier*' was resolved to '*symbol-1*' under `/permissive`. Under `/permissive-` it would resolve to '*symbol-2*'. |
-| Compiler warning (level 3) C5231 | the expression '`co_await promise.final_suspend()`' must be non-throwing |
+| Compiler warning (level 3, error) C5231 | the expression '`co_await promise.final_suspend()`' must be non-throwing |
 | Compiler warning (level 1) C5232 | in C++20 this comparison calls '*name*' recursively |
 | Compiler warning (level 4, off) C5233 | explicit lambda capture '*identifier*' is not used |
 | Compiler warning (level 1) C5234 | file system error: '*filename*' is not a valid header-name; ignoring |
@@ -53,35 +53,35 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 | Compiler warning (level 1) C5236 | JSON ill-formed: *message*; ignoring '*filename*' |
 | Compiler warning (level 1) C5237 | cannot resolve header unit entry '*name*' to a header file in '*filename*'; ignoring entry |
 | Compiler warning (level 1) C5238 | file system error: cannot open '*filename*' for reading; ignoring |
-| Compiler warning (level 4) C5239 | '*symbol*': potentially throwing function called from a function declared `__declspec(nothrow)`. Undefined behavior may occur if an exception is thrown. |
-| [Compiler warning (level 4) C5240](c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position |
-| Compiler warning (level 1) C5241 | '`/exportHeader`' usage to lookup header-name is deprecated; prefer '/headerName:name value=filename' |
+| Compiler warning (level 4) C5239 | '*symbol*': potentially-throwing function called from a function declared `__declspec(nothrow)`. Undefined behavior may occur if an exception is thrown. |
+| [Compiler warning (level 4, off) C5240](c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position |
+| Compiler warning (level 1) C5241 | '`/exportHeader`' usage to lookup header-name is deprecated; prefer '`/headerName:`*name* *value*`=`*filename*' |
 | Compiler warning (level 1) C5242 | syntax error in pragma '*identifier*' |
-| [Compiler warning (level 1, off) C5243](c5243.md) | '*type-name*': using incomplete class 'class-name' can cause potential one definition rule violation due to ABI limitation |
-| Compiler warning (level 1) C5244 | '#include \<*filename*>' in the purview of module '*module-name-1*' appears erroneous.  Consider moving that directive before the module declaration, or replace the textual inclusion with 'import \<*module-name-2*>;'. |
+| [Compiler warning (level 1, off) C5243](c5243.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation |
+| Compiler warning (level 1) C5244 | '`#include <`*filename*`>`' in the purview of module '*module-name-1*' appears erroneous.  Consider moving that directive before the module declaration, or replace the textual inclusion with '`import <`*module-name-2*`>;`'. |
 | Compiler warning (level 4, off) C5245 | '*function*': unreferenced function with internal linkage has been removed |
 | Compiler warning (level 1, off) C5246 | '*member*': the initialization of a subobject should be wrapped in braces |
 | [Compiler warning (level 1, off) C5247](c5247.md) | section '*section-name*' is reserved for C++ dynamic initialization. Manually creating the section will interfere with C++ dynamic initialization and may lead to undefined behavior |
-| [Compiler warning (level 1, off) C5248](c5248.md) | section '*section-name*' is reserved for C++ dynamic initialization. Variables manually put into the section may be optimized out and their order relative to compiler generated dynamic initializers is unspecified. |
+| [Compiler warning (level 1, off) C5248](c5248.md) | section '*section-name*' is reserved for C++ dynamic initialization. Variables manually put into the section may be optimized out and their order relative to compiler generated dynamic initializers is unspecified |
 | Compiler warning (level 1, off) C5249 | '*bitfield*' of type '*enumeration_name*' has named enumerators with values that cannot be represented in the given bit field width of '*bitfield_width*'. |
-| Compiler warning (level 3, off) C5250 | '*function_name*': intrinsic function not declared. |
-| Compiler warning (level 4, off) C5251 | *segment-name* changed after including header |
+| Compiler warning (level 3, off) C5250 | '*function_name*': intrinsic function not declared |
+| Compiler warning (level 4, off) C5251 | the value of `#pragma` *pragma name* changed after `#include`; `#pragma `*pragma name*`(pop)` missing in this header? |
 | Compiler warning (level 4) C5252 | Multiple different types resulted in the same XFG type-hash *hash-value*; the PDB will only record information for one of them |
 | Compiler warning (level 4) C5253 | a non-local lambda cannot have a capture default |
-| Compiler warning (level 4, off) C5254 | language feature 'terse static assert' requires compiler flag '/std:c++17' |
-| Compiler warning (level 3) C5255 | unterminated bidirectional character encountered: 'U+XXXX' |
+| Compiler warning (level 4, off) C5254 | language feature 'terse static assert' requires compiler flag '*/std:c++17*' |
+| Compiler warning (level 3) C5255 | unterminated bidirectional character encountered: '`U+`*XXXX*' |
 | Compiler warning (level 1, off) C5256 | '*enumeration*': a non-defining declaration of an enumeration with a fixed underlying type is only permitted as a standalone declaration |
-| Compiler warning (level 1 or 4) C5257 | '*enumeration*': enumeration was previously declared without a fixed underlying type |
+| Compiler warning (level 1 and level 4) C5257 | '*enumeration*': enumeration was previously declared without a fixed underlying type |
 | Compiler warning (level 4, off) C5258 | explicit capture of '*symbol*' is not required for this use |
 | Compiler warning (level 4, off) C5259 | '*specialized-type*': explicit specialization requires 'template <>' |
 | Compiler warning (level 1) C5260 | the constant variable '*variable-name*' has internal linkage in an included header file context, but external linkage in imported header unit context; consider declaring it 'inline' as well if it will be shared across translation units, or 'static' to express intent to use it local to this translation unit |
 | Compiler warning (level 2) C5261 | no integer type can represent all enumerator values in enumeration '*enum-name*' |
-| [Compiler warning (level 1, error, off) C5262](c5262.md) | implicit fall-through occurs here; are you missing a break statement? Use `[[fallthrough]]` when a `break` statement is intentionally omitted between cases |
+| [Compiler warning (level 1, off) C5262](c5262.md) | implicit fall-through occurs here; are you missing a break statement? Use `[[fallthrough]]` when a `break` statement is intentionally omitted between cases |
 | Compiler warning (level 4, off) C5263 | calling '`std::move`' on a temporary object prevents copy elision |
 | Compiler warning (level 4, off) C5264 | '*variable-name*': 'const' variable is not used |
 | Compiler warning (level 1) C5265 | cannot open search path '*path*' |
-| [Compiler warning (level 4, off) C5266](compiler-warning-level-4-c5266.md) | 'const' qualifier on return type has no effect |
-| [Compiler warning C5267](c5267.md) | definition of implicit copy constructor/assignment operator for '*type*' is deprecated because it has a user-provided assignment operator/copy constructor |
+| [Compiler warning (level 4, off) C5266](compiler-warning-level-4-c5266.md) | '*const*' qualifier on return type has no effect |
+| [Compiler warning (level 4, off) C5267](c5267.md) | definition of implicit *copy constructor/assignment operator* for '*type*' is deprecated because it has a user-provided *assignment operator/copy constructor* |
 | Compiler warning (level 1) C5268 | Failed to allocate memory at fixed address 0x*address*. Use `/Yb` to specify a specific address base if bit-identical .pch files are required. |
 | Compiler warning (level 1) C5269 | Failed to allocate PCH memory at fixed address 0x*address*. Use `/Ym` to specify a specific address base if bit-identical .pch files are required. |
 | Compiler warning (level 3) C5270 | '*value*' is not allowed for option '*switch name*'; allowed values are: *value list* |
@@ -89,13 +89,29 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
 | Compiler warning (level 1) C5272 | throwing an object of non-copyable type '*type*' is non-standard. If a copy is needed at runtime it will be made as if by `memcpy`. |
 | Compiler warning (level 1) C5273 | behavior change: `_Alignas` on anonymous type no longer ignored (promoted members will align) |
 | Compiler warning (level 1) C5274 | behavior change: `_Alignas` no longer applies to the type '*type*' (only applies to declared data objects) |
-| Compiler warning (Error) C5275 | facade assembly '*name*' being imported under '`/clr`'; missing option '`/clr:netcore`'? |
-| Compiler warning (level 1, error) C5300 | '#pragma omp atomic': left operand of '*operator*' must match left hand side of assignment-expression |
-| [Compiler warning (level 1) C5301](c5301-c5302.md) | '#pragma omp for': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? |
-| [Compiler warning (level 1) C5302](c5301-c5302.md) | '#pragma omp for': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? |
+| Compiler warning (error) C5275 | assembly '*name*' being imported under '*/clr*' does not contain the required fundamental types |
+| Compiler warning (level 1) C5276 | `/experimental:ifcDebugRecords` currently requires `/Z7` to be enabled.  Please recompile with `/Z7` enabled.|
+| Compiler warning (level 1) C5277 | type trait optimization for '*class name*' is disabled |
+| Compiler warning (level 1) C5278 | adding a specialization for '*type*' has undefined behavior |
+| Compiler warning (level 1) C5279 | a lambda declarator without a parameter list requires at least '*language version*' |
+| Compiler warning (level 1) C5280 | a static operator '*operator name*' requires at least '*language version*'|
+| Compiler warning (level 1) C5281 | a static lambda requires at least '*language version*' |
+| Compiler warning (level 1) C5282 | '`if consteval`' requires at least '*language version*' |
+| Compiler warning (level 1) C5283 | an attribute in this position requires at least '*language version*' |
+| Compiler warning (level 4) C5284 | conversion from value '*value*' of type '*type 1*' to '*type 2*' requires a narrowing conversion |
+| Compiler warning (level 1) C5285 | cannot declare a specialization for '*template name*': *template argument* |
+| Compiler warning (level 1) C5286 | implicit conversion from `enum` type '*type 1*' to `enum` type '*type 2*'; use an explicit cast to silence this warning |
+| Compiler warning (level 1) C5287 | operands are different `enum` types '*type 1*' and '*type 2*'; use an explicit cast to silence this warning |
+| Compiler warning (error) C5300 | '`#pragma omp atomic` *clause*': expression mismatch for lvalue being updated |
+| [Compiler warning (level 1) C5301](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? |
+| [Compiler warning (level 1) C5302](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? |
 | Compiler warning (level 1) C5303 | function marked with `[[msvc::intrinsic]]` did not result in a no-op cast |
 | Compiler warning (level 1) C5304 | a declaration designated by the using-declaration '*name1*' exported from this module has internal linkage and using such a name outside the module is ill-formed; consider declaring '*name2*' '`inline`' to use it outside of this module |
 | Compiler warning (level 1) C5305 | '*name*': an explicit instantiation declaration that follows an explicit instantiation definition is ignored |
+| Compiler warning (level 1) C5306 | parameter array behavior change: overload '*identifier 1*' resolved to '*identifier 2*'; previously, it would have resolved to '*identifier 3*'. Use `/clr:ECMAParamArray` to revert to old behavior |
+| Compiler warning (level 3) C5307 | '*function*': argument (*argument number*) converted from '*type 1*' to '*type 2*'. Missing '`L`' encoding-prefix for character literal? |
+| Compiler warning (level 1, error) C5308 | Modifying reserved macro name '*macro name*' may cause undefined behavior |
+| Compiler warning (level 1, error) C5309 | literal suffix '*name*' requires at least '*language version*'|
 
 ## See also
 
diff --git a/docs/error-messages/includes/error-boilerplate.md b/docs/error-messages/includes/error-boilerplate.md
index a344d4e6b5..d7eba2d5c8 100644
--- a/docs/error-messages/includes/error-boilerplate.md
+++ b/docs/error-messages/includes/error-boilerplate.md
@@ -1,11 +1,11 @@
 > [!IMPORTANT]
-> The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may make many subsequent errors go away.
+> The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may resolve multiple subsequent errors.
 
 To get help on a particular diagnostic message in Visual Studio, select it in the **Output** window and press the **F1** key. Visual Studio opens the documentation page for that error, if one exists. You can also use the search tool at the top of the page to find articles about specific errors or warnings. Or, browse the list of errors and warnings by tool and type in the table of contents on this page.
 
 > [!NOTE]
-> Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page when you used **F1** and you think the error or warning message needs additional explanation, let us know. You can use the feedback buttons on this page to raise a documentation issue on [GitHub](https://github.com/MicrosoftDocs/cpp-docs/issues). If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the [Developer Community](https://aka.ms/feedback/report?space=62) site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose **Help > Send Feedback > Report a Problem**, or submit a suggestion by using **Help > Send Feedback > Send a Suggestion**. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead.
+> Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page and think the error or warning message needs additional explanation, let us know by using the feedback buttons on this page. If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the [Developer Community](https://aka.ms/feedback/report?space=62) site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose **Help > Send Feedback > Report a Problem**, or submit a suggestion by using **Help > Send Feedback > Suggest a Feature**. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead.
 
-You may find additional assistance for errors and warnings in [Microsoft Learn Q&A](/answers/topics/c%2B%2B.html) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions.
+You may find additional assistance for errors and warnings in [Microsoft Q&A C++](/answers/tags/314/cpp) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions.
 
 For links to additional help and community resources, see [Visual C++ Help and Community](../../overview/visual-cpp-help-and-community.md).
diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml
index ad851c5bbb..acb65fcdd5 100644
--- a/docs/error-messages/toc.yml
+++ b/docs/error-messages/toc.yml
@@ -86,7 +86,7 @@ items:
 - name: Compiler fatal errors
   expanded: false
   items: 
-    - name: Compiler fatal errors C999 through C1999
+    - name: Compiler fatal errors C1001 through C1907
       href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md
     - name: Fatal error C1001
       href: compiler-errors-1/fatal-error-c1001.md
@@ -3167,6 +3167,10 @@ items:
           href: compiler-errors-2/compiler-error-c7553.md
         - name: Compiler error C7626
           href: compiler-warnings/c5208.md
+        - name: Compiler error C7688
+          href: compiler-errors-2/compiler-error-c7688.md
+        - name: Compiler error C7742
+          href: compiler-errors-2/compiler-error-c7742.md
 - name: Compiler warnings C4000 through C5999
   expanded: false
   items: 
@@ -3725,7 +3729,7 @@ items:
       items: 
         - name: Compiler warnings C4400 through C4599
           href: compiler-warnings/compiler-warnings-c4400-through-c4599.md
-        - name: Compiler warning (level 4) C4400
+        - name: Compiler warning (level 4, Error) C4400
           href: compiler-warnings/compiler-warning-level-4-c4400.md
         - name: Compiler warning (level 1) C4401
           href: compiler-warnings/compiler-warning-level-1-c4401.md
@@ -3749,7 +3753,7 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4410.md
         - name: Compiler warning (level 1) C4411
           href: compiler-warnings/compiler-warning-level-1-c4411.md
-        - name: Compiler warning (level 2) C4412
+        - name: Compiler warning (level 2, off) C4412
           href: compiler-warnings/compiler-warning-level-2-c4412.md
         - name: Compiler warning (level 3) C4414
           href: compiler-warnings/compiler-warning-level-3-c4414.md
@@ -3757,19 +3761,19 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4420.md
         - name: Compiler warning (level 4) C4429
           href: compiler-warnings/compiler-warning-level-4-c4429.md
-        - name: Compiler warning C4430
+        - name: Compiler warning (level 1, Error) C4430
           href: compiler-warnings/compiler-warning-c4430.md
         - name: Compiler warning (level 4) C4431
           href: compiler-warnings/compiler-warning-level-4-c4431.md
         - name: Compiler warning (level 4) C4434
           href: compiler-warnings/compiler-warning-level-4-c4434.md
-        - name: Compiler warning (level 4) C4435
+        - name: Compiler warning (level 4, off) C4435
           href: compiler-warnings/compiler-warning-level-4-c4435.md
-        - name: Compiler warning (level 1) C4436
+        - name: Compiler warning (level 1 and level 4) C4436
           href: compiler-warnings/compiler-warning-level-1-c4436.md
-        - name: Compiler warning (level 4) C4437
+        - name: Compiler warning (level 1 and level 4, off) C4437
           href: compiler-warnings/compiler-warning-level-4-c4437.md
-        - name: Compiler warning C4439
+        - name: Compiler warning (level 1, Error) C4439
           href: compiler-warnings/compiler-warning-c4439.md
         - name: Compiler warning (level 1) C4440
           href: compiler-warnings/compiler-warning-level-1-c4440.md
@@ -3777,13 +3781,13 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4441.md
         - name: Compiler warning (level 1) C4445
           href: compiler-warnings/compiler-warning-level-1-c4445.md
-        - name: Compiler warning (level 4) C4456
+        - name: Compiler warning (level 1 and level 4) C4456
           href: compiler-warnings/compiler-warning-level-4-c4456.md
-        - name: Compiler warning (level 4) C4457
+        - name: Compiler warning (level 1 and level 4) C4457
           href: compiler-warnings/compiler-warning-level-4-c4457.md
-        - name: Compiler warning (level 4) C4458
+        - name: Compiler warning (level 1 and level 4) C4458
           href: compiler-warnings/compiler-warning-level-4-c4458.md
-        - name: Compiler warning (level 4) C4459
+        - name: Compiler warning (level 1 and level 4) C4459
           href: compiler-warnings/compiler-warning-level-4-c4459.md
         - name: Compiler warning (level 4) C4460
           href: compiler-warnings/compiler-warning-level-4-c4460.md
@@ -3793,21 +3797,21 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4462.md
         - name: Compiler warning (level 4) C4463
           href: compiler-warnings/compiler-warning-level-4-c4463.md
-        - name: Compiler warning (level 4) C4464
+        - name: Compiler warning (level 4, off) C4464
           href: compiler-warnings/compiler-warning-level-4-c4464.md
         - name: Compiler warning (level 1) C4470
           href: compiler-warnings/compiler-warning-level-1-c4470.md
-        - name: Compiler warning (level 4) C4471
+        - name: Compiler warning (level 4, off) C4471
           href: compiler-warnings/compiler-warning-level-4-c4471.md
         - name: Compiler warning (level 1) C4473
           href: compiler-warnings/c4473.md
         - name: Compiler warning (level 1) C4477
           href: compiler-warnings/c4477.md
-        - name: Compiler warning (level 4) C4481
+        - name: Compiler warning (level 4, Error) C4481
           href: compiler-warnings/compiler-warning-level-4-c4481.md
-        - name: Compiler warning C4484
+        - name: Compiler warning (level 1, Error) C4484
           href: compiler-warnings/compiler-warning-c4484.md
-        - name: Compiler warning C4485
+        - name: Compiler warning (level 1, Error) C4485
           href: compiler-warnings/compiler-warning-c4485.md
         - name: Compiler warning (level 1) C4486
           href: compiler-warnings/compiler-warning-level-1-c4486.md
@@ -3831,13 +3835,13 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4508.md
         - name: Compiler warning (level 4) C4510
           href: compiler-warnings/compiler-warning-level-4-c4510.md
-        - name: Compiler warning (level 3) C4511
+        - name: Compiler warning (level 4) C4511
           href: compiler-warnings/compiler-warning-level-3-c4511.md
         - name: Compiler warning (level 4) C4512
           href: compiler-warnings/compiler-warning-level-4-c4512.md
         - name: Compiler warning (level 4) C4513
           href: compiler-warnings/compiler-warning-level-4-c4513.md
-        - name: Compiler warning (level 4) C4514
+        - name: Compiler warning (level 4, off) C4514
           href: compiler-warnings/compiler-warning-level-4-c4514.md
         - name: Compiler warning (level 4) C4515
           href: compiler-warnings/compiler-warning-level-4-c4515.md
@@ -3865,7 +3869,7 @@ items:
           href: compiler-warnings/compiler-warning-level-3-c4534.md
         - name: Compiler warning (level 3) C4535
           href: compiler-warnings/compiler-warning-level-3-c4535.md
-        - name: Compiler warning (level 4) C4536
+        - name: Compiler warning (level 4, off) C4536
           href: compiler-warnings/compiler-warning-level-4-c4536.md
         - name: Compiler warning (level 1) C4537
           href: compiler-warnings/compiler-warning-level-1-c4537.md
@@ -3879,15 +3883,15 @@ items:
           href: compiler-warnings/compiler-warning-level-3-c4543.md
         - name: Compiler warning (level 1) C4544
           href: compiler-warnings/compiler-warning-level-1-c4544.md
-        - name: Compiler warning (level 1) C4545
+        - name: Compiler warning (level 1, off) C4545
           href: compiler-warnings/compiler-warning-level-1-c4545.md
-        - name: Compiler warning (level 1) C4546
+        - name: Compiler warning (level 1, off) C4546
           href: compiler-warnings/compiler-warning-level-1-c4546.md
-        - name: Compiler warning (level 1) C4547
+        - name: Compiler warning (level 1, off) C4547
           href: compiler-warnings/compiler-warning-level-1-c4547.md
-        - name: Compiler warning (level 1) C4548
+        - name: Compiler warning (level 1, off) C4548
           href: compiler-warnings/compiler-warning-level-1-c4548.md
-        - name: Compiler warning (level 1) C4549
+        - name: Compiler warning (level 1, off) C4549
           href: compiler-warnings/compiler-warning-level-1-c4549.md
         - name: Compiler warning (level 1) C4550
           href: compiler-warnings/compiler-warning-level-1-c4550.md
@@ -3899,11 +3903,11 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4553.md
         - name: Compiler warning (level 3) C4554
           href: compiler-warnings/compiler-warning-level-3-c4554.md
-        - name: Compiler warning (level 1) C4555
+        - name: Compiler warning (level 1, off) C4555
           href: compiler-warnings/compiler-warning-level-1-c4555.md
         - name: Compiler warning (level 1) C4556
           href: compiler-warnings/compiler-warning-level-1-c4556.md
-        - name: Compiler warning (level 3) C4557
+        - name: Compiler warning (level 3, off) C4557
           href: compiler-warnings/compiler-warning-level-3-c4557.md
         - name: Compiler warning (level 1) C4558
           href: compiler-warnings/compiler-warning-level-1-c4558.md
@@ -3931,7 +3935,7 @@ items:
           href: compiler-warnings/compiler-warning-level-1-c4581.md
         - name: Compiler warning (level 1) C4584
           href: compiler-warnings/compiler-warning-level-1-c4584.md
-        - name: Compiler warning (level 4) C4596
+        - name: Compiler warning (level 4, Error, off) C4596
           href: compiler-warnings/c4596.md
         - name: Compiler warning (level 4) C4597
           href: compiler-warnings/c4597.md
@@ -4433,7 +4437,7 @@ items:
       href: tool-errors/cvtres-fatal-error-cvt1105.md
     - name: CVTRES warning CVT4001
       href: tool-errors/cvtres-warning-cvt4001.md
-- name: Expression evaluator errors 
+- name: Expression evaluator errors
   expanded: false
   items: 
     - name: Expression evaluator errors (CXXxxxx)
@@ -4844,7 +4848,7 @@ items:
 - name: Math errors
   expanded: false
   items: 
-    - name: Math errors (Mxxxx)
+    - name: Math errors (M6101 through M6205)
       href: tool-errors/math-errors-m6101-through-m6205.md
     - name: Math error M6101
       href: tool-errors/math-error-m6101.md
diff --git a/docs/error-messages/tool-errors/cvtres-errors-cvt1100-through-cvt4001.md b/docs/error-messages/tool-errors/cvtres-errors-cvt1100-through-cvt4001.md
index 633159c3ad..0b2040cb66 100644
--- a/docs/error-messages/tool-errors/cvtres-errors-cvt1100-through-cvt4001.md
+++ b/docs/error-messages/tool-errors/cvtres-errors-cvt1100-through-cvt4001.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: CVTRES errors and warnings (CVTxxxx)"
 title: "CVTRES errors and warnings"
-ms.date: "04/16/2019"
+description: "Learn more about: CVTRES errors and warnings (CVTxxxx)"
+ms.date: 04/16/2019
 f1_keywords: ["CVT1101", "CVT1102", "CVT1104", "CVT1106", "CVT1107", "CVT1108", "CVT1109", "CVT1110"]
-ms.assetid: ac94d0fb-0da3-4327-b3d9-ceaeb3fc2e4d
 ---
 # CVTRES errors and warnings (CVTxxxx)
 
@@ -13,13 +12,17 @@ This section is a reference to the errors and warnings generated by the CVTRES b
 
 ## Fatal error messages
 
-[CVTRES fatal error CVT1100](cvtres-fatal-error-cvt1100.md) \
-[CVTRES fatal error CVT1103](cvtres-fatal-error-cvt1103.md) \
-[CVTRES fatal error CVT1105](cvtres-fatal-error-cvt1105.md)
+| Error | Message |
+|--|--|
+| [CVTRES fatal error CVT1100](cvtres-fatal-error-cvt1100.md) | duplicate resource — type:type, name:name, language:language, flags:flags, size:size |
+| [CVTRES fatal error CVT1103](cvtres-fatal-error-cvt1103.md) | cannot read filename |
+| [CVTRES fatal error CVT1105](cvtres-fatal-error-cvt1105.md) | cannot seek in file |
 
 ## Warning messages
 
-[CVTRES warning CVT4001](cvtres-warning-cvt4001.md)
+| Warning | Message |
+|--|--|
+| [CVTRES warning CVT4001](cvtres-warning-cvt4001.md) | machine type not specified; assumed *type* |
 
 ## See also
 
diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md
index 932be366f5..a12ad9a170 100644
--- a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md
+++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md
@@ -88,9 +88,9 @@ For example, if you use an AVX2 intrinsic, but don't specify the [`/ARCH:AVX2`](
 
 C++ language conformance work that was done in Visual Studio 2005 made **`wchar_t`** a native type by default. If not all files have been compiled by using the same **`/Zc:wchar_t`** settings, type references might not resolve to compatible types. Make sure **`wchar_t`** types in all library and object files are compatible. Either update from a **`wchar_t`** typedef, or use consistent **/Zc:wchar_t** settings when you compile.
 
-### You get errors for `*printf*` and `*scanf*` functions when you link a legacy static library
+### You get errors for *`printf`* and *`scanf`* functions when you link a legacy static library
 
-A static library that was built using a version of Visual Studio before Visual Studio 2015 might cause LNK2019 errors when linked with the UCRT. The UCRT header files `<stdio.h>`, `<conio.h>`, and `<wchar.h>`now define many `*printf*` and `*scanf*` variations as **`inline`** functions. The inlined functions are implemented by a smaller set of common functions. Individual exports for the inlined functions aren't available in the standard UCRT libraries, which only export the common functions. There are a couple of ways to resolve this issue. The method we recommend is to rebuild the legacy library with your current version of Visual Studio. Make sure the library code uses the standard headers for the definitions of the `*printf*` and `*scanf*` functions that caused the errors. Another option for a legacy library that you can't rebuild is to add `legacy_stdio_definitions.lib` to the list of libraries you link. This library file provides symbols for the `*printf*` and `*scanf*` functions that are inlined in the UCRT headers. For more information, see the **Libraries** section in [Overview of potential upgrade issues](../../porting/overview-of-potential-upgrade-issues-visual-cpp.md#libraries).
+A static library that was built using a version of Visual Studio before Visual Studio 2015 might cause LNK2019 errors when linked with the UCRT. The UCRT header files `<stdio.h>`, `<conio.h>`, and `<wchar.h>`now define many *`printf`* and *`scanf`* variations as **`inline`** functions. The inlined functions are implemented by a smaller set of common functions. Individual exports for the inlined functions aren't available in the standard UCRT libraries, which only export the common functions. There are a couple of ways to resolve this issue. The method we recommend is to rebuild the legacy library with your current version of Visual Studio. Make sure the library code uses the standard headers for the definitions of the *`printf`* and *`scanf`* functions that caused the errors. Another option for a legacy library that you can't rebuild is to add `legacy_stdio_definitions.lib` to the list of libraries you link. This library file provides symbols for the *`printf`* and *`scanf`* functions that are inlined in the UCRT headers. For more information, see the **Libraries** section in [Overview of potential upgrade issues](../../porting/overview-of-potential-upgrade-issues-visual-cpp.md#libraries).
 
 ## Third-party library issues and vcpkg
 
diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md
index 36de7722e0..e9711b9f71 100644
--- a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md
+++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Linker Tools Error LNK2020"
 title: "Linker Tools Error LNK2020"
-ms.date: "11/04/2016"
+description: "Learn more about: Linker Tools Error LNK2020"
+ms.date: 11/04/2016
 f1_keywords: ["LNK2020"]
 helpviewer_keywords: ["LNK2020"]
-ms.assetid: 4dd017d0-5e83-471b-ac8a-538ac1ed6870
 ---
 # Linker Tools Error LNK2020
 
@@ -47,16 +46,16 @@ The following sample generates LNK2020.
 
 template <typename T>
 ref struct Base {
-   virtual void f1() {};
+   virtual void f1() {}
 };
 
 template <typename T>
 ref struct Base2 {
-   virtual void f1() {};
+   virtual void f1() {}
 };
 
 int main() {
    Base<int>^ p;   // LNK2020
    Base2<int>^ p2 = gcnew Base2<int>();   // OK
-};
+}
 ```
diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md
index 74ff15798f..ca0deb3ce2 100644
--- a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md
+++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Linker Tools Error LNK2033"
 title: "Linker Tools Error LNK2033"
-ms.date: "11/04/2016"
+description: "Learn more about: Linker Tools Error LNK2033"
+ms.date: 11/04/2016
 f1_keywords: ["LNK2033"]
 helpviewer_keywords: ["LNK2033"]
-ms.assetid: d61db467-9328-4788-bf54-e2a20537f13f
 ---
 # Linker Tools Error LNK2033
 
@@ -32,5 +31,5 @@ ref class B {};
 int main() {
    A ^ aa = nullptr;
    B ^ bb = nullptr;   // OK
-};
+}
 ```
diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md
index 85801f1d35..2e90c8b062 100644
--- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md
+++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Linker tools errors and warnings (LNKxxxx)"
 title: "Linker tools errors and warnings"
+description: "Learn more about: Linker tools errors and warnings (LNKxxxx)"
 ms.date: 01/30/2024
-f1_keywords: ["LNK1100", "LNK1101", "LNK1102", "LNK1105", "LNK1108", "LNK1109", "LNK1111", "LNK1114", "LNK1115", "LNK1117", "LNK1118", "LNK1119", "LNK1121", "LNK1129", "LNK1130", "LNK1131", "LNK1132", "LNK1137", "LNK1144", "LNK1145", "LNK1146", "LNK1147", "LNK1148", "LNK1149", "LNK1154", "LNK1155", "LNK1156", "LNK1159", "LNK1160", "LNK1161", "LNK1162", "LNK1163", "LNK1165", "LNK1167", "LNK1171", "LNK1172", "LNK1173", "LNK1174", "LNK1175", "LNK1178", "LNK1180", "LNK1182", "LNK1183", "LNK1184", "LNK1185", "LNK1186", "LNK1187", "LNK1190", "LNK1194", "LNK1195", "LNK1197", "LNK1198", "LNK1199", "LNK1207", "LNK1209", "LNK1210", "LNK1212", "LNK1213", "LNK1214", "LNK1216", "LNK1219", "LNK1220", "LNK1227", "LNK1229", "LNK1230", "LNK1232", "LNK1233", "LNK1234", "LNK1235", "LNK1236", "LNK1242", "LNK1243", "LNK1244", "LNK1246", "LNK1247", "LNK1249", "LNK1250", "LNK1252", "LNK1253", "LNK1255", "LNK1257", "LNK1258", "LNK1260", "LNK1261", "LNK1262", "LNK1263", "LNK1265", "LNK1266", "LNK1267", "LNK1268", "LNK1269", "LNK1270", "LNK1272", "LNK1274", "LNK1276", "LNK1279", "LNK1280", "LNK1281", "LNK1283", "LNK1285", "LNK1286", "LNK1289", "LNK1290", "LNK1291", "LNK1292", "LNK1293", "LNK1294", "LNK1295", "LNK1297", "LNK1298", "LNK1299", "LNK1300", "LNK1303", "LNK1304", "LNK1305", "LNK1307", "LNK1308", "LNK1310", "LNK1311", "LNK1315", "LNK1316", "LNK1317", "LNK1319", "LNK1320", "LNK1321", "LNK1322", "LNK1323", "LNK1324", "LNK1325", "LNK1327", "LNK1328", "LNK1329", "LNK1330", "LNK1331", "LNK1333", "LNK1334", "LNK1335", "LNK1336", "LNK1337", "LNK1338", "LNK1339", "LNK1340", "LNK1341", "LNK1342", "LNK1343", "LNK1344", "LNK1345", "LNK1346", "LNK1347", "LNK1348", "LNK1349", "LNK1350", "LNK1351", "LNK1353", "LNK1354", "LNK1355", "LNK1356", "LNK1360", "LNK1361", "LNK1362", "LNK1363", "LNK1364", "LNK1365", "LNK1366", "LNK1367", "LNK1368", "LNK1369", "LNK1370", "LNK1371", "LNK1372", "LNK1373", "LNK1375", "LNK1376", "LNK1377", "LNK1378", "LNK1379", "LNK1380", "LNK1381", "LNK1382", "LNK1383", "LNK1384", "LNK1385", "LNK2002", "LNK2003", "LNK2009", "LNK2014", "LNK2015", "LNK2016", "LNK2018", "LNK2021", "LNK2024", "LNK2029", "LNK2030", "LNK2032", "LNK2034", "LNK2035", "LNK2036", "LNK2037", "LNK2040", "LNK2041", "LNK2042", "LNK2043", "LNK2044", "LNK2045", "LNK4003", "LNK4012", "LNK4013", "LNK4017", "LNK4018", "LNK4019", "LNK4030", "LNK4031", "LNK4038", "LNK4040", "LNK4041", "LNK4042", "LNK4043", "LNK4046", "LNK4047", "LNK4048", "LNK4051", "LNK4052", "LNK4056", "LNK4060", "LNK4061", "LNK4062", "LNK4066", "LNK4067", "LNK4068", "LNK4069", "LNK4072", "LNK4077", "LNK4079", "LNK4081", "LNK4085", "LNK4087", "LNK4088", "LNK4093", "LNK4094", "LNK4097", "LNK4103", "LNK4108", "LNK4195", "LNK4196", "LNK4198", "LNK4202", "LNK4203", "LNK4207", "LNK4208", "LNK4209", "LNK4223", "LNK4225", "LNK4226", "LNK4228", "LNK4232", "LNK4233", "LNK4236", "LNK4238", "LNK4239", "LNK4240", "LNK4241", "LNK4242", "LNK4243", "LNK4244", "LNK4245", "LNK4246", "LNK4249", "LNK4250", "LNK4251", "LNK4252", "LNK4255", "LNK4256", "LNK4257", "LNK4258", "LNK4259", "LNK4260", "LNK4261", "LNK4262", "LNK4263", "LNK4264", "LNK4265", "LNK4266", "LNK4267", "LNK4268", "LNK4269", "LNK4270", "LNK4271", "LNK4272", "LNK4273", "LNK4274", "LNK4275", "LNK4276", "LNK4277", "LNK4278", "LNK4279", "LNK4280", "LNK4281", "LNK4282", "LNK4283", "LNK4284", "LNK4285", "LNK4287", "LNK4288", "LNK4289", "LNK4290", "LNK4306", 
-"LNK4307" ]
+f1_keywords: ["LNK1100", "LNK1101", "LNK1102", "LNK1105", "LNK1108", "LNK1109", "LNK1111", "LNK1114", "LNK1115", "LNK1117", "LNK1118", "LNK1119", "LNK1121", "LNK1129", "LNK1130", "LNK1131", "LNK1132", "LNK1137", "LNK1144", "LNK1145", "LNK1146", "LNK1147", "LNK1148", "LNK1149", "LNK1154", "LNK1155", "LNK1156", "LNK1159", "LNK1160", "LNK1161", "LNK1162", "LNK1163", "LNK1165", "LNK1167", "LNK1171", "LNK1172", "LNK1173", "LNK1174", "LNK1175", "LNK1178", "LNK1180", "LNK1182", "LNK1183", "LNK1184", "LNK1185", "LNK1186", "LNK1187", "LNK1190", "LNK1194", "LNK1195", "LNK1197", "LNK1198", "LNK1199", "LNK1207", "LNK1209", "LNK1210", "LNK1212", "LNK1213", "LNK1214", "LNK1216", "LNK1219", "LNK1220", "LNK1227", "LNK1229", "LNK1230", "LNK1232", "LNK1233", "LNK1234", "LNK1235", "LNK1236", "LNK1242", "LNK1243", "LNK1244", "LNK1246", "LNK1247", "LNK1249", "LNK1250", "LNK1252", "LNK1253", "LNK1255", "LNK1257", "LNK1258", "LNK1260", "LNK1261", "LNK1262", "LNK1263", "LNK1265", "LNK1266", "LNK1267", "LNK1268", "LNK1269", "LNK1270", "LNK1272", "LNK1274", "LNK1276", "LNK1279", "LNK1280", "LNK1281", "LNK1283", "LNK1285", "LNK1286", "LNK1289", "LNK1290", "LNK1291", "LNK1292", "LNK1293", "LNK1294", "LNK1295", "LNK1297", "LNK1298", "LNK1299", "LNK1300", "LNK1303", "LNK1304", "LNK1305", "LNK1307", "LNK1308", "LNK1310", "LNK1311", "LNK1315", "LNK1316", "LNK1317", "LNK1319", "LNK1320", "LNK1321", "LNK1322", "LNK1323", "LNK1324", "LNK1325", "LNK1327", "LNK1328", "LNK1329", "LNK1330", "LNK1331", "LNK1333", "LNK1334", "LNK1335", "LNK1336", "LNK1337", "LNK1338", "LNK1339", "LNK1340", "LNK1341", "LNK1342", "LNK1343", "LNK1344", "LNK1345", "LNK1346", "LNK1347", "LNK1348", "LNK1349", "LNK1350", "LNK1351", "LNK1353", "LNK1354", "LNK1355", "LNK1356", "LNK1360", "LNK1361", "LNK1362", "LNK1363", "LNK1364", "LNK1365", "LNK1366", "LNK1367", "LNK1368", "LNK1369", "LNK1370", "LNK1371", "LNK1372", "LNK1373", "LNK1375", "LNK1376", "LNK1377", "LNK1378", "LNK1379", "LNK1380", "LNK1381", "LNK1382", "LNK1383", "LNK1384", "LNK1385", "LNK2002", "LNK2003", "LNK2009", "LNK2014", "LNK2015", "LNK2016", "LNK2018", "LNK2021", "LNK2024", "LNK2029", "LNK2030", "LNK2032", "LNK2034", "LNK2035", "LNK2036", "LNK2037", "LNK2040", "LNK2041", "LNK2042", "LNK2043", "LNK2044", "LNK2045", "LNK4003", "LNK4012", "LNK4013", "LNK4017", "LNK4018", "LNK4019", "LNK4030", "LNK4031", "LNK4038", "LNK4040", "LNK4041", "LNK4042", "LNK4043", "LNK4046", "LNK4047", "LNK4048", "LNK4051", "LNK4052", "LNK4056", "LNK4060", "LNK4061", "LNK4062", "LNK4066", "LNK4067", "LNK4068", "LNK4069", "LNK4072", "LNK4077", "LNK4079", "LNK4081", "LNK4085", "LNK4087", "LNK4088", "LNK4093", "LNK4094", "LNK4097", "LNK4103", "LNK4108", "LNK4195", "LNK4196", "LNK4198", "LNK4202", "LNK4203", "LNK4207", "LNK4208", "LNK4209", "LNK4223", "LNK4225", "LNK4226", "LNK4228", "LNK4232", "LNK4233", "LNK4236", "LNK4238", "LNK4239", "LNK4240", "LNK4241", "LNK4242", "LNK4243", "LNK4244", "LNK4245", "LNK4246", "LNK4249", "LNK4250", "LNK4251", "LNK4252", "LNK4255", "LNK4256", "LNK4257", "LNK4258", "LNK4259", "LNK4260", "LNK4261", "LNK4262", "LNK4263", "LNK4264", "LNK4265", "LNK4266", "LNK4267", "LNK4268", "LNK4269", "LNK4270", "LNK4271", "LNK4272", "LNK4273", "LNK4274", "LNK4275", "LNK4276", "LNK4277", "LNK4278", "LNK4279", "LNK4280", "LNK4281", "LNK4282", "LNK4283", "LNK4284", "LNK4285", "LNK4287", "LNK4288", "LNK4289", "LNK4290", "LNK4306", "LNK4307"]
 helpviewer_keywords: ["errors [C++]", "linker [C++], errors and warnings", "errors [C++], linker"]
 ---
 # Linker tools errors and warnings (LNKxxxx)
diff --git a/docs/error-messages/tool-errors/math-error-m6111.md b/docs/error-messages/tool-errors/math-error-m6111.md
index 123e1601be..1c1196f7cd 100644
--- a/docs/error-messages/tool-errors/math-error-m6111.md
+++ b/docs/error-messages/tool-errors/math-error-m6111.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Math Error M6111"
 title: "Math Error M6111"
-ms.date: "11/04/2016"
+description: "Learn more about: Math Error M6111"
+ms.date: 11/04/2016
 f1_keywords: ["M6111"]
 helpviewer_keywords: ["M6111"]
-ms.assetid: c0fc13f8-33c8-4e3f-a440-126cc623441b
 ---
 # Math Error M6111
 
@@ -14,9 +13,9 @@ A floating-point operation resulted in a stack underflow on the 8087/287/387 cop
 
 This error is often caused by a call to a **`long double`** function that does not return a value. For example, the following generates this error when compiled and run:
 
-```
-long double ld() {};
-main ()
+```c
+long double ld() {}
+int main ()
 {
   ld();
 }
diff --git a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md
index 5c934acfb5..b8e002612a 100644
--- a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md
+++ b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md
@@ -1,29 +1,30 @@
 ---
+title: "Learn about math errors M6101 through M6205"
 description: "Learn more about: Math errors (Mxxxx)"
-title: "Math errors"
-ms.date: "04/16/2019"
-ms.assetid: bdf3dc2a-d993-4f53-b0f2-9604e4914127
+ms.date: 04/16/2019
 ---
-# Math errors (Mxxxx)
+# Math errors (M6101 through M6205)
 
 This section is a reference to the errors generated by the runtime floating-point math library. Math runtime errors and warnings have the form M*xxxx*, where *xxxx* is a four-digit number.
 
-[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)]
+[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)]
 
 ## Math errors
 
-[Math error M6101](math-error-m6101.md) \
-[Math error M6102](math-error-m6102.md) \
-[Math error M6107](math-error-m6107.md) \
-[Math error M6108](math-error-m6108.md) \
-[Math error M6110](math-error-m6110.md) \
-[Math error M6111](math-error-m6111.md) \
-[Math error M6201](math-error-m6201.md) \
-[Math error M6202](math-error-m6202.md) \
-[Math error M6203](math-error-m6203.md) \
-[Math error M6205](math-error-m6205.md)
+| Error | Message |
+|--|--|
+| [Math error M6101](math-error-m6101.md) | invalid |
+| [Math error M6102](math-error-m6102.md) | denormal |
+| [Math error M6107](math-error-m6107.md) | unemulated |
+| [Math error M6108](math-error-m6108.md) | square root |
+| [Math error M6110](math-error-m6110.md) | stack overflow |
+| [Math error M6111](math-error-m6111.md) | stack underflow |
+| [Math error M6201](math-error-m6201.md) | 'function' : _DOMAIN error |
+| [Math error M6202](math-error-m6202.md) | 'function' : _SING error |
+| [Math error M6203](math-error-m6203.md) | 'function' : _OVERFLOW error |
+| [Math error M6205](math-error-m6205.md) | 'function' : _TLOSS error |
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \
+[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\
 [Math and floating-point support](../../c-runtime-library/floating-point-support.md)
diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-errors-and-warnings.md b/docs/error-messages/tool-errors/profile-guided-optimization-errors-and-warnings.md
index d3eae644ae..9afd0a1d99 100644
--- a/docs/error-messages/tool-errors/profile-guided-optimization-errors-and-warnings.md
+++ b/docs/error-messages/tool-errors/profile-guided-optimization-errors-and-warnings.md
@@ -1,26 +1,29 @@
 ---
-description: "Learn more about: Profile-Guided Optimization errors and warnings (PGxxxx)"
 title: "Profile-Guided Optimization errors and warnings"
-ms.date: "04/17/2019"
+description: "Learn more about: Profile-Guided Optimization errors and warnings (PGxxxx)"
+ms.date: 04/17/2019
 f1_keywords: ["PG0001", "PG0002", "PG0003", "PG0061", "PG0062", "PG0063", "PG0065", "PG0066", "PG0067", "PG0068", "PG0069", "PG0070", "PG0071", "PG0081", "PG0087", "PG0090", "PG0091", "PG0092", "PG0094", "PG0096", "PG0168", "PG0169", "PG0181", "PG0188", "PG1000", "PG1001", "PG1032", "PG1033", "PG1035", "PG1036", "PG1038", "PG1051", "PG1052", "PG1053", "PG1056", "PG1058", "PG1060", "PG1061", "PG1065", "PG1066", "PG1067"]
-ms.assetid: f67b1011-fb64-4df3-9356-d52c9423ff3f
 ---
 # Profile-Guided Optimization errors and warnings (PGxxxx)
 
 This section is a reference to the errors generated by the Profile-Guided Optimization (PGO) tools. PGO errors and warnings have the form PG*xxxx*, where *xxxx* is a four-digit number.
 
-[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)]
+[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)]
 
 ## PGO errors
 
-[Profile-Guided Optimization Error PG0165](../../error-messages/tool-errors/profile-guided-optimization-error-pg0165.md)
+| Error | Message |
+|--|--|
+| [Profile-Guided Optimization Error PG0165](profile-guided-optimization-error-pg0165.md) | Reading '*filename.pgd*' : '*message*'. |
 
 ## PGO warnings
 
-[Profile-Guided Optimization Warning PG1039](../../error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md) \
-[Profile-Guided Optimization Warning PG1087](../../error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md)
+| Warning | Message |
+|--|--|
+| [Profile-Guided Optimization Warning PG1039](profile-guided-optimization-warning-pg1039.md) | Failed waiting for quiet time to sweep. |
+| [Profile-Guided Optimization Warning PG1087](profile-guided-optimization-warning-pg1087.md) | The PGC file 'file' is not valid. |
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \
+[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\
 [Profile-Guided Optimizations](../../build/profile-guided-optimizations.md)
diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md
index 86313c3916..bc1f2f17fe 100644
--- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md
+++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md
@@ -1,8 +1,7 @@
 ---
-description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)"
 title: "Resource compiler errors and warnings"
+description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)"
 ms.date: "04/17/2019"
-ms.assetid: 0819f955-0561-491d-af3d-2453f4e2d035
 ---
 # Resource compiler errors and warnings (RCxxxx, RWxxxx)
 
@@ -94,5 +93,5 @@ This section is a reference to the errors generated by the resource compiler. Re
 
 ## See also
 
-[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)
+[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\
 [Resource compiler](/windows/win32/menurc/resource-compiler)
diff --git a/docs/extensions/abstract-cpp-component-extensions.md b/docs/extensions/abstract-cpp-component-extensions.md
index 54e681d6cf..495eb80faf 100644
--- a/docs/extensions/abstract-cpp-component-extensions.md
+++ b/docs/extensions/abstract-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: abstract  (C++/CLI and C++/CX)"
-title: "abstract  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "abstract (C++/CLI and C++/CX)"
+description: "Learn more about: abstract (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["abstract", "abstract_cpp"]
 helpviewer_keywords: ["abstract keyword [C++]"]
-ms.assetid: cbae3408-0378-4ac8-b70d-c016b381a6d5
 ---
-# abstract  (C++/CLI and C++/CX)
+# abstract (C++/CLI and C++/CX)
 
 The **abstract** keyword declares either:
 
diff --git a/docs/extensions/attribute-parameter-types-cpp-component-extensions.md b/docs/extensions/attribute-parameter-types-cpp-component-extensions.md
index fd508895dd..6b54f8b880 100644
--- a/docs/extensions/attribute-parameter-types-cpp-component-extensions.md
+++ b/docs/extensions/attribute-parameter-types-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Attribute Parameter Types  (C++/CLI and C++/CX)"
-title: "Attribute Parameter Types  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Attribute Parameter Types (C++/CLI and C++/CX)"
+description: "Learn more about: Attribute Parameter Types (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["custom attributes, parameter types"]
-ms.assetid: d9f127a3-7f08-456f-acc6-256805632712
 ---
-# Attribute Parameter Types  (C++/CLI and C++/CX)
+# Attribute Parameter Types (C++/CLI and C++/CX)
 
 Values passed to attributes must be known to the compiler at compile time.  Attribute parameters can be of the following types:
 
diff --git a/docs/extensions/boxing-cpp-component-extensions.md b/docs/extensions/boxing-cpp-component-extensions.md
index 6de754d475..a25066d75d 100644
--- a/docs/extensions/boxing-cpp-component-extensions.md
+++ b/docs/extensions/boxing-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Boxing  (C++/CLI and C++/CX)"
-title: "Boxing  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Boxing (C++/CLI and C++/CX)"
+description: "Learn more about: Boxing (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["boxing, C++"]
-ms.assetid: b5fd2c98-c578-4f83-8257-6dd663478665
 ---
-# Boxing  (C++/CLI and C++/CX)
+# Boxing (C++/CLI and C++/CX)
 
 The conversion of value types to objects is called *boxing*, and the conversion of objects to value types is called *unboxing*.
 
diff --git a/docs/extensions/classes-and-structs-cpp-component-extensions.md b/docs/extensions/classes-and-structs-cpp-component-extensions.md
index 7f1310a5b7..43ca041916 100644
--- a/docs/extensions/classes-and-structs-cpp-component-extensions.md
+++ b/docs/extensions/classes-and-structs-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: ref class and ref struct  (C++/CLI and C++/CX)"
 title: "ref class and ref struct (C++/CLI and C++/CX)"
-ms.date: "05/30/2019"
+description: "Learn more about: ref class and ref struct (C++/CLI and C++/CX)"
+ms.date: 05/30/2019
 ms.topic: "reference"
 f1_keywords: ["ref class", "value class", "ref struct", "value struct",]
 helpviewer_keywords: ["ref class keyword [C++]", "value class keyword [C++]", "value struct keyword [C++]", "ref struct keyword [C++]"]
-ms.assetid: 5c360764-b229-49c6-9357-66213afbc372
 ---
-# ref class and ref struct  (C++/CLI and C++/CX)
+# ref class and ref struct (C++/CLI and C++/CX)
 
 The **ref class** or **ref struct** extensions declare a class or struct whose *object lifetime* is administered automatically. When the object is no longer accessible or goes out of scope, the memory is released.
 
diff --git a/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md b/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md
index df9bc0d8cf..c88366385c 100644
--- a/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md
+++ b/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: Compiler Support for Type Traits (C++/CLI and C++/CX)"
 title: "Compiler Support for Type Traits (C++/CLI and C++/CX)"
+description: "Learn more about: Compiler Support for Type Traits (C++/CLI and C++/CX)"
 ms.date: "10/12/2018"
 ms.topic: "reference"
 f1_keywords: ["__is_simple_value_class", "__has_trivial_destructor", "__has_assign", "__is_union", "__is_class", "__is_abstract", "__has_trivial_assign", "__has_virtual_destructor", "__is_ref_array", "__is_base_of", "__has_copy", "__is_polymorphic", "__has_nothrow_constructor", "__is_ref_class", "__is_delegate", "__is_convertible_to", "__is_value_class", "__is_interface_class", "__has_nothrow_copy", "__is_sealed", "__has_trivial_constructor", "__has_trivial_copy", "__is_enum", "__has_nothrow_assign", "__has_finalizer", "__is_empty", "__is_pod", "__has_user_destructor"]
 helpviewer_keywords: ["__is_class keyword [C++]", "__is_pod keyword [C++]", "__is_delegate keyword [C++]", "__is_value_class keyword [C++]", "__has_copy keyword [C++]", "__has_nothrow_copy keyword [C++]", "__is_interface_class keyword [C++]", "__is_sealed keyword [C++]", "__is_convertible_to keyword [C++]", "__is_ref_class keyword [C++]", "__has_trivial_copy keyword [C++]", "__has_user_destructor keyword [C++]", "__is_abstract keyword [C++]", "__is_empty keyword [C++]", "__has_trivial_assign keyword [C++]", "__has_nothrow_constructor keyword [C++]", "__is_ref_array keyword [C++]", "__is_base_of keyword [C++]", "__has_nothrow_assign keyword [C++]", "__has_virtual_destructor keyword [C++]", "__has_finalizer keyword [C++]", "__is_union keyword [C++]", "__has_assign keyword [C++]", "__has_trivial_destructor keyword [C++]", "__is_polymorphic keyword [C++]", "__is_enum keyword [C++]", "__is_simple_value_class keyword [C++]", "__has_trivial_constructor keyword [C++]"]
-ms.assetid: cd440630-0394-48c0-a16b-1580b6ef5844
 ---
 # Compiler Support for Type Traits (C++/CLI and C++/CX)
 
@@ -160,7 +159,7 @@ The following list contains the type traits that are supported by the compiler.
 
    Returns **`true`** if the type has a trivial, compiler-generated destructor.
 
-    ``` cpp
+    ```cpp
     // has_trivial_destructor.cpp
     #include <stdio.h>
     struct S {};
diff --git a/docs/extensions/context-sensitive-keywords-cpp-component-extensions.md b/docs/extensions/context-sensitive-keywords-cpp-component-extensions.md
index 443571ea5e..8205699fbb 100644
--- a/docs/extensions/context-sensitive-keywords-cpp-component-extensions.md
+++ b/docs/extensions/context-sensitive-keywords-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: Context-Sensitive Keywords  (C++/CLI and C++/CX)"
-title: "Context-Sensitive Keywords  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Context-Sensitive Keywords (C++/CLI and C++/CX)"
+description: "Learn more about: Context-Sensitive Keywords (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["internal_CPP"]
 helpviewer_keywords: ["context-sensitive keywords"]
-ms.assetid: e33da089-f434-44e9-8cce-4668d05a8939
 ---
-# Context-Sensitive Keywords  (C++/CLI and C++/CX)
+# Context-Sensitive Keywords (C++/CLI and C++/CX)
 
 *Context-sensitive keywords* are language elements that are recognized only in specific contexts. Outside the specific context, a context-sensitive keyword can be a user-defined symbol.
 
diff --git a/docs/extensions/delegate-cpp-component-extensions.md b/docs/extensions/delegate-cpp-component-extensions.md
index 127af663e7..917f495409 100644
--- a/docs/extensions/delegate-cpp-component-extensions.md
+++ b/docs/extensions/delegate-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: delegate  (C++/CLI and C++/CX)"
-title: "delegate  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "delegate (C++/CLI and C++/CX)"
+description: "Learn more about: delegate (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["delegate_cpp", "delegate"]
 helpviewer_keywords: ["delegate keyword [C++]"]
-ms.assetid: 03caf23d-7873-4a23-9b34-becf42aaf429
 ---
-# delegate  (C++/CLI and C++/CX)
+# delegate (C++/CLI and C++/CX)
 
 Declares a type that represents a function pointer.
 
diff --git a/docs/extensions/enum-class-cpp-component-extensions.md b/docs/extensions/enum-class-cpp-component-extensions.md
index 38e1b9b11f..9d90a53330 100644
--- a/docs/extensions/enum-class-cpp-component-extensions.md
+++ b/docs/extensions/enum-class-cpp-component-extensions.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: enum class  (C++/CLI and C++/CX)"
-title: "enum class  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "enum class (C++/CLI and C++/CX)"
+description: "Learn more about: enum class (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
-ms.assetid: 8010fa8c-bad6-45b4-8214-b4db64d7ffe1
 ---
-# enum class  (C++/CLI and C++/CX)
+# enum class (C++/CLI and C++/CX)
 
 Declares an enumeration at namespace scope, which is a user-defined type consisting of a set of named constants called enumerators.
 
diff --git a/docs/extensions/exception-handling-cpp-component-extensions.md b/docs/extensions/exception-handling-cpp-component-extensions.md
index 3c16ee20c2..56a65971ca 100644
--- a/docs/extensions/exception-handling-cpp-component-extensions.md
+++ b/docs/extensions/exception-handling-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Exception Handling  (C++/CLI and C++/CX)"
-title: "Exception Handling  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Exception Handling (C++/CLI and C++/CX)"
+description: "Learn more about: Exception Handling (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["structured exception handling [C++], managed exceptions", "Exception class, managed applications", "exception handling", "C++ exception handling", "exception handling, types of", "System::Exception class in managed applications"]
-ms.assetid: ccb11fe8-6938-41ac-b477-a183e85865b9
 ---
-# Exception Handling  (C++/CLI and C++/CX)
+# Exception Handling (C++/CLI and C++/CX)
 
 Applications compiled with the `/ZW` compiler option or `/clr` compiler option both use *exceptions* to handle unexpected errors during program execution. The following topics discuss exception handling in either C++/CX or C++/CLI applications.
 
diff --git a/docs/extensions/explicit-overrides-cpp-component-extensions.md b/docs/extensions/explicit-overrides-cpp-component-extensions.md
index cb5e4288ab..7a5a8f8bb2 100644
--- a/docs/extensions/explicit-overrides-cpp-component-extensions.md
+++ b/docs/extensions/explicit-overrides-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Explicit Overrides  (C++/CLI and C++/CX)"
-title: "Explicit Overrides  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Explicit Overrides (C++/CLI and C++/CX)"
+description: "Learn more about: Explicit Overrides (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["overriding, override [C++]"]
-ms.assetid: 4ec3eaf5-163b-4df8-8f16-7a2ec04c3d0f
 ---
-# Explicit Overrides  (C++/CLI and C++/CX)
+# Explicit Overrides (C++/CLI and C++/CX)
 
 This topic discusses how to explicitly override a member of a base class or interface. A named (explicit) override should only be used to override a method with a derived method that has a different name.
 
diff --git a/docs/extensions/generic-interfaces-visual-cpp.md b/docs/extensions/generic-interfaces-visual-cpp.md
index 29f3456ca9..5fa795e2ef 100644
--- a/docs/extensions/generic-interfaces-visual-cpp.md
+++ b/docs/extensions/generic-interfaces-visual-cpp.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: Generic Interfaces (C++/CLI)"
 title: "Generic Interfaces (C++/CLI)"
-ms.date: "10/12/2018"
+description: "Learn more about: Generic Interfaces (C++/CLI)"
+ms.date: 10/12/2018
 ms.topic: "reference"
-helpviewer_keywords: ["generic interfaces", "interfaces, generic [C++}"]
-ms.assetid: f3da788a-ba83-4db7-9dcf-9b95a8fb9d1a
+helpviewer_keywords: ["generic interfaces", "interfaces, generic [C++]"]
 ---
 # Generic Interfaces (C++/CLI)
 
diff --git a/docs/extensions/generics-cpp-component-extensions.md b/docs/extensions/generics-cpp-component-extensions.md
index 6d26812691..3826f8d3db 100644
--- a/docs/extensions/generics-cpp-component-extensions.md
+++ b/docs/extensions/generics-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-title: "Generics  (C++/CLI and C++/CX)"
+title: "Generics (C++/CLI and C++/CX)"
 description: "Links to content about the C++/CLI and C++/CX generics features, types, and methods."
 ms.date: 09/25/2020
 ms.topic: "reference"
 f1_keywords: ["generic_cpp", "generic"]
 helpviewer_keywords: ["generics [C++]"]
-ms.assetid: c7ccc316-a411-4c00-b2e2-f0c0eadc6cfd
 ---
-# Generics  (C++/CLI and C++/CX)
+# Generics (C++/CLI and C++/CX)
 
 Generics are parameterized types and methods. In this section, find out which generic features both the Windows Runtime and the common language runtime support, and which ones only the common language runtime supports. You'll also find out how to author your own generic methods and types in C++/CLI, and how to use generic types authored in a .NET Framework language in C++/CLI. Finally, this section provides a comparison of generics and C++ templates.
 
diff --git a/docs/extensions/handle-to-object-operator-hat-cpp-component-extensions.md b/docs/extensions/handle-to-object-operator-hat-cpp-component-extensions.md
index 089f64f26e..8bed5655da 100644
--- a/docs/extensions/handle-to-object-operator-hat-cpp-component-extensions.md
+++ b/docs/extensions/handle-to-object-operator-hat-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Handle to Object Operator (^)  (C++/CLI and C++/CX)"
-title: "Handle to Object Operator (^)  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Handle to Object Operator (^) (C++/CLI and C++/CX)"
+description: "Learn more about: Handle to Object Operator (^) (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["^ handle to object [C++]"]
-ms.assetid: 70c411e6-be57-4468-a944-6ea7be89f392
 ---
-# Handle to Object Operator (^)  (C++/CLI and C++/CX)
+# Handle to Object Operator (^) (C++/CLI and C++/CX)
 
 The *handle declarator* (`^`, pronounced "hat"), modifies the type [specifier](../cpp/declarations-and-definitions-cpp.md) to mean that the declared object should be automatically deleted when the system determines that the object is no longer accessible.
 
diff --git a/docs/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md b/docs/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md
index 85f3d4fba8..7a4bb01bf4 100644
--- a/docs/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md
+++ b/docs/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: How to: Declare Interior Pointers with the const Keyword (C++/CLI)"
 title: "How to: Declare Interior Pointers with the const Keyword (C++/CLI)"
-ms.date: "10/12/2018"
+description: "Learn more about: How to: Declare Interior Pointers with the const Keyword (C++/CLI)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["pointers, interior"]
-ms.assetid: 64e08b0e-9396-4046-ab51-8f6588f32330
 ---
 # How to: Declare Interior Pointers with the const Keyword (C++/CLI)
 
@@ -69,7 +68,7 @@ int main() {
    G ^ const h_G2 = gcnew G;   // interior pointers to this object cannot be dereferenced and changed
    h_G2->msg = "test";
    interior_ptr<String^ const> int_ptr_G2 = &(h_G->msg);
-};
+}
 ```
 
 ## See also
diff --git a/docs/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md b/docs/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md
index 0065f44486..5caafaeebf 100644
--- a/docs/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md
+++ b/docs/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: How to: Overload Functions with Interior Pointers and Native Pointers (C++/CLI)"
 title: "How to: Overload Functions with Interior Pointers and Native Pointers (C++/CLI)"
-ms.date: "10/12/2018"
+description: "Learn more about: How to: Overload Functions with Interior Pointers and Native Pointers (C++/CLI)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["Functions with interior and native pointers, overloading"]
-ms.assetid: d70df625-4aad-457c-84f5-70a0a290cc1f
 ---
 # How to: Overload Functions with Interior Pointers and Native Pointers (C++/CLI)
 
@@ -49,7 +48,7 @@ int main() {
    G ^pG = gcnew G;   // common language runtime heap
    f( &pS->i );
    f( &pG->i );
-};
+}
 ```
 
 ```Output
diff --git a/docs/extensions/interface-class-cpp-component-extensions.md b/docs/extensions/interface-class-cpp-component-extensions.md
index 9688279ef0..d4e614dc8a 100644
--- a/docs/extensions/interface-class-cpp-component-extensions.md
+++ b/docs/extensions/interface-class-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
+title: "interface class (C++/CLI and C++/CX)"
 description: "Learn more about: interface class (C++/CLI and C++/CX)"
-title: "interface class  (C++/CLI and C++/CX)"
 ms.date: 04/15/2022
 ms.topic: "reference"
 f1_keywords: ["interface_CPP", "interface class", "interface class_CPP"]
 helpviewer_keywords: ["interface class keyword", "interface struct keyword"]
-ms.assetid: 3ccea701-f50b-4da7-ad6b-f0ee1203e2b9
 ---
-# `interface class`  (C++/CLI and C++/CX)
+# `interface class` (C++/CLI and C++/CX)
 
 Declares an interface.  For information on native interfaces, see [`__interface`](../cpp/interface.md).
 
diff --git a/docs/extensions/new-new-slot-in-vtable-cpp-component-extensions.md b/docs/extensions/new-new-slot-in-vtable-cpp-component-extensions.md
index adba09017e..4c1932c306 100644
--- a/docs/extensions/new-new-slot-in-vtable-cpp-component-extensions.md
+++ b/docs/extensions/new-new-slot-in-vtable-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: new (new slot in vtable)  (C++/CLI and C++/CX)"
-title: "new (new slot in vtable)  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "new (new slot in vtable) (C++/CLI and C++/CX)"
+description: "Learn more about: new (new slot in vtable) (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["new keyword [C++]"]
-ms.assetid: 1a9a5704-f02f-46ae-ad65-f0f2b6dbabc3
 ---
-# new (new slot in vtable)  (C++/CLI and C++/CX)
+# new (new slot in vtable) (C++/CLI and C++/CX)
 
 The **`new`** keyword indicates that a virtual member will get a new slot in the vtable.
 
diff --git a/docs/extensions/nullptr-cpp-component-extensions.md b/docs/extensions/nullptr-cpp-component-extensions.md
index e9972a7c69..e078438809 100644
--- a/docs/extensions/nullptr-cpp-component-extensions.md
+++ b/docs/extensions/nullptr-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: nullptr  (C++/CLI and C++/CX)"
-title: "nullptr  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "nullptr (C++/CLI and C++/CX)"
+description: "Learn more about: nullptr (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["__nullptr keyword (C++)", "nullptr keyword [C++]"]
-ms.assetid: 594cfbf7-06cb-4366-9ede-c0b703e1d095
 ---
-# nullptr  (C++/CLI and C++/CX)
+# nullptr (C++/CLI and C++/CX)
 
 The **`nullptr`** keyword represents a *null pointer value*. Use a null pointer value to indicate that an object handle, interior pointer, or native pointer type does not point to an object.
 
diff --git a/docs/extensions/override-cpp-component-extensions.md b/docs/extensions/override-cpp-component-extensions.md
index 5f6305c840..3dbe034d52 100644
--- a/docs/extensions/override-cpp-component-extensions.md
+++ b/docs/extensions/override-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: override  (C++/CLI and C++/CX)"
-title: "override  (C++/CLI and C++/CX)"
-ms.date: "11/04/2016"
+title: "override (C++/CLI and C++/CX)"
+description: "Learn more about: override (C++/CLI and C++/CX)"
+ms.date: 11/04/2016
 ms.topic: "reference"
 helpviewer_keywords: ["overriding, override keyword [C++]", "override keyword [C++]"]
-ms.assetid: 34d19257-1686-4fcd-96f5-af07c70ba914
 ---
-# override  (C++/CLI and C++/CX)
+# override (C++/CLI and C++/CX)
 
 The **override** context-sensitive keyword indicates that a member of a type overrides a base class or a base interface member.
 
diff --git a/docs/extensions/override-specifiers-cpp-component-extensions.md b/docs/extensions/override-specifiers-cpp-component-extensions.md
index 0534d54ecb..ea644986a3 100644
--- a/docs/extensions/override-specifiers-cpp-component-extensions.md
+++ b/docs/extensions/override-specifiers-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: Override Specifiers  (C++/CLI and C++/CX)"
-title: "Override Specifiers  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Override Specifiers (C++/CLI and C++/CX)"
+description: "Learn more about: Override Specifiers (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["override specifiers, C++", "override specifiers"]
-ms.assetid: 155bbf6f-4722-4654-afb1-9cb52af799fb
 ---
-# Override Specifiers  (C++/CLI and C++/CX)
+# Override Specifiers (C++/CLI and C++/CX)
 
 *Override specifiers* modify how inherited types and members of inherited types behave in derived types.
 
diff --git a/docs/extensions/partial-cpp-component-extensions.md b/docs/extensions/partial-cpp-component-extensions.md
index 90084a64c3..495d65b25c 100644
--- a/docs/extensions/partial-cpp-component-extensions.md
+++ b/docs/extensions/partial-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: partial  (C++/CLI and C++/CX)"
-title: "partial  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "partial (C++/CLI and C++/CX)"
+description: "Learn more about: partial (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["partial_CPP"]
 helpviewer_keywords: ["partial", "C++/CX, partial"]
-ms.assetid: 43adf1f5-10c5-44aa-a66f-7507e2bdabf8
 ---
-# partial  (C++/CLI and C++/CX)
+# partial (C++/CLI and C++/CX)
 
 The **partial** keyword enables different parts of the same ref class to be authored independently and in different files.
 
diff --git a/docs/extensions/pin-ptr-cpp-cli.md b/docs/extensions/pin-ptr-cpp-cli.md
index c5c3f29afd..ea3baddba4 100644
--- a/docs/extensions/pin-ptr-cpp-cli.md
+++ b/docs/extensions/pin-ptr-cpp-cli.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: pin_ptr (C++/CLI)"
 title: "pin_ptr (C++/CLI)"
-ms.date: "10/12/2018"
+description: "Learn more about: pin_ptr (C++/CLI)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["pin_ptr_cpp", "stdcli::language::pin_ptr", "pin_ptr"]
 helpviewer_keywords: ["pinning pointers", "pin_ptr keyword [C++]"]
-ms.assetid: 6c2e6c73-4ec2-4dce-8e1f-ccf3a9f9d0aa
 ---
 # pin_ptr (C++/CLI)
 
@@ -164,7 +163,7 @@ int main() {
 
    k = l;   // ok
    Console::WriteLine(*k);
-};
+}
 ```
 
 ```Output
diff --git a/docs/extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md b/docs/extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md
index 7915908d65..ee36ff7372 100644
--- a/docs/extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md
+++ b/docs/extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: Platform, default, and cli Namespaces  (C++/CLI and C++/CX)"
-title: "Platform, default, and cli Namespaces  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "Platform, default, and cli Namespaces (C++/CLI and C++/CX)"
+description: "Learn more about: Platform, default, and cli Namespaces (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["lang", "cli"]
 helpviewer_keywords: ["lang namespace", "cli namespace"]
-ms.assetid: 9d38bd1e-dc78-47d1-a84b-9b4683e52c9c
 ---
-# Platform, default, and cli Namespaces  (C++/CLI and C++/CX)
+# Platform, default, and cli Namespaces (C++/CLI and C++/CX)
 
 A namespace qualifies the names of language elements so the names do not conflict with otherwise identical names elsewhere in the source code. For example, a name collision might prevent the compiler from recognizing [Context-Sensitive Keywords](context-sensitive-keywords-cpp-component-extensions.md). Namespaces are used by the compiler but are not preserved in the compiled assembly.
 
diff --git a/docs/extensions/ref-new-gcnew-cpp-component-extensions.md b/docs/extensions/ref-new-gcnew-cpp-component-extensions.md
index c2a9a42342..13c1a6812b 100644
--- a/docs/extensions/ref-new-gcnew-cpp-component-extensions.md
+++ b/docs/extensions/ref-new-gcnew-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: ref new, gcnew  (C++/CLI and C++/CX)"
-title: "ref new, gcnew  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "ref new, gcnew (C++/CLI and C++/CX)"
+description: "Learn more about: ref new, gcnew (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["gcnew", "ref new", "gcnew_cpp"]
 helpviewer_keywords: ["ref new keyword (C++)", "gcnew keyword [C++]"]
-ms.assetid: 388a62da-c2df-4a94-a9a2-205b53e577da
 ---
-# ref new, gcnew  (C++/CLI and C++/CX)
+# ref new, gcnew (C++/CLI and C++/CX)
 
 The **ref new** aggregate keyword allocates an instance of a type that is garbage collected when the object becomes inaccessible, and that returns a handle ([^](handle-to-object-operator-hat-cpp-component-extensions.md)) to the allocated object.
 
diff --git a/docs/extensions/safe-cast-cpp-component-extensions.md b/docs/extensions/safe-cast-cpp-component-extensions.md
index 800fe8605f..a35a3a2af9 100644
--- a/docs/extensions/safe-cast-cpp-component-extensions.md
+++ b/docs/extensions/safe-cast-cpp-component-extensions.md
@@ -5,11 +5,10 @@ ms.date: "10/12/2018"
 ms.topic: "reference"
 f1_keywords: ["safe_cast", "safe_cast_cpp", "stdcli::language::safe_cast"]
 helpviewer_keywords: ["safe_cast keyword [C++]"]
-ms.assetid: 4fa688bf-a8ec-49bc-a4c5-f48134efa4f7
 ---
 # safe_cast (C++/CLI and C++/CX)
 
-The **safe_cast** operation returns the specified expression as the specified type, if successful; otherwise, throws `InvalidCastException`.
+The **`safe_cast`** operation returns the specified expression as the specified type. If the operation isn't successful, it throws an `InvalidCastException`.
 
 ## All Runtimes
 
@@ -23,7 +22,7 @@ The **safe_cast** operation returns the specified expression as the specified ty
 
 ## Windows Runtime
 
-**safe_cast** allows you to change the type of a specified expression. In situations where you fully expect a variable or parameter to be convertible to a certain type, you can use **safe_cast** without a **try-catch** block to detect programming errors during development. For more information, see [Casting (C++/CX)](../cppcx/casting-c-cx.md).
+Use **`safe_cast`** to change the type of a specified expression. If you expect a variable or parameter to be convertible to a certain type, use **`safe_cast`** without a **try-catch** block to detect programming errors during development. For more information, see [Casting (C++/CX)](../cppcx/casting-c-cx.md).
 
 ### Syntax
 
@@ -41,7 +40,7 @@ An expression that evaluates to a handle to a reference or value type, a value t
 
 ### Remarks
 
-**safe_cast** throws `InvalidCastException` if it cannot convert *expression* to the type specified by *type-id*. To catch `InvalidCastException`, specify the [/EH (Exception Handling Model)](../build/reference/eh-exception-handling-model.md) compiler option, and use a **try/catch** statement.
+**`safe_cast`** throws `InvalidCastException` if it can't convert *expression* to the type specified by *type-id*. To catch `InvalidCastException`, specify the [/EH (Exception Handling Model)](../build/reference/eh-exception-handling-model.md) compiler option, and use a **try/catch** statement.
 
 ### Requirements
 
@@ -49,7 +48,7 @@ Compiler option: `/ZW`
 
 ### Examples
 
-The following code example demonstrates how to use **safe_cast** with the Windows Runtime.
+The following code example demonstrates how to use **`safe_cast`** with the Windows Runtime.
 
 ```cpp
 // safe_cast_ZW.cpp
@@ -83,7 +82,7 @@ Caught expected exception: InvalidCastException
 
 ## Common Language Runtime
 
-**safe_cast** allows you to change the type of an expression and generate verifiable MSIL code.
+**`safe_cast`** changes the type of an expression and generates verifiable MSIL code.
 
 ### Syntax
 
@@ -93,30 +92,29 @@ Caught expected exception: InvalidCastException
 
 ### Parameters
 
-*type-id*<br/>
+*`type-id`*\
 A handle to a reference or value type, a value type, or a tracking reference to a reference or value type.
 
-*expression*<br/>
+*`expression`*
 An expression that evaluates to a handle to a reference or value type, a value type, or a tracking reference to a reference or value type.
 
 ### Remarks
 
 The expression `safe_cast<`*type-id*`>(`*expression*`)` converts the operand *expression* to an object of type *type-id*.
 
-The compiler will accept a [static_cast](../cpp/static-cast-operator.md) in most places that it will accept a **safe_cast**.  However, **safe_cast** is guaranteed to produce verifiable MSIL, whereas a **`static_cast`** could produce unverifiable MSIL.  See [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [Peverify.exe (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool) for more information on verifiable code.
+The compiler accepts a [`static_cast`](../cpp/static-cast-operator.md) in most places that it accepts a **`safe_cast`**. However, **`safe_cast`** always produces verifiable MSIL, whereas a **`static_cast`** might produce unverifiable MSIL. For more information on verifiable code, see [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [`Peverify.exe` (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool).
 
-Like **`static_cast`**, **safe_cast** invokes user-defined conversions.
+Like **`static_cast`**, **`safe_cast`** invokes user-defined conversions.
 
 For more information about casts, see [Casting Operators](../cpp/casting-operators.md).
 
-**safe_cast** does not apply a **`const_cast`** (cast away **`const`**).
+**`safe_cast`** doesn't apply a **`const_cast`** (cast away **`const`**).
 
-**safe_cast** is in the cli namespace.  See [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md) for more information.
+**`safe_cast`** is in the cli namespace. For more information, see [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md).
 
-For more information on **safe_cast**, see:
+For more information on **`safe_cast`**, see:
 
 - [C-Style Casts with /clr (C++/CLI)](c-style-casts-with-clr-cpp-cli.md)
-
 - [How to: Use safe_cast in C++/CLI](../dotnet/how-to-use-safe-cast-in-cpp-cli.md)
 
 ### Requirements
@@ -125,7 +123,7 @@ Compiler option: `/clr`
 
 ### Examples
 
-One example of where the compiler will not accept a **`static_cast`** but will accept a **safe_cast** is for casts between unrelated interface types.  With **safe_cast**, the compiler will not issue a conversion error and will perform a check at runtime to see if the cast is possible
+One example of where the compiler doesn't accept a **`static_cast`** but accepts a **`safe_cast`** is for casts between unrelated interface types. With **`safe_cast`**, the compiler doesn't issue a conversion error and performs a check at runtime to see if the cast is possible.
 
 ```cpp
 // safe_cast.cpp
diff --git a/docs/extensions/sealed-cpp-component-extensions.md b/docs/extensions/sealed-cpp-component-extensions.md
index 1229c6747d..e44afac2b7 100644
--- a/docs/extensions/sealed-cpp-component-extensions.md
+++ b/docs/extensions/sealed-cpp-component-extensions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: sealed  (C++/CLI and C++/CX)"
-title: "sealed  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "sealed (C++/CLI and C++/CX)"
+description: "Learn more about: sealed (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 f1_keywords: ["sealed_cpp", "sealed"]
 helpviewer_keywords: ["sealed keyword [C++]"]
-ms.assetid: 3d0d688a-41aa-45f5-a25a-65c44206521e
 ---
-# sealed  (C++/CLI and C++/CX)
+# sealed (C++/CLI and C++/CX)
 
 **sealed** is a context-sensitive keyword for ref classes that indicates that a virtual member cannot be overridden, or that a type cannot be used as a base type.
 
diff --git a/docs/extensions/string-cpp-component-extensions.md b/docs/extensions/string-cpp-component-extensions.md
index 57a1c3d638..de9ff62f36 100644
--- a/docs/extensions/string-cpp-component-extensions.md
+++ b/docs/extensions/string-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: String  (C++/CLI and C++/CX)"
-title: "String  (C++/CLI and C++/CX)"
-ms.date: "10/08/2018"
+title: "String (C++/CLI and C++/CX)"
+description: "Learn more about: String (C++/CLI and C++/CX)"
+ms.date: 10/08/2018
 ms.topic: "reference"
 helpviewer_keywords: ["string support with /clr", "/clr compiler option [C++], string support"]
-ms.assetid: c695f965-9be0-4e20-9661-373bfee6557e
 ---
-# String  (C++/CLI and C++/CX)
+# String (C++/CLI and C++/CX)
 
 The Windows Runtime and common language runtime represent strings as objects whose allocated memory is managed automatically. That is, you are not required to explicitly discard the memory for a string when the string variable goes out of scope or your application ends. To indicate that the lifetime of a string object is to be managed automatically, declare the string type with the [handle-to-object (^)](handle-to-object-operator-hat-cpp-component-extensions.md) modifier.
 
@@ -104,7 +103,7 @@ int main() {
    if (a != b)
       Console::WriteLine("a and b are not equal");
 
-   // System:String^ and tracking reference
+   // System::String^ and tracking reference
    String^% rstr1 = a;
    Console::WriteLine(rstr1);
 
@@ -211,11 +210,11 @@ The following sample shows that the compiler distinguishes between native string
 using namespace System;
 int func() {
    throw "simple string";   // const char *
-};
+}
 
 int func2() {
    throw "string" + "string";   // returns System::String
-};
+}
 
 template<typename T>
 void func3(T t) {
@@ -254,6 +253,6 @@ System.String
 
 ## See also
 
-[Component Extensions for .NET and UWP](component-extensions-for-runtime-platforms.md)<br/>
-[String and Character Literals](../cpp/string-and-character-literals-cpp.md)<br/>
+[Component Extensions for .NET and UWP](component-extensions-for-runtime-platforms.md)\
+[String and Character Literals](../cpp/string-and-character-literals-cpp.md)\
 [/clr (Common Language Runtime Compilation)](../build/reference/clr-common-language-runtime-compilation.md)
diff --git a/docs/extensions/typeid-cpp-component-extensions.md b/docs/extensions/typeid-cpp-component-extensions.md
index 3d8cb2389c..33c7d5fe5d 100644
--- a/docs/extensions/typeid-cpp-component-extensions.md
+++ b/docs/extensions/typeid-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: typeid  (C++/CLI and C++/CX)"
-title: "typeid  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "typeid (C++/CLI and C++/CX)"
+description: "Learn more about: typeid (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["typeid keyword [C++]"]
-ms.assetid: e9706cae-e7c4-4d6d-b474-646d73df3e70
 ---
-# typeid  (C++/CLI and C++/CX)
+# typeid (C++/CLI and C++/CX)
 
 Gets a value that indicates the type of an object.
 
diff --git a/docs/extensions/user-defined-attributes-cpp-component-extensions.md b/docs/extensions/user-defined-attributes-cpp-component-extensions.md
index bf6add627c..f9f9b7c034 100644
--- a/docs/extensions/user-defined-attributes-cpp-component-extensions.md
+++ b/docs/extensions/user-defined-attributes-cpp-component-extensions.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: User-Defined Attributes  (C++/CLI and C++/CX)"
-title: "User-Defined Attributes  (C++/CLI and C++/CX)"
-ms.date: "10/12/2018"
+title: "User-Defined Attributes (C++/CLI and C++/CX)"
+description: "Learn more about: User-Defined Attributes (C++/CLI and C++/CX)"
+ms.date: 10/12/2018
 ms.topic: "reference"
 helpviewer_keywords: ["metadata, extending", "custom attributes, extending metadata"]
-ms.assetid: 98b29048-a3ea-4698-8441-f149cdaec9fb
 ---
-# User-Defined Attributes  (C++/CLI and C++/CX)
+# User-Defined Attributes (C++/CLI and C++/CX)
 
 C++/CLI and C++/CX enable you to create platform-specific attributes that extend the metadata of an interface, class or structure, method, parameter, or enumeration. These attributes are distinct from the [standard C++ attributes](../cpp/attributes.md).
 
diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml
index 224ea3f49a..49961e1320 100644
--- a/docs/get-started/toc.yml
+++ b/docs/get-started/toc.yml
@@ -25,7 +25,7 @@ items:
   items:
     - name: Create a console app
       href: tutorial-console-cpp.md
-    - name: Create a Universal Windows Platform app 
+    - name: Create a Universal Windows Platform app
       href: /windows/uwp/cpp-and-winrt-apis/get-started
     - name: Create a Windows Desktop app
       href: /windows/desktop/learnwin32/learn-to-program-for-windows
@@ -44,9 +44,9 @@ items:
   items:
     - name: Open code from a repo
       href: /visualstudio/get-started/tutorial-open-project-from-repo
-    - name: Write and edit code 
+    - name: Write and edit code
       href: /visualstudio/get-started/tutorial-editor
-    - name: Compile and build 
+    - name: Compile and build
       href: /visualstudio/ide/compiling-and-building-in-visual-studio
     - name: Debug your C++ code
       href: /visualstudio/debugger/quickstart-debug-with-cplusplus
diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md
index 9ae384bf2c..5a251dca67 100644
--- a/docs/get-started/tutorial-console-cpp.md
+++ b/docs/get-started/tutorial-console-cpp.md
@@ -433,7 +433,8 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t
 3. In the **Name** textbox at the bottom, name the new project *CalculatorTutorial*, then select **OK**.
 
    :::image type="complex" source="./media/calc-vs2017-new-project-dialog.png" alt-text="Screenshot of the New Project dialog.":::
-   On the left, Other Languages > Visual C++ is selected. In the center, the Console App project type is selected. The Name text box contains CalculatorTutorial.":::
+   On the left, Other Languages > Visual C++ is selected. In the center, the Console App project type is selected. The Name text box contains CalculatorTutorial.
+   :::image-end:::
 
    An empty C++ Windows console application 'Hello World' app is created. Console applications use a Windows console window to display output and accept user input. In Visual Studio, an editor window opens and shows the generated code:
 
diff --git a/docs/ide/add-interface-definition-library-method-wizard.md b/docs/ide/add-interface-definition-library-method-wizard.md
index 6f4430b635..af92363f29 100644
--- a/docs/ide/add-interface-definition-library-method-wizard.md
+++ b/docs/ide/add-interface-definition-library-method-wizard.md
@@ -5,6 +5,7 @@ ms.date: "04/13/2022"
 f1_keywords: ["vc.codewiz.method.overview", "vc.codewiz.method.idlattrib"]
 helpviewer_keywords: ["add IDL method wizard [C++]", "IDL methods [C++], adding", "methods [C++], adding using wizards", "IDL attributes, add an IDL method wizard"]
 ms.custom: devdivchpfy22
+ms.topic: how-to
 ---
 
 # Add an IDL method
diff --git a/docs/ide/add-interface-definition-library-property-wizard.md b/docs/ide/add-interface-definition-library-property-wizard.md
index c12abece36..8391d75092 100644
--- a/docs/ide/add-interface-definition-library-property-wizard.md
+++ b/docs/ide/add-interface-definition-library-property-wizard.md
@@ -5,6 +5,7 @@ ms.date: 04/14/2022
 f1_keywords: ["vc.codewiz.prop.overview", "vc.codewiz.prop.idlattributes"]
 helpviewer_keywords: ["interfaces, adding properties", "properties [C++], adding to interfaces", "names, add property wizard", "IDL attributes", "stock properties, about stock properties", "stock properties"]
 ms.custom: devdivchpfy22
+ms.topic: how-to
 ---
 # Add an IDL property
 
diff --git a/docs/ide/adding-a-class-from-an-activex-control-visual-cpp.md b/docs/ide/adding-a-class-from-an-activex-control-visual-cpp.md
index 5fb6833df0..7fceea68e7 100644
--- a/docs/ide/adding-a-class-from-an-activex-control-visual-cpp.md
+++ b/docs/ide/adding-a-class-from-an-activex-control-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: 04/28/2023
 f1_keywords: ["vc.codewiz.class.axcontrol"]
 helpviewer_keywords: ["ActiveX controls [C++], adding classes", "classes [C++], creating", "ActiveX Control Wizard", "add class from ActiveX control wizard [C++]"]
 ms.custom: devdivchpfy22
+ms.topic: how-to
 ---
 # Add a class from an ActiveX control
 
diff --git a/docs/ide/adding-a-generic-cpp-class.md b/docs/ide/adding-a-generic-cpp-class.md
index 9d7342c49c..aa08041e15 100644
--- a/docs/ide/adding-a-generic-cpp-class.md
+++ b/docs/ide/adding-a-generic-cpp-class.md
@@ -5,6 +5,7 @@ ms.date: "11/09/2018"
 f1_keywords: ["vc.codewiz.classes.adding.generic", "vc.codewiz.class.generic"]
 helpviewer_keywords: ["Visual C++, classes", "generic classes, adding", "generic classes", "generic C++ class wizard [C++]"]
 ms.assetid: e95a5a14-dbed-4edc-8551-344fe48613cb
+ms.topic: how-to
 ---
 # Add a generic C++ class
 
diff --git a/docs/ide/adding-a-member-function-visual-cpp.md b/docs/ide/adding-a-member-function-visual-cpp.md
index 4dd50a4671..0ae5d7ab88 100644
--- a/docs/ide/adding-a-member-function-visual-cpp.md
+++ b/docs/ide/adding-a-member-function-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/09/2018"
 f1_keywords: ["vc.codewiz.classes.member.function", "vc.codewiz.function.overview"]
 helpviewer_keywords: ["member functions, adding to classes", "classes [C++], adding members", "add member function wizard [C++]"]
 ms.assetid: 55b25ddb-541d-44ed-957c-974ef91cfc85
+ms.topic: how-to
 ---
 # Add a member function
 
diff --git a/docs/ide/adding-a-member-variable-visual-cpp.md b/docs/ide/adding-a-member-variable-visual-cpp.md
index 853f438513..76a6a69fd1 100644
--- a/docs/ide/adding-a-member-variable-visual-cpp.md
+++ b/docs/ide/adding-a-member-variable-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/09/2018"
 f1_keywords: ["vc.codewiz.classes.member.variable", "vc.codewiz.variable.overview"]
 helpviewer_keywords: ["member variables, adding", "member variables", "add member variable wizard [C++]", "dialog box controls, member variables", "dialog box controls, variable types", "variables, dialog box control member variables"]
 ms.assetid: 437783bd-8eb4-4508-8b73-7380116e9d71
+ms.topic: how-to
 ---
 # Add a member variable
 
diff --git a/docs/ide/adding-a-method-visual-cpp.md b/docs/ide/adding-a-method-visual-cpp.md
index 6fdc77ce36..c5e2c1e994 100644
--- a/docs/ide/adding-a-method-visual-cpp.md
+++ b/docs/ide/adding-a-method-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "03/31/2022"
 f1_keywords: ["vc.codewiz.method.overview", "vc.codewiz.method.idlattrib"]
 helpviewer_keywords: ["add method wizard [C++]", "methods [C++], adding", "methods [C++], adding using wizards", "IDL attributes, add method wizard"]
 ms.custom: devdivchpfy22
+ms.topic: how-to
 ---
 # Add a method
 
@@ -59,4 +60,4 @@ Add a method to an interface by using the add method wizard:
 
 [Add an IDL method wizard](add-interface-definition-library-method-wizard.md)\
 [Add an IDL MFC method wizard](../mfc/reference/add-idl-mfc-method-wizard.md)\
-[Adding functionality with code wizards](adding-functionality-with-code-wizards-cpp.md)
\ No newline at end of file
+[Adding functionality with code wizards](adding-functionality-with-code-wizards-cpp.md)
diff --git a/docs/ide/adding-a-property-visual-cpp.md b/docs/ide/adding-a-property-visual-cpp.md
index f710a05bef..4ec27fc8d6 100644
--- a/docs/ide/adding-a-property-visual-cpp.md
+++ b/docs/ide/adding-a-property-visual-cpp.md
@@ -1,10 +1,11 @@
 ---
-description: "Learn more about: Add a property to an interface in a Microsoft Visual Studio C++ project"
 title: "Add a property"
+description: "Learn more about: Add a property to an interface in a Microsoft Visual Studio C++ project"
 ms.date: 04/12/2022
 f1_keywords: ["vc.codewiz.prop.overview"]
 helpviewer_keywords: ["interfaces, adding properties", "properties [C++], adding to interfaces", "names, add property wizard", "add property wizard", "stock properties, about stock properties", "stock properties"]
 ms.custom: devdivchpfy22
+ms.topic: how-to
 ---
 
 # Add a property
@@ -52,8 +53,8 @@ The following section describes the UI that you'll use to add a property:
 
   For ATL interfaces **Put function** makes the property writable; that is, it creates the `Put` method for setting, or "putting," this property of the object. Select **Get**, **Put**, or both.
 
-## See Also
+## See also
 
 [Add IDL Property](add-interface-definition-library-property-wizard.md)
 
-[Add IDL MFC Property](../mfc/reference/add-interface-definition-library-mfc-property-wizard.md)
\ No newline at end of file
+[Add IDL MFC Property](../mfc/reference/add-interface-definition-library-mfc-property-wizard.md)
diff --git a/docs/ide/adding-an-event-handler-visual-cpp.md b/docs/ide/adding-an-event-handler-visual-cpp.md
index b5bb5ac8e0..0990bfb622 100644
--- a/docs/ide/adding-an-event-handler-visual-cpp.md
+++ b/docs/ide/adding-an-event-handler-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/12/2018"
 f1_keywords: ["vc.codewiz.eventhandler.overview"]
 helpviewer_keywords: ["event handlers, adding", "properties [Visual Studio], MSBuild", "MSBuild, properties", "event handler wizard [C++]"]
 ms.assetid: 050bebf0-a9e0-474b-905c-796fe5ac8fc3
+ms.topic: how-to
 ---
 # Add an event handler
 
diff --git a/docs/ide/adding-an-event-visual-cpp.md b/docs/ide/adding-an-event-visual-cpp.md
index 68c78c71bd..7a28e7de1a 100644
--- a/docs/ide/adding-an-event-visual-cpp.md
+++ b/docs/ide/adding-an-event-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/12/2018"
 f1_keywords: ["vc.codewiz.event.overview"]
 helpviewer_keywords: ["ActiveX controls [C++], adding events to", "MFC ActiveX controls [C++], adding events", "events [C++], ActiveX controls", "add event wizard [C++]"]
 ms.assetid: fe34832a-edfc-4f86-aacb-8df77001873d
+ms.topic: how-to
 ---
 # Add an event
 
diff --git a/docs/ide/adding-functionality-with-code-wizards-cpp.md b/docs/ide/adding-functionality-with-code-wizards-cpp.md
index a5088db657..4921258492 100644
--- a/docs/ide/adding-functionality-with-code-wizards-cpp.md
+++ b/docs/ide/adding-functionality-with-code-wizards-cpp.md
@@ -4,6 +4,7 @@ title: "Adding Functionality with Code Wizards (C++)"
 ms.date: "05/14/2019"
 helpviewer_keywords: ["code wizards [C++]"]
 ms.assetid: 6afb7ef9-7056-423d-b244-91bb4236d1d7
+ms.topic: concept-article
 ---
 # Adding Functionality with Code Wizards (C++)
 
diff --git a/docs/ide/implementing-a-connection-point-visual-cpp.md b/docs/ide/implementing-a-connection-point-visual-cpp.md
index 20e7d83b8a..252f5ff931 100644
--- a/docs/ide/implementing-a-connection-point-visual-cpp.md
+++ b/docs/ide/implementing-a-connection-point-visual-cpp.md
@@ -4,6 +4,7 @@ title: "Implement a connection point"
 ms.date: "05/14/2019"
 helpviewer_keywords: ["connection points [C++], implementing", "implement connection point wizard [C++]"]
 ms.assetid: 5b37e4f9-73c9-4bef-b26d-365bc0662260
+ms.topic: how-to
 ---
 # Implement a connection point
 
diff --git a/docs/ide/implementing-an-interface-visual-cpp.md b/docs/ide/implementing-an-interface-visual-cpp.md
index 7696bdfd9a..fcb5cb92f3 100644
--- a/docs/ide/implementing-an-interface-visual-cpp.md
+++ b/docs/ide/implementing-an-interface-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/12/2018"
 f1_keywords: ["vc.codewiz.impl.interface.overview"]
 helpviewer_keywords: ["interfaces, implementing", "implement interface wizard [C++]"]
 ms.assetid: 72f8731b-7e36-45db-8b10-7ef211a773cd
+ms.topic: how-to
 ---
 # Implement an interface
 
diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md
index 477149438f..5d4e281390 100644
--- a/docs/ide/include-cleanup-config.md
+++ b/docs/ide/include-cleanup-config.md
@@ -56,7 +56,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are:
 |--|--|--|--|
 | `cpp_include_cleanup_add_missing_error_tag_type`</br></br>Sets the error level of add transitive include messages. | `none`</br>`suggestion`</br>`warning`</br>`error` | `cpp_include_cleanup_add_missing_error_tag_type = suggestion` |
 | `cpp_include_cleanup_remove_unused_error_tag_type`</br></br>Sets the error level of remove unused include messages. | `none`</br>`suggestion`</br>`warning`</br>`error`</br>`dimmed` | `cpp_include_cleanup_remove_unused_error_tag_type = dimmed` |
-| `cpp_include_cleanup_excluded_files`</br></br>Excludes the specified files from Include Cleanup messages. You won’t get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` |
+| `cpp_include_cleanup_excluded_files`</br></br>Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` |
 | `cpp_include_cleanup_required_files`</br></br>Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` |
 | `cpp_include_cleanup_replacement_files`</br></br>Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include <cstdio>` and `#include <stdio.h>` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` |
 | `cpp_include_cleanup_alternate_files`</br></br>Don't generate a message for indirect include *file2* if *file1* is included. For example, if you `#include <windows.h>` and are only using something from its indirectly included header `winerror.h`, Include Cleanup won't prompt to add `winerror.h`. Useful when you prefer to include a facade header file instead of the indirect includes it contains. | *file1*:*file2* | `cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h` |
diff --git a/docs/ide/include-cleanup-overview.md b/docs/ide/include-cleanup-overview.md
index 8bfcaa921b..423b16a344 100644
--- a/docs/ide/include-cleanup-overview.md
+++ b/docs/ide/include-cleanup-overview.md
@@ -56,7 +56,7 @@ int main()
 
 The issue is that `myProgram.cpp` uses `std::string` and `std::cout`, but doesn't directly include the headers that define them. This code happens to compile because `myHeader.h` includes those headers. This code is brittle because if `myHeader.h` ever stopped including either one, `myProgram.cpp` wouldn't compile anymore.
 
-Per the C++ guidelines, it's better to explicitly include headers for all of your dependencies so that your code isn't subject to brittleness caused by changes to header files. For more information, see [C++ Core Guidelines SF.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#sf10-avoid-dependencies-on-implicitly-included-names).
+Per the C++ guidelines, it's better to explicitly include headers for all of your dependencies so that your code isn't subject to brittleness caused by changes to header files. For more information, see [SF.10: Avoid dependencies on implicitly `#include`d names](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#sf10-avoid-dependencies-on-implicitly-included-names) in the C++ Core Guidelines.
 
 Include Cleanup analyzes your code to identify unused and indirectly included headers. It provides feedback based on the settings described in [Config the C++ #include tool in Visual Studio](include-cleanup-config.md). Feedback can be in the form of error list warnings, suggestions, etc. For more details on the feedback provided by Include Cleanup, refer [Include Cleanup messages](include-cleanup-messages.md).
 
diff --git a/docs/ide/live-share-cpp.md b/docs/ide/live-share-cpp.md
index 4a5fecdd50..6825a02fc2 100644
--- a/docs/ide/live-share-cpp.md
+++ b/docs/ide/live-share-cpp.md
@@ -1,7 +1,7 @@
 ---
 title: "Collaborate with Live Share for C++ in Visual Studio"
 description: "Use Live Share for C++ in Visual Studio to collaborate and share code in real time."
-ms.date: "05/24/2019"
+ms.date: 05/24/2019
 ---
 # Collaborate using Live Share for C++
 
@@ -44,7 +44,7 @@ To end a session, select **End Collaboration Session** from the **Sharing** drop
 For more information about **Live Share** in Visual Studio, see [What is Visual Studio Live Share?](/visualstudio/liveshare/). For more information about Live Share in Visual Studio Code, see [
 Live Share](https://marketplace.visualstudio.com/items?itemName=ms-vsliveshare.vsliveshare).
 
-## See Also
+## See also
 
 [Edit and refactor code (C++)](writing-and-refactoring-code-cpp.md)</br>
 [Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)</br>
diff --git a/docs/ide/lnt-make-member-function-const.md b/docs/ide/lnt-make-member-function-const.md
index 9e419bf919..1e3439c952 100644
--- a/docs/ide/lnt-make-member-function-const.md
+++ b/docs/ide/lnt-make-member-function-const.md
@@ -8,7 +8,7 @@ monikerRange: ">=msvc-170"
 ---
 # `lnt-make-member-function-const`
 
-When a member function doesn’t modify the object's state, annotate it with the `const` keyword. This guidance comes from the [C++ Core Guideline Con.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con2-by-default-make-member-functions-const).
+When a member function doesn't modify the object's state, annotate it with the `const` keyword. This guidance comes from [Con.2: By default, make member functions `const`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con2-by-default-make-member-functions-const) in the C++ Core Guidelines.
 
 ## Example
 
@@ -19,8 +19,8 @@ class MyClass
 { 
 public: 
 
-  int getValue() { return value; }  // Flagged: ‘getValue’ doesn't modify the object's state. 
-  void setValue(int newValue) { value = newValue; }  // OK: ‘setValue’ modifies the object's state.   
+  int getValue() { return value; }  // Flagged: 'getValue' doesn't modify the object's state. 
+  void setValue(int newValue) { value = newValue; }  // OK: 'setValue' modifies the object's state.   
 
 private: 
 
@@ -28,7 +28,7 @@ private:
 }; 
 
 double getRadius()
-{   // Flagged: ‘getRadius’ doesn't modify the object's state. 
+{   // Flagged: 'getRadius' doesn't modify the object's state. 
     return radius; 
 } 
 ```
@@ -45,7 +45,7 @@ class MyClass
 public: 
 
   int getValue() const { return value; }  // Added const 
-  void setValue(int newValue) { value = newValue; }  // OK: ‘setValue’ modifies the object's state.   
+  void setValue(int newValue) { value = newValue; }  // OK: 'setValue' modifies the object's state.   
 
 private: 
 
@@ -54,7 +54,7 @@ private:
 }; 
 
 double getRadius() const // added const
-{   // ‘getRadius’ doesn't modify the object's state. 
+{   // 'getRadius' doesn't modify the object's state. 
     return radius; 
 }  
 ```
@@ -75,4 +75,4 @@ The current implementation of this check allows you to add `const` to member fun
 
 ## See also
 
-[IntelliSense code linter for C++ overview](cpp-linter-overview.md)
\ No newline at end of file
+[IntelliSense code linter for C++ overview](cpp-linter-overview.md)
diff --git a/docs/ide/lnt-uninitialized-local.md b/docs/ide/lnt-uninitialized-local.md
index 4a4f223534..1be51a46df 100644
--- a/docs/ide/lnt-uninitialized-local.md
+++ b/docs/ide/lnt-uninitialized-local.md
@@ -10,7 +10,7 @@ monikerRange: ">=msvc-160"
 
 Local variables should be initialized when they're declared.
 
-This guidance comes from the [C++ Core Guideline ES.20](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es20-always-initialize-an-object).
+This guidance comes from [ES.20: Always initialize an object](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es20-always-initialize-an-object) in the C++ Core Guidelines.
 
 The `lnt-uninitialized-local` check is controlled by the **Uninitialized Local Variable** setting in the C/C++ Code Style options. For information on how to change this setting, see [Configure the linter](cpp-linter-overview.md#configure-the-linter).
 
@@ -55,5 +55,5 @@ Using "Almost Always Auto" for declarations requires initialization at declarati
 ## See also
 
 [IntelliSense code linter for C++ overview](cpp-linter-overview.md)\
-[C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es20-always-initialize-an-object)\
+[ES.20: Always initialize an object](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es20-always-initialize-an-object)\
 [Almost Always Auto - Herb Sutter](https://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/)
diff --git a/docs/ide/navigate-code-cpp.md b/docs/ide/navigate-code-cpp.md
index 142af682bd..4838fd2057 100644
--- a/docs/ide/navigate-code-cpp.md
+++ b/docs/ide/navigate-code-cpp.md
@@ -11,7 +11,7 @@ Visual Studio provides a suite of tools that you can use to navigate around your
 
 Right-click an `#include` directive, and select **Go To Document**. Or, select **F12** with the cursor over that line to open the file.
 
-![Screenshot of the C plus plus Go To Document menu option in the context of some include statements.](../ide/media/go-to-document.png)
+![Screenshot of the C plus plus Go To Document menu option in the context of some include statements.](media/go-to-document.png)
 
 ## Toggle Header/Code File
 
@@ -21,7 +21,7 @@ You can switch between a header file and its corresponding source file. Right-cl
 
 You can navigate to the definition of a code element with a right-click in the editor and selecting **Go To Definition**, or by selecting **F12**. You can navigate to a declaration similarly by right-clicking to open the context menu, or by selecting **Ctrl+F12**.
 
-![Screenshot of options that appear when you right-click a code element. Includes Go To Definition, Peek Definition, and Go To Declaration.](../ide/media/go-to-def.png)
+![Screenshot of options that appear when you right-click a code element. Includes Go To Definition, Peek Definition, and Go To Declaration.](media/go-to-def.png)
 
 ## Go To
 
@@ -29,7 +29,7 @@ You can navigate to the definition of a code element with a right-click in the e
 
 You can open **Go To** with **Ctrl+,**. This action creates a search box over the document you're editing.
 
-![Screenshot of the search box that appears when you open Go To. There's a text box for your search terms, and filters for types, recent files, etc.](../ide/media/go-to-cpp.png)
+![Screenshot of the search box that appears when you open Go To. There's a text box for your search terms, and filters for types, recent files, etc.](media/go-to-cpp.png)
 
 **Go To** includes these search filters:
 
@@ -62,11 +62,11 @@ To apply a text filter, start your search query with the filter's corresponding
 
 The following example shows results from a *Go To Files* operation by using the "f" filter:
 
-![Screenshot of Go to Files results. The user typed 'f str' and string_utils.cpp and string_utils.h appear because they contain `str` in the name.](../ide/media/vs2017-go-to-results.png "Go To Menu")
+![Screenshot of Go to Files results. The user typed 'f str' and string_utils.cpp and string_utils.h appear because they contain `str` in the name.](media/vs2017-go-to-results.png "Go To Menu")
 
 To see the list of text filters, type a ? followed by a space. You also can access the **Go To** commands with the **Edit** menu. This is another way to remind yourself of the main **Go To** keyboard shortcuts.
 
-![Screenshot of the Go To menu which has options like Go To Line (Ctrl + G), Go to File (Ctrl + 1, Ctrl + F), and more.](../ide/media/go-to-menu-cpp.png "Go To Menu")
+![Screenshot of the Go To menu which has options like Go To Line (Ctrl + G), Go to File (Ctrl + 1, Ctrl + F), and more.](media/go-to-menu-cpp.png "Go To Menu")
 
 ## Find or Find in Files
 
@@ -74,15 +74,15 @@ You can run a text search for anything in your solution with **Find** (**Ctrl+F*
 
 **Find** can be scoped to a selection, the current document, all open documents, the current project, or the entire solution. You can use regular expressions and plain text. It also highlights all matches automatically in the IDE.
 
-![Screenshot of the Find dialog. The user has searched `channel`. Yellow highlights in the file show all the places `Channel` is found.](../ide/media/find-cpp.png)
+![Screenshot of the Find dialog. The user has searched `channel`. Yellow highlights in the file show all the places `Channel` is found.](media/find-cpp.png)
 
 **Find in Files** is a more powerful version of **Find** that displays results in the **Find Results** window. You can search external code dependencies, filter by file types, and more.
 
-![Screenshot of the Find and Replace dialog. The Find in Files page is selected. Options are shown for matching case, the whole word, and so on.](../ide/media/find-in-files-cpp.png "Find in Files")
+![Screenshot of the Find and Replace dialog. The Find in Files page is selected. Options are shown for matching case, the whole word, and so on.](media/find-in-files-cpp.png "Find in Files")
 
 You can organize **Find in Files** results in two windows. You can append results from multiple searches together. Select a result to go to that location in the file.
 
-![Screenshot showing a Find in Files search result listing files containing text that matches the search string and an excerpt of each match.](../ide/media/vs2017-find-in-files-results.png "Find in Files")
+![Screenshot showing a Find in Files search result listing files containing text that matches the search string and an excerpt of each match.](media/vs2017-find-in-files-results.png "Find in Files")
 
 For more information, see [Find in Files](/visualstudio/ide/find-in-files) in the Visual Studio documentation.
 
@@ -90,7 +90,7 @@ For more information, see [Find in Files](/visualstudio/ide/find-in-files) in th
 
 To find all usages of a symbol in your codebase, place the caret in or just after the symbol, right-click, and then select **Find All References**. You can filter, sort, or group results in many different ways. Results populate incrementally. They're classified as Reads or Writes to help you see what's in your solution as opposed to system headers or other libraries.
 
-![Screenshot of Find all references results which shows the line where the symbol was found, which file and project it is located in, and so on.](../ide/media/find-all-references-results-cpp.png)
+![Screenshot of Find all references results which shows the line where the symbol was found, which file and project it is located in, and so on.](media/find-all-references-results-cpp.png)
 
 You can group results by the following categories:
 
@@ -104,7 +104,7 @@ You can group results by the following categories:
 
 To filter results, hover over a column and select the filtering icon that pops up. You can filter results from the first column to hide things like string and comment references that you might not want to see.
 
-![Screenshot of filtering options. Includes Confirmed, Disconfirmed, In comment, and unprocessed. Each shows how many results apply to that category.](../ide/media/find-all-references-filters-cpp.png)
+![Screenshot of filtering options. Includes Confirmed, Disconfirmed, In comment, and unprocessed. Each shows how many results apply to that category.](media/find-all-references-filters-cpp.png)
 
 - **Confirmed results**: Actual code references to the symbol being searched for. For example, searching for a member function called `Size` returns all references to `Size` that match the scope of the class that defines `Size`.
 
@@ -120,10 +120,10 @@ You can sort results by any column by selecting that column. You can swap betwee
 
 You can navigate to the definition of a type in a file, or to type members, by using the **Navigation Bar** that's above the editor window.
 
-![Screenshot of the Navigation Bar above the editor window. It shows cryptlib > ChannelSwitch > ChannelMessageSeriesEnd().](../ide/media/navbar-cpp.png)
+![Screenshot of the Navigation Bar above the editor window. It shows cryptlib > ChannelSwitch > ChannelMessageSeriesEnd().](media/navbar-cpp.png)
 
 ## See also
 
-- [Read and understand C++ code](read-and-understand-code-cpp.md)\
-- [Edit and refactor C++ code](read-and-understand-code-cpp.md)\
+- [Read and understand C++ code](read-and-understand-code-cpp.md)
+- [Edit and refactor C++ code](read-and-understand-code-cpp.md)
 - [Collaborate with Live Share for C++](live-share-cpp.md)
diff --git a/docs/ide/overriding-a-virtual-function-visual-cpp.md b/docs/ide/overriding-a-virtual-function-visual-cpp.md
index 3f552708ee..e681a20f79 100644
--- a/docs/ide/overriding-a-virtual-function-visual-cpp.md
+++ b/docs/ide/overriding-a-virtual-function-visual-cpp.md
@@ -5,6 +5,7 @@ ms.date: "11/12/2018"
 f1_keywords: ["vc.codewiz.virtualfunc.override"]
 helpviewer_keywords: ["virtual functions, overriding", "base classes, overriding virtual functions defined in", "Properties window, overriding virtual functions in"]
 ms.assetid: 2d8c76f2-7a6b-4c9c-8de5-4282ce7755b6
+ms.topic: how-to
 ---
 # Override a virtual function
 
diff --git a/docs/ide/read-and-understand-code-cpp.md b/docs/ide/read-and-understand-code-cpp.md
index cdf11a2cd6..ff4d5bdb93 100644
--- a/docs/ide/read-and-understand-code-cpp.md
+++ b/docs/ide/read-and-understand-code-cpp.md
@@ -1,7 +1,8 @@
 ---
 title: "Read and understand C++ code in Visual Studio"
 description: "Use the C++ code editor in Visual Studio to format, and understand your code."
-ms.date: "05/28/2019"
+ms.date: 05/28/2019
+ms.topic: concept-article
 ---
 # Read and understand C++ code in Visual Studio
 
@@ -97,7 +98,7 @@ Place the cursor on or just after any type, keyword or function and press **F1**
 
 Right click on a code file in your project and choose **Generate graph of include files** to see a graph of which files are included by other files.
 
-![Screenshot of a graph of include files. The graph shows that NAMSPACE DLL .CPP includes Namespace DLL .h, which includes V_10 .H, among other files.](../ide/media/vs2015_cpp_include_graph.png)
+![Screenshot of a graph of include files. The graph shows that NAMESPACE DLL .CPP includes Namespace DLL .h, which includes V_10 .H, among other files.](../ide/media/vs2015_cpp_include_graph.png)
 
 ## View Call Hierarchy
 
@@ -105,7 +106,7 @@ Right click on any function call and view a recursive list of all the functions
 
 ![Screenshot of the Call Hierarchy window which shows calls to and from Floating_to_wstring(). For example, to_wstring() calls Floating_to_wstring().](../ide/media/vs2015_cpp_call_hierarchy.png)
 
-## See Also
+## See also
 
 [Edit and refactor code (C++)](writing-and-refactoring-code-cpp.md)</br>
 [Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)</br>
diff --git a/docs/ide/refactoring/change-signature.md b/docs/ide/refactoring/change-signature.md
index df104d5976..e8b15f9005 100644
--- a/docs/ide/refactoring/change-signature.md
+++ b/docs/ide/refactoring/change-signature.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Change Signature"
 title: "Change Signature"
 ms.date: "09/18/2022"
+f1_keywords: ["vc.pkg.refactoring.changesignaturedlg"]
 ---
 # Change Signature
 
diff --git a/docs/ide/refactoring/extract-function.md b/docs/ide/refactoring/extract-function.md
index 634dc9f291..91a9fc7d79 100644
--- a/docs/ide/refactoring/extract-function.md
+++ b/docs/ide/refactoring/extract-function.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Extract Function"
 title: "Extract Function"
 ms.date: "09/18/2022"
+f1_keywords: ["vc.pkg.refactoring.extractfuncdlg"]
 ---
 # Extract Function
 
diff --git a/docs/ide/refactoring/rename.md b/docs/ide/refactoring/rename.md
index 512ae624ea..69bf660156 100644
--- a/docs/ide/refactoring/rename.md
+++ b/docs/ide/refactoring/rename.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Rename"
 title: "Rename"
 ms.date: "09/19/2022"
+f1_keywords: ["vc.pkg.refactoring.renamedlg"]
 ---
 # Rename
 
diff --git a/docs/ide/toc.yml b/docs/ide/toc.yml
index c208f599e6..0b58b7607e 100644
--- a/docs/ide/toc.yml
+++ b/docs/ide/toc.yml
@@ -93,7 +93,7 @@ items:
     - name: Add a method
       href: ../ide/adding-a-method-visual-cpp.md
     - name: Add an IDL method
-      href: ../ide/add-interface-definition-library-method-wizard.md 
+      href: ../ide/add-interface-definition-library-method-wizard.md
     - name: Add a property
       href: ../ide/adding-a-property-visual-cpp.md
     - name: Add an IDL property
diff --git a/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md b/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md
index 330552cf38..45a30a6641 100644
--- a/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md
+++ b/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md
@@ -4,6 +4,7 @@ title: "Using the Visual Studio IDE for C++ Desktop Development"
 ms.date: "04/25/2019"
 helpviewer_keywords: ["IDE [C++]", "Visual Studio IDE [C++]"]
 ms.assetid: d985c230-8e81-49d6-92be-2db9cac8d023
+ms.topic: concept-article
 ---
 # Using the Visual Studio IDE for C++ Desktop Development
 
diff --git a/docs/ide/visualize-macro-expansion.md b/docs/ide/visualize-macro-expansion.md
index 0a8071e0a9..fffabf0ef0 100644
--- a/docs/ide/visualize-macro-expansion.md
+++ b/docs/ide/visualize-macro-expansion.md
@@ -52,7 +52,7 @@ You can inspect a macro's expanded value, even when several preprocessor steps a
     :::image-end:::
 
 1. Choose **Copy**.
-1. Create a comment following the `POWER` line and choose paste (CTRL+V). The expansion of the macro, as a comment near your macro, looks like: `// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0).` The keyboard shortcut for this action is CTRL+M, CTRL+C.
+1. Create a comment following the `POWER` line and choose paste (CTRL+V). The expansion of the macro, as a comment near your macro, looks like: `// (((10.0 * 20.0)* (5.0 * 2.0)) / 2.0)`. The keyboard shortcut for this action is CTRL+M, CTRL+C.
 
 ## Expand a macro inline
 
diff --git a/docs/ide/writing-and-refactoring-code-cpp.md b/docs/ide/writing-and-refactoring-code-cpp.md
index 7c3edfb3da..72dc71d8b4 100644
--- a/docs/ide/writing-and-refactoring-code-cpp.md
+++ b/docs/ide/writing-and-refactoring-code-cpp.md
@@ -1,7 +1,7 @@
 ---
 title: "Edit and refactor C++ code in Visual Studio"
 description: "Use the C++ code editor in Visual Studio to format, navigate, understand and refactor your code."
-ms.date: "09/20/2022"
+ms.date: 09/20/2022
 ms.topic: "overview"
 ms.custom: intro-overview
 ---
@@ -178,7 +178,7 @@ Options for enabling and configuring C++-specific editing features are located u
 
 Experimental features, which may or may not be included in a future version of Visual Studio, are found in the [Text Editor C++ Experimental](/visualstudio/ide/reference/options-text-editor-c-cpp-experimental) dialog. In Visual Studio 2017 and later you can enable **Predictive IntelliSense** in this dialog.
 
-## See Also
+## See also
 
 [Read and understand C++ code](read-and-understand-code-cpp.md)</br>
 [Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)</br>
diff --git a/docs/index.yml b/docs/index.yml
index ef1c16e4cf..94be641a2b 100644
--- a/docs/index.yml
+++ b/docs/index.yml
@@ -1,7 +1,7 @@
 ### YamlMime:Hub
 title: Microsoft C++, C, and Assembler documentation
 summary: Learn how to use C++, C, and assembly language to develop applications, services, and tools for your platforms and devices.
-# brand: aspnet | azure | dotnet | dynamics | m365 | ms-graph | office | power-platform | sql | sql-server | vs | visual-studio | windows | xamarin
+# brand: aspnet | azure | dotnet | dynamics | m365 | ms-graph | office | power-platform | sql | sql-server | vs | visual-studio | windows
 brand: visual-studio
 metadata:
   title: Microsoft C/C++ Documentation
@@ -172,7 +172,7 @@ additionalContent:
             - text: Mobile development
               url: cross-platform/index.yml
             - text: Game development
-              url: /windows/uwp/gaming/e2e/
+              url: /visualstudio/gamedev/
         # Card
         - title: Features
           links:
diff --git a/docs/intrinsics/arm-intrinsics.md b/docs/intrinsics/arm-intrinsics.md
index 58a6eb6738..f2a248f9a9 100644
--- a/docs/intrinsics/arm-intrinsics.md
+++ b/docs/intrinsics/arm-intrinsics.md
@@ -4,7 +4,6 @@ description: "Reference list of ARM intrinsics supported by the Microsoft C++ co
 ms.date: "09/02/2019"
 f1_keywords: ["arm_neon/vsetq_lane_p8", "armintr/_arm_uxtb", "arm_neon/vld4_lane_p8", "arm_neon/vrshrn_n_s64", "arm_neon/vsli_n_u32", "arm_neon/vsraq_n_u16", "arm_neon/vcgt_f32", "armintr/__iso_volatile_store32", "arm_neon/vceqq_f32", "armintr/_arm_smlal", "arm_neon/vmull_n_s32", "arm_neon/vmax_s8", "arm_neon/vmvn_u32", "arm_neon/vrshl_u32", "arm_neon/int32x2_t", "arm_neon/vdupq_n_p8", "arm_neon/vpmax_u16", "arm_neon/vtrnq_s32", "arm_neon/vset_lane_f32", "arm_neon/vrev64_s8", "arm_neon/vtrnq_p8", "arm_neon/vqshlq_u64", "arm_neon/vld1q_dup_s64", "arm_neon/vmovq_n_u64", "arm_neon/vqshrn_n_u16", "arm_neon/vhadd_s32", "arm_neon/vrhaddq_u32", "arm_neon/vst1q_p8", "arm_neon/vshrn_n_s16", "arm_neon/vget_high_f32", "arm_neon/vuzpq_s16", "arm_neon/vand_u16", "arm_neon/vmulq_s32", "arm_neon/vrsraq_n_s64", "arm_neon/vceqq_s8", "arm_neon/uint64x1x3_t", "arm_neon/veor_u32", "armintr/_arm_pkhtb", "arm_neon/vorrq_u16", "arm_neon/vpaddl_s8", "arm_neon/vmla_n_s16", "arm_neon/vqdmlal_lane_s32", "arm_neon/vshlq_n_u8", "arm_neon/vst2_lane_p8", "arm_neon/vld3q_u16", "arm_neon/vandq_u8", "arm_neon/vst1_u64", "arm_neon/vaddq_s64", "arm_neon/vuzpq_u32", "arm_neon/vld3_lane_p8", "arm_neon/vminq_s32", "arm_neon/vabd_u16", "arm_neon/vdup_n_u32", "arm_neon/vmul_p8", "arm_neon/vsra_n_u16", "arm_neon/vst3q_u16", "arm_neon/int32x2x3_t", "arm_neon/vld2_dup_u16", "arm_neon/vrhaddq_u8", "arm_neon/vhadd_u8", "arm_neon/vgetq_lane_s32", "arm_neon/vcleq_u16", "arm_neon/vabdq_s8", "arm_neon/vrev16q_u8", "arm_neon/vqshlu_n_s64", "arm_neon/vcvt_n_s32_f32", "arm_neon/vqrshrn_n_s64", "arm_neon/vst1q_p16", "arm_neon/vgetq_lane_s16", "arm_neon/vtstq_u32", "arm_neon/vmlsl_n_s16", "arm_neon/vcge_s8", "arm_neon/vshr_n_s16", "armintr/_arm_rbit", "arm_neon/vmls_u32", "arm_neon/vmls_lane_u32", "arm_neon/vcvtq_n_s32_f32", "arm_neon/vqshl_n_s8", "arm_neon/vst1q_s16", "armintr/__emit", "arm_neon/vshlq_s64", "arm_neon/vuzp_s8", "arm_neon/vld1q_lane_s64", "arm_neon/veorq_s32", "arm_neon/vaddq_u64", "arm_neon/vceq_s32", "arm_neon/vmovn_u16", "arm_neon/vabal_s8", "arm_neon/vabsq_f32", "armintr/_arm_smuad", "arm_neon/veor_u8", "arm_neon/int16x4_t", "arm_neon/vsraq_n_s16", "arm_neon/vshlq_s8", "arm_neon/vcreate_u32", "arm_neon/vzipq_s8", "arm_neon/vst3q_u8", "arm_neon/int64x1x4_t", "armintr/__iso_volatile_store16", "arm_neon/vst4_lane_p16", "arm_neon/vld1_dup_p16", "arm_neon/vhadd_s16", "arm_neon/vtbl2_s8", "arm_neon/veorq_u32", "arm_neon/vqdmlal_lane_s16", "arm_neon/vrsra_n_u8", "arm_neon/vbslq_u16", "arm_neon/vget_low_s64", "arm_neon/vceq_u16", "arm_neon/vdupq_lane_u32", "arm_neon/vabdl_u32", "arm_neon/vmlal_s32", "arm_neon/vst1_lane_u8", "arm_neon/vld4q_f16", "arm_neon/vqdmlsl_s32", "arm_neon/vqrdmulh_s32", "arm_neon/vqrshl_u8", "arm_neon/uint32x4x4_t", "arm_neon/vabaq_u16", "arm_neon/vcnt_p8", "arm_neon/vld3q_s16", "arm_neon/vshl_n_u32", "arm_neon/vrev64q_u16", "arm_neon/vextq_s64", "arm_neon/vhsubq_s8", "arm_neon/vld2_dup_u8", "arm_neon/vst3_s16", "arm_neon/vorn_u16", "arm_neon/vst4_f16", "arm_neon/vpadalq_u8", "armintr/__iso_volatile_load8", "arm_neon/vmovl_u16", "arm_neon/vld4q_u32", "arm_neon/vcgt_u32", "arm_neon/vmlaq_n_u32", "arm_neon/vrsra_n_u64", "arm_neon/vst4_s8", "arm_neon/vcvtq_n_f32_u32", "arm_neon/vst2q_u16", "arm_neon/vqshrn_n_s16", "arm_neon/vld4_s16", "arm_neon/uint16x8x4_t", "arm_neon/vrsqrte_u32", "arm_neon/vcltq_s8", "arm_neon/vst3_u16", "arm_neon/vst2_f32", "arm_neon/vld2_u64", "arm_neon/vst1_u16", "arm_neon/vmls_s16", "arm_neon/vqrshlq_s32", "arm_neon/vqdmull_s16", "arm_neon/vld2_lane_p16", "arm_neon/vpaddlq_u8", "arm_neon/vcvt_n_f32_u32", "arm_neon/vcgtq_u8", "arm_neon/vshl_s32", "arm_neon/vtbx3_p8", "arm_neon/vld3_dup_s32", "arm_neon/int16x4x3_t", "arm_neon/vcale_f32", "arm_neon/vqabsq_s32", "arm_neon/vmulq_u16", "arm_neon/vst1_s8", "arm_neon/vclt_u8", "armintr/_arm_sxtb16", "arm_neon/vshr_n_s8", "arm_neon/vst1_lane_f16", "arm_neon/vorn_s64", "armintr/_arm_usub8", "arm_neon/vst4_lane_f32", "arm_neon/vmls_lane_u16", "arm_neon/vpaddl_u32", "arm_neon/vdup_lane_u64", "arm_neon/vsri_n_p16", "arm_neon/vqrshlq_u64", "arm_neon/vclz_s16", "arm_neon/vsra_n_u32", "arm_neon/vabaq_s8", "arm_neon/vst2_lane_s8", "arm_neon/vcvt_n_u32_f32", "arm_neon/vst3_u32", "arm_neon/vcvtq_f32_u32", "arm_neon/vraddhn_s64", "armintr/_arm_uqsax", "arm_neon/vshl_u8", "armintr/_arm_uqadd16", "arm_neon/vrsra_n_u16", "arm_neon/vrshl_u64", "arm_neon/int32x4x3_t", "arm_neon/vmull_u8", "arm_neon/vcombine_u64", "arm_neon/vmull_u16", "arm_neon/vld1_dup_s8", "armintr/_CountLeadingSigns64", "arm_neon/vqshlq_n_s32", "arm_neon/vrecpe_f32", "arm_neon/vsri_n_u32", "arm_neon/vrsraq_n_s8", "arm_neon/vsetq_lane_s16", "arm_neon/vget_high_u32", "arm_neon/vmlal_u32", "arm_neon/vdupq_lane_s16", "arm_neon/vsubq_u64", "arm_neon/vext_p8", "arm_neon/vshl_u16", "arm_neon/vmls_n_u16", "arm_neon/vmull_s16", "arm_neon/vmovq_n_s64", "arm_neon/vaddq_f32", "arm_neon/vshl_n_s16", "arm_neon/vext_p16", "arm_neon/vextq_u32", "arm_neon/vld1_p8", "arm_neon/veor_s32", "arm_neon/int16x8x4_t", "arm_neon/vst1q_u16", "arm_neon/vzipq_p8", "arm_neon/int32x4x4_t", "arm_neon/vqdmulhq_lane_s32", "arm_neon/vst3_lane_u32", "arm_neon/vhsubq_s32", "armintr/__static_assert", "arm_neon/vst3q_lane_u16", "arm_neon/vpmin_u32", "arm_neon/vrev64q_p16", "arm_neon/vcleq_f32", "arm_neon/vhsub_u16", "arm_neon/vld2_lane_s32", "arm_neon/vmlsl_s32", "armintr/_arm_rev", "arm_neon/vcgeq_s16", "arm_neon/vmulq_s8", "arm_neon/vsri_n_s8", "arm_neon/vpadd_f32", "arm_neon/vld1q_lane_f16", "arm_neon/vmls_u16", "arm_neon/vld1_lane_f32", "arm_neon/vmlaq_lane_s16", "arm_neon/vqadd_u32", "arm_neon/vmul_n_s32", "arm_neon/vld1q_dup_p8", "arm_neon/vtrnq_s8", "arm_neon/vbslq_p8", "arm_neon/vget_lane_s8", "arm_neon/vext_u16", "arm_neon/vsubq_s16", "arm_neon/vld4_lane_s8", "arm_neon/uint32x2x2_t", "arm_neon/vdup_n_s8", "arm_neon/vld4_lane_u16", "arm_neon/vmovq_n_s16", "arm_neon/vst4q_s32", "arm_neon/vst2q_f16", "arm_neon/vbslq_s16", "arm_neon/vand_u64", "arm_neon/poly16_t", "arm_neon/vaba_u16", "arm_neon/vqshlq_s64", "armintr/_arm_uxth", "arm_neon/vst2_lane_s16", "arm_neon/vand_u8", "arm_neon/int8x16x3_t", "arm_neon/vrev64_u16", "arm_neon/vld2_lane_s16", "arm_neon/vabaq_s16", "arm_neon/vsli_n_u8", "arm_neon/vsraq_n_u64", "arm_neon/vmlsl_s16", "arm_neon/vmovn_u64", "arm_neon/vld4_f32", "arm_neon/vst2q_f32", "arm_neon/vtbx3_u8", "arm_neon/vcombine_s8", "arm_neon/vqdmulhq_s32", "arm_neon/vgetq_lane_p8", "armintr/_arm_smusd", "arm_neon/vpmax_u32", "arm_neon/vceq_f32", "arm_neon/vsri_n_p8", "arm_neon/vhsubq_u8", "arm_neon/vuzp_s16", "arm_neon/uint32x2x4_t", "arm_neon/vst4_lane_s32", "arm_neon/vsli_n_p8", "arm_neon/vld3_lane_f16", "arm_neon/vbic_u64", "arm_neon/vmlal_u16", "arm_neon/vmvn_s8", "arm_neon/vtstq_s8", "arm_neon/vmaxq_s32", "arm_neon/vqmovn_u64", "armintr/_arm_ssax", "arm_neon/vext_u32", "arm_neon/vld1_dup_u64", "arm_neon/vmlal_n_s16", "armintr/_arm_smulbb", "arm_neon/vqrdmulhq_lane_s16", "arm_neon/vdup_n_p8", "arm_neon/vaba_s8", "arm_neon/vrshrq_n_s32", "arm_neon/vmvnq_s32", "arm_neon/vpadal_s32", "arm_neon/vqshl_s16", "arm_neon/vtrn_p8", "arm_neon/vzip_s16", "arm_neon/vcge_f32", "armintr/_arm_sxtab16", "arm_neon/vst1q_lane_u64", "arm_neon/vqrshlq_u16", "arm_neon/int8x8_t", "arm_neon/vorr_u8", "arm_neon/vrev64_f32", "arm_neon/vpaddlq_s16", "arm_neon/vdupq_lane_u64", "arm_neon/vcltq_u16", "arm_neon/vst3_lane_f32", "arm_neon/vld2_dup_f32", "armintr/_arm_smmul", "arm_neon/vbsl_s16", "arm_neon/vld1_lane_u8", "arm_neon/vld2q_lane_u16", "arm_neon/vqshlu_n_s32", "armintr/_arm_smlalbt", "arm_neon/vmla_s8", "arm_neon/vsli_n_p16", "arm_neon/vmla_u8", "arm_neon/vqaddq_s16", "arm_neon/vld3_p16", "arm_neon/uint64x2x4_t", "arm_neon/vcnt_u8", "arm_neon/vcltq_u8", "arm_neon/vtbx1_p8", "arm_neon/vrev32q_u16", "arm_neon/vld1_lane_u16", "arm_neon/vqadd_s16", "arm_neon/vcnt_s8", "armintr/_MulUnsignedHigh", "arm_neon/vsliq_n_u8", "arm_neon/vpmin_s16", "armintr/__iso_volatile_load16", "arm_neon/vst2_lane_f32", "arm_neon/vqsubq_s32", "arm_neon/vqshl_s32", "arm_neon/vsraq_n_u32", "arm_neon/vcreate_s32", "arm_neon/vld3q_lane_u32", "arm_neon/vaddq_u16", "arm_neon/vand_s32", "arm_neon/vbicq_s32", "armintr/_arm_smulbt", "arm_neon/vrsra_n_s8", "arm_neon/vshrq_n_u32", "arm_neon/vld4_f16", "arm_neon/vcagtq_f32", "arm_neon/vaddw_u32", "armintr/_arm_uxtah", "arm_neon/vtstq_u8", "arm_neon/vld1_dup_u16", "arm_neon/int16x4x4_t", "arm_neon/vqshluq_n_s8", "arm_neon/vqdmulhq_n_s32", "arm_neon/vst1_s64", "arm_neon/vrsubhn_u16", "arm_neon/vld4_dup_p16", "arm_neon/vmlaq_s32", "arm_neon/vnegq_s32", "arm_neon/vst2q_u8", "arm_neon/vget_low_s32", "arm_neon/vorn_u32", "arm_neon/vld1q_s8", "arm_neon/vandq_s64", "arm_neon/vmvn_p8", "arm_neon/vabdl_s16", "arm_neon/vqshl_u32", "arm_neon/vld3_dup_u16", "arm_neon/vmov_n_f32", "arm_neon/vcvt_f32_u32", "arm_neon/vrhadd_s8", "arm_neon/vpadal_u32", "armintr/_arm_ubfx", "arm_neon/vcgt_s8", "arm_neon/vget_lane_f32", "arm_neon/vcge_s16", "arm_neon/vmov_n_s64", "arm_neon/vmulq_n_f32", "arm_neon/vpadalq_u32", "armintr/_arm_smlaldx", "arm_neon/vtst_u16", "arm_neon/vmls_n_s16", "arm_neon/vcombine_f32", "arm_neon/vld1q_p16", "armintr/_arm_ssat", "arm_neon/vextq_s8", "arm_neon/vmax_u32", "arm_neon/vqsubq_s64", "arm_neon/vcltq_s16", "arm_neon/vst2q_s8", "arm_neon/vpmax_u8", "arm_neon/vld4_dup_p8", "arm_neon/vrshr_n_u64", "arm_neon/vqrshrun_n_s16", "arm_neon/vget_low_u64", "arm_neon/vst2q_s32", "arm_neon/vst4_s32", "arm_neon/vrshrq_n_u8", "arm_neon/vdupq_n_u64", "arm_neon/vsriq_n_u8", "arm_neon/vdupq_lane_u8", "arm_neon/vsriq_n_s64", "arm_neon/vget_low_u8", "arm_neon/vst1_lane_p16", "arm_neon/vld1q_lane_u8", "arm_neon/vcgt_s32", "arm_neon/vst1_lane_u32", "arm_neon/vzipq_p16", "arm_neon/vmvn_u16", "arm_neon/vld1q_lane_u16", "armintr/_MoveToCoprocessor64", "arm_neon/vdup_n_u16", "arm_neon/vzipq_f32", "arm_neon/vshl_s16", "arm_neon/vmlaq_n_s16", "arm_neon/vget_lane_s64", "arm_neon/vld1q_lane_f32", "arm_neon/vnegq_s16", "armintr/_arm_usax", "arm_neon/vabd_s16", "arm_neon/vmovq_n_u32", "arm_neon/vshlq_n_u16", "armintr/_CountLeadingSigns", "arm_neon/vld3q_f16", "arm_neon/vceqq_u32", "arm_neon/int8x8x2_t", "arm_neon/vst2_s64", "arm_neon/vst4q_lane_s16", "arm_neon/vorn_s32", "arm_neon/vcle_f32", "arm_neon/vld1_p16", "arm_neon/vtrn_u32", "arm_neon/vbsl_s32", "arm_neon/float32x2_t", "arm_neon/vmvn_s32", "arm_neon/vqdmlsl_lane_s16", "arm_neon/vtbl3_s8", "arm_neon/vsra_n_u8", "arm_neon/vcvtq_u32_f32", "arm_neon/vst1_p8", "arm_neon/vrev64_p16", "armintr/__ldrexd", "arm_neon/vcgeq_u8", "arm_neon/vmlal_n_s32", "arm_neon/vst1q_lane_p8", "arm_neon/vpadalq_s32", "arm_neon/vtstq_p8", "arm_neon/vld4_lane_u8", "armintr/_arm_ssub16", "arm_neon/vpaddlq_u16", "armintr/_arm_udiv", "arm_neon/vld1_lane_p8", "arm_neon/vst1q_u32", "arm_neon/vld1_f32", "arm_neon/uint64x2x2_t", "arm_neon/vqsubq_u64", "arm_neon/vld4q_s32", "arm_neon/vceq_s16", "arm_neon/vst3_s64", "arm_neon/vext_s8", "armintr/_arm_smlsd", "arm_neon/vpadal_s16", "arm_neon/vbic_s32", "arm_neon/vld1_dup_u8", "arm_neon/vclt_f32", "arm_neon/vrev64_s16", "arm_neon/vrshlq_s64", "arm_neon/vdupq_n_s64", "arm_neon/vuzp_p16", "arm_neon/vld3_dup_p16", "arm_neon/vcreate_s8", "armintr/_arm_smlatt", "arm_neon/vtst_s32", "arm_neon/vshrq_n_s64", "arm_neon/vqshlq_n_s64", "arm_neon/vqshlu_n_s16", "arm_neon/vcleq_s16", "arm_neon/vmull_lane_s16", "arm_neon/int32x4_t", "arm_neon/vqadd_s8", "arm_neon/vld2q_f16", "arm_neon/vld2q_lane_p16", "arm_neon/vadd_u32", "arm_neon/vcntq_u8", "arm_neon/vst1_f32", "arm_neon/vmaxq_u32", "arm_neon/vsub_u64", "arm_neon/vsubl_s32", "arm_neon/poly16x4_t", "arm_neon/vgetq_lane_u16", "arm_neon/vdup_lane_s32", "arm_neon/vrhadd_s32", "arm_neon/veorq_u8", "arm_neon/vclzq_s8", "arm_neon/vsliq_n_s64", "arm_neon/vpadalq_s16", "arm_neon/vmla_n_f32", "arm_neon/vcgt_u16", "armintr/_arm_usada8", "arm_neon/vabd_u32", "arm_neon/vgetq_lane_s8", "arm_neon/vqshlq_n_u64", "arm_neon/vabaq_u32", "armintr/_arm_uhsax", "arm_neon/vmulq_f32", "arm_neon/vld3_dup_s16", "arm_neon/vst3_f16", "arm_neon/vrshrq_n_s64", "armintr/__rdpmccntr64", "arm_neon/vclsq_s32", "arm_neon/vmax_u16", "arm_neon/vmvnq_p8", "arm_neon/veor_u16", "arm_neon/vqshrn_n_u32", "arm_neon/vextq_u64", "arm_neon/vld1q_f32", "arm_neon/vget_low_u32", "arm_neon/vhaddq_s32", "arm_neon/vminq_u16", "arm_neon/vqrdmulhq_lane_s32", "arm_neon/vmla_s16", "arm_neon/vadd_s16", "arm_neon/vbsl_u16", "arm_neon/vhsub_s8", "arm_neon/vld4q_lane_p16", "arm_neon/vld1_s16", "arm_neon/vst2q_lane_p16", "arm_neon/vld2_dup_s8", "arm_neon/vst3q_s16", "arm_neon/vcgeq_u32", "arm_neon/vabdq_s16", "arm_neon/vrhadd_u16", "arm_neon/vqshlq_n_u32", "arm_neon/vst4q_lane_u32", "arm_neon/vrsraq_n_u64", "arm_neon/vmlsq_n_s32", "arm_neon/vld4_u8", "arm_neon/vld2_f16", "arm_neon/vqshlq_u8", "arm_neon/vorrq_u64", "arm_neon/vmin_u16", "arm_neon/vext_u8", "arm_neon/vpaddl_s32", "arm_neon/vshlq_u64", "arm_neon/vst2q_lane_f16", "armintr/_arm_sbfx", "arm_neon/vld3_dup_f16", "armintr/_arm_uhasx", "arm_neon/vst2_lane_u8", "armintr/_arm_smultb", "arm_neon/vdup_n_p16", "arm_neon/vtrnq_u32", "arm_neon/vrshlq_u8", "arm_neon/vld4_lane_p16", "arm_neon/vsraq_n_s32", "arm_neon/vclt_s16", "arm_neon/vzip_u8", "arm_neon/vld3_lane_s16", "arm_neon/vceqq_s32", "arm_neon/vld3_dup_f32", "arm_neon/vld4q_lane_s32", "arm_neon/poly8x16x4_t", "arm_neon/uint64x1x2_t", "arm_neon/vqdmlal_n_s16", "arm_neon/vld2_dup_f16", "arm_neon/vshrq_n_s32", "arm_neon/vcleq_s8", "arm_neon/vld3_s32", "arm_neon/vqrshlq_s64", "arm_neon/vbsl_f32", "arm_neon/vext_s64", "arm_neon/vabaq_s32", "arm_neon/vmulq_s16", "arm_neon/vld3_lane_u16", "arm_neon/vld3q_lane_u16", "armintr/_arm_smlaltt", "arm_neon/poly8x8x2_t", "arm_neon/vst3q_u32", "armintr/_arm_smlsdx", "arm_neon/vqrshl_s64", "arm_neon/vextq_p8", "armintr/_arm_uhsub16", "arm_neon/vld3q_p8", "armintr/_arm_smlawt", "armintr/_arm_smlawb", "arm_neon/vdupq_lane_s8", "arm_neon/vaddl_s16", "arm_neon/vcombine_p16", "arm_neon/vzipq_u32", "arm_neon/poly16x8_t", "arm_neon/vshlq_n_s32", "arm_neon/vrshl_s8", "arm_neon/vst2_u64", "arm_neon/vrev64q_s8", "arm_neon/vst2q_lane_s32", "arm_neon/vld2_dup_s16", "arm_neon/vclt_u16", "arm_neon/vuzp_p8", "arm_neon/vshrq_n_s16", "arm_neon/vst3_u64", "arm_neon/vpmin_u16", "arm_neon/vld3q_lane_s32", "arm_neon/vmlal_s16", "arm_neon/poly16x4x4_t", "arm_neon/vorr_u16", "arm_neon/vsliq_n_s16", "arm_neon/vaddl_u8", "arm_neon/vld4_dup_s32", "arm_neon/vld2_f32", "arm_neon/vclt_u32", "arm_neon/vmull_lane_u16", "arm_neon/vsubw_u32", "arm_neon/vld2_dup_s32", "arm_neon/vuzp_s32", "arm_neon/vcge_s32", "arm_neon/vdup_lane_p16", "arm_neon/vpmin_s8", "arm_neon/vpaddlq_u32", "arm_neon/vmlaq_n_s32", "arm_neon/vshrn_n_u64", "arm_neon/vrshr_n_u16", "arm_neon/vld1_s64", "arm_neon/vbsl_u64", "armintr/_arm_smlad", "arm_neon/vqsub_s16", "arm_neon/vld4_p8", "arm_neon/vqdmulh_lane_s32", "arm_neon/vld3_dup_s64", "arm_neon/vornq_s32", "arm_neon/vpadd_u8", "arm_neon/vld3_lane_p16", "arm_neon/uint64x1x4_t", "arm_neon/vld3_u16", "armintr/_arm_shsax", "arm_neon/vabdq_u16", "arm_neon/vcgtq_f32", "arm_neon/vsubq_s8", "arm_neon/vget_low_f16", "arm_neon/vld4_dup_u64", "arm_neon/vst3_lane_s8", "armintr/_arm_ssat16", "arm_neon/vmlaq_f32", "arm_neon/vsri_n_s32", "arm_neon/vmax_u8", "arm_neon/vqadd_u8", "armintr/_arm_uqsub8", "armintr/_arm_clz", "arm_neon/vcgtq_s32", "arm_neon/vraddhn_s32", "arm_neon/vzip_s8", "arm_neon/veorq_s16", "arm_neon/vsetq_lane_s32", "arm_neon/vmul_n_u16", "armintr/_ReadBankedReg", "arm_neon/vld1q_u8", "arm_neon/vld4_p16", "arm_neon/int64x2x2_t", "arm_neon/vmaxq_s8", "arm_neon/vpmax_s16", "arm_neon/vshlq_u16", "arm_neon/vtrnq_p16", "arm_neon/vabal_u16", "arm_neon/vld2_lane_u16", "arm_neon/vrev32_u8", "arm_neon/vrshl_s32", "arm_neon/vget_low_f32", "arm_neon/vld2_s8", "arm_neon/vclzq_s16", "arm_neon/vqdmulhq_n_s16", "arm_neon/vset_lane_u64", "arm_neon/vld2_dup_p16", "arm_neon/vpaddlq_s32", "arm_neon/vld2q_p8", "arm_neon/vst3_lane_u8", "arm_neon/vld4_dup_f32", "arm_neon/vld2_s64", "arm_neon/vmls_u8", "arm_neon/vtbx4_u8", "arm_neon/vsetq_lane_f32", "arm_neon/vcvt_s32_f32", "arm_neon/vst3q_s32", "arm_neon/vmlsq_s8", "arm_neon/vmlaq_n_u16", "armintr/__iso_volatile_load64", "arm_neon/vcgt_u8", "arm_neon/vld2_dup_p8", "arm_neon/vmov_n_u8", "armintr/_arm_sasx", "arm_neon/vmovq_n_p16", "arm_neon/vmlaq_u32", "arm_neon/vst3_f32", "arm_neon/int32x2x4_t", "arm_neon/vld1q_lane_u64", "arm_neon/vclz_u16", "arm_neon/uint8x8_t", "arm_neon/vsub_u32", "arm_neon/vorn_u8", "armintr/__wfe", "arm_neon/vget_high_s16", "arm_neon/vzip_p8", "arm_neon/vmlal_lane_s16", "arm_neon/vmulq_u8", "armintr/_isunordered", "arm_neon/vld1_dup_f32", "arm_neon/vld4_lane_s16", "arm_neon/vdupq_n_s16", "arm_neon/vst3q_p16", "arm_neon/vst1_lane_f32", "arm_neon/float32x4x3_t", "arm_neon/vand_s8", "arm_neon/float32x2x4_t", "arm_neon/vld3_p8", "arm_neon/vmlaq_lane_u16", "armintr/_arm_uqsub16", "arm_neon/vget_high_s32", "arm_neon/vshl_n_s32", "arm_neon/vornq_s8", "arm_neon/vmlsl_n_u32", "arm_neon/vqshlq_n_s8", "arm_neon/int32x2x2_t", "arm_neon/int16x4x2_t", "arm_neon/vceqq_u8", "arm_neon/vcreate_f16", "arm_neon/vorn_s16", "arm_neon/vqmovn_s32", "arm_neon/vextq_u8", "arm_neon/vld4_s32", "armintr/_WriteStatusReg", "arm_neon/uint8x16_t", "arm_neon/vshrn_n_s64", "arm_neon/vmul_n_u32", "arm_neon/vabdl_u8", "arm_neon/vtbx3_s8", "arm_neon/vaddhn_s16", "arm_neon/vld3q_s8", "arm_neon/vmlsl_n_u16", "arm_neon/vrev64q_s32", "arm_neon/int16x8_t", "arm_neon/vext_s32", "arm_neon/vdupq_n_f32", "arm_neon/vld1q_lane_s32", "arm_neon/vqrshlq_u32", "arm_neon/vtbl2_u8", "arm_neon/vgetq_lane_u8", "arm_neon/veorq_u64", "arm_neon/vcntq_s8", "arm_neon/vbslq_p16", "arm_neon/vqnegq_s32", "arm_neon/vaddw_s32", "arm_neon/vmov_n_p8", "arm_neon/vmull_p8", "arm_neon/vld1_lane_u32", "arm_neon/vcombine_s16", "arm_neon/vqshrn_n_s64", "arm_neon/vceqq_s16", "arm_neon/vld4q_p16", "armintr/_ReadStatusReg", "armintr/_arm_qdadd", "arm_neon/uint32x4x2_t", "arm_neon/vcleq_u8", "armintr/_arm_sxtah", "arm_neon/vrhaddq_s32", "arm_neon/vset_lane_s64", "arm_neon/vld4_s64", "armintr/_DAddSatInt", "arm_neon/vorr_s8", "arm_neon/vst2_u32", "arm_neon/vshll_n_u16", "arm_neon/vld2_dup_u32", "arm_neon/vst3q_lane_s32", "arm_neon/vst3q_p8", "armintr/_MoveFromCoprocessor", "arm_neon/uint32x4_t", "arm_neon/vuzpq_s8", "arm_neon/vrecps_f32", "arm_neon/vst1_lane_s8", "arm_neon/vtbx1_s8", "arm_neon/uint16x8x3_t", "arm_neon/vpaddl_s16", "arm_neon/vsubq_s64", "arm_neon/vrsraq_n_u8", "arm_neon/vqadd_s64", "arm_neon/vst4_lane_s16", "arm_neon/vqadd_u16", "arm_neon/vset_lane_u32", "arm_neon/vand_u32", "arm_neon/vrsqrtsq_f32", "arm_neon/vqaddq_u32", "arm_neon/vsra_n_s64", "armintr/_arm_umlal", "arm_neon/vcvt_f32_f16", "arm_neon/vget_lane_u32", "arm_neon/vbsl_s8", "arm_neon/vrshlq_u32", "arm_neon/vqdmull_lane_s16", "arm_neon/vabsq_s32", "arm_neon/vld3_s8", "arm_neon/vst3q_lane_s16", "arm_neon/vld2q_lane_s16", "arm_neon/vst1_lane_s64", "arm_neon/vmov_n_u16", "arm_neon/vst4_lane_u8", "arm_neon/vshll_n_u32", "arm_neon/vqabs_s8", "arm_neon/vmvnq_u8", "arm_neon/vpadalq_u16", "arm_neon/vbsl_p16", "arm_neon/vqrshrn_n_u16", "arm_neon/vld3q_u32", "arm_neon/vcgeq_f32", "armintr/__iso_volatile_load32", "arm_neon/vrecpe_u32", "arm_neon/vld2_dup_u64", "arm_neon/vld3q_f32", "armintr/_arm_shsub8", "arm_neon/vdup_lane_s64", "arm_neon/vqrshl_s8", "arm_neon/vsliq_n_u16", "arm_neon/vld1q_u16", "arm_neon/vorr_u32", "arm_neon/vqrshl_s32", "armintr/__dmb", "arm_neon/veorq_s8", "arm_neon/vld1_u16", "arm_neon/vmov_n_u32", "arm_neon/vhsub_s16", "arm_neon/vst4q_lane_u16", "arm_neon/vbsl_u8", "armintr/_arm_uxtab", "arm_neon/vld2q_lane_f32", "arm_neon/vst2_p8", "armintr/_arm_smmla", "arm_neon/vaddw_u16", "arm_neon/vmlal_s8", "arm_neon/vtst_u32", "arm_neon/vtbl4_u8", "arm_neon/vcvt_n_f32_s32", "arm_neon/vcageq_f32", "arm_neon/vget_low_s16", "arm_neon/vdupq_n_u8", "arm_neon/vorn_s8", "arm_neon/uint8x16x3_t", "arm_neon/vabdq_u32", "arm_neon/vrev64_p8", "arm_neon/vqsubq_s8", "armintr/_arm_smlabb", "arm_neon/vbicq_s64", "arm_neon/vmaxq_u16", "arm_neon/vdup_n_u8", "arm_neon/veor_s8", "arm_neon/int16x8x2_t", "arm_neon/vcvtq_s32_f32", "arm_neon/vtrn_u16", "arm_neon/vbslq_s32", "arm_neon/vld1q_dup_u32", "arm_neon/vmul_n_f32", "arm_neon/vqrshl_u32", "arm_neon/vqsubq_s16", "arm_neon/vst2_lane_f16", "armintr/_arm_smulwt", "arm_neon/vrshrn_n_u32", "arm_neon/vget_high_p16", "arm_neon/vqadd_u64", "arm_neon/vsli_n_s32", "arm_neon/vhadd_u32", "arm_neon/vmlsl_lane_u16", "arm_neon/vclzq_u32", "arm_neon/vqshrun_n_s64", "arm_neon/vrev64q_u32", "arm_neon/vqshrun_n_s16", "arm_neon/vrev32q_s8", "armintr/_arm_shasx", "arm_neon/vaddl_s8", "armintr/_arm_smull", "arm_neon/vabaq_u8", "armintr/_arm_revsh", "arm_neon/vsubq_f32", "arm_neon/poly16x4x2_t", "arm_neon/poly8x8x3_t", "arm_neon/vsubhn_s64", "arm_neon/vcle_u16", "arm_neon/poly8x16x3_t", "arm_neon/vqdmlsl_n_s16", "arm_neon/vqshl_u64", "arm_neon/vcge_u16", "armintr/_arm_uasx", "arm_neon/vmovl_s32", "arm_neon/vst1q_lane_u16", "arm_neon/vbic_u32", "arm_neon/vld2_s16", "armintr/_arm_qasx", "arm_neon/vorrq_u8", "arm_neon/vst2_s32", "armintr/_WriteBankedReg", "arm_neon/veorq_s64", "arm_neon/vld4_lane_f32", "arm_neon/vcreate_u8", "arm_neon/vset_lane_u8", "arm_neon/vandq_u16", "arm_neon/vrsubhn_s64", "arm_neon/vst1q_lane_p16", "arm_neon/uint8x8x2_t", "arm_neon/vmlsl_s8", "arm_neon/vmax_s32", "arm_neon/uint32x4x3_t", "arm_neon/vld4_dup_u16", "arm_neon/vabs_s32", "arm_neon/vld3_dup_u32", "arm_neon/vrshl_u16", "arm_neon/vcle_u8", "arm_neon/vqshl_n_u16", "arm_neon/vbic_s8", "arm_neon/float32x4x2_t", "arm_neon/vmls_f32", "arm_neon/vshll_n_u8", "arm_neon/vminq_s8", "arm_neon/vmlsq_lane_f32", "arm_neon/vst1q_f16", "arm_neon/vst1_lane_u64", "arm_neon/vrhadd_u8", "arm_neon/vclt_s32", "arm_neon/vst2_p16", "arm_neon/vrshrq_n_u16", "arm_neon/vneg_s32", "arm_neon/vmovl_s16", "arm_neon/vqshlq_s8", "arm_neon/vld1_s8", "arm_neon/vqdmulh_s32", "arm_neon/vcls_s8", "armintr/__trap", "arm_neon/vuzp_u32", "armintr/_CopyInt64FromDouble", "arm_neon/int8x16x2_t", "arm_neon/vmovn_s32", "arm_neon/vget_high_s8", "arm_neon/veor_s64", "armintr/_arm_uadd8", "arm_neon/vrev16_u8", "arm_neon/vbicq_u64", "arm_neon/vst4_lane_f16", "arm_neon/vst3_s32", "arm_neon/poly8x8_t", "arm_neon/vtstq_u16", "arm_neon/vld1_lane_s8", "arm_neon/float32x4x4_t", "arm_neon/vst2_s16", "arm_neon/vqrdmulhq_s32", "arm_neon/vqdmulhq_s16", "arm_neon/vrshrq_n_s8", "arm_neon/vcle_s32", "arm_neon/vtbl3_p8", "arm_neon/vbslq_u8", "arm_neon/vst4_u64", "armintr/_arm_umaal", "arm_neon/vshll_n_s8", "arm_neon/vcvt_u32_f32", "arm_neon/vld4q_p8", "arm_neon/vsetq_lane_u16", "arm_neon/vabd_u8", "arm_neon/vclz_u8", "arm_neon/vsubq_u32", "arm_neon/vld1q_lane_p16", "arm_neon/vcgtq_s16", "arm_neon/vmla_lane_s32", "arm_neon/vshlq_n_s64", "arm_neon/vbsl_u32", "arm_neon/vqshlq_s16", "armintr/_arm_qadd8", "arm_neon/vrshr_n_s32", "armintr/_CountOneBits64", "arm_neon/vceq_u32", "arm_neon/vbsl_p8", "arm_neon/uint16x8x2_t", "arm_neon/vsli_n_s16", "arm_neon/vmla_n_s32", "arm_neon/vld4_dup_u32", "arm_neon/vshrq_n_s8", "arm_neon/vqaddq_s8", "arm_neon/vshl_n_u64", "arm_neon/vtbl2_p8", "arm_neon/vcleq_u32", "arm_neon/vqsub_u32", "arm_neon/vmovl_u8", "arm_neon/vmlal_u8", "arm_neon/vmul_s8", "armintr/_MoveFromCoprocessor64", "arm_neon/vrsraq_n_s16", "arm_neon/vdupq_n_u32", "arm_neon/vmov_n_s16", "arm_neon/vst4_lane_p8", "arm_neon/vld1_s32", "arm_neon/vst4_p8", "arm_neon/vsriq_n_u32", "arm_neon/vqdmull_n_s16", "arm_neon/vshlq_u32", "arm_neon/vld3_u8", "armintr/_arm_usub16", "arm_neon/vmlsq_lane_s16", "arm_neon/vmovq_n_s8", "arm_neon/int32x4x2_t", "arm_neon/vld4q_u8", "arm_neon/poly16x8x2_t", "arm_neon/vld1q_u64", "arm_neon/vld3q_lane_s16", "arm_neon/int64x1x2_t", "arm_neon/vshlq_n_s8", "arm_neon/vrshl_s64", "arm_neon/vqshl_n_u8", "armintr/_arm_qadd", "armintr/_DSubSatInt", "armintr/_arm_usat16", "arm_neon/vmull_s8", "arm_neon/vsub_s8", "arm_neon/vmovq_n_u16", "arm_neon/vst4_u16", "arm_neon/vmlsl_lane_u32", "arm_neon/vsliq_n_p16", "arm_neon/vmovn_u32", "arm_neon/vbic_u16", "arm_neon/vtbx2_p8", "arm_neon/vrsubhn_s32", "armintr/_SubSatInt", "arm_neon/vst3_u8", "arm_neon/vdupq_n_s32", "arm_neon/vcntq_p8", "arm_neon/vst4_f32", "arm_neon/vbic_s64", "arm_neon/vld3_s64", "arm_neon/vrsra_n_s64", "arm_neon/vqabsq_s16", "arm_neon/vsriq_n_p8", "arm_neon/vst2_lane_p16", "arm_neon/vabsq_s16", "arm_neon/vcombine_u8", "arm_neon/vld2q_p16", "armintr/_CountOneBits", "armintr/__prefetch", "arm_neon/vld3_dup_u64", "arm_neon/vld2q_s16", "arm_neon/vget_low_p16", "arm_neon/vuzpq_u8", "arm_neon/vrev32q_s16", "armintr/_AddSatInt", "arm_neon/uint16x4x2_t", "arm_neon/vmov_n_s32", "arm_neon/vaddl_u16", "arm_neon/vqaddq_s64", "arm_neon/vmlaq_u16", "arm_neon/vsli_n_s8", "armintr/_arm_sxth", "arm_neon/vorr_s32", "arm_neon/vsra_n_u64", "arm_neon/vst2_f16", "arm_neon/vcombine_u16", "arm_neon/vabs_s16", "arm_neon/vsubhn_s32", "arm_neon/vst1q_lane_u32", "arm_neon/vst3_p8", "arm_neon/vqshrun_n_s32", "arm_neon/vcreate_s64", "arm_neon/vld4q_lane_s16", "arm_neon/vzipq_u16", "arm_neon/vmin_s32", "armintr/_CopyInt32FromFloat", "arm_neon/vcgtq_u32", "arm_neon/vabdl_s32", "arm_neon/vqshlq_n_u16", "arm_neon/int8x16x4_t", "arm_neon/vqrdmulh_n_s32", "arm_neon/vqaddq_u64", "arm_neon/vhaddq_s8", "arm_neon/vshll_n_s16", "arm_neon/vuzp_u8", "arm_neon/vaddl_u32", "arm_neon/vld4q_s16", "arm_neon/vqmovun_s16", "arm_neon/vld1q_lane_s8", "arm_neon/vld2_lane_u32", "arm_neon/vrshr_n_s8", "arm_neon/vmlaq_s16", "armintr/_CopyFloatFromInt32", "arm_neon/vmul_f32", "arm_neon/vmlaq_n_f32", "arm_neon/vst4_s16", "arm_neon/vld1_dup_s32", "arm_neon/vmul_u16", "arm_neon/vhaddq_s16", "arm_neon/vst1q_lane_f32", "arm_neon/vrhaddq_u16", "arm_neon/vbicq_u32", "arm_neon/vrev32_s8", "arm_neon/vmlaq_s8", "arm_neon/vmin_s16", "arm_neon/vst3_lane_p16", "arm_neon/vst2q_lane_f32", "arm_neon/vld4q_lane_f32", "arm_neon/vget_low_u16", "arm_neon/vqsub_s32", "arm_neon/vtbl1_s8", "arm_neon/vmovn_s64", "arm_neon/vpmax_s8", "arm_neon/int8x16_t", "arm_neon/vpmin_u8", "arm_neon/vdup_lane_p8", "arm_neon/vsetq_lane_u64", "arm_neon/vuzpq_u16", "arm_neon/vcgeq_u16", "arm_neon/uint8x16x2_t", "armintr/_arm_rev16", "armintr/_arm_sxtb", "arm_neon/vsliq_n_u64", "arm_neon/vmovq_n_u8", "arm_neon/vshlq_n_u32", "arm_neon/vcombine_s64", "armintr/_arm_qsax", "arm_neon/vmin_f32", "armintr/_arm_sadd16", "arm_neon/vmlsq_n_s16", "arm_neon/vorr_u64", "arm_neon/vqrshrun_n_s64", "arm_neon/vld2q_lane_s32", "arm_neon/vgetq_lane_p16", "arm_neon/vrev32_s16", "arm_neon/vqshl_u16", "arm_neon/vtrn_s8", "arm_neon/vst1q_lane_s64", "arm_neon/vtbl4_p8", "arm_neon/vst1_p16", "arm_neon/vmvn_u8", "arm_neon/vld2_lane_u8", "arm_neon/vld2q_u16", "arm_neon/vmovl_s8", "arm_neon/vbslq_u64", "arm_neon/vmls_s8", "arm_neon/vld3q_p16", "arm_neon/vtbl3_u8", "arm_neon/vabs_f32", "arm_neon/vsraq_n_s8", "arm_neon/vqadd_s32", "arm_neon/vmulq_n_s16", "arm_neon/vst3q_s8", "arm_neon/vaddhn_s64", "arm_neon/vmul_n_s16", "arm_neon/vtbl1_p8", "arm_neon/uint64x2x3_t", "arm_neon/vmlsq_s32", "arm_neon/vld2q_lane_u32", "arm_neon/vaddq_u8", "arm_neon/vcombine_f16", "arm_neon/vandq_s16", "arm_neon/vst4q_lane_p16", "arm_neon/vsri_n_u8", "arm_neon/vst3_lane_p8", "arm_neon/vst3_lane_s16", "arm_neon/vdup_n_s16", "arm_neon/vbicq_s8", "arm_neon/vdup_lane_u8", "arm_neon/vst4q_lane_s32", "arm_neon/vqrshl_u16", "arm_neon/vrsra_n_u32", "arm_neon/vdupq_lane_p8", "arm_neon/vld3_lane_u8", "arm_neon/vqrdmulh_n_s16", "arm_neon/vpmin_s32", "armintr/__cps", "arm_neon/vshl_u32", "armintr/_arm_uadd16", "arm_neon/vld3_s16", "arm_neon/vcvt_f32_s32", "arm_neon/vshlq_n_u64", "arm_neon/vrev64q_u8", "arm_neon/vextq_u16", "arm_neon/vsubl_s16", "arm_neon/vget_lane_p8", "arm_neon/vabal_s16", "arm_neon/vrecpeq_u32", "arm_neon/vminq_u8", "arm_neon/veor_s16", "arm_neon/vmull_n_u16", "arm_neon/vshl_n_u8", "arm_neon/vrev32q_u8", "arm_neon/vandq_s8", "arm_neon/vrshlq_s16", "arm_neon/vst4q_p16", "arm_neon/vandq_s32", "armintr/_MoveToCoprocessor2", "arm_neon/vqdmlsl_lane_s32", "arm_neon/vld1q_s64", "arm_neon/vmull_n_s16", "arm_neon/vneg_s16", "arm_neon/vqshluq_n_s64", "arm_neon/vst2_lane_s32", "arm_neon/vmvnq_u16", "arm_neon/vshll_n_s32", "arm_neon/vld3_dup_s8", "arm_neon/vtstq_s32", "arm_neon/vmlsl_u32", "arm_neon/vqdmulhq_lane_s16", "arm_neon/vaddl_s32", "armintr/_CountLeadingZeros", "arm_neon/vqrshrn_n_s16", "arm_neon/vmla_lane_u32", "arm_neon/vst1_u8", "arm_neon/vshl_u64", "arm_neon/vshr_n_u8", "arm_neon/vmull_lane_s32", "arm_neon/vmlal_lane_u32", "arm_neon/vsubl_s8", "arm_neon/float32x2x2_t", "armintr/_arm_bfc", "arm_neon/vaddq_s16", "arm_neon/vmlal_lane_s32", "arm_neon/vpadd_u16", "arm_neon/vst2q_lane_u16", "arm_neon/vld4_s8", "arm_neon/vst1q_s8", "arm_neon/vshrq_n_u64", "arm_neon/vsli_n_u16", "arm_neon/vqrdmulh_lane_s32", "arm_neon/vst4_lane_u16", "arm_neon/vabdq_f32", "arm_neon/vld2_lane_f16", "arm_neon/vqsub_u64", "arm_neon/vsub_f32", "arm_neon/vld1q_s16", "arm_neon/vmaxq_s16", "arm_neon/vcombine_u32", "arm_neon/vrsraq_n_u32", "armintr/_arm_smusdx", "arm_neon/vrev16_s8", "arm_neon/vqdmulh_n_s32", "arm_neon/vmul_s32", "arm_neon/vabdq_s32", "arm_neon/veor_u64", "arm_neon/vmlsl_n_s32", "arm_neon/vsub_s16", "arm_neon/vadd_u16", "arm_neon/vsriq_n_u16", "arm_neon/vmla_u32", "arm_neon/vuzpq_s32", "arm_neon/vst4q_s8", "arm_neon/vaddhn_u32", "arm_neon/vmlaq_lane_f32", "arm_neon/vld3_lane_s8", "arm_neon/vsliq_n_u32", "arm_neon/vqrshlq_s8", "arm_neon/vqdmlal_n_s32", "arm_neon/uint8x16x4_t", "arm_neon/vcgtq_u16", "arm_neon/vandq_u32", "arm_neon/vld4q_lane_u32", "arm_neon/vzip_p16", "arm_neon/vget_low_p8", "armintr/_arm_shadd8", "arm_neon/vmovn_s16", "arm_neon/vcge_u8", "arm_neon/vld2q_f32", "arm_neon/vaba_u32", "armintr/__iso_volatile_store8", "arm_neon/vst2q_p16", "arm_neon/vmul_s16", "arm_neon/vand_s16", "arm_neon/vtbx4_p8", "arm_neon/vceq_u8", "arm_neon/vrhaddq_s16", "arm_neon/vgetq_lane_f32", "arm_neon/vqshl_s8", "arm_neon/vbslq_f32", "arm_neon/vrsqrts_f32", "arm_neon/vld2q_s8", "arm_neon/vtbl1_u8", "arm_neon/vtst_u8", "arm_neon/vrev64q_f32", "arm_neon/vcle_s8", "arm_neon/vsetq_lane_p16", "arm_neon/vcreate_p16", "arm_neon/vabal_s32", "armintr/_arm_smlald", "arm_neon/vmla_f32", "arm_neon/vtbx2_s8", "arm_neon/int64x1x3_t", "arm_neon/vclz_s8", "arm_neon/vorr_s16", "arm_neon/vornq_s64", "arm_neon/vst1q_u64", "arm_neon/vdupq_n_s8", "armintr/_arm_sadd8", "arm_neon/vextq_s32", "armintr/_arm_smuadx", "armintr/_arm_qsub", "arm_neon/vadd_f32", "arm_neon/vrshrq_n_s16", "arm_neon/vqsub_s8", "arm_neon/vld3_f32", "arm_neon/vhadd_s8", "arm_neon/vmull_n_u32", "arm_neon/vdup_n_u64", "arm_neon/vsubw_s32", "armintr/_arm_sxtab", "armintr/_arm_uxtb16", "arm_neon/vmvn_s16", "arm_neon/vst1_lane_s16", "arm_neon/vqrdmulhq_n_s32", "arm_neon/vsriq_n_s32", "arm_neon/poly8x16x2_t", "arm_neon/vadd_u8", "arm_neon/vuzpq_p8", "arm_neon/vst2q_p8", "armintr/__wfi", "arm_neon/vget_high_u16", "arm_neon/vqrshl_u64", "arm_neon/vld1_dup_s64", "arm_neon/vqrshrn_n_s32", "arm_neon/vrshr_n_s64", "arm_neon/vst3_s8", "arm_neon/poly16x4x3_t", "arm_neon/vqrdmulh_lane_s16", "arm_neon/vmvnq_u32", "arm_neon/vqsubq_u32", "arm_neon/vmovq_n_p8", "arm_neon/vtrn_s16", "arm_neon/vld2q_u32", "arm_neon/vqsubq_u16", "arm_neon/vrsqrteq_u32", "arm_neon/vadd_u64", "armintr/_arm_usat", "arm_neon/vcvtq_n_u32_f32", "arm_neon/vaddq_s8", "arm_neon/vrsraq_n_u16", "arm_neon/vqabs_s16", "arm_neon/vsra_n_s8", "arm_neon/vsra_n_s16", "arm_neon/vqshlq_n_u8", "arm_neon/vpadal_s8", "arm_neon/vmlal_n_u16", "armintr/_CopyDoubleFromInt64", "arm_neon/vaddw_u8", "arm_neon/vmulq_n_s32", "arm_neon/vqaddq_s32", "arm_neon/vmla_lane_f32", "arm_neon/vmlaq_lane_s32", "arm_neon/vld1q_dup_u64", "arm_neon/uint16x8_t", "arm_neon/vld2_s32", "arm_neon/vcltq_f32", "arm_neon/vst4q_f32", "arm_neon/vsri_n_u16", "arm_neon/vshlq_s32", "arm_neon/vgetq_lane_u32", "arm_neon/vld1q_dup_f16", "arm_neon/vrev64q_s16", "arm_neon/vrshrq_n_u32", "arm_neon/vld2q_s32", "arm_neon/vcgtq_s8", "arm_neon/vsubhn_u64", "arm_neon/vmls_n_s32", "armintr/_arm_smmlar", "arm_neon/vld3_dup_u8", "arm_neon/vld3q_lane_p16", "arm_neon/vld2_dup_s64", "arm_neon/vqabs_s32", "arm_neon/vqaddq_u8", "arm_neon/vminq_u32", "arm_neon/vpaddl_u16", "arm_neon/vaba_s16", "arm_neon/vmul_u32", "arm_neon/vst1_lane_u16", "arm_neon/vcreate_f32", "arm_neon/vcvt_f16_f32", "arm_neon/vset_lane_s32", "arm_neon/vshl_s8", "arm_neon/vcgt_s16", "arm_neon/vtrn_f32", "arm_neon/vget_high_s64", "arm_neon/vld3_dup_p8", "arm_neon/vcreate_u64", "arm_neon/vext_u64", "arm_neon/vld1q_dup_s16", "arm_neon/vget_lane_s16", "arm_neon/vqdmlal_s16", "arm_neon/vld2_p16", "arm_neon/vld4_u16", "armintr/_arm_smlalbb", "arm_neon/vrev64_u8", "arm_neon/vbslq_s64", "arm_neon/vsubw_u16", "arm_neon/vrsubhn_u32", "arm_neon/vabdq_u8", "arm_neon/vmls_n_u32", "arm_neon/vshr_n_s32", "arm_neon/vmulq_n_u32", "arm_neon/vst3_p16", "arm_neon/vrev32_u16", "arm_neon/int8x8x3_t", "arm_neon/vst2q_lane_u32", "arm_neon/vextq_p16", "arm_neon/vtrnq_f32", "armintr/_arm_smultt", "arm_neon/vqneg_s8", "arm_neon/vmlsq_lane_s32", "arm_neon/vmov_n_p16", "arm_neon/vraddhn_u64", "arm_neon/vrhadd_u32", "arm_neon/vrev64_u32", "arm_neon/vrshrn_n_s32", "arm_neon/vld4q_f32", "arm_neon/vst2_s8", "arm_neon/vrsqrteq_f32", "arm_neon/uint16x4_t", "arm_neon/vget_low_s8", "arm_neon/vst2_lane_u32", "arm_neon/vhsub_s32", "arm_neon/vqdmull_lane_s32", "armintr/_arm_smulwb", "arm_neon/vmlsl_u8", "arm_neon/vdup_lane_s16", "arm_neon/vtbx4_s8", "arm_neon/vld4q_lane_u16", "arm_neon/vget_high_u8", "arm_neon/vclzq_s32", "arm_neon/vld1q_dup_f32", "arm_neon/vtrn_u8", "arm_neon/vqabsq_s8", "arm_neon/vdup_lane_f32", "arm_neon/vqrdmulh_s16", "arm_neon/vst4_u32", "arm_neon/vdup_lane_u32", "arm_neon/vst4_u8", "arm_neon/vmovq_n_s32", "arm_neon/vld2_lane_s8", "arm_neon/vld3_u32", "arm_neon/vsubl_u16", "arm_neon/vqshlu_n_s8", "arm_neon/float32x4_t", "arm_neon/vqshl_n_s32", "arm_neon/float32x2x3_t", "armintr/__hvc", "arm_neon/vst1q_lane_f16", "arm_neon/vmvnq_s16", "arm_neon/vst3q_lane_f32", "arm_neon/vld1q_dup_u8", "arm_neon/vmlsq_s16", "arm_neon/vget_lane_u8", "arm_neon/vld1_lane_s32", "arm_neon/vst4q_s16", "armintr/_arm_qsub8", "arm_neon/vorrq_s32", "arm_neon/vsriq_n_s8", "arm_neon/vqshrn_n_u64", "arm_neon/vdup_n_s32", "armintr/_arm_uhsub8", "arm_neon/vld3_lane_s32", "arm_neon/vbsl_s64", "arm_neon/vld1_dup_f16", "arm_neon/vsli_n_u64", "arm_neon/vraddhn_u32", "arm_neon/vsub_u16", "arm_neon/vcltq_u32", "arm_neon/vminq_f32", "arm_neon/vshl_n_s64", "arm_neon/vld4_u32", "arm_neon/vld1_u32", "arm_neon/vaddhn_u16", "arm_neon/vcvtq_n_f32_s32", "arm_neon/vorn_u64", "arm_neon/vsubhn_u16", "arm_neon/int64x1_t", "arm_neon/vst1q_lane_s8", "arm_neon/vld1q_dup_s32", "arm_neon/vrev32_p8", "arm_neon/vst3q_lane_p16", "arm_neon/vrecpeq_f32", "arm_neon/int8x8x4_t", "arm_neon/vshr_n_u32", "arm_neon/vdupq_lane_s64", "arm_neon/vpaddlq_s8", "arm_neon/vqshl_n_u32", "arm_neon/vmul_u8", "arm_neon/vtbx2_u8", "arm_neon/vshr_n_u64", "arm_neon/vqrshlq_s16", "arm_neon/vst3_lane_u16", "arm_neon/vqsub_u8", "arm_neon/vrsra_n_s16", "arm_neon/vaba_s32", "arm_neon/vsri_n_u64", "arm_neon/vst3q_lane_u32", "arm_neon/vmlsq_n_u32", "arm_neon/poly8x16_t", "arm_neon/vld2_u8", "armintr/_arm_smmulr", "arm_neon/vtst_s16", "armintr/_arm_smmls", "arm_neon/vqdmulh_s16", "arm_neon/vtrnq_u8", "arm_neon/vset_lane_p8", "arm_neon/vmlsl_u16", "arm_neon/vshrn_n_u16", "arm_neon/vld1_dup_p8", "arm_neon/vrev16q_s8", "arm_neon/vmov_n_s8", "arm_neon/vld1_u64", "arm_neon/vpmin_f32", "arm_neon/vmla_n_u16", "arm_neon/vst1_f16", "arm_neon/vqdmlsl_s16", "arm_neon/vmin_u32", "armintr/_arm_qsub16", "arm_neon/vcage_f32", "arm_neon/vornq_u32", "arm_neon/vpadd_s16", "arm_neon/vld1_u8", "arm_neon/vhsubq_s16", "arm_neon/vld1_dup_u32", "arm_neon/vld4_u64", "armintr/_MulHigh", "arm_neon/vmaxq_u8", "arm_neon/vget_lane_u16", "arm_neon/vld2q_u8", "arm_neon/vld1q_dup_p16", "arm_neon/vsraq_n_u8", "arm_neon/vqdmlsl_n_s32", "arm_neon/vst1_s16", "arm_neon/vst1q_s32", "arm_neon/vmaxq_f32", "arm_neon/vqdmulh_lane_s16", "armintr/__isb", "arm_neon/vuzpq_p16", "arm_neon/vmls_lane_s16", "arm_neon/vtbl4_s8", "arm_neon/vst1_lane_p8", "arm_neon/vsubw_s8", "arm_neon/vmin_u8", "arm_neon/vzip_u16", "arm_neon/vld4q_u16", "arm_neon/vshrn_n_s32", "arm_neon/vpadal_u16", "arm_neon/vorrq_s8", "arm_neon/vrshlq_u64", "arm_neon/vst3_lane_s32", "arm_neon/vqshluq_n_s32", "armintr/_arm_shsub16", "arm_neon/vst1_u32", "arm_neon/vrhadd_s16", "arm_neon/vzipq_s32", "arm_neon/vshrq_n_u16", "arm_neon/vcls_s32", "arm_neon/vceq_s8", "arm_neon/vld2q_lane_f16", "arm_neon/vst4q_u8", "arm_neon/vraddhn_u16", "arm_neon/vget_lane_u64", "armintr/_arm_smlsld", "arm_neon/vld3_u64", "arm_neon/vld1_lane_s16", "arm_neon/vabd_f32", "arm_neon/vdupq_n_u16", "armintr/__iso_volatile_store64", "arm_neon/vqsubq_u8", "arm_neon/poly16x8x3_t", "arm_neon/vcltq_s32", "arm_neon/vqnegq_s16", "arm_neon/vqsub_u16", "arm_neon/vaddq_s32", "arm_neon/vqshl_n_s64", "arm_neon/vabdl_s8", "arm_neon/vclsq_s16", "arm_neon/vpaddl_u8", "arm_neon/vmlsq_n_u16", "armintr/_arm_uqadd8", "arm_neon/vhsub_u32", "arm_neon/vset_lane_s16", "arm_neon/vsubl_u32", "arm_neon/vld3_lane_f32", "arm_neon/vcle_s16", "arm_neon/vmovl_u32", "arm_neon/vst3_lane_f16", "arm_neon/vcaltq_f32", "arm_neon/vsubq_s32", "arm_neon/vand_s64", "arm_neon/vst2_u8", "arm_neon/vcombine_p8", "arm_neon/vqdmlal_s32", "arm_neon/vsub_s32", "armintr/_arm_uxtab16", "arm_neon/vmlsq_n_f32", "armintr/_arm_qdsub", "arm_neon/vhaddq_u32", "arm_neon/vhsubq_u16", "arm_neon/vmlsq_lane_u16", "arm_neon/vst4_s64", "armintr/_CountLeadingOnes", "armintr/_arm_smlabt", "arm_neon/vcombine_s32", "arm_neon/vld4_lane_f16", "arm_neon/vadd_s64", "arm_neon/vorrq_u32", "armintr/__sev", "arm_neon/vdupq_lane_s32", "arm_neon/vrecpsq_f32", "arm_neon/vbicq_u16", "arm_neon/vld1_lane_p16", "arm_neon/vrshr_n_u32", "arm_neon/vcgeq_s32", "arm_neon/vld4_dup_s16", "arm_neon/vld1q_p8", "arm_neon/vrshlq_u16", "arm_neon/vmlaq_lane_u32", "arm_neon/vsub_s64", "arm_neon/vcreate_u16", "arm_neon/vget_lane_s32", "arm_neon/vuzp_f32", "arm_neon/vld2_lane_p8", "arm_neon/vuzp_u16", "arm_neon/vorrq_s16", "armintr/_arm_smlaltb", "arm_neon/vrshrn_n_s16", "arm_neon/vabd_s8", "arm_neon/vnegq_s8", "arm_neon/vst4q_u16", "arm_neon/vst1q_lane_s32", "arm_neon/vst1_lane_s32", "arm_neon/vmla_u16", "arm_neon/vmls_lane_s32", "arm_neon/vtst_s8", "arm_neon/vcgeq_s8", "arm_neon/poly8x8x4_t", "arm_neon/vqsub_s64", "armintr/_arm_uqasx", "arm_neon/vld1_lane_u64", "arm_neon/vminq_s16", "arm_neon/vmulq_u32", "arm_neon/vqrshlq_u8", "arm_neon/vdupq_n_p16", "arm_neon/vld4_dup_f16", "arm_neon/vcls_s16", "arm_neon/vmov_n_u64", "arm_neon/vmla_s32", "arm_neon/vrshl_s16", "arm_neon/vcalt_f32", "arm_neon/int64x2x3_t", "arm_neon/vsub_u8", "arm_neon/vzipq_u8", "arm_neon/vrshrn_n_u64", "arm_neon/vrshlq_s32", "arm_neon/vorr_s64", "arm_neon/vqrshl_s16", "arm_neon/vceqq_u16", "arm_neon/vmulq_n_u16", "arm_neon/vmlaq_u8", "arm_neon/vsri_n_s64", "arm_neon/vld3q_u8", "arm_neon/vld1_dup_s16", "arm_neon/vld1q_s32", "arm_neon/vsri_n_s16", "arm_neon/vshlq_u8", "arm_neon/vsli_n_s64", "arm_neon/vmull_lane_u32", "arm_neon/vshl_s64", "arm_neon/vcreate_s16", "arm_neon/uint8x8x4_t", "arm_neon/vqshrn_n_s32", "arm_neon/vqshlq_u32", "arm_neon/vmlal_n_u32", "arm_neon/vtrnq_s16", "arm_neon/vshr_n_s64", "arm_neon/vst2_u16", "arm_neon/vtrn_s32", "arm_neon/vsubhn_u32", "arm_neon/vbicq_s16", "arm_neon/vsetq_lane_s8", "arm_neon/vrsubhn_s16", "arm_neon/vhsub_u8", "arm_neon/vcleq_s32", "arm_neon/vld4_dup_s8", "arm_neon/vmull_u32", "arm_neon/vrshr_n_s16", "arm_neon/vst1q_lane_s16", "arm_neon/vmlsq_lane_u32", "arm_neon/vnegq_f32", "arm_neon/vmin_s8", "arm_neon/vrev16_p8", "arm_neon/vbic_u8", "arm_neon/vclzq_u16", "arm_neon/vcge_u32", "arm_neon/vget_high_u64", "arm_neon/vabsq_s8", "arm_neon/vhaddq_u16", "arm_neon/vsraq_n_s64", "arm_neon/vld2_u32", "arm_neon/vld2_lane_f32", "arm_neon/vqrshrn_n_u32", "arm_neon/vbslq_s8", "armintr/_CountLeadingZeros64", "arm_neon/vbicq_u8", "arm_neon/vdup_lane_s8", "arm_neon/vpadd_s32", "arm_neon/vld3q_lane_f16", "arm_neon/vaba_u8", "arm_neon/vqshlq_u16", "arm_neon/vst1q_u8", "arm_neon/vst4q_lane_f16", "arm_neon/vshl_n_u16", "armintr/_arm_smladx", "arm_neon/vmla_lane_s16", "arm_neon/vornq_u8", "arm_neon/vqneg_s32", "arm_neon/vadd_s8", "arm_neon/vcle_u32", "arm_neon/vclzq_u8", "arm_neon/vtbx1_u8", "armintr/_CountLeadingOnes64", "armintr/__dsb", "arm_neon/vaddq_u32", "arm_neon/vclsq_s8", "arm_neon/vdup_n_s64", "arm_neon/vmax_s16", "arm_neon/vst2q_u32", "arm_neon/vsetq_lane_s64", "arm_neon/vtst_p8", "arm_neon/vabs_s8", "arm_neon/vqshl_n_s16", "arm_neon/vqrshrn_n_u64", "arm_neon/vaddw_s8", "armintr/_arm_uhadd16", "arm_neon/vsriq_n_p16", "arm_neon/vld4_lane_u32", "arm_neon/vneg_f32", "armintr/_MoveToCoprocessor", "arm_neon/vmvnq_s8", "arm_neon/vld1q_lane_p8", "arm_neon/uint32x2x3_t", "arm_neon/vrshrn_n_u16", "arm_neon/vld3_f16", "arm_neon/vsriq_n_s16", "arm_neon/vshlq_n_s16", "arm_neon/vabal_u8", "arm_neon/vqshluq_n_s16", "arm_neon/vst2_lane_u16", "arm_neon/vbic_s16", "arm_neon/vqshl_n_u64", "arm_neon/vcagt_f32", "arm_neon/vpadalq_s8", "arm_neon/vclz_s32", "arm_neon/vld1_lane_s64", "arm_neon/vget_high_p8", "arm_neon/uint64x1_t", "arm_neon/vextq_s16", "arm_neon/vpadd_s8", "arm_neon/vrsubhn_u64", "arm_neon/vst3q_f16", "arm_neon/vdupq_lane_u16", "arm_neon/vrshrq_n_u64", "arm_neon/vmovq_n_f32", "arm_neon/vld1q_dup_u16", "arm_neon/vshr_n_u16", "arm_neon/uint32x2_t", "armintr/_arm_umull", "arm_neon/vtrnq_u16", "arm_neon/vsetq_lane_u32", "arm_neon/vneg_s8", "arm_neon/vsetq_lane_u8", "arm_neon/vst2q_lane_s16", "arm_neon/vqmovun_s32", "armintr/_arm_usad8", "armintr/_arm_pkhbt", "arm_neon/uint16x4x3_t", "arm_neon/vsra_n_s32", "arm_neon/vqmovun_s64", "arm_neon/vld1q_dup_s8", "arm_neon/vaddhn_s32", "arm_neon/vpmax_f32", "arm_neon/vpadd_u32", "arm_neon/vhsubq_u32", "arm_neon/vqrshrun_n_s32", "arm_neon/vadd_s32", "arm_neon/vclt_s8", "arm_neon/vorrq_s64", "arm_neon/vst4q_f16", "arm_neon/vst1_s32", "arm_neon/vceq_p8", "arm_neon/vsubw_s16", "arm_neon/vgetq_lane_u64", "arm_neon/vmla_n_u32", "arm_neon/vcvtq_f32_s32", "arm_neon/vld1q_u32", "arm_neon/vmax_f32", "armintr/_isunorderedf", "arm_neon/vrshl_u8", "arm_neon/vld4_dup_s64", "arm_neon/vqaddq_u16", "arm_neon/vld4q_lane_f16", "arm_neon/vceqq_p8", "arm_neon/vsubw_u8", "arm_neon/vqmovn_u16", "armintr/_arm_smlsldx", "arm_neon/vcreate_p8", "arm_neon/vqdmull_n_s32", "arm_neon/uint64x2_t", "arm_neon/vmls_s32", "arm_neon/vst3q_f32", "armintr/_arm_bfi", "armintr/_arm_qadd16", "arm_neon/vrshlq_s8", "arm_neon/vget_lane_p16", "arm_neon/vld2_p8", "arm_neon/vld3_lane_u32", "armintr/_MoveFromCoprocessor2", "arm_neon/vqshl_u8", "arm_neon/poly8_t", "arm_neon/vhadd_u16", "arm_neon/vmla_lane_u16", "arm_neon/vshrq_n_u8", "arm_neon/vuzpq_f32", "arm_neon/vmls_lane_f32", "arm_neon/vqneg_s16", "arm_neon/vtrn_p16", "arm_neon/vshrn_n_u32", "arm_neon/vaddhn_u64", "arm_neon/vabal_u32", "arm_neon/vld1q_lane_u32", "arm_neon/vrsraq_n_s32", "arm_neon/vandq_u64", "arm_neon/vqdmull_s32", "arm_neon/vext_s16", "arm_neon/vaddw_s16", "arm_neon/vrev64q_p8", "arm_neon/uint8x8x3_t", "arm_neon/vzip_f32", "armintr/_arm_ssub8", "arm_neon/uint16x4x4_t", "armintr/__swi", "armintr/_arm_smlatb", "arm_neon/vrhaddq_s8", "arm_neon/vpmax_s32", "arm_neon/vqshl_s64", "arm_neon/vrev16q_p8", "arm_neon/vqmovn_u32", "arm_neon/vld1q_f16", "arm_neon/vornq_u64", "arm_neon/vqshlq_n_s16", "arm_neon/vld1_f16", "armintr/_arm_smmlsr", "arm_neon/vshlq_s16", "arm_neon/vsubhn_s16", "arm_neon/vmulq_p8", "arm_neon/vdupq_lane_f32", "armintr/_arm_shadd16", "arm_neon/vornq_s16", "arm_neon/vst1q_lane_u8", "arm_neon/vcaleq_f32", "arm_neon/vst3q_lane_f16", "armintr/_arm_sdiv", "arm_neon/vld2_u16", "arm_neon/vdup_lane_u16", "arm_neon/vst4q_lane_f32", "arm_neon/vdup_n_f32", "arm_neon/vsubq_u8", "arm_neon/vset_lane_p16", "arm_neon/vrsqrte_f32", "arm_neon/vsubl_u8", "arm_neon/vld3q_lane_f32", "arm_neon/vqnegq_s8", "arm_neon/vqmovn_s16", "arm_neon/int16x8x3_t", "arm_neon/veorq_u16", "arm_neon/vqdmulh_n_s16", "arm_neon/vhaddq_u8", "arm_neon/vpadal_u8", "arm_neon/vst2q_s16", "arm_neon/poly16x8x4_t", "arm_neon/int64x2_t", "arm_neon/vmull_s32", "arm_neon/vld4_lane_s32", "arm_neon/vst4q_p8", "arm_neon/vmlal_lane_u16", "arm_neon/vclz_u32", "arm_neon/vsliq_n_s8", "arm_neon/vmls_n_f32", "arm_neon/vmlsl_lane_s16", "arm_neon/vst4q_u32", "arm_neon/vld1q_lane_s16", "arm_neon/vst1q_f32", "arm_neon/vrshr_n_u8", "arm_neon/vst1q_s64", "arm_neon/vbslq_u32", "arm_neon/vset_lane_s8", "arm_neon/vdupq_lane_p16", "arm_neon/vtstq_s16", "arm_neon/vshl_n_s8", "arm_neon/vqrdmulhq_n_s16", "arm_neon/vget_high_f16", "arm_neon/vst4_lane_u32", "arm_neon/vraddhn_s16", "arm_neon/vmlsl_lane_s32", "arm_neon/vld3q_s32", "arm_neon/vsriq_n_u64", "arm_neon/vld4_dup_u8", "arm_neon/vld4q_s8", "arm_neon/vqmovn_s64", "arm_neon/vrev32q_p8", "arm_neon/vsliq_n_p8", "arm_neon/vzipq_s16", "arm_neon/vgetq_lane_s64", "arm_neon/vst4_p16", "arm_neon/vsubq_u16", "arm_neon/vrev64_s32", "armintr/_arm_uhadd8", "arm_neon/vornq_u16", "arm_neon/vst4_lane_s8", "arm_neon/vabd_s32", "arm_neon/vqrdmulhq_s16", "arm_neon/vqshlq_s32", "arm_neon/int64x2x4_t", "arm_neon/vset_lane_u16", "arm_neon/vrsra_n_s32", "arm_neon/vabdl_u16", "arm_neon/vsliq_n_s32"]
 helpviewer_keywords: ["cl.exe compiler, ARM intrinsics", "intrinsics, ARM", "__cps ARM intrinsic", "__dmb ARM intrinsic", "__dsb ARM intrinsic", "__emit ARM intrinsic", "__hvc ARM intrinsic", "__isb ARM intrinsic", "__iso_volatile_load16 ARM intrinsic", "__iso_volatile_load32 ARM intrinsic", "__iso_volatile_load64 ARM intrinsic", "__iso_volatile_load8 ARM intrinsic", "__iso_volatile_store16 ARM intrinsic", "__iso_volatile_store32 ARM intrinsic", "__iso_volatile_store64 ARM intrinsic", "__iso_volatile_store8 ARM intrinsic", "__ldrexd ARM intrinsic", "__prefetch ARM intrinsic", "__rdpmccntr64 ARM intrinsic", "__sev ARM intrinsic", "__static_assert ARM intrinsic", "__swi ARM intrinsic", "__trap ARM intrinsic", "__wfe ARM intrinsic", "__wfi ARM intrinsic", "_AddSatInt ARM intrinsic", "_arm_bfc ARM intrinsic", "_arm_bfi ARM intrinsic", "_arm_clz ARM intrinsic", "_arm_pkhbt ARM intrinsic", "_arm_pkhtb ARM intrinsic", "_arm_qadd ARM intrinsic", "_arm_qadd16 ARM intrinsic", "_arm_qadd8 ARM intrinsic", "_arm_qasx ARM intrinsic", "_arm_qdadd ARM intrinsic", "_arm_qdsub ARM intrinsic", "_arm_qsax ARM intrinsic", "_arm_qsub ARM intrinsic", "_arm_qsub16 ARM intrinsic", "_arm_qsub8 ARM intrinsic", "_arm_rbit ARM intrinsic", "_arm_rev ARM intrinsic", "_arm_rev16 ARM intrinsic", "_arm_revsh ARM intrinsic", "_arm_sadd16 ARM intrinsic", "_arm_sadd8 ARM intrinsic", "_arm_sasx ARM intrinsic", "_arm_sbfx ARM intrinsic", "_arm_sdiv ARM intrinsic", "_arm_shadd16 ARM intrinsic", "_arm_shadd8 ARM intrinsic", "_arm_shasx ARM intrinsic", "_arm_shsax ARM intrinsic", "_arm_shsub16 ARM intrinsic", "_arm_shsub8 ARM intrinsic", "_arm_smlabb ARM intrinsic", "_arm_smlabt ARM intrinsic", "_arm_smlad ARM intrinsic", "_arm_smladx ARM intrinsic", "_arm_smlal ARM intrinsic", "_arm_smlalbb ARM intrinsic", "_arm_smlalbt ARM intrinsic", "_arm_smlald ARM intrinsic", "_arm_smlaldx ARM intrinsic", "_arm_smlaltb ARM intrinsic", "_arm_smlaltt ARM intrinsic", "_arm_smlatb ARM intrinsic", "_arm_smlatt ARM intrinsic", "_arm_smlawb ARM intrinsic", "_arm_smlawt ARM intrinsic", "_arm_smlsd ARM intrinsic", "_arm_smlsdx ARM intrinsic", "_arm_smlsld ARM intrinsic", "_arm_smlsldx ARM intrinsic", "_arm_smmla ARM intrinsic", "_arm_smmlar ARM intrinsic", "_arm_smmls ARM intrinsic", "_arm_smmlsr ARM intrinsic", "_arm_smmul ARM intrinsic", "_arm_smmulr ARM intrinsic", "_arm_smuad ARM intrinsic", "_arm_smuadx ARM intrinsic", "_arm_smulbb ARM intrinsic", "_arm_smulbt ARM intrinsic", "_arm_smull ARM intrinsic", "_arm_smultb ARM intrinsic", "_arm_smultt ARM intrinsic", "_arm_smulwb ARM intrinsic", "_arm_smulwt ARM intrinsic", "_arm_smusd ARM intrinsic", "_arm_smusdx ARM intrinsic", "_arm_ssat ARM intrinsic", "_arm_ssat16 ARM intrinsic", "_arm_ssax ARM intrinsic", "_arm_ssub16 ARM intrinsic", "_arm_ssub8 ARM intrinsic", "_arm_sxtab ARM intrinsic", "_arm_sxtab16 ARM intrinsic", "_arm_sxtah ARM intrinsic", "_arm_sxtb ARM intrinsic", "_arm_sxtb16 ARM intrinsic", "_arm_sxth ARM intrinsic", "_arm_uadd16 ARM intrinsic", "_arm_uadd8 ARM intrinsic", "_arm_uasx ARM intrinsic", "_arm_ubfx ARM intrinsic", "_arm_udiv ARM intrinsic", "_arm_uhadd16 ARM intrinsic", "_arm_uhadd8 ARM intrinsic", "_arm_uhasx ARM intrinsic", "_arm_uhsax ARM intrinsic", "_arm_uhsub16 ARM intrinsic", "_arm_uhsub8 ARM intrinsic", "_arm_umaal ARM intrinsic", "_arm_umlal ARM intrinsic", "_arm_umull ARM intrinsic", "_arm_uqadd16 ARM intrinsic", "_arm_uqadd8 ARM intrinsic", "_arm_uqasx ARM intrinsic", "_arm_uqsax ARM intrinsic", "_arm_uqsub16 ARM intrinsic", "_arm_uqsub8 ARM intrinsic", "_arm_usad8 ARM intrinsic", "_arm_usada8 ARM intrinsic", "_arm_usat ARM intrinsic", "_arm_usat16 ARM intrinsic", "_arm_usax ARM intrinsic", "_arm_usub16 ARM intrinsic", "_arm_usub8 ARM intrinsic", "_arm_uxtab ARM intrinsic", "_arm_uxtab16 ARM intrinsic", "_arm_uxtah ARM intrinsic", "_arm_uxtb ARM intrinsic", "_arm_uxtb16 ARM intrinsic", "_arm_uxth ARM intrinsic", "_CopyDoubleFromInt64 ARM intrinsic", "_CopyFloatFromInt32 ARM intrinsic", "_CopyInt32FromFloat ARM intrinsic", "_CopyInt64FromDouble ARM intrinsic", "_CountLeadingOnes ARM intrinsic", "_CountLeadingOnes64 ARM intrinsic", "_CountLeadingSigns ARM intrinsic", "_CountLeadingSigns64 ARM intrinsic", "_CountLeadingZeros ARM intrinsic", "_CountLeadingZeros64 ARM intrinsic", "_CountOneBits ARM intrinsic", "_CountOneBits64 ARM intrinsic", "_DAddSatInt ARM intrinsic", "_DSubSatInt ARM intrinsic", "_isunordered ARM intrinsic", "_isunorderedf ARM intrinsic", "_MoveFromCoprocessor ARM intrinsic", "_MoveFromCoprocessor2 ARM intrinsic", "_MoveFromCoprocessor64 ARM intrinsic", "_MoveToCoprocessor ARM intrinsic", "_MoveToCoprocessor2 ARM intrinsic", "_MoveToCoprocessor64 ARM intrinsic", "_MulHigh ARM intrinsic", "_MulUnsignedHigh ARM intrinsic", "_ReadBankedReg ARM intrinsic", "_ReadStatusReg ARM intrinsic", "_SubSatInt ARM intrinsic", "_WriteBankedReg ARM intrinsic", "_WriteStatusReg ARM intrinsic", "float32x2_t ARM intrinsic", "float32x2x2_t ARM intrinsic", "float32x2x3_t ARM intrinsic", "float32x2x4_t ARM intrinsic", "float32x4_t ARM intrinsic", "float32x4x2_t ARM intrinsic", "float32x4x3_t ARM intrinsic", "float32x4x4_t ARM intrinsic", "int16x4_t ARM intrinsic", "int16x4x2_t ARM intrinsic", "int16x4x3_t ARM intrinsic", "int16x4x4_t ARM intrinsic", "int16x8_t ARM intrinsic", "int16x8x2_t ARM intrinsic", "int16x8x3_t ARM intrinsic", "int16x8x4_t ARM intrinsic", "int32x2_t ARM intrinsic", "int32x2x2_t ARM intrinsic", "int32x2x3_t ARM intrinsic", "int32x2x4_t ARM intrinsic", "int32x4_t ARM intrinsic", "int32x4x2_t ARM intrinsic", "int32x4x3_t ARM intrinsic", "int32x4x4_t ARM intrinsic", "int64x1_t ARM intrinsic", "int64x1x2_t ARM intrinsic", "int64x1x3_t ARM intrinsic", "int64x1x4_t ARM intrinsic", "int64x2_t ARM intrinsic", "int64x2x2_t ARM intrinsic", "int64x2x3_t ARM intrinsic", "int64x2x4_t ARM intrinsic", "int8x16_t ARM intrinsic", "int8x16x2_t ARM intrinsic", "int8x16x3_t ARM intrinsic", "int8x16x4_t ARM intrinsic", "int8x8_t ARM intrinsic", "int8x8x2_t ARM intrinsic", "int8x8x3_t ARM intrinsic", "int8x8x4_t ARM intrinsic", "poly16_t ARM intrinsic", "poly16x4_t ARM intrinsic", "poly16x4x2_t ARM intrinsic", "poly16x4x3_t ARM intrinsic", "poly16x4x4_t ARM intrinsic", "poly16x8_t ARM intrinsic", "poly16x8x2_t ARM intrinsic", "poly16x8x3_t ARM intrinsic", "poly16x8x4_t ARM intrinsic", "poly8_t ARM intrinsic", "poly8x16_t ARM intrinsic", "poly8x16x2_t ARM intrinsic", "poly8x16x3_t ARM intrinsic", "poly8x16x4_t ARM intrinsic", "poly8x8_t ARM intrinsic", "poly8x8x2_t ARM intrinsic", "poly8x8x3_t ARM intrinsic", "poly8x8x4_t ARM intrinsic", "uint16x4_t ARM intrinsic", "uint16x4x2_t ARM intrinsic", "uint16x4x3_t ARM intrinsic", "uint16x4x4_t ARM intrinsic", "uint16x8_t ARM intrinsic", "uint16x8x2_t ARM intrinsic", "uint16x8x3_t ARM intrinsic", "uint16x8x4_t ARM intrinsic", "uint32x2_t ARM intrinsic", "uint32x2x2_t ARM intrinsic", "uint32x2x3_t ARM intrinsic", "uint32x2x4_t ARM intrinsic", "uint32x4_t ARM intrinsic", "uint32x4x2_t ARM intrinsic", "uint32x4x3_t ARM intrinsic", "uint32x4x4_t ARM intrinsic", "uint64x1_t ARM intrinsic", "uint64x1x2_t ARM intrinsic", "uint64x1x3_t ARM intrinsic", "uint64x1x4_t ARM intrinsic", "uint64x2_t ARM intrinsic", "uint64x2x2_t ARM intrinsic", "uint64x2x3_t ARM intrinsic", "uint64x2x4_t ARM intrinsic", "uint8x16_t ARM intrinsic", "uint8x16x2_t ARM intrinsic", "uint8x16x3_t ARM intrinsic", "uint8x16x4_t ARM intrinsic", "uint8x8_t ARM intrinsic", "uint8x8x2_t ARM intrinsic", "uint8x8x3_t ARM intrinsic", "uint8x8x4_t ARM intrinsic", "vaba_s16 ARM intrinsic", "vaba_s32 ARM intrinsic", "vaba_s8 ARM intrinsic", "vaba_u16 ARM intrinsic", "vaba_u32 ARM intrinsic", "vaba_u8 ARM intrinsic", "vabal_s16 ARM intrinsic", "vabal_s32 ARM intrinsic", "vabal_s8 ARM intrinsic", "vabal_u16 ARM intrinsic", "vabal_u32 ARM intrinsic", "vabal_u8 ARM intrinsic", "vabaq_s16 ARM intrinsic", "vabaq_s32 ARM intrinsic", "vabaq_s8 ARM intrinsic", "vabaq_u16 ARM intrinsic", "vabaq_u32 ARM intrinsic", "vabaq_u8 ARM intrinsic", "vabd_f32 ARM intrinsic", "vabd_s16 ARM intrinsic", "vabd_s32 ARM intrinsic", "vabd_s8 ARM intrinsic", "vabd_u16 ARM intrinsic", "vabd_u32 ARM intrinsic", "vabd_u8 ARM intrinsic", "vabdl_s16 ARM intrinsic", "vabdl_s32 ARM intrinsic", "vabdl_s8 ARM intrinsic", "vabdl_u16 ARM intrinsic", "vabdl_u32 ARM intrinsic", "vabdl_u8 ARM intrinsic", "vabdq_f32 ARM intrinsic", "vabdq_s16 ARM intrinsic", "vabdq_s32 ARM intrinsic", "vabdq_s8 ARM intrinsic", "vabdq_u16 ARM intrinsic", "vabdq_u32 ARM intrinsic", "vabdq_u8 ARM intrinsic", "vabs_f32 ARM intrinsic", "vabs_s16 ARM intrinsic", "vabs_s32 ARM intrinsic", "vabs_s8 ARM intrinsic", "vabsq_f32 ARM intrinsic", "vabsq_s16 ARM intrinsic", "vabsq_s32 ARM intrinsic", "vabsq_s8 ARM intrinsic", "vadd_f32 ARM intrinsic", "vadd_s16 ARM intrinsic", "vadd_s32 ARM intrinsic", "vadd_s64 ARM intrinsic", "vadd_s8 ARM intrinsic", "vadd_u16 ARM intrinsic", "vadd_u32 ARM intrinsic", "vadd_u64 ARM intrinsic", "vadd_u8 ARM intrinsic", "vaddhn_s16 ARM intrinsic", "vaddhn_s32 ARM intrinsic", "vaddhn_s64 ARM intrinsic", "vaddhn_u16 ARM intrinsic", "vaddhn_u32 ARM intrinsic", "vaddhn_u64 ARM intrinsic", "vaddl_s16 ARM intrinsic", "vaddl_s32 ARM intrinsic", "vaddl_s8 ARM intrinsic", "vaddl_u16 ARM intrinsic", "vaddl_u32 ARM intrinsic", "vaddl_u8 ARM intrinsic", "vaddq_f32 ARM intrinsic", "vaddq_s16 ARM intrinsic", "vaddq_s32 ARM intrinsic", "vaddq_s64 ARM intrinsic", "vaddq_s8 ARM intrinsic", "vaddq_u16 ARM intrinsic", "vaddq_u32 ARM intrinsic", "vaddq_u64 ARM intrinsic", "vaddq_u8 ARM intrinsic", "vaddw_s16 ARM intrinsic", "vaddw_s32 ARM intrinsic", "vaddw_s8 ARM intrinsic", "vaddw_u16 ARM intrinsic", "vaddw_u32 ARM intrinsic", "vaddw_u8 ARM intrinsic", "vand_s16 ARM intrinsic", "vand_s32 ARM intrinsic", "vand_s64 ARM intrinsic", "vand_s8 ARM intrinsic", "vand_u16 ARM intrinsic", "vand_u32 ARM intrinsic", "vand_u64 ARM intrinsic", "vand_u8 ARM intrinsic", "vandq_s16 ARM intrinsic", "vandq_s32 ARM intrinsic", "vandq_s64 ARM intrinsic", "vandq_s8 ARM intrinsic", "vandq_u16 ARM intrinsic", "vandq_u32 ARM intrinsic", "vandq_u64 ARM intrinsic", "vandq_u8 ARM intrinsic", "vbic_s16 ARM intrinsic", "vbic_s32 ARM intrinsic", "vbic_s64 ARM intrinsic", "vbic_s8 ARM intrinsic", "vbic_u16 ARM intrinsic", "vbic_u32 ARM intrinsic", "vbic_u64 ARM intrinsic", "vbic_u8 ARM intrinsic", "vbicq_s16 ARM intrinsic", "vbicq_s32 ARM intrinsic", "vbicq_s64 ARM intrinsic", "vbicq_s8 ARM intrinsic", "vbicq_u16 ARM intrinsic", "vbicq_u32 ARM intrinsic", "vbicq_u64 ARM intrinsic", "vbicq_u8 ARM intrinsic", "vbsl_f32 ARM intrinsic", "vbsl_p16 ARM intrinsic", "vbsl_p8 ARM intrinsic", "vbsl_s16 ARM intrinsic", "vbsl_s32 ARM intrinsic", "vbsl_s64 ARM intrinsic", "vbsl_s8 ARM intrinsic", "vbsl_u16 ARM intrinsic", "vbsl_u32 ARM intrinsic", "vbsl_u64 ARM intrinsic", "vbsl_u8 ARM intrinsic", "vbslq_f32 ARM intrinsic", "vbslq_p16 ARM intrinsic", "vbslq_p8 ARM intrinsic", "vbslq_s16 ARM intrinsic", "vbslq_s32 ARM intrinsic", "vbslq_s64 ARM intrinsic", "vbslq_s8 ARM intrinsic", "vbslq_u16 ARM intrinsic", "vbslq_u32 ARM intrinsic", "vbslq_u64 ARM intrinsic", "vbslq_u8 ARM intrinsic", "vcage_f32 ARM intrinsic", "vcageq_f32 ARM intrinsic", "vcagt_f32 ARM intrinsic", "vcagtq_f32 ARM intrinsic", "vcale_f32 ARM intrinsic", "vcaleq_f32 ARM intrinsic", "vcalt_f32 ARM intrinsic", "vcaltq_f32 ARM intrinsic", "vceq_f32 ARM intrinsic", "vceq_p8 ARM intrinsic", "vceq_s16 ARM intrinsic", "vceq_s32 ARM intrinsic", "vceq_s8 ARM intrinsic", "vceq_u16 ARM intrinsic", "vceq_u32 ARM intrinsic", "vceq_u8 ARM intrinsic", "vceqq_f32 ARM intrinsic", "vceqq_p8 ARM intrinsic", "vceqq_s16 ARM intrinsic", "vceqq_s32 ARM intrinsic", "vceqq_s8 ARM intrinsic", "vceqq_u16 ARM intrinsic", "vceqq_u32 ARM intrinsic", "vceqq_u8 ARM intrinsic", "vcge_f32 ARM intrinsic", "vcge_s16 ARM intrinsic", "vcge_s32 ARM intrinsic", "vcge_s8 ARM intrinsic", "vcge_u16 ARM intrinsic", "vcge_u32 ARM intrinsic", "vcge_u8 ARM intrinsic", "vcgeq_f32 ARM intrinsic", "vcgeq_s16 ARM intrinsic", "vcgeq_s32 ARM intrinsic", "vcgeq_s8 ARM intrinsic", "vcgeq_u16 ARM intrinsic", "vcgeq_u32 ARM intrinsic", "vcgeq_u8 ARM intrinsic", "vcgt_f32 ARM intrinsic", "vcgt_s16 ARM intrinsic", "vcgt_s32 ARM intrinsic", "vcgt_s8 ARM intrinsic", "vcgt_u16 ARM intrinsic", "vcgt_u32 ARM intrinsic", "vcgt_u8 ARM intrinsic", "vcgtq_f32 ARM intrinsic", "vcgtq_s16 ARM intrinsic", "vcgtq_s32 ARM intrinsic", "vcgtq_s8 ARM intrinsic", "vcgtq_u16 ARM intrinsic", "vcgtq_u32 ARM intrinsic", "vcgtq_u8 ARM intrinsic", "vcle_f32 ARM intrinsic", "vcle_s16 ARM intrinsic", "vcle_s32 ARM intrinsic", "vcle_s8 ARM intrinsic", "vcle_u16 ARM intrinsic", "vcle_u32 ARM intrinsic", "vcle_u8 ARM intrinsic", "vcleq_f32 ARM intrinsic", "vcleq_s16 ARM intrinsic", "vcleq_s32 ARM intrinsic", "vcleq_s8 ARM intrinsic", "vcleq_u16 ARM intrinsic", "vcleq_u32 ARM intrinsic", "vcleq_u8 ARM intrinsic", "vcls_s16 ARM intrinsic", "vcls_s32 ARM intrinsic", "vcls_s8 ARM intrinsic", "vclsq_s16 ARM intrinsic", "vclsq_s32 ARM intrinsic", "vclsq_s8 ARM intrinsic", "vclt_f32 ARM intrinsic", "vclt_s16 ARM intrinsic", "vclt_s32 ARM intrinsic", "vclt_s8 ARM intrinsic", "vclt_u16 ARM intrinsic", "vclt_u32 ARM intrinsic", "vclt_u8 ARM intrinsic", "vcltq_f32 ARM intrinsic", "vcltq_s16 ARM intrinsic", "vcltq_s32 ARM intrinsic", "vcltq_s8 ARM intrinsic", "vcltq_u16 ARM intrinsic", "vcltq_u32 ARM intrinsic", "vcltq_u8 ARM intrinsic", "vclz_s16 ARM intrinsic", "vclz_s32 ARM intrinsic", "vclz_s8 ARM intrinsic", "vclz_u16 ARM intrinsic", "vclz_u32 ARM intrinsic", "vclz_u8 ARM intrinsic", "vclzq_s16 ARM intrinsic", "vclzq_s32 ARM intrinsic", "vclzq_s8 ARM intrinsic", "vclzq_u16 ARM intrinsic", "vclzq_u32 ARM intrinsic", "vclzq_u8 ARM intrinsic", "vcnt_p8 ARM intrinsic", "vcnt_s8 ARM intrinsic", "vcnt_u8 ARM intrinsic", "vcntq_p8 ARM intrinsic", "vcntq_s8 ARM intrinsic", "vcntq_u8 ARM intrinsic", "vcombine_f16 ARM intrinsic", "vcombine_f32 ARM intrinsic", "vcombine_p16 ARM intrinsic", "vcombine_p8 ARM intrinsic", "vcombine_s16 ARM intrinsic", "vcombine_s32 ARM intrinsic", "vcombine_s64 ARM intrinsic", "vcombine_s8 ARM intrinsic", "vcombine_u16 ARM intrinsic", "vcombine_u32 ARM intrinsic", "vcombine_u64 ARM intrinsic", "vcombine_u8 ARM intrinsic", "vcreate_f16 ARM intrinsic", "vcreate_f32 ARM intrinsic", "vcreate_p16 ARM intrinsic", "vcreate_p8 ARM intrinsic", "vcreate_s16 ARM intrinsic", "vcreate_s32 ARM intrinsic", "vcreate_s64 ARM intrinsic", "vcreate_s8 ARM intrinsic", "vcreate_u16 ARM intrinsic", "vcreate_u32 ARM intrinsic", "vcreate_u64 ARM intrinsic", "vcreate_u8 ARM intrinsic", "vcvt_f16_f32 ARM intrinsic", "vcvt_f32_f16 ARM intrinsic", "vcvt_f32_s32 ARM intrinsic", "vcvt_f32_u32 ARM intrinsic", "vcvt_n_f32_s32 ARM intrinsic", "vcvt_n_f32_u32 ARM intrinsic", "vcvt_n_s32_f32 ARM intrinsic", "vcvt_n_u32_f32 ARM intrinsic", "vcvt_s32_f32 ARM intrinsic", "vcvt_u32_f32 ARM intrinsic", "vcvtq_f32_s32 ARM intrinsic", "vcvtq_f32_u32 ARM intrinsic", "vcvtq_n_f32_s32 ARM intrinsic", "vcvtq_n_f32_u32 ARM intrinsic", "vcvtq_n_s32_f32 ARM intrinsic", "vcvtq_n_u32_f32 ARM intrinsic", "vcvtq_s32_f32 ARM intrinsic", "vcvtq_u32_f32 ARM intrinsic", "vdup_lane_f32 ARM intrinsic", "vdup_lane_p16 ARM intrinsic", "vdup_lane_p8 ARM intrinsic", "vdup_lane_s16 ARM intrinsic", "vdup_lane_s32 ARM intrinsic", "vdup_lane_s64 ARM intrinsic", "vdup_lane_s8 ARM intrinsic", "vdup_lane_u16 ARM intrinsic", "vdup_lane_u32 ARM intrinsic", "vdup_lane_u64 ARM intrinsic", "vdup_lane_u8 ARM intrinsic", "vdup_n_f32 ARM intrinsic", "vdup_n_p16 ARM intrinsic", "vdup_n_p8 ARM intrinsic", "vdup_n_s16 ARM intrinsic", "vdup_n_s32 ARM intrinsic", "vdup_n_s64 ARM intrinsic", "vdup_n_s8 ARM intrinsic", "vdup_n_u16 ARM intrinsic", "vdup_n_u32 ARM intrinsic", "vdup_n_u64 ARM intrinsic", "vdup_n_u8 ARM intrinsic", "vdupq_lane_f32 ARM intrinsic", "vdupq_lane_p16 ARM intrinsic", "vdupq_lane_p8 ARM intrinsic", "vdupq_lane_s16 ARM intrinsic", "vdupq_lane_s32 ARM intrinsic", "vdupq_lane_s64 ARM intrinsic", "vdupq_lane_s8 ARM intrinsic", "vdupq_lane_u16 ARM intrinsic", "vdupq_lane_u32 ARM intrinsic", "vdupq_lane_u64 ARM intrinsic", "vdupq_lane_u8 ARM intrinsic", "vdupq_n_f32 ARM intrinsic", "vdupq_n_p16 ARM intrinsic", "vdupq_n_p8 ARM intrinsic", "vdupq_n_s16 ARM intrinsic", "vdupq_n_s32 ARM intrinsic", "vdupq_n_s64 ARM intrinsic", "vdupq_n_s8 ARM intrinsic", "vdupq_n_u16 ARM intrinsic", "vdupq_n_u32 ARM intrinsic", "vdupq_n_u64 ARM intrinsic", "vdupq_n_u8 ARM intrinsic", "veor_s16 ARM intrinsic", "veor_s32 ARM intrinsic", "veor_s64 ARM intrinsic", "veor_s8 ARM intrinsic", "veor_u16 ARM intrinsic", "veor_u32 ARM intrinsic", "veor_u64 ARM intrinsic", "veor_u8 ARM intrinsic", "veorq_s16 ARM intrinsic", "veorq_s32 ARM intrinsic", "veorq_s64 ARM intrinsic", "veorq_s8 ARM intrinsic", "veorq_u16 ARM intrinsic", "veorq_u32 ARM intrinsic", "veorq_u64 ARM intrinsic", "veorq_u8 ARM intrinsic", "vext_p16 ARM intrinsic", "vext_p8 ARM intrinsic", "vext_s16 ARM intrinsic", "vext_s32 ARM intrinsic", "vext_s64 ARM intrinsic", "vext_s8 ARM intrinsic", "vext_u16 ARM intrinsic", "vext_u32 ARM intrinsic", "vext_u64 ARM intrinsic", "vext_u8 ARM intrinsic", "vextq_p16 ARM intrinsic", "vextq_p8 ARM intrinsic", "vextq_s16 ARM intrinsic", "vextq_s32 ARM intrinsic", "vextq_s64 ARM intrinsic", "vextq_s8 ARM intrinsic", "vextq_u16 ARM intrinsic", "vextq_u32 ARM intrinsic", "vextq_u64 ARM intrinsic", "vextq_u8 ARM intrinsic", "vget_high_f16 ARM intrinsic", "vget_high_f32 ARM intrinsic", "vget_high_p16 ARM intrinsic", "vget_high_p8 ARM intrinsic", "vget_high_s16 ARM intrinsic", "vget_high_s32 ARM intrinsic", "vget_high_s64 ARM intrinsic", "vget_high_s8 ARM intrinsic", "vget_high_u16 ARM intrinsic", "vget_high_u32 ARM intrinsic", "vget_high_u64 ARM intrinsic", "vget_high_u8 ARM intrinsic", "vget_lane_f32 ARM intrinsic", "vget_lane_p16 ARM intrinsic", "vget_lane_p8 ARM intrinsic", "vget_lane_s16 ARM intrinsic", "vget_lane_s32 ARM intrinsic", "vget_lane_s64 ARM intrinsic", "vget_lane_s8 ARM intrinsic", "vget_lane_u16 ARM intrinsic", "vget_lane_u32 ARM intrinsic", "vget_lane_u64 ARM intrinsic", "vget_lane_u8 ARM intrinsic", "vget_low_f16 ARM intrinsic", "vget_low_f32 ARM intrinsic", "vget_low_p16 ARM intrinsic", "vget_low_p8 ARM intrinsic", "vget_low_s16 ARM intrinsic", "vget_low_s32 ARM intrinsic", "vget_low_s64 ARM intrinsic", "vget_low_s8 ARM intrinsic", "vget_low_u16 ARM intrinsic", "vget_low_u32 ARM intrinsic", "vget_low_u64 ARM intrinsic", "vget_low_u8 ARM intrinsic", "vgetq_lane_f32 ARM intrinsic", "vgetq_lane_p16 ARM intrinsic", "vgetq_lane_p8 ARM intrinsic", "vgetq_lane_s16 ARM intrinsic", "vgetq_lane_s32 ARM intrinsic", "vgetq_lane_s64 ARM intrinsic", "vgetq_lane_s8 ARM intrinsic", "vgetq_lane_u16 ARM intrinsic", "vgetq_lane_u32 ARM intrinsic", "vgetq_lane_u64 ARM intrinsic", "vgetq_lane_u8 ARM intrinsic", "vhadd_s16 ARM intrinsic", "vhadd_s32 ARM intrinsic", "vhadd_s8 ARM intrinsic", "vhadd_u16 ARM intrinsic", "vhadd_u32 ARM intrinsic", "vhadd_u8 ARM intrinsic", "vhaddq_s16 ARM intrinsic", "vhaddq_s32 ARM intrinsic", "vhaddq_s8 ARM intrinsic", "vhaddq_u16 ARM intrinsic", "vhaddq_u32 ARM intrinsic", "vhaddq_u8 ARM intrinsic", "vhsub_s16 ARM intrinsic", "vhsub_s32 ARM intrinsic", "vhsub_s8 ARM intrinsic", "vhsub_u16 ARM intrinsic", "vhsub_u32 ARM intrinsic", "vhsub_u8 ARM intrinsic", "vhsubq_s16 ARM intrinsic", "vhsubq_s32 ARM intrinsic", "vhsubq_s8 ARM intrinsic", "vhsubq_u16 ARM intrinsic", "vhsubq_u32 ARM intrinsic", "vhsubq_u8 ARM intrinsic", "vld1_dup_f16 ARM intrinsic", "vld1_dup_f32 ARM intrinsic", "vld1_dup_p16 ARM intrinsic", "vld1_dup_p8 ARM intrinsic", "vld1_dup_s16 ARM intrinsic", "vld1_dup_s32 ARM intrinsic", "vld1_dup_s64 ARM intrinsic", "vld1_dup_s8 ARM intrinsic", "vld1_dup_u16 ARM intrinsic", "vld1_dup_u32 ARM intrinsic", "vld1_dup_u64 ARM intrinsic", "vld1_dup_u8 ARM intrinsic", "vld1_f16 ARM intrinsic", "vld1_f32 ARM intrinsic", "vld1_lane_f32 ARM intrinsic", "vld1_lane_p16 ARM intrinsic", "vld1_lane_p8 ARM intrinsic", "vld1_lane_s16 ARM intrinsic", "vld1_lane_s32 ARM intrinsic", "vld1_lane_s64 ARM intrinsic", "vld1_lane_s8 ARM intrinsic", "vld1_lane_u16 ARM intrinsic", "vld1_lane_u32 ARM intrinsic", "vld1_lane_u64 ARM intrinsic", "vld1_lane_u8 ARM intrinsic", "vld1_p16 ARM intrinsic", "vld1_p8 ARM intrinsic", "vld1_s16 ARM intrinsic", "vld1_s32 ARM intrinsic", "vld1_s64 ARM intrinsic", "vld1_s8 ARM intrinsic", "vld1_u16 ARM intrinsic", "vld1_u32 ARM intrinsic", "vld1_u64 ARM intrinsic", "vld1_u8 ARM intrinsic", "vld1q_dup_f16 ARM intrinsic", "vld1q_dup_f32 ARM intrinsic", "vld1q_dup_p16 ARM intrinsic", "vld1q_dup_p8 ARM intrinsic", "vld1q_dup_s16 ARM intrinsic", "vld1q_dup_s32 ARM intrinsic", "vld1q_dup_s64 ARM intrinsic", "vld1q_dup_s8 ARM intrinsic", "vld1q_dup_u16 ARM intrinsic", "vld1q_dup_u32 ARM intrinsic", "vld1q_dup_u64 ARM intrinsic", "vld1q_dup_u8 ARM intrinsic", "vld1q_f16 ARM intrinsic", "vld1q_f32 ARM intrinsic", "vld1q_lane_f16 ARM intrinsic", "vld1q_lane_f32 ARM intrinsic", "vld1q_lane_p16 ARM intrinsic", "vld1q_lane_p8 ARM intrinsic", "vld1q_lane_s16 ARM intrinsic", "vld1q_lane_s32 ARM intrinsic", "vld1q_lane_s64 ARM intrinsic", "vld1q_lane_s8 ARM intrinsic", "vld1q_lane_u16 ARM intrinsic", "vld1q_lane_u32 ARM intrinsic", "vld1q_lane_u64 ARM intrinsic", "vld1q_lane_u8 ARM intrinsic", "vld1q_p16 ARM intrinsic", "vld1q_p8 ARM intrinsic", "vld1q_s16 ARM intrinsic", "vld1q_s32 ARM intrinsic", "vld1q_s64 ARM intrinsic", "vld1q_s8 ARM intrinsic", "vld1q_u16 ARM intrinsic", "vld1q_u32 ARM intrinsic", "vld1q_u64 ARM intrinsic", "vld1q_u8 ARM intrinsic", "vld2_dup_f16 ARM intrinsic", "vld2_dup_f32 ARM intrinsic", "vld2_dup_p16 ARM intrinsic", "vld2_dup_p8 ARM intrinsic", "vld2_dup_s16 ARM intrinsic", "vld2_dup_s32 ARM intrinsic", "vld2_dup_s64 ARM intrinsic", "vld2_dup_s8 ARM intrinsic", "vld2_dup_u16 ARM intrinsic", "vld2_dup_u32 ARM intrinsic", "vld2_dup_u64 ARM intrinsic", "vld2_dup_u8 ARM intrinsic", "vld2_f16 ARM intrinsic", "vld2_f32 ARM intrinsic", "vld2_lane_f16 ARM intrinsic", "vld2_lane_f32 ARM intrinsic", "vld2_lane_p16 ARM intrinsic", "vld2_lane_p8 ARM intrinsic", "vld2_lane_s16 ARM intrinsic", "vld2_lane_s32 ARM intrinsic", "vld2_lane_s8 ARM intrinsic", "vld2_lane_u16 ARM intrinsic", "vld2_lane_u32 ARM intrinsic", "vld2_lane_u8 ARM intrinsic", "vld2_p16 ARM intrinsic", "vld2_p8 ARM intrinsic", "vld2_s16 ARM intrinsic", "vld2_s32 ARM intrinsic", "vld2_s64 ARM intrinsic", "vld2_s8 ARM intrinsic", "vld2_u16 ARM intrinsic", "vld2_u32 ARM intrinsic", "vld2_u64 ARM intrinsic", "vld2_u8 ARM intrinsic", "vld2q_f16 ARM intrinsic", "vld2q_f32 ARM intrinsic", "vld2q_lane_f16 ARM intrinsic", "vld2q_lane_f32 ARM intrinsic", "vld2q_lane_p16 ARM intrinsic", "vld2q_lane_s16 ARM intrinsic", "vld2q_lane_s32 ARM intrinsic", "vld2q_lane_u16 ARM intrinsic", "vld2q_lane_u32 ARM intrinsic", "vld2q_p16 ARM intrinsic", "vld2q_p8 ARM intrinsic", "vld2q_s16 ARM intrinsic", "vld2q_s32 ARM intrinsic", "vld2q_s8 ARM intrinsic", "vld2q_u16 ARM intrinsic", "vld2q_u32 ARM intrinsic", "vld2q_u8 ARM intrinsic", "vld3_dup_f16 ARM intrinsic", "vld3_dup_f32 ARM intrinsic", "vld3_dup_p16 ARM intrinsic", "vld3_dup_p8 ARM intrinsic", "vld3_dup_s16 ARM intrinsic", "vld3_dup_s32 ARM intrinsic", "vld3_dup_s64 ARM intrinsic", "vld3_dup_s8 ARM intrinsic", "vld3_dup_u16 ARM intrinsic", "vld3_dup_u32 ARM intrinsic", "vld3_dup_u64 ARM intrinsic", "vld3_dup_u8 ARM intrinsic", "vld3_f16 ARM intrinsic", "vld3_f32 ARM intrinsic", "vld3_lane_f16 ARM intrinsic", "vld3_lane_f32 ARM intrinsic", "vld3_lane_p16 ARM intrinsic", "vld3_lane_p8 ARM intrinsic", "vld3_lane_s16 ARM intrinsic", "vld3_lane_s32 ARM intrinsic", "vld3_lane_s8 ARM intrinsic", "vld3_lane_u16 ARM intrinsic", "vld3_lane_u32 ARM intrinsic", "vld3_lane_u8 ARM intrinsic", "vld3_p16 ARM intrinsic", "vld3_p8 ARM intrinsic", "vld3_s16 ARM intrinsic", "vld3_s32 ARM intrinsic", "vld3_s64 ARM intrinsic", "vld3_s8 ARM intrinsic", "vld3_u16 ARM intrinsic", "vld3_u32 ARM intrinsic", "vld3_u64 ARM intrinsic", "vld3_u8 ARM intrinsic", "vld3q_f16 ARM intrinsic", "vld3q_f32 ARM intrinsic", "vld3q_lane_f16 ARM intrinsic", "vld3q_lane_f32 ARM intrinsic", "vld3q_lane_p16 ARM intrinsic", "vld3q_lane_s16 ARM intrinsic", "vld3q_lane_s32 ARM intrinsic", "vld3q_lane_u16 ARM intrinsic", "vld3q_lane_u32 ARM intrinsic", "vld3q_p16 ARM intrinsic", "vld3q_p8 ARM intrinsic", "vld3q_s16 ARM intrinsic", "vld3q_s32 ARM intrinsic", "vld3q_s8 ARM intrinsic", "vld3q_u16 ARM intrinsic", "vld3q_u32 ARM intrinsic", "vld3q_u8 ARM intrinsic", "vld4_dup_f16 ARM intrinsic", "vld4_dup_f32 ARM intrinsic", "vld4_dup_p16 ARM intrinsic", "vld4_dup_p8 ARM intrinsic", "vld4_dup_s16 ARM intrinsic", "vld4_dup_s32 ARM intrinsic", "vld4_dup_s64 ARM intrinsic", "vld4_dup_s8 ARM intrinsic", "vld4_dup_u16 ARM intrinsic", "vld4_dup_u32 ARM intrinsic", "vld4_dup_u64 ARM intrinsic", "vld4_dup_u8 ARM intrinsic", "vld4_f16 ARM intrinsic", "vld4_f32 ARM intrinsic", "vld4_lane_f16 ARM intrinsic", "vld4_lane_f32 ARM intrinsic", "vld4_lane_p16 ARM intrinsic", "vld4_lane_p8 ARM intrinsic", "vld4_lane_s16 ARM intrinsic", "vld4_lane_s32 ARM intrinsic", "vld4_lane_s8 ARM intrinsic", "vld4_lane_u16 ARM intrinsic", "vld4_lane_u32 ARM intrinsic", "vld4_lane_u8 ARM intrinsic", "vld4_p16 ARM intrinsic", "vld4_p8 ARM intrinsic", "vld4_s16 ARM intrinsic", "vld4_s32 ARM intrinsic", "vld4_s64 ARM intrinsic", "vld4_s8 ARM intrinsic", "vld4_u16 ARM intrinsic", "vld4_u32 ARM intrinsic", "vld4_u64 ARM intrinsic", "vld4_u8 ARM intrinsic", "vld4q_f16 ARM intrinsic", "vld4q_f32 ARM intrinsic", "vld4q_lane_f16 ARM intrinsic", "vld4q_lane_f32 ARM intrinsic", "vld4q_lane_p16 ARM intrinsic", "vld4q_lane_s16 ARM intrinsic", "vld4q_lane_s32 ARM intrinsic", "vld4q_lane_u16 ARM intrinsic", "vld4q_lane_u32 ARM intrinsic", "vld4q_p16 ARM intrinsic", "vld4q_p8 ARM intrinsic", "vld4q_s16 ARM intrinsic", "vld4q_s32 ARM intrinsic", "vld4q_s8 ARM intrinsic", "vld4q_u16 ARM intrinsic", "vld4q_u32 ARM intrinsic", "vld4q_u8 ARM intrinsic", "vmax_f32 ARM intrinsic", "vmax_s16 ARM intrinsic", "vmax_s32 ARM intrinsic", "vmax_s8 ARM intrinsic", "vmax_u16 ARM intrinsic", "vmax_u32 ARM intrinsic", "vmax_u8 ARM intrinsic", "vmaxq_f32 ARM intrinsic", "vmaxq_s16 ARM intrinsic", "vmaxq_s32 ARM intrinsic", "vmaxq_s8 ARM intrinsic", "vmaxq_u16 ARM intrinsic", "vmaxq_u32 ARM intrinsic", "vmaxq_u8 ARM intrinsic", "vmin_f32 ARM intrinsic", "vmin_s16 ARM intrinsic", "vmin_s32 ARM intrinsic", "vmin_s8 ARM intrinsic", "vmin_u16 ARM intrinsic", "vmin_u32 ARM intrinsic", "vmin_u8 ARM intrinsic", "vminq_f32 ARM intrinsic", "vminq_s16 ARM intrinsic", "vminq_s32 ARM intrinsic", "vminq_s8 ARM intrinsic", "vminq_u16 ARM intrinsic", "vminq_u32 ARM intrinsic", "vminq_u8 ARM intrinsic", "vmla_f32 ARM intrinsic", "vmla_lane_f32 ARM intrinsic", "vmla_lane_s16 ARM intrinsic", "vmla_lane_s32 ARM intrinsic", "vmla_lane_u16 ARM intrinsic", "vmla_lane_u32 ARM intrinsic", "vmla_n_f32 ARM intrinsic", "vmla_n_s16 ARM intrinsic", "vmla_n_s32 ARM intrinsic", "vmla_n_u16 ARM intrinsic", "vmla_n_u32 ARM intrinsic", "vmla_s16 ARM intrinsic", "vmla_s32 ARM intrinsic", "vmla_s8 ARM intrinsic", "vmla_u16 ARM intrinsic", "vmla_u32 ARM intrinsic", "vmla_u8 ARM intrinsic", "vmlal_lane_s16 ARM intrinsic", "vmlal_lane_s32 ARM intrinsic", "vmlal_lane_u16 ARM intrinsic", "vmlal_lane_u32 ARM intrinsic", "vmlal_n_s16 ARM intrinsic", "vmlal_n_s32 ARM intrinsic", "vmlal_n_u16 ARM intrinsic", "vmlal_n_u32 ARM intrinsic", "vmlal_s16 ARM intrinsic", "vmlal_s32 ARM intrinsic", "vmlal_s8 ARM intrinsic", "vmlal_u16 ARM intrinsic", "vmlal_u32 ARM intrinsic", "vmlal_u8 ARM intrinsic", "vmlaq_f32 ARM intrinsic", "vmlaq_lane_f32 ARM intrinsic", "vmlaq_lane_s16 ARM intrinsic", "vmlaq_lane_s32 ARM intrinsic", "vmlaq_lane_u16 ARM intrinsic", "vmlaq_lane_u32 ARM intrinsic", "vmlaq_n_f32 ARM intrinsic", "vmlaq_n_s16 ARM intrinsic", "vmlaq_n_s32 ARM intrinsic", "vmlaq_n_u16 ARM intrinsic", "vmlaq_n_u32 ARM intrinsic", "vmlaq_s16 ARM intrinsic", "vmlaq_s32 ARM intrinsic", "vmlaq_s8 ARM intrinsic", "vmlaq_u16 ARM intrinsic", "vmlaq_u32 ARM intrinsic", "vmlaq_u8 ARM intrinsic", "vmls_f32 ARM intrinsic", "vmls_lane_f32 ARM intrinsic", "vmls_lane_s16 ARM intrinsic", "vmls_lane_s32 ARM intrinsic", "vmls_lane_u16 ARM intrinsic", "vmls_lane_u32 ARM intrinsic", "vmls_n_f32 ARM intrinsic", "vmls_n_s16 ARM intrinsic", "vmls_n_s32 ARM intrinsic", "vmls_n_u16 ARM intrinsic", "vmls_n_u32 ARM intrinsic", "vmls_s16 ARM intrinsic", "vmls_s32 ARM intrinsic", "vmls_s8 ARM intrinsic", "vmls_u16 ARM intrinsic", "vmls_u32 ARM intrinsic", "vmls_u8 ARM intrinsic", "vmlsl_lane_s16 ARM intrinsic", "vmlsl_lane_s32 ARM intrinsic", "vmlsl_lane_u16 ARM intrinsic", "vmlsl_lane_u32 ARM intrinsic", "vmlsl_n_s16 ARM intrinsic", "vmlsl_n_s32 ARM intrinsic", "vmlsl_n_u16 ARM intrinsic", "vmlsl_n_u32 ARM intrinsic", "vmlsl_s16 ARM intrinsic", "vmlsl_s32 ARM intrinsic", "vmlsl_s8 ARM intrinsic", "vmlsl_u16 ARM intrinsic", "vmlsl_u32 ARM intrinsic", "vmlsl_u8 ARM intrinsic", "vmlsq_lane_f32 ARM intrinsic", "vmlsq_lane_s16 ARM intrinsic", "vmlsq_lane_s32 ARM intrinsic", "vmlsq_lane_u16 ARM intrinsic", "vmlsq_lane_u32 ARM intrinsic", "vmlsq_n_f32 ARM intrinsic", "vmlsq_n_s16 ARM intrinsic", "vmlsq_n_s32 ARM intrinsic", "vmlsq_n_u16 ARM intrinsic", "vmlsq_n_u32 ARM intrinsic", "vmlsq_s16 ARM intrinsic", "vmlsq_s32 ARM intrinsic", "vmlsq_s8 ARM intrinsic", "vmov_n_f32 ARM intrinsic", "vmov_n_p16 ARM intrinsic", "vmov_n_p8 ARM intrinsic", "vmov_n_s16 ARM intrinsic", "vmov_n_s32 ARM intrinsic", "vmov_n_s64 ARM intrinsic", "vmov_n_s8 ARM intrinsic", "vmov_n_u16 ARM intrinsic", "vmov_n_u32 ARM intrinsic", "vmov_n_u64 ARM intrinsic", "vmov_n_u8 ARM intrinsic", "vmovl_s16 ARM intrinsic", "vmovl_s32 ARM intrinsic", "vmovl_s8 ARM intrinsic", "vmovl_u16 ARM intrinsic", "vmovl_u32 ARM intrinsic", "vmovl_u8 ARM intrinsic", "vmovn_s16 ARM intrinsic", "vmovn_s32 ARM intrinsic", "vmovn_s64 ARM intrinsic", "vmovn_u16 ARM intrinsic", "vmovn_u32 ARM intrinsic", "vmovn_u64 ARM intrinsic", "vmovq_n_f32 ARM intrinsic", "vmovq_n_p16 ARM intrinsic", "vmovq_n_p8 ARM intrinsic", "vmovq_n_s16 ARM intrinsic", "vmovq_n_s32 ARM intrinsic", "vmovq_n_s64 ARM intrinsic", "vmovq_n_s8 ARM intrinsic", "vmovq_n_u16 ARM intrinsic", "vmovq_n_u32 ARM intrinsic", "vmovq_n_u64 ARM intrinsic", "vmovq_n_u8 ARM intrinsic", "vmul_f32 ARM intrinsic", "vmul_n_f32 ARM intrinsic", "vmul_n_s16 ARM intrinsic", "vmul_n_s32 ARM intrinsic", "vmul_n_u16 ARM intrinsic", "vmul_n_u32 ARM intrinsic", "vmul_p8 ARM intrinsic", "vmul_s16 ARM intrinsic", "vmul_s32 ARM intrinsic", "vmul_s8 ARM intrinsic", "vmul_u16 ARM intrinsic", "vmul_u32 ARM intrinsic", "vmul_u8 ARM intrinsic", "vmull_lane_s16 ARM intrinsic", "vmull_lane_s32 ARM intrinsic", "vmull_lane_u16 ARM intrinsic", "vmull_lane_u32 ARM intrinsic", "vmull_n_s16 ARM intrinsic", "vmull_n_s32 ARM intrinsic", "vmull_n_u16 ARM intrinsic", "vmull_n_u32 ARM intrinsic", "vmull_p8 ARM intrinsic", "vmull_s16 ARM intrinsic", "vmull_s32 ARM intrinsic", "vmull_s8 ARM intrinsic", "vmull_u16 ARM intrinsic", "vmull_u32 ARM intrinsic", "vmull_u8 ARM intrinsic", "vmulq_f32 ARM intrinsic", "vmulq_n_f32 ARM intrinsic", "vmulq_n_s16 ARM intrinsic", "vmulq_n_s32 ARM intrinsic", "vmulq_n_u16 ARM intrinsic", "vmulq_n_u32 ARM intrinsic", "vmulq_p8 ARM intrinsic", "vmulq_s16 ARM intrinsic", "vmulq_s32 ARM intrinsic", "vmulq_s8 ARM intrinsic", "vmulq_u16 ARM intrinsic", "vmulq_u32 ARM intrinsic", "vmulq_u8 ARM intrinsic", "vmvn_p8 ARM intrinsic", "vmvn_s16 ARM intrinsic", "vmvn_s32 ARM intrinsic", "vmvn_s8 ARM intrinsic", "vmvn_u16 ARM intrinsic", "vmvn_u32 ARM intrinsic", "vmvn_u8 ARM intrinsic", "vmvnq_p8 ARM intrinsic", "vmvnq_s16 ARM intrinsic", "vmvnq_s32 ARM intrinsic", "vmvnq_s8 ARM intrinsic", "vmvnq_u16 ARM intrinsic", "vmvnq_u32 ARM intrinsic", "vmvnq_u8 ARM intrinsic", "vneg_f32 ARM intrinsic", "vneg_s16 ARM intrinsic", "vneg_s32 ARM intrinsic", "vneg_s8 ARM intrinsic", "vnegq_f32 ARM intrinsic", "vnegq_s16 ARM intrinsic", "vnegq_s32 ARM intrinsic", "vnegq_s8 ARM intrinsic", "vorn_s16 ARM intrinsic", "vorn_s32 ARM intrinsic", "vorn_s64 ARM intrinsic", "vorn_s8 ARM intrinsic", "vorn_u16 ARM intrinsic", "vorn_u32 ARM intrinsic", "vorn_u64 ARM intrinsic", "vorn_u8 ARM intrinsic", "vornq_s16 ARM intrinsic", "vornq_s32 ARM intrinsic", "vornq_s64 ARM intrinsic", "vornq_s8 ARM intrinsic", "vornq_u16 ARM intrinsic", "vornq_u32 ARM intrinsic", "vornq_u64 ARM intrinsic", "vornq_u8 ARM intrinsic", "vorr_s16 ARM intrinsic", "vorr_s32 ARM intrinsic", "vorr_s64 ARM intrinsic", "vorr_s8 ARM intrinsic", "vorr_u16 ARM intrinsic", "vorr_u32 ARM intrinsic", "vorr_u64 ARM intrinsic", "vorr_u8 ARM intrinsic", "vorrq_s16 ARM intrinsic", "vorrq_s32 ARM intrinsic", "vorrq_s64 ARM intrinsic", "vorrq_s8 ARM intrinsic", "vorrq_u16 ARM intrinsic", "vorrq_u32 ARM intrinsic", "vorrq_u64 ARM intrinsic", "vorrq_u8 ARM intrinsic", "vpadal_s16 ARM intrinsic", "vpadal_s32 ARM intrinsic", "vpadal_s8 ARM intrinsic", "vpadal_u16 ARM intrinsic", "vpadal_u32 ARM intrinsic", "vpadal_u8 ARM intrinsic", "vpadalq_s16 ARM intrinsic", "vpadalq_s32 ARM intrinsic", "vpadalq_s8 ARM intrinsic", "vpadalq_u16 ARM intrinsic", "vpadalq_u32 ARM intrinsic", "vpadalq_u8 ARM intrinsic", "vpadd_f32 ARM intrinsic", "vpadd_s16 ARM intrinsic", "vpadd_s32 ARM intrinsic", "vpadd_s8 ARM intrinsic", "vpadd_u16 ARM intrinsic", "vpadd_u32 ARM intrinsic", "vpadd_u8 ARM intrinsic", "vpaddl_s16 ARM intrinsic", "vpaddl_s32 ARM intrinsic", "vpaddl_s8 ARM intrinsic", "vpaddl_u16 ARM intrinsic", "vpaddl_u32 ARM intrinsic", "vpaddl_u8 ARM intrinsic", "vpaddlq_s16 ARM intrinsic", "vpaddlq_s32 ARM intrinsic", "vpaddlq_s8 ARM intrinsic", "vpaddlq_u16 ARM intrinsic", "vpaddlq_u32 ARM intrinsic", "vpaddlq_u8 ARM intrinsic", "vpmax_f32 ARM intrinsic", "vpmax_s16 ARM intrinsic", "vpmax_s32 ARM intrinsic", "vpmax_s8 ARM intrinsic", "vpmax_u16 ARM intrinsic", "vpmax_u32 ARM intrinsic", "vpmax_u8 ARM intrinsic", "vpmin_f32 ARM intrinsic", "vpmin_s16 ARM intrinsic", "vpmin_s32 ARM intrinsic", "vpmin_s8 ARM intrinsic", "vpmin_u16 ARM intrinsic", "vpmin_u32 ARM intrinsic", "vpmin_u8 ARM intrinsic", "vqabs_s16 ARM intrinsic", "vqabs_s32 ARM intrinsic", "vqabs_s8 ARM intrinsic", "vqabsq_s16 ARM intrinsic", "vqabsq_s32 ARM intrinsic", "vqabsq_s8 ARM intrinsic", "vqadd_s16 ARM intrinsic", "vqadd_s32 ARM intrinsic", "vqadd_s64 ARM intrinsic", "vqadd_s8 ARM intrinsic", "vqadd_u16 ARM intrinsic", "vqadd_u32 ARM intrinsic", "vqadd_u64 ARM intrinsic", "vqadd_u8 ARM intrinsic", "vqaddq_s16 ARM intrinsic", "vqaddq_s32 ARM intrinsic", "vqaddq_s64 ARM intrinsic", "vqaddq_s8 ARM intrinsic", "vqaddq_u16 ARM intrinsic", "vqaddq_u32 ARM intrinsic", "vqaddq_u64 ARM intrinsic", "vqaddq_u8 ARM intrinsic", "vqdmlal_lane_s16 ARM intrinsic", "vqdmlal_lane_s32 ARM intrinsic", "vqdmlal_n_s16 ARM intrinsic", "vqdmlal_n_s32 ARM intrinsic", "vqdmlal_s16 ARM intrinsic", "vqdmlal_s32 ARM intrinsic", "vqdmlsl_lane_s16 ARM intrinsic", "vqdmlsl_lane_s32 ARM intrinsic", "vqdmlsl_n_s16 ARM intrinsic", "vqdmlsl_n_s32 ARM intrinsic", "vqdmlsl_s16 ARM intrinsic", "vqdmlsl_s32 ARM intrinsic", "vqdmulh_lane_s16 ARM intrinsic", "vqdmulh_lane_s32 ARM intrinsic", "vqdmulh_n_s16 ARM intrinsic", "vqdmulh_n_s32 ARM intrinsic", "vqdmulh_s16 ARM intrinsic", "vqdmulh_s32 ARM intrinsic", "vqdmulhq_lane_s16 ARM intrinsic", "vqdmulhq_lane_s32 ARM intrinsic", "vqdmulhq_n_s16 ARM intrinsic", "vqdmulhq_n_s32 ARM intrinsic", "vqdmulhq_s16 ARM intrinsic", "vqdmulhq_s32 ARM intrinsic", "vqdmull_lane_s16 ARM intrinsic", "vqdmull_lane_s32 ARM intrinsic", "vqdmull_n_s16 ARM intrinsic", "vqdmull_n_s32 ARM intrinsic", "vqdmull_s16 ARM intrinsic", "vqdmull_s32 ARM intrinsic", "vqmovn_s16 ARM intrinsic", "vqmovn_s32 ARM intrinsic", "vqmovn_s64 ARM intrinsic", "vqmovn_u16 ARM intrinsic", "vqmovn_u32 ARM intrinsic", "vqmovn_u64 ARM intrinsic", "vqmovun_s16 ARM intrinsic", "vqmovun_s32 ARM intrinsic", "vqmovun_s64 ARM intrinsic", "vqneg_s16 ARM intrinsic", "vqneg_s32 ARM intrinsic", "vqneg_s8 ARM intrinsic", "vqnegq_s16 ARM intrinsic", "vqnegq_s32 ARM intrinsic", "vqnegq_s8 ARM intrinsic", "vqrdmulh_lane_s16 ARM intrinsic", "vqrdmulh_lane_s32 ARM intrinsic", "vqrdmulh_n_s16 ARM intrinsic", "vqrdmulh_n_s32 ARM intrinsic", "vqrdmulh_s16 ARM intrinsic", "vqrdmulh_s32 ARM intrinsic", "vqrdmulhq_lane_s16 ARM intrinsic", "vqrdmulhq_lane_s32 ARM intrinsic", "vqrdmulhq_n_s16 ARM intrinsic", "vqrdmulhq_n_s32 ARM intrinsic", "vqrdmulhq_s16 ARM intrinsic", "vqrdmulhq_s32 ARM intrinsic", "vqrshl_s16 ARM intrinsic", "vqrshl_s32 ARM intrinsic", "vqrshl_s64 ARM intrinsic", "vqrshl_s8 ARM intrinsic", "vqrshl_u16 ARM intrinsic", "vqrshl_u32 ARM intrinsic", "vqrshl_u64 ARM intrinsic", "vqrshl_u8 ARM intrinsic", "vqrshlq_s16 ARM intrinsic", "vqrshlq_s32 ARM intrinsic", "vqrshlq_s64 ARM intrinsic", "vqrshlq_s8 ARM intrinsic", "vqrshlq_u16 ARM intrinsic", "vqrshlq_u32 ARM intrinsic", "vqrshlq_u64 ARM intrinsic", "vqrshlq_u8 ARM intrinsic", "vqrshrn_n_s16 ARM intrinsic", "vqrshrn_n_s32 ARM intrinsic", "vqrshrn_n_s64 ARM intrinsic", "vqrshrn_n_u16 ARM intrinsic", "vqrshrn_n_u32 ARM intrinsic", "vqrshrn_n_u64 ARM intrinsic", "vqrshrun_n_s16 ARM intrinsic", "vqrshrun_n_s32 ARM intrinsic", "vqrshrun_n_s64 ARM intrinsic", "vqshl_n_s16 ARM intrinsic", "vqshl_n_s32 ARM intrinsic", "vqshl_n_s64 ARM intrinsic", "vqshl_n_s8 ARM intrinsic", "vqshl_n_u16 ARM intrinsic", "vqshl_n_u32 ARM intrinsic", "vqshl_n_u64 ARM intrinsic", "vqshl_n_u8 ARM intrinsic", "vqshl_s16 ARM intrinsic", "vqshl_s32 ARM intrinsic", "vqshl_s64 ARM intrinsic", "vqshl_s8 ARM intrinsic", "vqshl_u16 ARM intrinsic", "vqshl_u32 ARM intrinsic", "vqshl_u64 ARM intrinsic", "vqshl_u8 ARM intrinsic", "vqshlq_n_s16 ARM intrinsic", "vqshlq_n_s32 ARM intrinsic", "vqshlq_n_s64 ARM intrinsic", "vqshlq_n_s8 ARM intrinsic", "vqshlq_n_u16 ARM intrinsic", "vqshlq_n_u32 ARM intrinsic", "vqshlq_n_u64 ARM intrinsic", "vqshlq_n_u8 ARM intrinsic", "vqshlq_s16 ARM intrinsic", "vqshlq_s32 ARM intrinsic", "vqshlq_s64 ARM intrinsic", "vqshlq_s8 ARM intrinsic", "vqshlq_u16 ARM intrinsic", "vqshlq_u32 ARM intrinsic", "vqshlq_u64 ARM intrinsic", "vqshlq_u8 ARM intrinsic", "vqshlu_n_s16 ARM intrinsic", "vqshlu_n_s32 ARM intrinsic", "vqshlu_n_s64 ARM intrinsic", "vqshlu_n_s8 ARM intrinsic", "vqshluq_n_s16 ARM intrinsic", "vqshluq_n_s32 ARM intrinsic", "vqshluq_n_s64 ARM intrinsic", "vqshluq_n_s8 ARM intrinsic", "vqshrn_n_s16 ARM intrinsic", "vqshrn_n_s32 ARM intrinsic", "vqshrn_n_s64 ARM intrinsic", "vqshrn_n_u16 ARM intrinsic", "vqshrn_n_u32 ARM intrinsic", "vqshrn_n_u64 ARM intrinsic", "vqshrun_n_s16 ARM intrinsic", "vqshrun_n_s32 ARM intrinsic", "vqshrun_n_s64 ARM intrinsic", "vqsub_s16 ARM intrinsic", "vqsub_s32 ARM intrinsic", "vqsub_s64 ARM intrinsic", "vqsub_s8 ARM intrinsic", "vqsub_u16 ARM intrinsic", "vqsub_u32 ARM intrinsic", "vqsub_u64 ARM intrinsic", "vqsub_u8 ARM intrinsic", "vqsubq_s16 ARM intrinsic", "vqsubq_s32 ARM intrinsic", "vqsubq_s64 ARM intrinsic", "vqsubq_s8 ARM intrinsic", "vqsubq_u16 ARM intrinsic", "vqsubq_u32 ARM intrinsic", "vqsubq_u64 ARM intrinsic", "vqsubq_u8 ARM intrinsic", "vraddhn_s16 ARM intrinsic", "vraddhn_s32 ARM intrinsic", "vraddhn_s64 ARM intrinsic", "vraddhn_u16 ARM intrinsic", "vraddhn_u32 ARM intrinsic", "vraddhn_u64 ARM intrinsic", "vrecpe_f32 ARM intrinsic", "vrecpe_u32 ARM intrinsic", "vrecpeq_f32 ARM intrinsic", "vrecpeq_u32 ARM intrinsic", "vrecps_f32 ARM intrinsic", "vrecpsq_f32 ARM intrinsic", "vrev16_p8 ARM intrinsic", "vrev16_s8 ARM intrinsic", "vrev16_u8 ARM intrinsic", "vrev16q_p8 ARM intrinsic", "vrev16q_s8 ARM intrinsic", "vrev16q_u8 ARM intrinsic", "vrev32_p8 ARM intrinsic", "vrev32_s16 ARM intrinsic", "vrev32_s8 ARM intrinsic", "vrev32_u16 ARM intrinsic", "vrev32_u8 ARM intrinsic", "vrev32q_p8 ARM intrinsic", "vrev32q_s16 ARM intrinsic", "vrev32q_s8 ARM intrinsic", "vrev32q_u16 ARM intrinsic", "vrev32q_u8 ARM intrinsic", "vrev64_f32 ARM intrinsic", "vrev64_p16 ARM intrinsic", "vrev64_p8 ARM intrinsic", "vrev64_s16 ARM intrinsic", "vrev64_s32 ARM intrinsic", "vrev64_s8 ARM intrinsic", "vrev64_u16 ARM intrinsic", "vrev64_u32 ARM intrinsic", "vrev64_u8 ARM intrinsic", "vrev64q_f32 ARM intrinsic", "vrev64q_p16 ARM intrinsic", "vrev64q_p8 ARM intrinsic", "vrev64q_s16 ARM intrinsic", "vrev64q_s32 ARM intrinsic", "vrev64q_s8 ARM intrinsic", "vrev64q_u16 ARM intrinsic", "vrev64q_u32 ARM intrinsic", "vrev64q_u8 ARM intrinsic", "vrhadd_s16 ARM intrinsic", "vrhadd_s32 ARM intrinsic", "vrhadd_s8 ARM intrinsic", "vrhadd_u16 ARM intrinsic", "vrhadd_u32 ARM intrinsic", "vrhadd_u8 ARM intrinsic", "vrhaddq_s16 ARM intrinsic", "vrhaddq_s32 ARM intrinsic", "vrhaddq_s8 ARM intrinsic", "vrhaddq_u16 ARM intrinsic", "vrhaddq_u32 ARM intrinsic", "vrhaddq_u8 ARM intrinsic", "vrshl_s16 ARM intrinsic", "vrshl_s32 ARM intrinsic", "vrshl_s64 ARM intrinsic", "vrshl_s8 ARM intrinsic", "vrshl_u16 ARM intrinsic", "vrshl_u32 ARM intrinsic", "vrshl_u64 ARM intrinsic", "vrshl_u8 ARM intrinsic", "vrshlq_s16 ARM intrinsic", "vrshlq_s32 ARM intrinsic", "vrshlq_s64 ARM intrinsic", "vrshlq_s8 ARM intrinsic", "vrshlq_u16 ARM intrinsic", "vrshlq_u32 ARM intrinsic", "vrshlq_u64 ARM intrinsic", "vrshlq_u8 ARM intrinsic", "vrshr_n_s16 ARM intrinsic", "vrshr_n_s32 ARM intrinsic", "vrshr_n_s64 ARM intrinsic", "vrshr_n_s8 ARM intrinsic", "vrshr_n_u16 ARM intrinsic", "vrshr_n_u32 ARM intrinsic", "vrshr_n_u64 ARM intrinsic", "vrshr_n_u8 ARM intrinsic", "vrshrn_n_s16 ARM intrinsic", "vrshrn_n_s32 ARM intrinsic", "vrshrn_n_s64 ARM intrinsic", "vrshrn_n_u16 ARM intrinsic", "vrshrn_n_u32 ARM intrinsic", "vrshrn_n_u64 ARM intrinsic", "vrshrq_n_s16 ARM intrinsic", "vrshrq_n_s32 ARM intrinsic", "vrshrq_n_s64 ARM intrinsic", "vrshrq_n_s8 ARM intrinsic", "vrshrq_n_u16 ARM intrinsic", "vrshrq_n_u32 ARM intrinsic", "vrshrq_n_u64 ARM intrinsic", "vrshrq_n_u8 ARM intrinsic", "vrsqrte_f32 ARM intrinsic", "vrsqrte_u32 ARM intrinsic", "vrsqrteq_f32 ARM intrinsic", "vrsqrteq_u32 ARM intrinsic", "vrsqrts_f32 ARM intrinsic", "vrsqrtsq_f32 ARM intrinsic", "vrsra_n_s16 ARM intrinsic", "vrsra_n_s32 ARM intrinsic", "vrsra_n_s64 ARM intrinsic", "vrsra_n_s8 ARM intrinsic", "vrsra_n_u16 ARM intrinsic", "vrsra_n_u32 ARM intrinsic", "vrsra_n_u64 ARM intrinsic", "vrsra_n_u8 ARM intrinsic", "vrsraq_n_s16 ARM intrinsic", "vrsraq_n_s32 ARM intrinsic", "vrsraq_n_s64 ARM intrinsic", "vrsraq_n_s8 ARM intrinsic", "vrsraq_n_u16 ARM intrinsic", "vrsraq_n_u32 ARM intrinsic", "vrsraq_n_u64 ARM intrinsic", "vrsraq_n_u8 ARM intrinsic", "vrsubhn_s16 ARM intrinsic", "vrsubhn_s32 ARM intrinsic", "vrsubhn_s64 ARM intrinsic", "vrsubhn_u16 ARM intrinsic", "vrsubhn_u32 ARM intrinsic", "vrsubhn_u64 ARM intrinsic", "vset_lane_f32 ARM intrinsic", "vset_lane_p16 ARM intrinsic", "vset_lane_p8 ARM intrinsic", "vset_lane_s16 ARM intrinsic", "vset_lane_s32 ARM intrinsic", "vset_lane_s64 ARM intrinsic", "vset_lane_s8 ARM intrinsic", "vset_lane_u16 ARM intrinsic", "vset_lane_u32 ARM intrinsic", "vset_lane_u64 ARM intrinsic", "vset_lane_u8 ARM intrinsic", "vsetq_lane_f32 ARM intrinsic", "vsetq_lane_p16 ARM intrinsic", "vsetq_lane_p8 ARM intrinsic", "vsetq_lane_s16 ARM intrinsic", "vsetq_lane_s32 ARM intrinsic", "vsetq_lane_s64 ARM intrinsic", "vsetq_lane_s8 ARM intrinsic", "vsetq_lane_u16 ARM intrinsic", "vsetq_lane_u32 ARM intrinsic", "vsetq_lane_u64 ARM intrinsic", "vsetq_lane_u8 ARM intrinsic", "vshl_n_s16 ARM intrinsic", "vshl_n_s32 ARM intrinsic", "vshl_n_s64 ARM intrinsic", "vshl_n_s8 ARM intrinsic", "vshl_n_u16 ARM intrinsic", "vshl_n_u32 ARM intrinsic", "vshl_n_u64 ARM intrinsic", "vshl_n_u8 ARM intrinsic", "vshl_s16 ARM intrinsic", "vshl_s32 ARM intrinsic", "vshl_s64 ARM intrinsic", "vshl_s8 ARM intrinsic", "vshl_u16 ARM intrinsic", "vshl_u32 ARM intrinsic", "vshl_u64 ARM intrinsic", "vshl_u8 ARM intrinsic", "vshll_n_s16 ARM intrinsic", "vshll_n_s32 ARM intrinsic", "vshll_n_s8 ARM intrinsic", "vshll_n_u16 ARM intrinsic", "vshll_n_u32 ARM intrinsic", "vshll_n_u8 ARM intrinsic", "vshlq_n_s16 ARM intrinsic", "vshlq_n_s32 ARM intrinsic", "vshlq_n_s64 ARM intrinsic", "vshlq_n_s8 ARM intrinsic", "vshlq_n_u16 ARM intrinsic", "vshlq_n_u32 ARM intrinsic", "vshlq_n_u64 ARM intrinsic", "vshlq_n_u8 ARM intrinsic", "vshlq_s16 ARM intrinsic", "vshlq_s32 ARM intrinsic", "vshlq_s64 ARM intrinsic", "vshlq_s8 ARM intrinsic", "vshlq_u16 ARM intrinsic", "vshlq_u32 ARM intrinsic", "vshlq_u64 ARM intrinsic", "vshlq_u8 ARM intrinsic", "vshr_n_s16 ARM intrinsic", "vshr_n_s32 ARM intrinsic", "vshr_n_s64 ARM intrinsic", "vshr_n_s8 ARM intrinsic", "vshr_n_u16 ARM intrinsic", "vshr_n_u32 ARM intrinsic", "vshr_n_u64 ARM intrinsic", "vshr_n_u8 ARM intrinsic", "vshrn_n_s16 ARM intrinsic", "vshrn_n_s32 ARM intrinsic", "vshrn_n_s64 ARM intrinsic", "vshrn_n_u16 ARM intrinsic", "vshrn_n_u32 ARM intrinsic", "vshrn_n_u64 ARM intrinsic", "vshrq_n_s16 ARM intrinsic", "vshrq_n_s32 ARM intrinsic", "vshrq_n_s64 ARM intrinsic", "vshrq_n_s8 ARM intrinsic", "vshrq_n_u16 ARM intrinsic", "vshrq_n_u32 ARM intrinsic", "vshrq_n_u64 ARM intrinsic", "vshrq_n_u8 ARM intrinsic", "vsli_n_p16 ARM intrinsic", "vsli_n_p8 ARM intrinsic", "vsli_n_s16 ARM intrinsic", "vsli_n_s32 ARM intrinsic", "vsli_n_s64 ARM intrinsic", "vsli_n_s8 ARM intrinsic", "vsli_n_u16 ARM intrinsic", "vsli_n_u32 ARM intrinsic", "vsli_n_u64 ARM intrinsic", "vsli_n_u8 ARM intrinsic", "vsliq_n_p16 ARM intrinsic", "vsliq_n_p8 ARM intrinsic", "vsliq_n_s16 ARM intrinsic", "vsliq_n_s32 ARM intrinsic", "vsliq_n_s64 ARM intrinsic", "vsliq_n_s8 ARM intrinsic", "vsliq_n_u16 ARM intrinsic", "vsliq_n_u32 ARM intrinsic", "vsliq_n_u64 ARM intrinsic", "vsliq_n_u8 ARM intrinsic", "vsra_n_s16 ARM intrinsic", "vsra_n_s32 ARM intrinsic", "vsra_n_s64 ARM intrinsic", "vsra_n_s8 ARM intrinsic", "vsra_n_u16 ARM intrinsic", "vsra_n_u32 ARM intrinsic", "vsra_n_u64 ARM intrinsic", "vsra_n_u8 ARM intrinsic", "vsraq_n_s16 ARM intrinsic", "vsraq_n_s32 ARM intrinsic", "vsraq_n_s64 ARM intrinsic", "vsraq_n_s8 ARM intrinsic", "vsraq_n_u16 ARM intrinsic", "vsraq_n_u32 ARM intrinsic", "vsraq_n_u64 ARM intrinsic", "vsraq_n_u8 ARM intrinsic", "vsri_n_p16 ARM intrinsic", "vsri_n_p8 ARM intrinsic", "vsri_n_s16 ARM intrinsic", "vsri_n_s32 ARM intrinsic", "vsri_n_s64 ARM intrinsic", "vsri_n_s8 ARM intrinsic", "vsri_n_u16 ARM intrinsic", "vsri_n_u32 ARM intrinsic", "vsri_n_u64 ARM intrinsic", "vsri_n_u8 ARM intrinsic", "vsriq_n_p16 ARM intrinsic", "vsriq_n_p8 ARM intrinsic", "vsriq_n_s16 ARM intrinsic", "vsriq_n_s32 ARM intrinsic", "vsriq_n_s64 ARM intrinsic", "vsriq_n_s8 ARM intrinsic", "vsriq_n_u16 ARM intrinsic", "vsriq_n_u32 ARM intrinsic", "vsriq_n_u64 ARM intrinsic", "vsriq_n_u8 ARM intrinsic", "vst1_f16 ARM intrinsic", "vst1_f32 ARM intrinsic", "vst1_lane_f16 ARM intrinsic", "vst1_lane_f32 ARM intrinsic", "vst1_lane_p16 ARM intrinsic", "vst1_lane_p8 ARM intrinsic", "vst1_lane_s16 ARM intrinsic", "vst1_lane_s32 ARM intrinsic", "vst1_lane_s64 ARM intrinsic", "vst1_lane_s8 ARM intrinsic", "vst1_lane_u16 ARM intrinsic", "vst1_lane_u32 ARM intrinsic", "vst1_lane_u64 ARM intrinsic", "vst1_lane_u8 ARM intrinsic", "vst1_p16 ARM intrinsic", "vst1_p8 ARM intrinsic", "vst1_s16 ARM intrinsic", "vst1_s32 ARM intrinsic", "vst1_s64 ARM intrinsic", "vst1_s8 ARM intrinsic", "vst1_u16 ARM intrinsic", "vst1_u32 ARM intrinsic", "vst1_u64 ARM intrinsic", "vst1_u8 ARM intrinsic", "vst1q_f16 ARM intrinsic", "vst1q_f32 ARM intrinsic", "vst1q_lane_f16 ARM intrinsic", "vst1q_lane_f32 ARM intrinsic", "vst1q_lane_p16 ARM intrinsic", "vst1q_lane_p8 ARM intrinsic", "vst1q_lane_s16 ARM intrinsic", "vst1q_lane_s32 ARM intrinsic", "vst1q_lane_s64 ARM intrinsic", "vst1q_lane_s8 ARM intrinsic", "vst1q_lane_u16 ARM intrinsic", "vst1q_lane_u32 ARM intrinsic", "vst1q_lane_u64 ARM intrinsic", "vst1q_lane_u8 ARM intrinsic", "vst1q_p16 ARM intrinsic", "vst1q_p8 ARM intrinsic", "vst1q_s16 ARM intrinsic", "vst1q_s32 ARM intrinsic", "vst1q_s64 ARM intrinsic", "vst1q_s8 ARM intrinsic", "vst1q_u16 ARM intrinsic", "vst1q_u32 ARM intrinsic", "vst1q_u64 ARM intrinsic", "vst1q_u8 ARM intrinsic", "vst2_f16 ARM intrinsic", "vst2_f32 ARM intrinsic", "vst2_lane_f16 ARM intrinsic", "vst2_lane_f32 ARM intrinsic", "vst2_lane_p16 ARM intrinsic", "vst2_lane_p8 ARM intrinsic", "vst2_lane_s16 ARM intrinsic", "vst2_lane_s32 ARM intrinsic", "vst2_lane_s8 ARM intrinsic", "vst2_lane_u16 ARM intrinsic", "vst2_lane_u32 ARM intrinsic", "vst2_lane_u8 ARM intrinsic", "vst2_p16 ARM intrinsic", "vst2_p8 ARM intrinsic", "vst2_s16 ARM intrinsic", "vst2_s32 ARM intrinsic", "vst2_s64 ARM intrinsic", "vst2_s8 ARM intrinsic", "vst2_u16 ARM intrinsic", "vst2_u32 ARM intrinsic", "vst2_u64 ARM intrinsic", "vst2_u8 ARM intrinsic", "vst2q_f16 ARM intrinsic", "vst2q_f32 ARM intrinsic", "vst2q_lane_f16 ARM intrinsic", "vst2q_lane_f32 ARM intrinsic", "vst2q_lane_p16 ARM intrinsic", "vst2q_lane_s16 ARM intrinsic", "vst2q_lane_s32 ARM intrinsic", "vst2q_lane_u16 ARM intrinsic", "vst2q_lane_u32 ARM intrinsic", "vst2q_p16 ARM intrinsic", "vst2q_p8 ARM intrinsic", "vst2q_s16 ARM intrinsic", "vst2q_s32 ARM intrinsic", "vst2q_s8 ARM intrinsic", "vst2q_u16 ARM intrinsic", "vst2q_u32 ARM intrinsic", "vst2q_u8 ARM intrinsic", "vst3_f16 ARM intrinsic", "vst3_f32 ARM intrinsic", "vst3_lane_f16 ARM intrinsic", "vst3_lane_f32 ARM intrinsic", "vst3_lane_p16 ARM intrinsic", "vst3_lane_p8 ARM intrinsic", "vst3_lane_s16 ARM intrinsic", "vst3_lane_s32 ARM intrinsic", "vst3_lane_s8 ARM intrinsic", "vst3_lane_u16 ARM intrinsic", "vst3_lane_u32 ARM intrinsic", "vst3_lane_u8 ARM intrinsic", "vst3_p16 ARM intrinsic", "vst3_p8 ARM intrinsic", "vst3_s16 ARM intrinsic", "vst3_s32 ARM intrinsic", "vst3_s64 ARM intrinsic", "vst3_s8 ARM intrinsic", "vst3_u16 ARM intrinsic", "vst3_u32 ARM intrinsic", "vst3_u64 ARM intrinsic", "vst3_u8 ARM intrinsic", "vst3q_f16 ARM intrinsic", "vst3q_f32 ARM intrinsic", "vst3q_lane_f16 ARM intrinsic", "vst3q_lane_f32 ARM intrinsic", "vst3q_lane_p16 ARM intrinsic", "vst3q_lane_s16 ARM intrinsic", "vst3q_lane_s32 ARM intrinsic", "vst3q_lane_u16 ARM intrinsic", "vst3q_lane_u32 ARM intrinsic", "vst3q_p16 ARM intrinsic", "vst3q_p8 ARM intrinsic", "vst3q_s16 ARM intrinsic", "vst3q_s32 ARM intrinsic", "vst3q_s8 ARM intrinsic", "vst3q_u16 ARM intrinsic", "vst3q_u32 ARM intrinsic", "vst3q_u8 ARM intrinsic", "vst4_f16 ARM intrinsic", "vst4_f32 ARM intrinsic", "vst4_lane_f16 ARM intrinsic", "vst4_lane_f32 ARM intrinsic", "vst4_lane_p16 ARM intrinsic", "vst4_lane_p8 ARM intrinsic", "vst4_lane_s16 ARM intrinsic", "vst4_lane_s32 ARM intrinsic", "vst4_lane_s8 ARM intrinsic", "vst4_lane_u16 ARM intrinsic", "vst4_lane_u32 ARM intrinsic", "vst4_lane_u8 ARM intrinsic", "vst4_p16 ARM intrinsic", "vst4_p8 ARM intrinsic", "vst4_s16 ARM intrinsic", "vst4_s32 ARM intrinsic", "vst4_s64 ARM intrinsic", "vst4_s8 ARM intrinsic", "vst4_u16 ARM intrinsic", "vst4_u32 ARM intrinsic", "vst4_u64 ARM intrinsic", "vst4_u8 ARM intrinsic", "vst4q_f16 ARM intrinsic", "vst4q_f32 ARM intrinsic", "vst4q_lane_f16 ARM intrinsic", "vst4q_lane_f32 ARM intrinsic", "vst4q_lane_p16 ARM intrinsic", "vst4q_lane_s16 ARM intrinsic", "vst4q_lane_s32 ARM intrinsic", "vst4q_lane_u16 ARM intrinsic", "vst4q_lane_u32 ARM intrinsic", "vst4q_p16 ARM intrinsic", "vst4q_p8 ARM intrinsic", "vst4q_s16 ARM intrinsic", "vst4q_s32 ARM intrinsic", "vst4q_s8 ARM intrinsic", "vst4q_u16 ARM intrinsic", "vst4q_u32 ARM intrinsic", "vst4q_u8 ARM intrinsic", "vsub_f32 ARM intrinsic", "vsub_s16 ARM intrinsic", "vsub_s32 ARM intrinsic", "vsub_s64 ARM intrinsic", "vsub_s8 ARM intrinsic", "vsub_u16 ARM intrinsic", "vsub_u32 ARM intrinsic", "vsub_u64 ARM intrinsic", "vsub_u8 ARM intrinsic", "vsubhn_s16 ARM intrinsic", "vsubhn_s32 ARM intrinsic", "vsubhn_s64 ARM intrinsic", "vsubhn_u16 ARM intrinsic", "vsubhn_u32 ARM intrinsic", "vsubhn_u64 ARM intrinsic", "vsubl_s16 ARM intrinsic", "vsubl_s32 ARM intrinsic", "vsubl_s8 ARM intrinsic", "vsubl_u16 ARM intrinsic", "vsubl_u32 ARM intrinsic", "vsubl_u8 ARM intrinsic", "vsubq_f32 ARM intrinsic", "vsubq_s16 ARM intrinsic", "vsubq_s32 ARM intrinsic", "vsubq_s64 ARM intrinsic", "vsubq_s8 ARM intrinsic", "vsubq_u16 ARM intrinsic", "vsubq_u32 ARM intrinsic", "vsubq_u64 ARM intrinsic", "vsubq_u8 ARM intrinsic", "vsubw_s16 ARM intrinsic", "vsubw_s32 ARM intrinsic", "vsubw_s8 ARM intrinsic", "vsubw_u16 ARM intrinsic", "vsubw_u32 ARM intrinsic", "vsubw_u8 ARM intrinsic", "vtbl1_p8 ARM intrinsic", "vtbl1_s8 ARM intrinsic", "vtbl1_u8 ARM intrinsic", "vtbl2_p8 ARM intrinsic", "vtbl2_s8 ARM intrinsic", "vtbl2_u8 ARM intrinsic", "vtbl3_p8 ARM intrinsic", "vtbl3_s8 ARM intrinsic", "vtbl3_u8 ARM intrinsic", "vtbl4_p8 ARM intrinsic", "vtbl4_s8 ARM intrinsic", "vtbl4_u8 ARM intrinsic", "vtbx1_p8 ARM intrinsic", "vtbx1_s8 ARM intrinsic", "vtbx1_u8 ARM intrinsic", "vtbx2_p8 ARM intrinsic", "vtbx2_s8 ARM intrinsic", "vtbx2_u8 ARM intrinsic", "vtbx3_p8 ARM intrinsic", "vtbx3_s8 ARM intrinsic", "vtbx3_u8 ARM intrinsic", "vtbx4_p8 ARM intrinsic", "vtbx4_s8 ARM intrinsic", "vtbx4_u8 ARM intrinsic", "vtrn_f32 ARM intrinsic", "vtrn_p16 ARM intrinsic", "vtrn_p8 ARM intrinsic", "vtrn_s16 ARM intrinsic", "vtrn_s32 ARM intrinsic", "vtrn_s8 ARM intrinsic", "vtrn_u16 ARM intrinsic", "vtrn_u32 ARM intrinsic", "vtrn_u8 ARM intrinsic", "vtrnq_f32 ARM intrinsic", "vtrnq_p16 ARM intrinsic", "vtrnq_p8 ARM intrinsic", "vtrnq_s16 ARM intrinsic", "vtrnq_s32 ARM intrinsic", "vtrnq_s8 ARM intrinsic", "vtrnq_u16 ARM intrinsic", "vtrnq_u32 ARM intrinsic", "vtrnq_u8 ARM intrinsic", "vtst_p8 ARM intrinsic", "vtst_s16 ARM intrinsic", "vtst_s32 ARM intrinsic", "vtst_s8 ARM intrinsic", "vtst_u16 ARM intrinsic", "vtst_u32 ARM intrinsic", "vtst_u8 ARM intrinsic", "vtstq_p8 ARM intrinsic", "vtstq_s16 ARM intrinsic", "vtstq_s32 ARM intrinsic", "vtstq_s8 ARM intrinsic", "vtstq_u16 ARM intrinsic", "vtstq_u32 ARM intrinsic", "vtstq_u8 ARM intrinsic", "vuzp_f32 ARM intrinsic", "vuzp_p16 ARM intrinsic", "vuzp_p8 ARM intrinsic", "vuzp_s16 ARM intrinsic", "vuzp_s32 ARM intrinsic", "vuzp_s8 ARM intrinsic", "vuzp_u16 ARM intrinsic", "vuzp_u32 ARM intrinsic", "vuzp_u8 ARM intrinsic", "vuzpq_f32 ARM intrinsic", "vuzpq_p16 ARM intrinsic", "vuzpq_p8 ARM intrinsic", "vuzpq_s16 ARM intrinsic", "vuzpq_s32 ARM intrinsic", "vuzpq_s8 ARM intrinsic", "vuzpq_u16 ARM intrinsic", "vuzpq_u32 ARM intrinsic", "vuzpq_u8 ARM intrinsic", "vzip_f32 ARM intrinsic", "vzip_p16 ARM intrinsic", "vzip_p8 ARM intrinsic", "vzip_s16 ARM intrinsic", "vzip_s8 ARM intrinsic", "vzip_u16 ARM intrinsic", "vzip_u8 ARM intrinsic", "vzipq_f32 ARM intrinsic", "vzipq_p16 ARM intrinsic", "vzipq_p8 ARM intrinsic", "vzipq_s16 ARM intrinsic", "vzipq_s32 ARM intrinsic", "vzipq_s8 ARM intrinsic", "vzipq_u16 ARM intrinsic", "vzipq_u32 ARM intrinsic", "vzipq_u8 ARM intrinsic"]
-ms.assetid: d3d7dadd-7bd5-4508-8bff-371a66913e20
 ---
 # ARM intrinsics
 
@@ -305,7 +304,7 @@ Reads data from ARM coprocessors by using the coprocessor data transfer instruct
 unsigned __int64 _MoveFromCoprocessor64(
       unsigned int coproc,
       unsigned int opcode1,
-      unsigned int crm,
+      unsigned int crm
 );
 ```
 
@@ -393,7 +392,7 @@ void _MoveFromCoprocessor64(
       unsigned __int64 value,
       unsigned int coproc,
       unsigned int opcode1,
-      unsigned int crm,
+      unsigned int crm
 );
 ```
 
diff --git a/docs/intrinsics/debugbreak.md b/docs/intrinsics/debugbreak.md
index 4b752926d3..ed576d932d 100644
--- a/docs/intrinsics/debugbreak.md
+++ b/docs/intrinsics/debugbreak.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: __debugbreak"
 title: "__debugbreak"
-ms.date: "09/02/2019"
+description: "Learn more about: __debugbreak"
+ms.date: 09/02/2019
 f1_keywords: ["__debugbreak_cpp", "__debugbreak"]
 helpviewer_keywords: ["breakpoints, __debugbreak intrinsic", "__debugbreak intrinsic"]
-ms.assetid: 1d1e1c0c-891a-4613-ae4b-d790094ba830
 ---
 # __debugbreak
 
@@ -34,7 +33,7 @@ The `__debugbreak` compiler intrinsic, similar to [DebugBreak](/windows/win32/ap
 For example:
 
 ```C
-main() {
+int main() {
    __debugbreak();
 }
 ```
@@ -42,7 +41,7 @@ main() {
 is similar to:
 
 ```C
-main() {
+int main() {
    __asm {
       int 3
    }
diff --git a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md
index 3c6f905373..aad03f0a47 100644
--- a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md
+++ b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: _mm_insert_si64, _mm_inserti_si64"
 title: "_mm_insert_si64, _mm_inserti_si64"
+description: "Learn more about: _mm_insert_si64, _mm_inserti_si64"
 ms.date: "09/02/2019"
 f1_keywords: ["_mm_inserti_si64", "_mm_insert_si64"]
 helpviewer_keywords: ["insertq instruction", "_mm_insert_si64 intrinsic", "_mm_inserti_si64 intrinsic"]
-ms.assetid: 897a4b36-8b08-4b00-a18f-7850f5732d7d
 ---
 # _mm_insert_si64, _mm_inserti_si64
 
@@ -21,7 +20,7 @@ __m128i _mm_insert_si64(
 );
 __m128i _mm_inserti_si64(
    __m128i Source1,
-   __m128i Source2
+   __m128i Source2,
    int Length,
    int Index
 );
diff --git a/docs/intrinsics/rotl8-rotl16.md b/docs/intrinsics/rotl8-rotl16.md
index 7c12f13c46..e7316f1958 100644
--- a/docs/intrinsics/rotl8-rotl16.md
+++ b/docs/intrinsics/rotl8-rotl16.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: _rotl8, _rotl16"
 title: "_rotl8, _rotl16"
-ms.date: "09/02/2019"
+description: "Learn more about: _rotl8, _rotl16"
+ms.date: 09/02/2019
 f1_keywords: ["_rotl8", "_rotl16"]
 helpviewer_keywords: ["_rotl8 intrinsic", "_rotl16 intrinsic"]
-ms.assetid: 8c519ab6-aef9-4f07-a387-daee8408368f
 ---
-# _rotl8, _rotl16
+# `_rotl8`, `_rotl16`
 
 **Microsoft Specific**
 
@@ -27,10 +26,10 @@ unsigned short _rotl16(
 
 ### Parameters
 
-*value*\
+*`value`*\
 [in] The value to rotate.
 
-*shift*\
+*`shift`*\
 [in] The number of bits to rotate.
 
 ## Return value
@@ -44,7 +43,7 @@ The rotated value.
 |`_rotl8`|x86, ARM, x64, ARM64|
 |`_rotl16`|x86, ARM, x64, ARM64|
 
-**Header file** \<intrin.h>
+**Header file**: `<intrin.h>`
 
 ## Remarks
 
@@ -61,7 +60,7 @@ Unlike a left-shift operation, when executing a left rotation, the high-order bi
 
 int main()
 {
-    unsigned char c = 'A', c1, c2;
+    unsigned char c = 'A';
 
     for (int i = 0; i < 8; i++)
     {
@@ -93,5 +92,5 @@ Rotating unsigned short 0x12 left by 10 bits gives 0x4800
 
 ## See also
 
-[_rotr8, _rotr16](../intrinsics/rotr8-rotr16.md)\
-[Compiler intrinsics](../intrinsics/compiler-intrinsics.md)
+[`_rotr8`, `_rotr16`](rotr8-rotr16.md)\
+[Compiler intrinsics](compiler-intrinsics.md)
diff --git a/docs/intrinsics/rotr8-rotr16.md b/docs/intrinsics/rotr8-rotr16.md
index fcc9a07e5a..71a519a179 100644
--- a/docs/intrinsics/rotr8-rotr16.md
+++ b/docs/intrinsics/rotr8-rotr16.md
@@ -1,12 +1,11 @@
 ---
-description: "Learn more about: _rotr8, _rotr16"
 title: "_rotr8, _rotr16"
-ms.date: "09/02/2019"
+description: "Learn more about: _rotr8, _rotr16"
+ms.date: 09/02/2019
 f1_keywords: ["_rotr16", "_rotr8"]
 helpviewer_keywords: ["_rotr8 intrinsic", "_rotr16 intrinsic"]
-ms.assetid: dfbd2c82-82b4-427a-ad52-51609027ebff
 ---
-# _rotr8, _rotr16
+# `_rotr8`, `_rotr16`
 
 **Microsoft Specific**
 
@@ -27,10 +26,10 @@ unsigned short _rotr16(
 
 ### Parameters
 
-*value*\
+*`value`*\
 [in] The value to rotate.
 
-*shift*\
+*`shift`*\
 [in] The number of bits to rotate.
 
 ## Return value
@@ -44,7 +43,7 @@ The rotated value.
 |`_rotr8`|x86, ARM, x64, ARM64|
 |`_rotr16`|x86, ARM, x64, ARM64|
 
-**Header file** \<intrin.h>
+**Header file**: `<intrin.h>`
 
 ## Remarks
 
@@ -61,7 +60,7 @@ Unlike a right-shift operation, when executing a right rotation, the low-order b
 
 int main()
 {
-    unsigned char c = 'A', c1, c2;
+    unsigned char c = 'A';
 
     for (int i = 0; i < 8; i++)
     {
@@ -94,5 +93,5 @@ Rotating unsigned short 0x12 right by 10 bits gives 0x480
 
 ## See also
 
-[_rotl8, _rotl16](../intrinsics/rotl8-rotl16.md)\
-[Compiler intrinsics](../intrinsics/compiler-intrinsics.md)
+[`_rotl8`, `_rotl16`](rotl8-rotl16.md)\
+[Compiler intrinsics](compiler-intrinsics.md)
diff --git a/docs/intrinsics/toc.yml b/docs/intrinsics/toc.yml
index eb04364ed4..0c9053c8c3 100644
--- a/docs/intrinsics/toc.yml
+++ b/docs/intrinsics/toc.yml
@@ -40,7 +40,7 @@ items:
         - name: _bittestandset, _bittestandset64
           href: ../intrinsics/bittestandset-bittestandset64.md
         - name: __check_isa_support, __check_arch_support
-          href: ../intrinsics/check-isa-arch-support.md          
+          href: ../intrinsics/check-isa-arch-support.md
         - name: __cpuid, __cpuidex
           href: ../intrinsics/cpuid-cpuidex.md
         - name: __debugbreak
diff --git a/docs/intrinsics/x64-amd64-intrinsics-list.md b/docs/intrinsics/x64-amd64-intrinsics-list.md
index 555087d4d5..948b93ee9d 100644
--- a/docs/intrinsics/x64-amd64-intrinsics-list.md
+++ b/docs/intrinsics/x64-amd64-intrinsics-list.md
@@ -13,7 +13,7 @@ For information about individual intrinsics, see these resources, as appropriate
 
 - The header file. Many intrinsics are documented in comments in the header file.
 
-- [Intel Intrinsics Guide](https://software.intel.com/sites/landingpage/IntrinsicsGuide). Use the search box to find specific intrinsics.
+- [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html). Use the search box to find specific intrinsics.
 
 - [Intel 64 and IA-32 Architectures Software Developer Manuals](https://software.intel.com/articles/intel-sdm)
 
@@ -102,7 +102,7 @@ The following table lists the intrinsics available on x64 processors. The Techno
 | [`_fxrstor64`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_fxrstor64) | FXSR | immintrin.h | `void _fxrstor64(void const*);` |
 | [`_fxsave`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_fxsave) | FXSR | immintrin.h | `void _fxsave(void*);` |
 | [`_fxsave64`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_fxsave64) | FXSR | immintrin.h | `void _fxsave64(void*);` |
-| [`__getcallerseflags`](getcallerseflags.md) |  | intrin.h | `(unsigned int __getcallerseflags());` |
+| [`__getcallerseflags`](getcallerseflags.md) |  | intrin.h | `unsigned int __getcallerseflags();` |
 | [`__halt`](halt.md) |  | intrin.h | `void __halt(void);` |
 | [`__inbyte`](inbyte.md) |  | intrin.h | `unsigned char __inbyte(unsigned short);` |
 | [`__inbytestring`](inbytestring.md) |  | intrin.h | `void __inbytestring(unsigned short, unsigned char *, unsigned long);` |
@@ -1033,7 +1033,7 @@ The following table lists the intrinsics available on x64 processors. The Techno
 | [`_mm256_round_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_round_ps) | AVX | immintrin.h | `__m256 _mm256_round_ps(__m256, int);` |
 | [`_mm256_rsqrt_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rsqrt_ps) | AVX | immintrin.h | `__m256 _mm256_rsqrt_ps(__m256);` |
 | [`_mm256_sad_epu8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_sad_epu8) | AVX2 | immintrin.h | `__m256i _mm256_sad_epu8(__m256i, __m256i);` |
-| [`_mm256_set_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi16) | AVX | immintrin.h | `(__m256i _mm256_set_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
+| [`_mm256_set_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi16) | AVX | immintrin.h | `__m256i _mm256_set_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
 | [`_mm256_set_epi32`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi32) | AVX | immintrin.h | `__m256i _mm256_set_epi32(int, int, int, int, int, int, int, int);` |
 | [`_mm256_set_epi64x`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi64x) | AVX | immintrin.h | `__m256i _mm256_set_epi64x(long long, long long, long long, long long);` |
 | [`_mm256_set_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi8) | AVX | immintrin.h | `__m256i _mm256_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` |
@@ -1045,10 +1045,10 @@ The following table lists the intrinsics available on x64 processors. The Techno
 | [`_mm256_set1_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_epi8) | AVX | immintrin.h | `__m256i _mm256_set1_epi8(char);` |
 | [`_mm256_set1_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_pd) | AVX | immintrin.h | `__m256d _mm256_set1_pd(double);` |
 | [`_mm256_set1_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_ps) | AVX | immintrin.h | `__m256 _mm256_set1_ps(float);` |
-| [`_mm256_setr_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi16) | AVX | immintrin.h | `(__m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
+| [`_mm256_setr_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi16) | AVX | immintrin.h | `__m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
 | [`_mm256_setr_epi32`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi32) | AVX | immintrin.h | `__m256i _mm256_setr_epi32(int, int, int, int, int, int, int, int);` |
 | [`_mm256_setr_epi64x`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi64x) | AVX | immintrin.h | `__m256i _mm256_setr_epi64x(long long, long long, long long, long long);` |
-| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `(__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` |
+| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` |
 | [`_mm256_setr_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_pd) | AVX | immintrin.h | `__m256d _mm256_setr_pd(double, double, double, double);` |
 | [`_mm256_setr_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_ps) | AVX | immintrin.h | `__m256 _mm256_setr_ps(float, float, float, float, float, float, float, float);` |
 | [`_mm256_setzero_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setzero_pd) | AVX | immintrin.h | `__m256d _mm256_setzero_pd(void);` |
diff --git a/docs/intrinsics/x86-intrinsics-list.md b/docs/intrinsics/x86-intrinsics-list.md
index 4c494efabc..0cc8c48538 100644
--- a/docs/intrinsics/x86-intrinsics-list.md
+++ b/docs/intrinsics/x86-intrinsics-list.md
@@ -75,7 +75,7 @@ The following table lists the intrinsics available on x86 processors. The Techno
 | [`__fastfail`](fastfail.md) |  | intrin.h | `void __fastfail(unsigned int);` |
 | [`_fxrstor`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_fxrstor) | FXSR | immintrin.h | `void _fxrstor(void const*);` |
 | [`_fxsave`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_fxsave) | FXSR | immintrin.h | `void _fxsave(void*);` |
-| [`__getcallerseflags`](getcallerseflags.md) |  | intrin.h | `(unsigned int __getcallerseflags());` |
+| [`__getcallerseflags`](getcallerseflags.md) |  | intrin.h | `unsigned int __getcallerseflags();` |
 | [`__halt`](halt.md) |  | intrin.h | `void __halt(void);` |
 | [`__inbyte`](inbyte.md) |  | intrin.h | `unsigned char __inbyte(unsigned short);` |
 | [`__inbytestring`](inbytestring.md) |  | intrin.h | `void __inbytestring(unsigned short, unsigned char *, unsigned long);` |
@@ -1127,7 +1127,7 @@ The following table lists the intrinsics available on x86 processors. The Techno
 | [`_mm256_round_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_round_ps) | AVX | immintrin.h | `__m256 _mm256_round_ps(__m256, int);` |
 | [`_mm256_rsqrt_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rsqrt_ps) | AVX | immintrin.h | `__m256 _mm256_rsqrt_ps(__m256);` |
 | [`_mm256_sad_epu8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_sad_epu8) | AVX2 | immintrin.h | `__m256i _mm256_sad_epu8(__m256i, __m256i);` |
-| [`_mm256_set_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi16) | AVX | immintrin.h | `(__m256i _mm256_set_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
+| [`_mm256_set_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi16) | AVX | immintrin.h | `__m256i _mm256_set_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
 | [`_mm256_set_epi32`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi32) | AVX | immintrin.h | `__m256i _mm256_set_epi32(int, int, int, int, int, int, int, int);` |
 | [`_mm256_set_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_epi8) | AVX | immintrin.h | `__m256i _mm256_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` |
 | [`_mm256_set_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set_pd) | AVX | immintrin.h | `__m256d _mm256_set_pd(double, double, double, double);` |
@@ -1137,9 +1137,9 @@ The following table lists the intrinsics available on x86 processors. The Techno
 | [`_mm256_set1_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_epi8) | AVX | immintrin.h | `__m256i _mm256_set1_epi8(char);` |
 | [`_mm256_set1_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_pd) | AVX | immintrin.h | `__m256d _mm256_set1_pd(double);` |
 | [`_mm256_set1_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_ps) | AVX | immintrin.h | `__m256 _mm256_set1_ps(float);` |
-| [`_mm256_setr_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi16) | AVX | immintrin.h | `(__m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
+| [`_mm256_setr_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi16) | AVX | immintrin.h | `__m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` |
 | [`_mm256_setr_epi32`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi32) | AVX | immintrin.h | `__m256i _mm256_setr_epi32(int, int, int, int, int, int, int, int);` |
-| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `(__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char,);` |
+| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` |
 | [`_mm256_setr_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_pd) | AVX | immintrin.h | `__m256d _mm256_setr_pd(double, double, double, double);` |
 | [`_mm256_setr_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_ps) | AVX | immintrin.h | `__m256 _mm256_setr_ps(float, float, float, float, float, float, float, float);` |
 | [`_mm256_setzero_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setzero_pd) | AVX | immintrin.h | `__m256d _mm256_setzero_pd(void);` |
diff --git a/docs/linux/cmake-linux-configure.md b/docs/linux/cmake-linux-configure.md
index c25b94031e..195a0cbd83 100644
--- a/docs/linux/cmake-linux-configure.md
+++ b/docs/linux/cmake-linux-configure.md
@@ -2,6 +2,7 @@
 title: "Configure a Linux CMake project in Visual Studio"
 description: "How to configure Linux CMake settings in Visual Studio"
 ms.date: 01/03/2022
+ms.topic: how-to
 ---
 # Configure a Linux CMake project in Visual Studio
 
@@ -129,7 +130,7 @@ To target WSL, select **Manage Configurations** in the configuration dropdown in
 
 The **CMakeSettings.json** window appears.
 
-![CMake settings dialog with the plus button highlighted which adds the selected configuration, which is Linux-GCC-debug.](media/cmake-linux-configurations.png )
+![CMake settings dialog with the plus button highlighted which adds the selected configuration, which is Linux-GCC-debug.](media/cmake-linux-configurations.png)
 
 Press **Add Configuration** (the green '+' button) and then choose **Linux-GCC-Debug** or **Linux-GCC-Release** if using GCC. Use the Clang variants if you're using the Clang/LLVM toolset.  Press **Select** and then **Ctrl+S** to save the configuration.
 
diff --git a/docs/linux/cmake-linux-project.md b/docs/linux/cmake-linux-project.md
index 821cbc5e04..538d0fb200 100644
--- a/docs/linux/cmake-linux-project.md
+++ b/docs/linux/cmake-linux-project.md
@@ -3,6 +3,7 @@ title: "Create a CMake Linux project in Visual Studio"
 description: "How to create a Linux CMake project in Visual Studio"
 ms.date: "08/06/2020"
 ms.assetid: f8707b32-f90d-494d-ae0b-1d44425fdc25
+ms.topic: how-to
 ---
 # Create a CMake Linux project in Visual Studio
 
diff --git a/docs/linux/configure-a-linux-project.md b/docs/linux/configure-a-linux-project.md
index 88ef152274..ac65f32b52 100644
--- a/docs/linux/configure-a-linux-project.md
+++ b/docs/linux/configure-a-linux-project.md
@@ -3,6 +3,7 @@ title: "Configure a Linux MSBuild C++ project in Visual Studio"
 ms.date: "10/16/2020"
 description: "Configure a MSBuild-based Linux project in Visual Studio so you can build it."
 ms.assetid: 4d7c6adf-54b9-4b23-bd23-5de0c825b768
+ms.custom: sfi-image-nochange
 ---
 # Configure a Linux MSBuild C++ project in Visual Studio
 
diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md
index ff7c061c28..0ffc8a5aba 100644
--- a/docs/linux/connect-to-your-remote-linux-computer.md
+++ b/docs/linux/connect-to-your-remote-linux-computer.md
@@ -1,9 +1,11 @@
 ---
-title: "Connect to your target Linux system in Visual Studio"
-description: "How to connect to a remote Linux machine or Windows Subsystem for Linux from inside a Visual Studio C++ project."
-ms.date: 03/14/2022
+title: "Connect to a Target Linux System by Using Visual Studio"
+description: "Learn how to connect to a remote Linux machine or Windows Subsystem for Linux from inside a Visual Studio C++ project."
+ms.topic: tutorial
+ms.date: 03/21/2025
+ms.custom: sfi-image-nochange
 ---
-# Connect to your target Linux system in Visual Studio
+# Connect to your remote Linux system by using Visual Studio
 
 ::: moniker range="msvc-140"
 
@@ -26,6 +28,7 @@ You can configure a Linux project to target a remote machine or the Windows Subs
 ::: moniker range=">=msvc-150"
 
 When using a remote connection, Visual Studio builds C++ Linux projects on the remote machine. It doesn't matter if it's a physical machine, a virtual machine in the cloud, or WSL.
+
 To build the project, Visual Studio copies the source code to your remote Linux computer. Then, the code gets compiled based on Visual Studio settings.
 
 ::: moniker-end
@@ -39,7 +42,7 @@ To build the project, Visual Studio copies the source code to your remote Linux
 
 ::: moniker range=">=msvc-150"
 
-## Set up the SSH server on the remote system
+## Set up the SSH server on the remote machine
 
 If `ssh` isn't already set up and running on your Linux system, follow these steps to install it. The examples in this article use Ubuntu 18.04 LTS with OpenSSH server version 7.6. However, the instructions should be the same for any distro using a moderately recent version of OpenSSH.
 
@@ -58,7 +61,7 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste
 
 ## Set up the remote connection
 
-1. In Visual Studio, choose **Tools > Options** on the menu bar to open the **Options** dialog. Then select **Cross Platform > Connection Manager** to open the Connection Manager dialog.
+1. In Visual Studio on your local Windows system, choose **Tools > Options** on the menu bar to open the **Options** dialog. Then select **Cross Platform > Connection Manager** to open the Connection Manager dialog.
 
    If you haven't set up a connection in Visual Studio before, when you build your project for the first time, Visual Studio opens the Connection Manager dialog for you.
 
@@ -69,11 +72,11 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste
    :::image-end:::
 
    To edit an existing connection, choose **Edit**. In either scenario, the **Connect to Remote System** window is displayed.
-   
+
    :::image type="complex" source="media/connect-to-your-remote-linux-computer/connect-updated.png" alt-text="Screenshot of the Visual Studio Connect to Remote System window.":::
    In the Connect to Remote System window, there are fields for host name, port, user name, authentication type, and password. Port is set to 22. Authentication type is set to 'Password'.
    :::image-end:::
-   
+
 1. Enter the following information:
 
    | Entry | Description |
@@ -84,23 +87,23 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste
    | **Authentication type** | Password and Private Key are both supported |
    | **Password** | Password for the entered user name |
    | **Private key file** | Private key file created for ssh connection |
-   | **Passphrase** | Passphrase used with private key selected above |
+   | **Passphrase** | Passphrase used with private key selected previously |
 
-   You can't click the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535.
+   You can't select the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535.
 
    You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it.
 
-   Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command:
+   Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager, you can use the command:
    `ssh-keygen -m pem -t ecdsa -f <key-name>`
 
    > [!NOTE]
-   > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key will not be accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f <FILE> -m pem`.
+   > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key isn't accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f <FILE> -m pem`.
 
 1. Choose the **Connect** button to attempt a connection to the remote computer.
 
    If the connection succeeds, Visual Studio configures IntelliSense to use the remote headers. For more information, see [IntelliSense for headers on remote systems](configure-a-linux-project.md#remote_intellisense).
 
-   If the connection fails, an info bar with error information appears and the fields that you may need to change are outlined in red.
+   If the connection fails, an info bar with error information appears and the fields that you might need to change are outlined in red.
 
    :::image type="content" source="media/connect-to-your-remote-linux-computer/settings-connection-manager-error-updated.png" alt-text="Screenshot of the Visual Studio Connect to Remote System window. The host name and port fields are outlined in red to indicate incorrect entries.":::
 
@@ -114,13 +117,13 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste
 
 ## Host key verification
 
-In Visual Studio version 16.10 or later, you're asked to verify the server's host key fingerprint whenever Visual Studio connects to a remote system for the first time. You may be familiar with this process if you've used the OpenSSH command-line client or PuTTY before. The fingerprint identifies the server. Visual Studio uses the fingerprint to ensure it's connecting to the intended and trusted server.
+In Visual Studio version 16.10 or later, you're asked to verify the server's host key fingerprint whenever Visual Studio connects to a remote system for the first time. You might be familiar with this process if you've used the OpenSSH command-line client or PuTTY before. The fingerprint identifies the server. Visual Studio uses the fingerprint to ensure it connects to the intended and trusted server.
 
 The first time Visual Studio establishes a new remote connection, you're asked to accept or deny the host key fingerprint presented by the server. Or, anytime there are changes to a cached fingerprint. You can also verify a fingerprint on demand: select a connection in the Connection Manager and choose **Verify**.
 
 If you upgrade to Visual Studio 16.10 or later from an older version, it treats any existing remote connections as new connections. You're prompted to accept the host key fingerprint first. Then, Visual Studio establishes a connection and caches the accepted fingerprint.
 
-You can also update remote connections from `ConnectionManager.exe` using the `update` argument.
+You can also update remote connections from *`ConnectionManager.exe`* using the `update` argument.
 
 ## Supported SSH algorithms
 
@@ -131,19 +134,19 @@ Starting in Visual Studio version 16.9, support for older, insecure SSH algorith
 | Encryption | `aes128-cbc`</br>`aes128-ctr`</br>`aes192-cbc`</br>`aes192-ctr`</br>`aes256-cbc`</br>`aes256-ctr` |
 | HMAC | `hmac-sha2-256`</br>`hmac-sha2-512` |
 | Key exchange | `diffie-hellman-group14-sha256`</br>`diffie-hellman-group16-sha512`</br>`diffie-hellman-group-exchange-sha256`</br>`ecdh-sha2-nistp256`</br>`ecdh-sha2-nistp384`</br>`ecdh-sha2-nistp521` |
-| Host key | `ecdsa-sha2-nistp256`</br>`ecdsa-sha2-nistp384`</br>`ecdsa-sha2-nistp521`</br>`rsa-sha2-512`</br>`rsa-sha2-256`</br>`ssh-rsa` |
+| Host key | `ecdsa-sha2-nistp256`</br>`ecdsa-sha2-nistp384`</br>`ecdsa-sha2-nistp521`</br>`rsa-sha2-512`</br>`rsa-sha2-256` |
 
 ### Configure the SSH server
 
 First, a little background. You can't select the SSH algorithm to use from Visual Studio. Instead, the algorithm is determined during the initial handshake with the SSH server. Each side (client and server) provides a list of algorithms it supports, and then the first algorithm common to both is selected. The connection succeeds as long as there's at least one algorithm in common between Visual Studio and the server for encryption, HMAC, key exchange, and so on.
 
-The Open SSH configuration file (*`sshd_config`*) doesn't configure which algorithm to use by default. The SSH server should use secure defaults when no algorithms are specified. Those defaults depend on the version and vendor of the SSH server. If Visual Studio doesn't support those defaults, you'll likely see an error like: "Could not connect to the remote system. No common client to server HMAC algorithm was found." The error may also appear if the SSH server is configured to use algorithms that Visual Studio doesn't support.
+The Open SSH configuration file (*`sshd_config`*) doesn't configure which algorithm to use by default. The SSH server should use secure defaults when no algorithms are specified. Those defaults depend on the version and vendor of the SSH server. If Visual Studio doesn't support those defaults, you'll likely see an error like: *Could not connect to the remote system. No common client to server HMAC algorithm was found.* The error might also appear if the SSH server is configured to use algorithms that Visual Studio doesn't support.
 
-The default SSH server on most modern Linux distributions should work with Visual Studio. However, you may be running an older SSH server that's configured to use older, insecure algorithms. The following example explains how to update to more secure versions.
+The default SSH server on most modern Linux distributions should work with Visual Studio. However, you might be running an older SSH server that's configured to use older, insecure algorithms. The following example explains how to update to more secure versions.
 
-In the following example, the SSH server uses the insecure `hmac-sha1` algorithm, which Visual Studio 16.9 doesn't support. If the SSH server uses OpenSSH, you can edit the `/etc/ssh/sshd_config` file as shown below to enable more secure algorithms. For other SSH servers, refer to the server's documentation for how to configure them.
+In this example, the SSH server uses the insecure `hmac-sha1` algorithm, which Visual Studio 16.9 doesn't support. If the SSH server uses OpenSSH, you can edit the `/etc/ssh/sshd_config` file to enable more secure algorithms. For other SSH servers, refer to the server's documentation for how to configure them.
 
-First, verify that the set of algorithms your server is using  includes algorithms supported by Visual Studio. Run the following command on the remote machine to list the algorithms supported by the server:
+First, verify that the set of algorithms your server is using includes algorithms supported by Visual Studio. Run the following command on the remote machine to list the algorithms supported by the server:
 
 ```bash
 ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key
@@ -169,7 +172,7 @@ These examples can be added anywhere in `/etc/ssh/sshd_config`. Ensure that they
 
 After editing the file, restart the SSH server (`sudo service ssh restart` on Ubuntu) and attempt to connect again from Visual Studio.
 
-#### Cipher  example
+#### Cipher example
 
 Add: `Ciphers <algorithms to enable>`  
 For example: `Ciphers aes128-cbc,aes256-cbc`
@@ -191,25 +194,25 @@ For example: `HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384`
 
 ## Logging for remote connections
 
-   You can enable logging to help troubleshoot connection problems. On the menu bar, select **Tools > Options**. In the **Options** dialog, select **Cross Platform > Logging**:
+You can enable logging to help troubleshoot connection problems. On the menu bar, select **Tools > Options**. In the **Options** dialog, select **Cross Platform > Logging**:
 
-   :::image type="complex" source="media/remote-logging-vs2019.png" alt-text="Screenshot of the Visual Studio options screen.":::
-   The options are open to Cross Platform > Connection Manager > Logging. Enable logging is checked, log to a file is checked, the logfile directory is set the documents folder, and log to the 'Cross Platform Logging' pane in the output window is checked.
-   :::image-end:::
+:::image type="complex" source="media/remote-logging-vs2019.png" alt-text="Screenshot of the Visual Studio options screen.":::
+The options are open to Cross Platform > Connection Manager > Logging. Enable logging is checked, log to a file is checked, the logfile directory is set the documents folder, and log to the 'Cross Platform Logging' pane in the output window is checked.
+:::image-end:::
 
-   Logs include connections, all commands sent to the remote machine (their text, exit code and execution time), and all output from Visual Studio to the shell. Logging works for any cross-platform CMake project or MSBuild-based Linux project in Visual Studio.
+Logs include connections, all commands sent to the remote machine (their text, exit code and execution time), and all output from Visual Studio to the shell. Logging works for any cross-platform CMake project or MSBuild-based Linux project in Visual Studio.
 
-   You can configure the output to go to a file or to the **Cross Platform Logging** pane in the Output window. For MSBuild-based Linux projects, MSBuild commands sent to the remote machine aren't routed to the **Output Window** because they're emitted out-of-process. Instead, they're logged to a file, with a prefix of "msbuild_".
+You can configure the output to go to a file or to the **Cross Platform Logging** pane in the Output window. For MSBuild-based Linux projects, MSBuild commands sent to the remote machine aren't routed to the **Output Window** because they're emitted out-of-process. Instead, they're logged to a file, with a prefix of `msbuild_`.
 
-## Command-line utility for the Connection Manager  
+## Command-line utility for the Connection Manager
 
-**Visual Studio 2019 version 16.5 or later**: `ConnectionManager.exe` is a command-line utility to manage remote development connections outside of Visual Studio. It's useful for tasks such as provisioning a new development machine. Or, you can use it to set up Visual Studio for continuous integration. For examples and a complete reference to the ConnectionManager command, see [ConnectionManager reference](connectionmanager-reference.md).  
+**Visual Studio 2019 version 16.5 or later**: *`ConnectionManager.exe`* is a command-line utility to manage remote development connections outside of Visual Studio. It's useful for tasks such as provisioning a new development machine. Or, you can use it to set up Visual Studio for continuous integration. For examples and a complete reference to the `ConnectionManager` command, see [ConnectionManager reference](connectionmanager-reference.md).  
 
 ::: moniker-end
 
 ::: moniker range=">=msvc-150"
 
-## TCP Port Forwarding
+## TCP port forwarding
 
 The `rsync` command is used by both MSBuild-based Linux projects and CMake projects to [copy headers from your remote system to Windows for use by IntelliSense](configure-a-linux-project.md#remote_intellisense). When you can't enable TCP port forwarding, disable the automatic download of remote headers. To disable it, use **Tools > Options > Cross Platform > Connection Manager > Remote Headers IntelliSense Manager**. If the remote system doesn't have TCP port forwarding enabled, this error appears when the download of remote headers for IntelliSense begins:
 
@@ -231,7 +234,7 @@ Visual Studio's Linux support has a dependency on TCP port forwarding. Both `rsy
 
 ::: moniker range="msvc-150"
 
-In Visual Studio 2017, you use the same steps to connect to WSL as you use for a remote Linux machine. Use `localhost` for the **Host Name**.
+In Visual Studio 2017, you use the same steps to connect to Windows Subsystem for Linux (WSL) as you use for a remote Linux machine. Use `localhost` for the **Host Name**.
 
 ::: moniker-end
 
@@ -247,7 +250,7 @@ sudo apt install g++ gdb make ninja-build rsync zip
 
 ### Fix WSL `localhost` connection problems
 
-When connecting to Windows Subsystem for Linux (WSL) on `localhost`, you may run into a conflict with the Windows `ssh` client on port 22. In WSL, change the port that `ssh` expects requests from to 23 in `/etc/ssh/sshd_config`:
+When connecting to WSL on `localhost`, you might run into a conflict with the Windows `ssh` client on port 22. In WSL, change the port that `ssh` expects requests from to 23 in `/etc/ssh/sshd_config`:
 
 ```bash
 Port 23
@@ -270,9 +273,9 @@ To configure an MSBuild project for WSL, see [Configure a Linux project](configu
 
 ::: moniker-end
 
-## See Also
+## See also
 
-[Configure a Linux project](configure-a-linux-project.md)\
-[Configure a Linux CMake project](cmake-linux-project.md)\
-[Deploy, run, and debug your Linux project](deploy-run-and-debug-your-linux-project.md)\
-[Configure CMake debugging sessions](../build/configure-cmake-debugging-sessions.md)
\ No newline at end of file
+- [Configure a Linux MSBuild C++ project in Visual Studio](configure-a-linux-project.md)
+- [Create a CMake Linux project in Visual Studio](cmake-linux-project.md)
+- [Deploy, run, and debug your Linux MSBuild project](deploy-run-and-debug-your-linux-project.md)
+- [Configure CMake debugging sessions](../build/configure-cmake-debugging-sessions.md)
\ No newline at end of file
diff --git a/docs/linux/create-a-new-linux-project.md b/docs/linux/create-a-new-linux-project.md
index 7002e23eef..20a574b860 100644
--- a/docs/linux/create-a-new-linux-project.md
+++ b/docs/linux/create-a-new-linux-project.md
@@ -2,6 +2,7 @@
 title: "Create a Linux MSBuild C++ project in Visual Studio"
 ms.date: "10/15/2020"
 description: "Create a new MSBuild-based Linux project in Visual Studio."
+ms.topic: how-to
 ---
 # Create a Linux MSBuild C++ project in Visual Studio
 
diff --git a/docs/linux/deploy-run-and-debug-your-linux-project.md b/docs/linux/deploy-run-and-debug-your-linux-project.md
index ab59ede9d1..999f3e19c0 100644
--- a/docs/linux/deploy-run-and-debug-your-linux-project.md
+++ b/docs/linux/deploy-run-and-debug-your-linux-project.md
@@ -2,7 +2,9 @@
 title: "Deploy, run, and debug your Linux MSBuild C++ project in Visual Studio"
 description: "Describes how to compile, execute, and debug code on the remote target from inside a MSBuild-based Linux C++ project in Visual Studio."
 ms.date: 12/5/2024
-ms.custom: intro-deployment
+ms.custom:
+  - intro-deployment
+  - sfi-image-nochange
 ---
 # Deploy, run, and debug your Linux MSBuild project
 
@@ -135,7 +137,6 @@ The **Content** property specifies whether the file will be deployed to the remo
 In some cases, you may require more control over your project's deployment. For example, some files that you want to deploy might be outside of your solution or you want to customize your remote deploy directory per file or directory. In these cases, append the following code block(s) to your .vcxproj file and replace "example.cpp" with the actual file names:
 
 ```xml
-
 <ItemGroup>
    <RemoteDeploy Include="__example.cpp">
 <!-- This is the source Linux machine, can be empty if DeploymentType is LocalRemote -->
@@ -183,4 +184,4 @@ If you want complete control over your deployment, you can append the following
 
 ## See also
 
-[C++ Debugging Properties (Linux C++)](prop-pages/debugging-linux.md)
\ No newline at end of file
+[C++ Debugging Properties (Linux C++)](prop-pages/debugging-linux.md)
diff --git a/docs/linux/download-install-and-setup-the-linux-development-workload.md b/docs/linux/download-install-and-setup-the-linux-development-workload.md
index 7bd57ecbe5..7187b8f44d 100644
--- a/docs/linux/download-install-and-setup-the-linux-development-workload.md
+++ b/docs/linux/download-install-and-setup-the-linux-development-workload.md
@@ -1,14 +1,15 @@
 ---
-title: "Install the C++ Linux workload in Visual Studio"
-description: "How to download, install, and set up the Linux workload for C++ in Visual Studio."
-ms.date: "05/03/2020"
+title: "Install the C++ Linux Workload in Visual Studio"
+description: "Learn how to download, install, and set up the Linux workload for C++ in Visual Studio."
+ms.date: 03/25/2025
+ms.topic: how-to
 ms.custom: intro-installation
 ---
 # Download, install, and set up the Linux workload
 
 ::: moniker range="msvc-140"
 
-Linux projects are supported in Visual Studio 2017 and later. To see the documentation for these versions, set the Visual Studio **Version** selector control for this article to Visual Studio 2017 or Visual Studio 2019. It's found at the top of the table of contents on this page.
+Linux projects are supported in Visual Studio 2017 and later. To see the documentation for these versions, set the Visual Studio **Version** selector for this article to Visual Studio 2017, Visual Studio 2019, or Visual Studio 2022. It's found at the top of the table of contents on this page.
 
 ::: moniker-end
 
@@ -18,7 +19,7 @@ You can use the Visual Studio IDE on Windows to create, edit, and debug C++ proj
 
 You can work on your existing code base that uses CMake without having to convert it to a Visual Studio project. If your code base is cross-platform, you can target both Windows and Linux from within Visual Studio. For example, you can edit, build, and debug your code on Windows using Visual Studio. Then, quickly retarget the project for Linux to build and debug in a Linux environment. Linux header files are automatically copied to your local machine. Visual Studio uses them to provide full IntelliSense support (Statement Completion, Go to Definition, and so on).
 
-For any of these scenarios, the **Linux development with C++** workload is required.
+For any of these scenarios, the **Linux and embedded development with C++** workload is required.
 
 ::: moniker-end
 
@@ -26,25 +27,25 @@ For any of these scenarios, the **Linux development with C++** workload is requi
 
 ## Visual Studio setup
 
-1. Type "Visual Studio Installer" in the Windows search box:
+1. Open the Visual Studio Installer from your Start menu. If you can't find it, type *Visual Studio Installer* in the Windows search box and look for the installer under the **Apps** results.
 
-   ![Screenshot of the Windows search box which contains the text: visual studio installer.](media/visual-studio-installer-search.png)
+    :::image type="content" source="media/visual-studio-installer-search.png" alt-text="Screenshot of the Windows search box that contains the text visual studio installer.":::
 
-1. Look for the installer under the **Apps** results and double-click it. When the installer opens, choose **Modify**, and then click on the **Workloads** tab. Scroll down to **Other toolsets** and select the **Linux development with C++** workload.
+1. When the installer opens, choose **Modify**, and then click on the **Workloads** tab. Scroll down to **Other toolsets** and select the **Linux and embedded development with C++** workload.
 
-   :::image type="complex" source="./media/linuxworkload.png" alt-text="Screenshot highlighting the Visual C++ for Linux Development workload item in Visual Studio Installer.":::
-   The Linux Development workload is selected. The Installation details pane is highlighted, which lists what's included in the workload. Which includes: Visual Studio C++ core features, Windows Universal C runtime, Visual C++ for Linux development. An optional component is also selected: Visual C++ tools for CMake and Linux.
+   :::image type="complex" source="./media/linux-workload.png" alt-text="Screenshot highlighting the Visual C++ for Linux and embedded development workload item in Visual Studio Installer.":::
+   The Linux and embedded development workload is selected. The Installation details pane is highlighted, which lists what's included in the workload. Which includes: Visual Studio C++ core features, Windows Universal C runtime, Visual C++ for Linux development. An optional component is also selected: Visual C++ tools for CMake and Linux.
    :::image-end:::
 
-1. If you're targeting IoT or embedded platforms, go to the **Installation details** pane on the right. Under **Linux development with C++**, expand **Optional Components**, and choose the components you need. CMake support for Linux is selected by default.
+1. If you're targeting IoT or embedded platforms, go to the **Installation details** pane on the right. Under **Linux and embedded development with C++**, expand **Optional Components**, and choose the components you need. CMake support for Linux is selected by default.
 
 1. Click **Modify** to continue with the installation.
 
 ## Options for creating a Linux environment
 
-If you don't already have a Linux machine, you can create a Linux Virtual Machine on Azure. For more information, see [Quickstart: Create a Linux virtual machine in the Azure portal](/azure/virtual-machines/linux/quick-create-portal).
+If you don't already have a Linux machine, you can create a Linux virtual machine on Azure. For more information, see [Quickstart: Create a Linux virtual machine in the Azure portal](/azure/virtual-machines/linux/quick-create-portal).
 
-On Windows 10 and later, you can install and target your favorite Linux distro on the Windows Subsystem for Linux (WSL). For more information, see [Windows Subsystem for Linux Installation Guide for Windows 10](/windows/wsl/install-win10). If you're unable to access the Windows Store, you can [manually download the WSL distro packages](/windows/wsl/install-manual). WSL is a convenient console environment, but it's not recommended for graphical applications.
+On Windows 10 and later, you can install and target your favorite Linux distro on the Windows Subsystem for Linux (WSL). For more information, see [How to install Linux on Windows with WSL](/windows/wsl/install). If you're unable to access the Windows Store, you can [manually download the WSL distro packages](/windows/wsl/install-manual). WSL is a convenient console environment, but it's not recommended for graphical applications.
 
 ::: moniker-end
 
@@ -103,7 +104,7 @@ The target Linux system must have **openssh-server**, **g++**, **gdb**, and **ma
 
    You might be prompted for your root password to run the `sudo` command. If so, enter it and continue. Once complete, the required services and tools are installed.
 
-1. Ensure the ssh service is running on your Linux computer by running:
+1. Ensure the ssh service is running on your Linux computer:
 
    ```bash
    sudo service ssh start
@@ -141,7 +142,7 @@ The target machine running Fedora uses the **dnf** package installer. To downloa
 
    You might be prompted for your root password to run the sudo command. If so, enter it and continue. Once complete, the required services and tools are installed.
 
-1. Ensure the ssh service is running on your Linux computer by running:
+1. Ensure the ssh service is running on your Linux computer:
 
    ```bash
    sudo systemctl start sshd
@@ -149,11 +150,9 @@ The target machine running Fedora uses the **dnf** package installer. To downloa
 
    This command starts the service and runs it in the background, ready to accept connections.
 
-## Next Steps
+## Related content
 
-You're now ready to create or open a Linux project and configure it to run on the target system. For more information, see:
-
-- [Create a new Linux MSBuild C++ project](create-a-new-linux-project.md)
-- [Configure a Linux CMake project](cmake-linux-project.md)
+- [Create a Linux MSBuild C++ project in Visual Studio](create-a-new-linux-project.md)
+- [Create a CMake Linux project in Visual Studio](cmake-linux-project.md)
 
 ::: moniker-end
diff --git a/docs/linux/linux-asan-configuration.md b/docs/linux/linux-asan-configuration.md
index 115a3a94c1..11c959116f 100644
--- a/docs/linux/linux-asan-configuration.md
+++ b/docs/linux/linux-asan-configuration.md
@@ -2,6 +2,7 @@
 title: "Configure Linux projects to use Address Sanitizer"
 description: "Describes how to configure C++ Linux projects in Visual Studio to use Address Sanitizer."
 ms.date: "10/7/2020"
+ms.topic: how-to
 ---
 # Configure Linux projects to use Address Sanitizer
 
diff --git a/docs/linux/media/linux-workload.png b/docs/linux/media/linux-workload.png
new file mode 100644
index 0000000000..8a8baa1142
Binary files /dev/null and b/docs/linux/media/linux-workload.png differ
diff --git a/docs/linux/media/linuxworkload.png b/docs/linux/media/linuxworkload.png
deleted file mode 100644
index 5904de11ec..0000000000
Binary files a/docs/linux/media/linuxworkload.png and /dev/null differ
diff --git a/docs/linux/media/remote-file-explorer-download.png b/docs/linux/media/remote-file-explorer-download.png
new file mode 100644
index 0000000000..befc41cb08
Binary files /dev/null and b/docs/linux/media/remote-file-explorer-download.png differ
diff --git a/docs/linux/media/remote-file-explorer-menu-item.png b/docs/linux/media/remote-file-explorer-menu-item.png
new file mode 100644
index 0000000000..a118df5a61
Binary files /dev/null and b/docs/linux/media/remote-file-explorer-menu-item.png differ
diff --git a/docs/linux/media/remote-file-explorer-progress.png b/docs/linux/media/remote-file-explorer-progress.png
new file mode 100644
index 0000000000..95e524bf70
Binary files /dev/null and b/docs/linux/media/remote-file-explorer-progress.png differ
diff --git a/docs/linux/media/remote-file-explorer-toolbar.png b/docs/linux/media/remote-file-explorer-toolbar.png
new file mode 100644
index 0000000000..16ea87e721
Binary files /dev/null and b/docs/linux/media/remote-file-explorer-toolbar.png differ
diff --git a/docs/linux/media/remote-file-explorer-upload.png b/docs/linux/media/remote-file-explorer-upload.png
new file mode 100644
index 0000000000..062b589e60
Binary files /dev/null and b/docs/linux/media/remote-file-explorer-upload.png differ
diff --git a/docs/linux/media/remote-file-explorer.png b/docs/linux/media/remote-file-explorer.png
new file mode 100644
index 0000000000..db9ab3b222
Binary files /dev/null and b/docs/linux/media/remote-file-explorer.png differ
diff --git a/docs/linux/media/vs2019-debugger-settings.png b/docs/linux/media/vs2019-debugger-settings.png
index 43d7f8787b..676aa732cb 100644
Binary files a/docs/linux/media/vs2019-debugger-settings.png and b/docs/linux/media/vs2019-debugger-settings.png differ
diff --git a/docs/linux/remote-file-explorer.md b/docs/linux/remote-file-explorer.md
new file mode 100644
index 0000000000..2f4ca5327e
--- /dev/null
+++ b/docs/linux/remote-file-explorer.md
@@ -0,0 +1,112 @@
+---
+title: "Remote file explorer"
+description: "Learn how to use Remote File Explorer to view, upload, and download files on a remote machine form within Visual Studio."
+ms.topic: how-to
+ms.date: 06/02/2025
+---
+# Remote File Explorer
+
+Learn how to use **Remote File Explorer** to view, upload, and download files on a remote machine from Visual Studio. With **Remote File Explorer**, perform common file operations such as:
+
+- Upload files from your local machine to a remote machine
+- Download files from a remote machine to your local machine
+- Create folders on a remote machine
+- Delete files and folders on a remote machine
+- Rename files and folders on a remote machine
+- Search for files and folders on a remote machine
+
+## Prerequisites
+
+Visual Studio version 17.6 or later.
+
+Ensure that the **Linux and embedded development with C++** workload is installed. Run the Visual Studio Installer and ensure that the **Linux and embedded development with C++** workload is selected. Also ensure that the **Remote File Explorer for Linux** component is selected, and update your installation if necessary.
+
+:::image type="content" source="media/linux-workload.png" alt-text="Screenshot of the Visual Studio Installer. The **Linux and embedded development with C++** workload is selected. In the installation details pane, Remote File Explorer for Linux is selected.":::
+
+Install and configure Secure Shell (SSH) on the remote machine. To install SSH on Linux, run these commands on the remote machine:
+
+```bash
+sudo apt update
+sudo apt install openssh-server
+sudo systemctl start ssh
+sudo systemctl status ssh
+```
+
+## View and edit files on a remote machine
+
+In these examples, the remote machine is a Windows Subsystem for Linux instance running on localhost port 22. The project is a new CMake project created in Visual Studio. The sample project is on the remote machine in the `C:\Users\{username}\projects\` folder.
+
+To open the **Remote File Explorer** in Visual Studio, choose **View** > **Other Windows** > **Remote File Explorer**.
+
+:::image type="content" source="media/remote-file-explorer-menu-item.png" alt-text="Screenshot of the Visual Studio View menu. Remote File Explorer is highlighted.":::
+
+The **Remote File Explorer** window opens:
+
+:::image type="content" source="media/remote-file-explorer.png" alt-text="Screenshot of the Remote File Explorer. The folder system on the remote machine is visible.":::
+
+If you see a message to select or create a new connection in the **Connection Manager**, ensure that the SSH server is running on the remote machine. If your remote machine is running on Windows Subsystem for Linux (WSL), ensure that the WSL instance is running. Make sure the Visual Studio debug target dropdown is set to the remote instance. To connect to a different remote machine, in the **Remote File Explorer** window's **Select the host target** dropdown, select the remote target. It may appear in a form such as `username@hostname:port`. For example, `username@localhost:22`. You can also select **Add new connection** to add a new connection to the **Connection Manager**. For more information, see [Connection manager](connect-to-your-remote-linux-computer.md).
+
+Open and edit files directly from the **Remote File Explorer**. To open a file, double-click the file in the **Remote File Explorer** window. The file opens in the editor window. You can also right-click the file and select **Open** from the context menu or press **Ctrl+Enter**. When you save the file, the changes are saved directly to the remote machine.
+
+## Upload files to a remote machine
+
+To upload files or directories to the remote machine, right-click the folder in the **Remote File Explorer** window where you want to upload files, and select **Upload**.
+
+:::image type="content" source="media/remote-file-explorer-upload.png" alt-text="Screenshot of the Remote File Explorer showing the Upload a directory and Upload files menu options.":::
+
+Use the folder explorer window that opens to select the file or folder you want to upload. You can drag and drop files from your local machine onto the **Remote File Explorer** window. Alternatively, use the **Upload Files** or **Upload Folder** buttons to choose the items to upload:
+
+## Download files from a remote machine
+
+To download files or directories from the remote machine, right-click the folder or file in the **Remote File Explorer** window that you want to download and select **Download**.
+
+:::image type="content" source="media/remote-file-explorer-download.png" alt-text="Screenshot of the Remote File Explorer displaying the menu option: Download 'asset.txt'.":::
+
+Use the folder explorer window that opens to select where to download the file or folder. You can also use the **Download Item** button to choose the item you want to download.
+
+## Monitor and cancel file operations
+
+Monitor the progress of uploading or downloading items in the status window at the bottom of the **Remote File Explorer** window. Select the **Cancel** button to stop the operation.
+
+:::image type="content" source="media/remote-file-explorer-progress.png" alt-text="Screenshot of the Remote File Explorer showing the progress indicator. The Cancel button is highlighted.":::
+
+## Other file operations
+
+Rename files and folders, create new folders, delete files and folders, and search for files and folders.
+
+- Rename a file or folder: right-click the file or folder and select **Rename** from the context menu, or select the rename button on the toolbar. The filename becomes editable. Type the new name for the item and press **Enter**.
+- Create a new folder: right-click in the **Remote File Explorer** window and select **New Folder**. Enter a name for the new folder and press **Enter**.
+- Delete a file or folder: right-click the file or folder and select **Delete** from the context menu, or select the delete button on the toolbar. Confirm the deletion in the dialog that appears. Deleting files or folders from the remote machine is a permanent action and can't be undone.
+- Refresh the view: right-click in the **Remote File Explorer** window and select **Refresh** from the context menu, or select the refresh button on the toolbar, or press **F5**. It only refreshes the view of what is selected. If you have a folder selected, it refreshes the view of that folder. If you have a file selected, it refreshes the view of that file.
+- Search for files: enter text in the search box at the top of the **Remote File Explorer** window to find folders or files. The search is case-insensitive and searches all files and folders under the selected item. If a folder is selected, it searches all files and folders in that folder. If a file is selected, it searches all files and folders in the same directory as that file.
+
+## Remote File Explorer toolbar buttons
+
+The **Remote File Explorer** toolbar lets you access remote file operations:
+
+:::image type="content" source="media/remote-file-explorer-toolbar.png" alt-text="Screenshot of the Remote File Explorer toolbar." :::
+
+The highlighted buttons are, from left to right:
+
+- **+**: Create a new Remote Explorer window.
+- **Home**: Go to the `$HOME` directory of the currently signed-in user on the remote machine.
+- **Settings**: Open the settings for the **Remote File Explorer**.
+- **Upload Files**: Upload files from your local machine to the remote machine.
+- **Upload Folder**: Upload a folder from your local machine to the remote machine.
+- **Download Item**: Download a file or folder from the remote machine to your local machine.
+- **Refresh Item**: Refresh the view of the selected item.
+- **Rename Item**: Rename a file or folder on the remote machine.
+- **Delete Item**: Delete a file or folder on the remote machine.
+- **Search**: Search for files or folders on the remote machine.
+
+## Remote File Explorer settings
+
+To change the settings for the **Remote File Explorer**, select the **Settings** button on the toolbar. The **Remote File Explorer Settings** dialog opens with the following option:
+
+- **Enable Dynamic File Icons for Extension-less Files**: Shows icons based on file type by checking the mime-type. Useful for Linux files without extensions so that a correct file icon is shown instead of a generic document icon. May impact performance.
+
+## See also
+
+- [The Remote File Explorer tool window of Visual Studio (video)](/shows/pure-virtual-cpp-2023/the-remote-file-explorer-tool-window-of-visual-studio)
+- [Connection manager](connect-to-your-remote-linux-computer.md)
+- [Create a CMake Linux project in Visual Studio](cmake-linux-project.md)
\ No newline at end of file
diff --git a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md
index fbfacf7a4f..aa4ba4bf66 100644
--- a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md
+++ b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md
@@ -2,6 +2,8 @@
 title: "Set up FIPS-compliant secure remote Linux development"
 description: "How to set up a FIPS-compliant cryptographic connection between Visual Studio and a Linux machine for remote development."
 ms.date: 07/06/2022
+ms.topic: how-to
+ms.custom: sfi-image-nochange
 ---
 # Set up FIPS-compliant secure remote Linux development
 
@@ -128,7 +130,7 @@ You've successfully set up `ssh`, created and deployed encryption keys, and test
 
    For more information on troubleshooting your connection, see [Connect to your remote Linux computer](connect-to-your-remote-linux-computer.md).
 
-## Command-line utility for the Connection Manager  
+## Command-line utility for the Connection Manager
 
 **Visual Studio 2019 version 16.5 or later**: `ConnectionManager.exe` is a command-line utility to manage remote development connections outside of Visual Studio. It's useful for tasks such as provisioning a new development machine. Or, you can use it to set up Visual Studio for continuous integration. For examples and a complete reference to the ConnectionManager command, see [ConnectionManager reference](connectionmanager-reference.md).  
 
@@ -159,7 +161,7 @@ Microsoft blog post on [Why We're Not Recommending "FIPS mode" Anymore](https://
 
 [SSH Server Configuration](https://www.ssh.com/ssh/sshd_config)
 
-## See Also
+## See also
 
 [Configure a Linux project](configure-a-linux-project.md)\
 [Configure a Linux CMake project](cmake-linux-project.md)\
diff --git a/docs/linux/toc.yml b/docs/linux/toc.yml
index 06e6695271..34c5c53245 100644
--- a/docs/linux/toc.yml
+++ b/docs/linux/toc.yml
@@ -7,6 +7,8 @@ items:
   items:
     - name: Connect to your remote Linux computer
       href: ../linux/connect-to-your-remote-linux-computer.md
+    - name: Remote File Explorer
+      href: ../linux/remote-file-explorer.md
     - name: Set up FIPS-compliant secure remote Linux development
       href: ../linux/set-up-fips-compliant-secure-remote-linux-development.md
     - name: ConnectionManager reference
diff --git a/docs/mfc/accessing-all-members-of-a-collection.md b/docs/mfc/accessing-all-members-of-a-collection.md
index df7b900c87..0cd3949941 100644
--- a/docs/mfc/accessing-all-members-of-a-collection.md
+++ b/docs/mfc/accessing-all-members-of-a-collection.md
@@ -4,6 +4,7 @@ title: "Accessing All Members of a Collection"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC, collections", "enumerations [MFC]", "enumerating collections [MFC]", "collections [MFC], accessing", "collection classes [MFC]", ", ", ", ", ", ", ", ", ", ", ", ", ", "]
 ms.assetid: 7bbae518-062e-4393-81f9-b22abd2e5f59
+ms.topic: how-to
 ---
 # Accessing All Members of a Collection
 
diff --git a/docs/mfc/accessing-file-status.md b/docs/mfc/accessing-file-status.md
index e6b649aa51..f582a6558b 100644
--- a/docs/mfc/accessing-file-status.md
+++ b/docs/mfc/accessing-file-status.md
@@ -4,6 +4,7 @@ title: "Accessing File Status"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["files [MFC], status information", "examples [MFC], file status", "files [MFC], accessing", "file status [MFC]", "status of files [MFC]"]
 ms.assetid: 1b8891d6-eb0f-4037-a837-4928fe595222
+ms.topic: how-to
 ---
 # Accessing File Status
 
diff --git a/docs/mfc/accessing-run-time-class-information.md b/docs/mfc/accessing-run-time-class-information.md
index c8891bb05c..e0981fe062 100644
--- a/docs/mfc/accessing-run-time-class-information.md
+++ b/docs/mfc/accessing-run-time-class-information.md
@@ -4,6 +4,7 @@ title: "Accessing Run-Time Class Information"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CObject class [MFC], and RTTI", "CObject class [MFC], using IsKindOf method [MFC]", "run time [MFC], class information", "RUNTIME_CLASS macro [MFC]", "CObject class [MFC], using RUNTIME_CLASS macro [MFC]", "RTTI compiler option [MFC]", "CObject class [MFC], accessing run-time class information", "run time [MFC]", "IsKindOf method method [MFC]", "run-time class [MFC], accessing information", "classes [MFC], run-time class information", "run-time class [MFC]", "RUNTIME_CLASS macro, using"]
 ms.assetid: 3445a9af-0bd6-4496-95c3-aa59b964570b
+ms.topic: how-to
 ---
 # Accessing Run-Time Class Information
 
diff --git a/docs/mfc/accessing-the-embedded-month-calendar-control.md b/docs/mfc/accessing-the-embedded-month-calendar-control.md
index 05c1905847..c8c0908476 100644
--- a/docs/mfc/accessing-the-embedded-month-calendar-control.md
+++ b/docs/mfc/accessing-the-embedded-month-calendar-control.md
@@ -4,6 +4,7 @@ title: "Accessing the Embedded Month Calendar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DateTimePicker control [MFC], accessing month calendar", "CDateTimeCtrl class [MFC], accessing embedded control", "month calendar controls [MFC], embedded in date/time picker", "CMonthCalCtrl class [MFC], changing the font", "month calendar controls [MFC], changing the font", "DateTimePicker control [MFC]"]
 ms.assetid: 355e97ed-cf81-4df3-a2f8-9ddbbde93227
+ms.topic: concept-article
 ---
 # Accessing the Embedded Month Calendar Control
 
diff --git a/docs/mfc/activation-verbs.md b/docs/mfc/activation-verbs.md
index 5c97e74cb5..31e35ddfed 100644
--- a/docs/mfc/activation-verbs.md
+++ b/docs/mfc/activation-verbs.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Activation: Verbs"
 title: "Activation: Verbs"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["verbs [MFC]", "OLE [MFC], activation", "edit verb [MFC]", "activation [MFC], verbs", "OLE [MFC], editing", "Primary verb [MFC]", "OLE activation {MFC]"]
-ms.assetid: eb56ff23-1de8-43ad-abeb-dc7346ba7b70
+description: "Learn more about: Activation: Verbs"
+ms.date: 11/04/2016
+helpviewer_keywords: ["verbs [MFC]", "OLE [MFC], activation", "edit verb [MFC]", "activation [MFC], verbs", "OLE [MFC], editing", "Primary verb [MFC]", "OLE activation [MFC]"]
 ---
 # Activation: Verbs
 
diff --git a/docs/mfc/adding-columns-to-the-control-report-view.md b/docs/mfc/adding-columns-to-the-control-report-view.md
index a2bf092bca..829a912284 100644
--- a/docs/mfc/adding-columns-to-the-control-report-view.md
+++ b/docs/mfc/adding-columns-to-the-control-report-view.md
@@ -4,6 +4,7 @@ title: "Adding Columns to the Control (Report View)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CListCtrl class [MFC], adding columns", "report view in CListCtrl class [MFC]", "views [MFC], report", "columns [MFC], adding to CListCtrl", "CListCtrl class [MFC], report view"]
 ms.assetid: 7392c0d7-f8a5-4e7b-9ae7-b53dc9dd80ae
+ms.topic: concept-article
 ---
 # Adding Columns to the Control (Report View)
 
diff --git a/docs/mfc/adding-controls-by-hand.md b/docs/mfc/adding-controls-by-hand.md
index 74ae5dee48..8945ca7e2a 100644
--- a/docs/mfc/adding-controls-by-hand.md
+++ b/docs/mfc/adding-controls-by-hand.md
@@ -4,6 +4,7 @@ title: "Adding Controls By Hand"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Windows common controls [MFC], adding", "dialog box controls [MFC], adding to dialog boxes", "controlling input focus", "input focus control", "focus, controlling input [MFC]", "controls [MFC], adding to dialog boxes", "common controls [MFC], adding"]
 ms.assetid: bc843e59-0c51-4b5b-8bf2-343f716469d2
+ms.topic: concept-article
 ---
 # Adding Controls By Hand
 
diff --git a/docs/mfc/adding-controls-to-a-property-sheet.md b/docs/mfc/adding-controls-to-a-property-sheet.md
index b11b5c5177..f9fd713006 100644
--- a/docs/mfc/adding-controls-to-a-property-sheet.md
+++ b/docs/mfc/adding-controls-to-a-property-sheet.md
@@ -4,6 +4,7 @@ title: "Adding Controls to a Property Sheet"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [MFC], adding to property sheets", "property sheets, adding controls"]
 ms.assetid: 24ad4c0b-c1db-4850-b9f0-34aae8d74571
+ms.topic: concept-article
 ---
 # Adding Controls to a Property Sheet
 
diff --git a/docs/mfc/adding-items-to-the-control.md b/docs/mfc/adding-items-to-the-control.md
index 4f98db97a0..9019df5d8f 100644
--- a/docs/mfc/adding-items-to-the-control.md
+++ b/docs/mfc/adding-items-to-the-control.md
@@ -4,6 +4,7 @@ title: "Adding Items to the Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CListCtrl class [MFC], adding items"]
 ms.assetid: 715994bd-340d-4ad2-9882-411654137830
+ms.topic: concept-article
 ---
 # Adding Items to the Control
 
diff --git a/docs/mfc/adding-items-to-the-header-control.md b/docs/mfc/adding-items-to-the-header-control.md
index 6b7b746997..ad9b3d20dc 100644
--- a/docs/mfc/adding-items-to-the-header-control.md
+++ b/docs/mfc/adding-items-to-the-header-control.md
@@ -4,6 +4,7 @@ title: "Adding Items to the Header Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [MFC], header", "CHeaderCtrl class [MFC], adding items", "header controls [MFC], adding items to"]
 ms.assetid: 2e9a28b1-7302-4a93-8037-c5a4183e589a
+ms.topic: how-to
 ---
 # Adding Items to the Header Control
 
diff --git a/docs/mfc/adding-multiple-views-to-a-single-document.md b/docs/mfc/adding-multiple-views-to-a-single-document.md
index 1f808c9a0e..b8e7fd427b 100644
--- a/docs/mfc/adding-multiple-views-to-a-single-document.md
+++ b/docs/mfc/adding-multiple-views-to-a-single-document.md
@@ -4,6 +4,7 @@ title: "Adding Multiple Views to a Single Document"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["multiple views [MFC], SDI applications", "documents [MFC], multiple views", "single document interface (SDI), adding views", "views [MFC], SDI applications"]
 ms.assetid: 86d0c134-01d5-429c-b672-36cfb956dc01
+ms.topic: concept-article
 ---
 # Adding Multiple Views to a Single Document
 
diff --git a/docs/mfc/adding-tabs-to-a-tab-control.md b/docs/mfc/adding-tabs-to-a-tab-control.md
index c0d9350908..b4312763c3 100644
--- a/docs/mfc/adding-tabs-to-a-tab-control.md
+++ b/docs/mfc/adding-tabs-to-a-tab-control.md
@@ -4,6 +4,7 @@ title: "Adding Tabs to a Tab Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["tab controls [MFC], adding tabs", "putting tabs on CTabCtrls [MFC]", "CTabCtrl class [MFC], adding tabs", "tabs [MFC], adding to CTabCtrl class [MFC]"]
 ms.assetid: 7f3d9340-e3c7-4c71-9912-be57534ecc78
+ms.topic: how-to
 ---
 # Adding Tabs to a Tab Control
 
diff --git a/docs/mfc/allocating-and-deallocating-window-memory.md b/docs/mfc/allocating-and-deallocating-window-memory.md
index f399215686..5e5645446a 100644
--- a/docs/mfc/allocating-and-deallocating-window-memory.md
+++ b/docs/mfc/allocating-and-deallocating-window-memory.md
@@ -4,6 +4,7 @@ title: "Allocating and Deallocating Window Memory"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["memory allocation, window objects", "memory deallocation", "storage for window objects [MFC]", "memory deallocation, window memory", "window objects [MFC], deallocating memory for", "storage for window objects [MFC], allocating"]
 ms.assetid: 7c962539-8461-4846-b5ca-fe3b15c313dc
+ms.topic: concept-article
 ---
 # Allocating and Deallocating Window Memory
 
diff --git a/docs/mfc/allocating-gdi-resources.md b/docs/mfc/allocating-gdi-resources.md
index 1a1e83e823..d9b1a73945 100644
--- a/docs/mfc/allocating-gdi-resources.md
+++ b/docs/mfc/allocating-gdi-resources.md
@@ -4,6 +4,7 @@ title: "Allocating GDI Resources"
 ms.date: "06/03/2019"
 helpviewer_keywords: ["resources [MFC], printing", "GDI objects [MFC], allocating during printing", "printing [MFC], allocating GDI resources"]
 ms.assetid: cef7e94d-5a27-4aea-a9ee-8369fc895d3a
+ms.topic: concept-article
 ---
 # Allocating GDI Resources
 
diff --git a/docs/mfc/build-requirements-for-windows-vista-common-controls.md b/docs/mfc/build-requirements-for-windows-vista-common-controls.md
index 57617f2e26..1120d633c7 100644
--- a/docs/mfc/build-requirements-for-windows-vista-common-controls.md
+++ b/docs/mfc/build-requirements-for-windows-vista-common-controls.md
@@ -4,6 +4,7 @@ title: "Build Requirements for Windows Common Controls"
 ms.date: "08/19/2019"
 helpviewer_keywords: ["Common Controls (MFC), build requirements", "Common Controls (MFC)"]
 ms.assetid: 025f7d55-55a2-4dcd-8f62-02424e3dcc04
+ms.topic: how-to
 ---
 # Build Requirements for Windows Common Controls
 
diff --git a/docs/mfc/building-on-the-framework.md b/docs/mfc/building-on-the-framework.md
index 1cd5cb0989..7b339c588e 100644
--- a/docs/mfc/building-on-the-framework.md
+++ b/docs/mfc/building-on-the-framework.md
@@ -4,6 +4,7 @@ title: "Building on the Framework"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["application-specific classes [MFC]", "application framework [MFC], building applications", "applications [MFC]", "MFC, application development"]
 ms.assetid: 883f0f19-866f-4221-8a3d-5607941dc8d0
+ms.topic: concept-article
 ---
 # Building on the Framework
 
diff --git a/docs/mfc/bypassing-the-serialization-mechanism.md b/docs/mfc/bypassing-the-serialization-mechanism.md
index ff376ebe45..045392c70c 100644
--- a/docs/mfc/bypassing-the-serialization-mechanism.md
+++ b/docs/mfc/bypassing-the-serialization-mechanism.md
@@ -4,6 +4,7 @@ title: "Bypassing the Serialization Mechanism"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["archive objects [MFC]", "bypassing serialization", "archives [MFC], serialization", "serialization [MFC], bypassing", "archives [MFC]", "serialization [MFC], role of framework", "serialization [MFC], overriding"]
 ms.assetid: 48d4a279-b51c-4ba5-81cd-ed043312b582
+ms.topic: concept-article
 ---
 # Bypassing the Serialization Mechanism
 
diff --git a/docs/mfc/changing-list-control-styles.md b/docs/mfc/changing-list-control-styles.md
index 37be34f104..3f64060811 100644
--- a/docs/mfc/changing-list-control-styles.md
+++ b/docs/mfc/changing-list-control-styles.md
@@ -4,6 +4,7 @@ title: "Changing List Control Styles"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["styles [MFC], CListCtrl", "CListCtrl class [MFC], styles", "CListCtrl class [MFC], changing styles"]
 ms.assetid: be74a005-0795-417c-9056-f6342aa74b26
+ms.topic: concept-article
 ---
 # Changing List Control Styles
 
diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md
index 772b7b1a29..eb6d87a53c 100644
--- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md
+++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md
@@ -4,6 +4,7 @@ title: "Changing the Styles of a Window Created by MFC"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["window styles [MFC]", "WS_OVERLAPPEDWINDOW macro [MFC]", "single document interface (SDI), changing window attributes", "MDI [MFC], window styles", "windows [MFC], MFC", "child windows [MFC], styles", "MFC, windows", "CFrameWnd class [MFC], window styles", "CREATESTRUCT macro [MFC]", "CMDIChildWnd class [MFC], changing window styles", "multidocument interface style", "PreCreateWindow method [MFC], window styles", "single document interface (SDI), style", "default window style", "defaults [MFC], window style", "PreCreateWindow method [MFC], changing window styles", "CMainFrame class [MFC]", "styles [MFC], windows"]
 ms.assetid: 77fa4f03-96b4-4687-9ade-41e46f7e4b0a
+ms.topic: concept-article
 ---
 # Changing the Styles of a Window Created by MFC
 
diff --git a/docs/mfc/class-library-overview.md b/docs/mfc/class-library-overview.md
index f30e76f9ec..514443b118 100644
--- a/docs/mfc/class-library-overview.md
+++ b/docs/mfc/class-library-overview.md
@@ -5,6 +5,7 @@ ms.date: "09/17/2019"
 f1_keywords: ["vc.classes.mfc"]
 helpviewer_keywords: ["grouping MFC classes", "MFC, class library", "classes [MFC], MFC", "class libraries, MFC", "class libraries"]
 ms.assetid: 9b0e3152-ac39-4f52-91b4-f20aa3a674aa
+ms.topic: concept-article
 ---
 # Class Library Overview
 
diff --git a/docs/mfc/cleaning-up-documents-and-views.md b/docs/mfc/cleaning-up-documents-and-views.md
index 9903e1e53d..ff3d94b0ca 100644
--- a/docs/mfc/cleaning-up-documents-and-views.md
+++ b/docs/mfc/cleaning-up-documents-and-views.md
@@ -4,6 +4,7 @@ title: "Cleaning Up Documents and Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["views [MFC], cleaning up", "documents [MFC], cleaning up", "documents [MFC], closing"]
 ms.assetid: 0c454db2-3644-434d-9e53-8108a7aedfe1
+ms.topic: concept-article
 ---
 # Cleaning Up Documents and Views
 
diff --git a/docs/mfc/closing-files.md b/docs/mfc/closing-files.md
index 19a3e35aa5..2e72fde16a 100644
--- a/docs/mfc/closing-files.md
+++ b/docs/mfc/closing-files.md
@@ -4,6 +4,7 @@ title: "Closing Files"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC, file operations", "files [MFC], closing"]
 ms.assetid: 8415a3a8-3c75-45b0-ac2a-d5385f49bdb3
+ms.topic: how-to
 ---
 # Closing Files
 
diff --git a/docs/mfc/closing-the-dialog-box.md b/docs/mfc/closing-the-dialog-box.md
index aa6b937c30..38ab0e8290 100644
--- a/docs/mfc/closing-the-dialog-box.md
+++ b/docs/mfc/closing-the-dialog-box.md
@@ -4,6 +4,7 @@ title: "Closing the Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC dialog boxes [MFC], closing", "dialog boxes [MFC], closing"]
 ms.assetid: 946f5675-c482-46a4-a5dd-34fe138ffae5
+ms.topic: concept-article
 ---
 # Closing the Dialog Box
 
diff --git a/docs/mfc/cobject-class-frequently-asked-questions.md b/docs/mfc/cobject-class-frequently-asked-questions.md
index 564c284e61..2689374466 100644
--- a/docs/mfc/cobject-class-frequently-asked-questions.md
+++ b/docs/mfc/cobject-class-frequently-asked-questions.md
@@ -4,6 +4,7 @@ title: "CObject Class: Frequently Asked Questions"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CObject class [MFC], FAQ"]
 ms.assetid: 809a8b99-a2f8-4e16-8b4b-023c94f4125c
+ms.topic: faq
 ---
 # CObject Class: Frequently Asked Questions
 
diff --git a/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp b/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp
index 240dd065e7..fbc30334bf 100644
--- a/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp
+++ b/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp
@@ -1,4 +1,3 @@
-
 //create and initialize the font to be used
 LOGFONT logFont = {0};
 logFont.lfHeight = -12;
diff --git a/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp b/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp
index 5bb7063b2a..a54aeb9049 100644
--- a/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp
+++ b/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp
@@ -1,4 +1,3 @@
-
 // Create the bitmap button (must include the BS_OWNERDRAW style).
 pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                   CRect(10, 10, 100, 100), pParentWnd, 1);
diff --git a/docs/mfc/codesnippet/CPP/cdialog-class_2.cpp b/docs/mfc/codesnippet/CPP/cdialog-class_2.cpp
index 3c7a6357e1..e3100864eb 100644
--- a/docs/mfc/codesnippet/CPP/cdialog-class_2.cpp
+++ b/docs/mfc/codesnippet/CPP/cdialog-class_2.cpp
@@ -26,5 +26,5 @@ void CMyDialog::OnMenuShowAboutDialog()
    default:
       // Do something
       break;
-   };
+   }
 }
\ No newline at end of file
diff --git a/docs/mfc/codesnippet/CPP/cmultidoctemplate-class_2.cpp b/docs/mfc/codesnippet/CPP/cmultidoctemplate-class_2.cpp
index 0583ae03fb..63f44247ad 100644
--- a/docs/mfc/codesnippet/CPP/cmultidoctemplate-class_2.cpp
+++ b/docs/mfc/codesnippet/CPP/cmultidoctemplate-class_2.cpp
@@ -23,7 +23,7 @@ return FALSE;
 // After the following call, MFC is aware of the doc
 // template and will free it when the application is
 // shut down. The doc templates known to MFC will
-// automatically be used when CWinApp:OnFileOpen()
+// automatically be used when CWinApp::OnFileOpen()
 // or CWinApp::OnFileNew() are called.
 
 AddDocTemplate(pDocTemplate);
\ No newline at end of file
diff --git a/docs/mfc/codesnippet/CPP/connection-maps_3.cpp b/docs/mfc/codesnippet/CPP/connection-maps_3.cpp
index cffe2a236b..cab527dac6 100644
--- a/docs/mfc/codesnippet/CPP/connection-maps_3.cpp
+++ b/docs/mfc/codesnippet/CPP/connection-maps_3.cpp
@@ -10,4 +10,4 @@ IUnknown* pUnkSink = mysink.GetInterface(&iid);
 //pUnkSrc is IUnknown of server obtained by CoCreateInstance().
 //dwCookie is a cookie identifying the connection, and is needed
 //to terminate this connection.
-AfxConnectionAdvise(pUnkSrc, IID_ISampleSink, pUnkSink, FALSE, &dwCookie);
\ No newline at end of file
+AfxConnectionAdvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, &dwCookie);
\ No newline at end of file
diff --git a/docs/mfc/codesnippet/CPP/connection-maps_4.cpp b/docs/mfc/codesnippet/CPP/connection-maps_4.cpp
index 7fd1ae018a..8e5eed54a3 100644
--- a/docs/mfc/codesnippet/CPP/connection-maps_4.cpp
+++ b/docs/mfc/codesnippet/CPP/connection-maps_4.cpp
@@ -6,4 +6,4 @@ IUnknown* pUnkSink = mysink.GetInterface(&iid);
 //Terminate a connection between source and sink.
 //pUnkSrc is IUnknown of server obtained by CoCreateInstance().
 //dwCookie is a value obtained through AfxConnectionAdvise().
-AfxConnectionUnadvise(pUnkSrc, IID_ISampleSink, pUnkSink, FALSE, dwCookie);
\ No newline at end of file
+AfxConnectionUnadvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, dwCookie);
\ No newline at end of file
diff --git a/docs/mfc/codesnippet/CPP/csingledoctemplate-class_2.cpp b/docs/mfc/codesnippet/CPP/csingledoctemplate-class_2.cpp
index e811430289..bcd02c9f95 100644
--- a/docs/mfc/codesnippet/CPP/csingledoctemplate-class_2.cpp
+++ b/docs/mfc/codesnippet/CPP/csingledoctemplate-class_2.cpp
@@ -25,6 +25,6 @@ return FALSE;
 // After the following call, MFC is aware of the doc
 // template and will free it when the application is
 // shut down. The doc templates known to MFC will
-// automatically be used when CWinApp:OnFileOpen() or 
+// automatically be used when CWinApp::OnFileOpen() or 
 // CWinApp::OnFileNew() are called.
 AddDocTemplate(pDocTemplate);
\ No newline at end of file
diff --git a/docs/mfc/command-routing-illustration.md b/docs/mfc/command-routing-illustration.md
index 53adb56646..29ae9a7f00 100644
--- a/docs/mfc/command-routing-illustration.md
+++ b/docs/mfc/command-routing-illustration.md
@@ -4,6 +4,7 @@ title: "Command Routing Illustration"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC, command routing", "command handling [MFC], routing commands", "command routing [MFC], OnCmdMsg handler"]
 ms.assetid: 4b7b4741-565f-4878-b076-fd85c670f87f
+ms.topic: how-to
 ---
 # Command Routing Illustration
 
diff --git a/docs/mfc/command-routing.md b/docs/mfc/command-routing.md
index edb23094cd..a3514eb4e2 100644
--- a/docs/mfc/command-routing.md
+++ b/docs/mfc/command-routing.md
@@ -4,6 +4,7 @@ title: "Command Routing"
 ms.date: "09/06/2019"
 helpviewer_keywords: ["MFC, command routing", "command handling [MFC], routing commands", "handlers [MFC]", "handlers, command [MFC]", "command routing"]
 ms.assetid: 9393a956-bdd4-47c5-9013-dbd680433f93
+ms.topic: how-to
 ---
 # Command Routing
 
diff --git a/docs/mfc/communicating-with-a-tree-control.md b/docs/mfc/communicating-with-a-tree-control.md
index 621df475e7..959c9f1fbd 100644
--- a/docs/mfc/communicating-with-a-tree-control.md
+++ b/docs/mfc/communicating-with-a-tree-control.md
@@ -4,6 +4,7 @@ title: "Communicating with a Tree Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["tree controls [MFC], communicating with", "CTreeCtrl class [MFC], calling member functions", "communications, tree controls", "tree controls"]
 ms.assetid: 680ad9ee-b11f-452d-93fa-501ca7d7e069
+ms.topic: concept-article
 ---
 # Communicating with a Tree Control
 
diff --git a/docs/mfc/creating-a-ctoolbarctrl-object.md b/docs/mfc/creating-a-ctoolbarctrl-object.md
index 8e8af2739e..a474106b41 100644
--- a/docs/mfc/creating-a-ctoolbarctrl-object.md
+++ b/docs/mfc/creating-a-ctoolbarctrl-object.md
@@ -4,6 +4,7 @@ title: "Creating a CToolBarCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["toolbar controls [MFC], creating", "CToolBarCtrl class [MFC], creating toolbars"]
 ms.assetid: a4f6bf0c-0195-4dbf-a09e-aee503e19dc3
+ms.topic: how-to
 ---
 # Creating a CToolBarCtrl Object
 
diff --git a/docs/mfc/creating-a-dialog-class-with-code-wizards.md b/docs/mfc/creating-a-dialog-class-with-code-wizards.md
index 372dc65cd7..b57a8a37d9 100644
--- a/docs/mfc/creating-a-dialog-class-with-code-wizards.md
+++ b/docs/mfc/creating-a-dialog-class-with-code-wizards.md
@@ -4,6 +4,7 @@ title: "Creating a Dialog Class with Code Wizards"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["dialog boxes [MFC], creating", "MFC dialog boxes, creating", "code wizards", "dialog classes [MFC], creating"]
 ms.assetid: a7157b9d-f1a8-4381-a4cf-180cd2c7f1b2
+ms.topic: concept-article
 ---
 # Creating a Dialog Class with Code Wizards
 
diff --git a/docs/mfc/creating-a-modeless-property-sheet.md b/docs/mfc/creating-a-modeless-property-sheet.md
index 83f9ef2595..923076c45a 100644
--- a/docs/mfc/creating-a-modeless-property-sheet.md
+++ b/docs/mfc/creating-a-modeless-property-sheet.md
@@ -4,6 +4,7 @@ title: "Creating a Modeless Property Sheet"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["modeless property sheets", "property sheets, modeless", "Create method [MFC], property sheets"]
 ms.assetid: eafd8a92-cc67-4a69-a5fb-742c920d1ae8
+ms.topic: concept-article
 ---
 # Creating a Modeless Property Sheet
 
diff --git a/docs/mfc/creating-a-rebar-control.md b/docs/mfc/creating-a-rebar-control.md
index 8aec855df3..ecbd59c97a 100644
--- a/docs/mfc/creating-a-rebar-control.md
+++ b/docs/mfc/creating-a-rebar-control.md
@@ -4,6 +4,7 @@ title: "Creating a Rebar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["rebar controls [MFC], creating", "CReBarCtrl class [MFC], creating"]
 ms.assetid: 0a012e08-772b-4f6a-af86-7cb651d11d3e
+ms.topic: how-to
 ---
 # Creating a Rebar Control
 
diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md
index f0cd926a64..c1ef6e9ac2 100644
--- a/docs/mfc/creating-an-active-document-container-application.md
+++ b/docs/mfc/creating-an-active-document-container-application.md
@@ -4,6 +4,7 @@ title: "Creating an Active Document Container Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["active documents [MFC], containers", "containers [MFC], active document", "active document containers [MFC], creating", "MFC COM, active document containment", "applications [MFC], active document container"]
 ms.assetid: 14e2d022-a6c5-4249-8712-706b0f4433f7
+ms.topic: how-to
 ---
 # Creating an Active Document Container Application
 
diff --git a/docs/mfc/creating-an-extended-combo-box-control.md b/docs/mfc/creating-an-extended-combo-box-control.md
index 9f266d7516..c39f606ba2 100644
--- a/docs/mfc/creating-an-extended-combo-box-control.md
+++ b/docs/mfc/creating-an-extended-combo-box-control.md
@@ -4,6 +4,7 @@ title: "Creating an Extended Combo Box Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["extended combo boxes", "CComboBoxEx class [MFC], creating extended combo box controls", "extended combo boxes [MFC], creating"]
 ms.assetid: a964267e-97b6-4e77-9f89-55bb5c68913f
+ms.topic: how-to
 ---
 # Creating an Extended Combo Box Control
 
diff --git a/docs/mfc/creating-and-displaying-dialog-boxes.md b/docs/mfc/creating-and-displaying-dialog-boxes.md
index 918e0c938b..233faf62b3 100644
--- a/docs/mfc/creating-and-displaying-dialog-boxes.md
+++ b/docs/mfc/creating-and-displaying-dialog-boxes.md
@@ -4,6 +4,7 @@ title: "Creating and Displaying Dialog Boxes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["modal dialog boxes [MFC], creating", "opening dialog boxes", "modeless dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "MFC dialog boxes [MFC], displaying"]
 ms.assetid: 1c5219ee-8b46-44bc-9708-83705d4f248b
+ms.topic: concept-article
 ---
 # Creating and Displaying Dialog Boxes
 
diff --git a/docs/mfc/creating-document-frame-windows.md b/docs/mfc/creating-document-frame-windows.md
index b79b488838..5c2f43a082 100644
--- a/docs/mfc/creating-document-frame-windows.md
+++ b/docs/mfc/creating-document-frame-windows.md
@@ -4,6 +4,7 @@ title: "Creating Document Frame Windows"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["frame windows [MFC], creating", "document templates [MFC], and document frame windows", "windows [MFC], creating", "runtime, class information", "run-time class [MFC], and document frame window creation", "document frame windows [MFC], creating", "MFC, frame windows"]
 ms.assetid: 8671e239-b76f-4dea-afa8-7024e6e58ff5
+ms.topic: concept-article
 ---
 # Creating Document Frame Windows
 
diff --git a/docs/mfc/creating-modal-dialog-boxes.md b/docs/mfc/creating-modal-dialog-boxes.md
index 269f02812d..6275a7e461 100644
--- a/docs/mfc/creating-modal-dialog-boxes.md
+++ b/docs/mfc/creating-modal-dialog-boxes.md
@@ -4,6 +4,7 @@ title: "Creating Modal Dialog Boxes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["modal dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "MFC dialog boxes [MFC], modal"]
 ms.assetid: 26c7a68c-79f6-4862-a5a8-6024984644d2
+ms.topic: concept-article
 ---
 # Creating Modal Dialog Boxes
 
diff --git a/docs/mfc/creating-modeless-dialog-boxes.md b/docs/mfc/creating-modeless-dialog-boxes.md
index 44fdf5e740..92236e2621 100644
--- a/docs/mfc/creating-modeless-dialog-boxes.md
+++ b/docs/mfc/creating-modeless-dialog-boxes.md
@@ -4,6 +4,7 @@ title: "Creating Modeless Dialog Boxes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC dialog boxes [MFC], modeless", "modeless dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating"]
 ms.assetid: 70d78c7f-3d40-477b-9f78-0f33c359f88b
+ms.topic: concept-article
 ---
 # Creating Modeless Dialog Boxes
 
diff --git a/docs/mfc/creating-new-documents-windows-and-views.md b/docs/mfc/creating-new-documents-windows-and-views.md
index 2137a6f149..c5a9792921 100644
--- a/docs/mfc/creating-new-documents-windows-and-views.md
+++ b/docs/mfc/creating-new-documents-windows-and-views.md
@@ -4,6 +4,7 @@ title: "Creating New Documents, Windows, and Views"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["MDI [MFC], creating windows", "window objects [MFC], creating", "objects [MFC], creating document objects", "MFC default objects", "frame windows [MFC], creating", "windows [MFC], MDI", "MFC, documents", "view objects [MFC], creating", "windows [MFC], creating", "overriding, default view behavior", "views [MFC], initializing", "customizing MFC default objects", "MFC, frame windows", "MFC, views", "MDI [MFC], frame windows", "child windows [MFC], creating MDI", "view objects [MFC]", "document objects [MFC], creating", "MFC default objects [MFC], customizing", "views [MFC], overriding default behavior", "initializing views [MFC]"]
 ms.assetid: 88aa1f5f-2078-4603-b16b-a2b4c7b4a2a3
+ms.topic: concept-article
 ---
 # Creating New Documents, Windows, and Views
 
diff --git a/docs/mfc/creating-stack-and-queue-collections.md b/docs/mfc/creating-stack-and-queue-collections.md
index 36c7c40c71..e0e1c81897 100644
--- a/docs/mfc/creating-stack-and-queue-collections.md
+++ b/docs/mfc/creating-stack-and-queue-collections.md
@@ -4,6 +4,7 @@ title: "Creating Stack and Queue Collections"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC collection classes [MFC], stack collections", "collections, stack", "stack", "collection classes [MFC], creating", "queue collections", "MFC collection classes [MFC], queue collections", "stack collections", "collections, queue"]
 ms.assetid: 3c7bc198-35f0-4fc3-aaed-6005a0f22638
+ms.topic: how-to
 ---
 # Creating Stack and Queue Collections
 
diff --git a/docs/mfc/creating-the-date-and-time-picker-control.md b/docs/mfc/creating-the-date-and-time-picker-control.md
index 7e9b234896..1c30cd048b 100644
--- a/docs/mfc/creating-the-date-and-time-picker-control.md
+++ b/docs/mfc/creating-the-date-and-time-picker-control.md
@@ -4,6 +4,7 @@ title: "Creating the Date and Time Picker Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DateTimePicker control [MFC], creating", "CDateTimeCtrl class [MFC], creating"]
 ms.assetid: 764ec2fb-98cd-478b-a5f2-d63f0bb12279
+ms.topic: how-to
 ---
 # Creating the Date and Time Picker Control
 
diff --git a/docs/mfc/creating-the-dialog-resource.md b/docs/mfc/creating-the-dialog-resource.md
index 7ccf5adb5b..7aa4d5179b 100644
--- a/docs/mfc/creating-the-dialog-resource.md
+++ b/docs/mfc/creating-the-dialog-resource.md
@@ -4,6 +4,7 @@ title: "Creating the Dialog Resource"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["dialog resources", "MFC dialog boxes [MFC], creating", "dialog templates [MFC], creating dialog resource", "templates [MFC], creating", "resources [MFC], creating dialog boxes", "MFC dialog boxes [MFC], dialog resource"]
 ms.assetid: 0b83bd33-14d3-4611-8129-fccdae18053e
+ms.topic: concept-article
 ---
 # Creating the Dialog Resource
 
diff --git a/docs/mfc/creating-the-header-control.md b/docs/mfc/creating-the-header-control.md
index 2afab96c98..e16b83e120 100644
--- a/docs/mfc/creating-the-header-control.md
+++ b/docs/mfc/creating-the-header-control.md
@@ -4,6 +4,7 @@ title: "Creating the Header Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CHeaderCtrl class [MFC], creating", "header controls [MFC], creating"]
 ms.assetid: 7864d9d2-4a2c-4622-b58b-7b110a1e28d2
+ms.topic: how-to
 ---
 # Creating the Header Control
 
diff --git a/docs/mfc/creating-the-image-lists.md b/docs/mfc/creating-the-image-lists.md
index 537f21582c..da8197206e 100644
--- a/docs/mfc/creating-the-image-lists.md
+++ b/docs/mfc/creating-the-image-lists.md
@@ -4,6 +4,7 @@ title: "Creating the Image Lists"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CListCtrl class [MFC], creating image lists for", "image lists [MFC], creating for CListCtrl", "lists [MFC], image"]
 ms.assetid: c2768515-deba-49e8-a6f3-5be6482afb19
+ms.topic: concept-article
 ---
 # Creating the Image Lists
 
diff --git a/docs/mfc/creating-the-list-control.md b/docs/mfc/creating-the-list-control.md
index 3d3ae78237..cd17ed745c 100644
--- a/docs/mfc/creating-the-list-control.md
+++ b/docs/mfc/creating-the-list-control.md
@@ -4,6 +4,7 @@ title: "Creating the List Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CListCtrl class [MFC], creating control", "list controls [MFC]"]
 ms.assetid: a4cb1729-31b6-4d2b-a44b-367474848a39
+ms.topic: how-to
 ---
 # Creating the List Control
 
diff --git a/docs/mfc/creating-the-month-calendar-control.md b/docs/mfc/creating-the-month-calendar-control.md
index 623738f581..21319b9e5b 100644
--- a/docs/mfc/creating-the-month-calendar-control.md
+++ b/docs/mfc/creating-the-month-calendar-control.md
@@ -4,6 +4,7 @@ title: "Creating the Month Calendar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CMonthCalCtrl class [MFC], creating", "month calendar controls [MFC], creating", "month calendar controls [MFC]"]
 ms.assetid: 185cc642-85e9-4365-8a4c-d90b75b010f7
+ms.topic: how-to
 ---
 # Creating the Month Calendar Control
 
diff --git a/docs/mfc/creating-the-tab-control.md b/docs/mfc/creating-the-tab-control.md
index 4cad7fbd53..ec4d8a7626 100644
--- a/docs/mfc/creating-the-tab-control.md
+++ b/docs/mfc/creating-the-tab-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["TCS_EX_REGISTERDROP", "TCS_EX_FLATSEPARATORS"]
 helpviewer_keywords: ["TCS_EX_REGISTERDROP extended style [MFC]", "tab controls [MFC], creating", "CTabCtrl class [MFC], creating", "TCS_EX_FLATSEPARATORS extended style"]
 ms.assetid: 3a9c2d64-f5f4-41ea-84ab-fceb73c3dbdc
+ms.topic: how-to
 ---
 # Creating the Tab Control
 
diff --git a/docs/mfc/creating-windows.md b/docs/mfc/creating-windows.md
index 93dd62fceb..ffa63d22ed 100644
--- a/docs/mfc/creating-windows.md
+++ b/docs/mfc/creating-windows.md
@@ -4,6 +4,7 @@ title: "Creating Windows"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["object creation [MFC], windows", "windows [MFC], creating", "CWnd objects [MFC]", "CWnd objects [MFC], creating"]
 ms.assetid: f5ff91a6-4069-47d7-9177-1e6c80d3792c
+ms.topic: concept-article
 ---
 # Creating Windows
 
diff --git a/docs/mfc/creating-your-dialog-class.md b/docs/mfc/creating-your-dialog-class.md
index 2c750d4504..904e6f4287 100644
--- a/docs/mfc/creating-your-dialog-class.md
+++ b/docs/mfc/creating-your-dialog-class.md
@@ -4,6 +4,7 @@ title: "Creating Your Dialog Class"
 ms.date: "09/06/2019"
 helpviewer_keywords: ["dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "files [MFC], creating", "dialog classes [MFC], Add Class Wizard", "dialog classes [MFC], creating"]
 ms.assetid: d5321741-da41-47a8-bb1c-6a0e8b28c4c1
+ms.topic: concept-article
 ---
 # Creating Your Dialog Class
 
diff --git a/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md b/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md
index f69fbb571a..7a40c5a611 100644
--- a/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md
+++ b/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["TBSTYLE_"]
 helpviewer_keywords: ["flat toolbars", "CToolBar class [MFC], styles", "transparent toolbars", "TBSTYLE_ styles [MFC]", "CToolBarCtrl class [MFC], object styles", "toolbar controls [MFC], style"]
 ms.assetid: fd0a73db-7ad1-4fe4-889b-02c3980f49e8
+ms.topic: concept-article
 ---
 # Customizing the Appearance of a Toolbar Control
 
diff --git a/docs/mfc/customizing-the-header-item-s-appearance.md b/docs/mfc/customizing-the-header-item-s-appearance.md
index 8a47aec3d3..7324136f93 100644
--- a/docs/mfc/customizing-the-header-item-s-appearance.md
+++ b/docs/mfc/customizing-the-header-item-s-appearance.md
@@ -4,6 +4,7 @@ title: "Customizing the Header Item's Appearance"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["header controls [MFC], customization of items", "CHeaderCtrl class [MFC], customizing the items", "HDS_ styles"]
 ms.assetid: b1e1e326-ec7d-4dbd-a46f-96a3e2055618
+ms.topic: concept-article
 ---
 # Customizing the Header Item's Appearance
 
diff --git a/docs/mfc/debugging-and-exception-classes.md b/docs/mfc/debugging-and-exception-classes.md
index 74df8a9f60..95670e20ee 100644
--- a/docs/mfc/debugging-and-exception-classes.md
+++ b/docs/mfc/debugging-and-exception-classes.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["vc.classes.debug"]
 helpviewer_keywords: ["debugging [MFC], exception classes", "debugging [MFC], classes for debugging"]
 ms.assetid: 0d158efd-2e62-452e-9d2a-d3c30dfee7f9
+ms.topic: concept-article
 ---
 # Debugging and Exception Classes
 
diff --git a/docs/mfc/debugging-support-classes.md b/docs/mfc/debugging-support-classes.md
index 558f225543..e9b03065b8 100644
--- a/docs/mfc/debugging-support-classes.md
+++ b/docs/mfc/debugging-support-classes.md
@@ -4,6 +4,7 @@ title: "Debugging Support Classes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["debugging memory leaks, MFC", "memory allocation, debugging dynamic", "debugging [MFC], classes for debugging", "memory allocation, debugging dynamic allocation", "dynamic memory allocation", "debugging [MFC], memory leaks", "memory leaks, MFC debug classes"]
 ms.assetid: d79e084a-8326-4251-8700-4efac07c511e
+ms.topic: concept-article
 ---
 # Debugging Support Classes
 
diff --git a/docs/mfc/declaring-message-handler-functions.md b/docs/mfc/declaring-message-handler-functions.md
index 04adeb9627..cc9258d87a 100644
--- a/docs/mfc/declaring-message-handler-functions.md
+++ b/docs/mfc/declaring-message-handler-functions.md
@@ -4,6 +4,7 @@ title: "Declaring Message Handler Functions"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["declaring functions, message handler functions [MFC]"]
 ms.assetid: f8d3dbc1-4500-4f1e-a18d-7371edf36386
+ms.topic: concept-article
 ---
 # Declaring Message Handler Functions
 
diff --git a/docs/mfc/deleting-all-objects-in-a-cobject-collection.md b/docs/mfc/deleting-all-objects-in-a-cobject-collection.md
index 116c878204..d57fae1c58 100644
--- a/docs/mfc/deleting-all-objects-in-a-cobject-collection.md
+++ b/docs/mfc/deleting-all-objects-in-a-cobject-collection.md
@@ -4,6 +4,7 @@ title: "Deleting All Objects in a CObject Collection"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["objects [MFC], deleting in collections", "objects in CObject collections, deleting", "CObject class [MFC], deleting in collection", "collection classes [MFC], deleting all objects", "CObject class collection", "objects in CObject collections", "collection classes [MFC], shared objects"]
 ms.assetid: 81d2c1d5-a0a5-46e1-8ab9-82b45cf7afd2
+ms.topic: how-to
 ---
 # Deleting All Objects in a CObject Collection
 
diff --git a/docs/mfc/deriving-a-class-from-cobject.md b/docs/mfc/deriving-a-class-from-cobject.md
index 3e290c2a4c..bde7b72bbb 100644
--- a/docs/mfc/deriving-a-class-from-cobject.md
+++ b/docs/mfc/deriving-a-class-from-cobject.md
@@ -4,6 +4,7 @@ title: "Deriving a Class from CObject"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DECLARE_DYNCREATE macro [MFC]", "DECLARE_SERIAL macro [MFC]", "macros [MFC], serialization", "serialization [MFC], macros", "DECLARE_DYNAMIC macro [MFC]", "derived classes [MFC], from CObject", "CObject class [MFC], deriving serializable classes", "CObject class [MFC], deriving from"]
 ms.assetid: 5ea4ea41-08b5-4bd8-b247-c5de8c152a27
+ms.topic: how-to
 ---
 # Deriving a Class from CObject
 
diff --git a/docs/mfc/deriving-a-document-class-from-cdocument.md b/docs/mfc/deriving-a-document-class-from-cdocument.md
index db461ebc77..1184517b91 100644
--- a/docs/mfc/deriving-a-document-class-from-cdocument.md
+++ b/docs/mfc/deriving-a-document-class-from-cdocument.md
@@ -4,6 +4,7 @@ title: "Deriving a Document Class from CDocument"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CDocument class [MFC], deriving from", "classes [MFC], deriving from CDocument", "document objects [MFC], derived", "derived classes [MFC], functions often overridden", "document classes [MFC], functions often overridden"]
 ms.assetid: e6a198e0-9799-43c0-83c5-04174d8b532c
+ms.topic: concept-article
 ---
 # Deriving a Document Class from CDocument
 
diff --git a/docs/mfc/deriving-controls-from-a-standard-control.md b/docs/mfc/deriving-controls-from-a-standard-control.md
index 87576b2f0f..3489abe0ff 100644
--- a/docs/mfc/deriving-controls-from-a-standard-control.md
+++ b/docs/mfc/deriving-controls-from-a-standard-control.md
@@ -4,6 +4,7 @@ title: "Deriving Controls from a Standard Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["standard controls [MFC], deriving controls from", "common controls [MFC], deriving from", "derived controls", "controls [MFC], derived", "Windows common controls [MFC], deriving from", "standard controls"]
 ms.assetid: a6f84315-7007-4e0e-8576-78be81254802
+ms.topic: how-to
 ---
 # Deriving Controls from a Standard Control
 
diff --git a/docs/mfc/destroying-frame-windows.md b/docs/mfc/destroying-frame-windows.md
index a640fe5351..4bd96d2b29 100644
--- a/docs/mfc/destroying-frame-windows.md
+++ b/docs/mfc/destroying-frame-windows.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["PostNcDestroy"]
 helpviewer_keywords: ["Default method [MFC]", "DestroyWindow method [MFC]", "frame windows [MFC], destroying", "OnNcDestroy method, and frame windows", "document frame windows [MFC], destroying", "destroying frame windows", "MFC, frame windows", "windows [MFC], destroying", "OnClose method [MFC]", "PostNcDestroy method [MFC]"]
 ms.assetid: 5affca77-1999-4507-a2b2-9aa226611b4b
+ms.topic: concept-article
 ---
 # Destroying Frame Windows
 
diff --git a/docs/mfc/destroying-the-dialog-box.md b/docs/mfc/destroying-the-dialog-box.md
index 1c0da1b3a8..c8a2f0dbfb 100644
--- a/docs/mfc/destroying-the-dialog-box.md
+++ b/docs/mfc/destroying-the-dialog-box.md
@@ -4,6 +4,7 @@ title: "Destroying the Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["dialog boxes [MFC], deleting", "destruction, dialog box", "dialog boxes [MFC], destroying", "dialog boxes [MFC], removing", "modeless dialog boxes [MFC], destroying", "MFC dialog boxes [MFC], destroying", "modal dialog boxes [MFC], destroying"]
 ms.assetid: dabceee7-3639-4d85-bf34-73515441b3d0
+ms.topic: concept-article
 ---
 # Destroying the Dialog Box
 
diff --git a/docs/mfc/destroying-the-list-control.md b/docs/mfc/destroying-the-list-control.md
index ac0a7fbcdf..760823ee5d 100644
--- a/docs/mfc/destroying-the-list-control.md
+++ b/docs/mfc/destroying-the-list-control.md
@@ -4,6 +4,7 @@ title: "Destroying the List Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["list controls [MFC], destroying", "CListCtrl class [MFC], destroying controls"]
 ms.assetid: 513ec820-3a02-49d2-b073-a6a7a3fc91b3
+ms.topic: concept-article
 ---
 # Destroying the List Control
 
diff --git a/docs/mfc/destroying-window-objects.md b/docs/mfc/destroying-window-objects.md
index 462e4a379f..3a02e91f0b 100644
--- a/docs/mfc/destroying-window-objects.md
+++ b/docs/mfc/destroying-window-objects.md
@@ -4,6 +4,7 @@ title: "Destroying Window Objects"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["frame windows [MFC], destroying", "window objects [MFC], deleting", "window objects [MFC], destroying", "window objects [MFC], removing"]
 ms.assetid: 3241fea0-c614-4a25-957d-20f21bd5fd0c
+ms.topic: concept-article
 ---
 # Destroying Window Objects
 
diff --git a/docs/mfc/detaching-a-cwnd-from-its-hwnd.md b/docs/mfc/detaching-a-cwnd-from-its-hwnd.md
index 213b8ed199..abacdcd81f 100644
--- a/docs/mfc/detaching-a-cwnd-from-its-hwnd.md
+++ b/docs/mfc/detaching-a-cwnd-from-its-hwnd.md
@@ -4,6 +4,7 @@ title: "Detaching a CWnd from Its HWND"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HWND, detaching CWnd from", "removing HWNDs from CWnds", "CWnd objects [MFC], detaching from HWND", "detaching CWnds from HWNDs", "Detach method (CWnd class)"]
 ms.assetid: 6efadf84-0517-4a3f-acfd-216e088f19c6
+ms.topic: concept-article
 ---
 # Detaching a CWnd from Its HWND
 
diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md
index 06db3ca56c..2dc9f54a2a 100644
--- a/docs/mfc/docking-and-floating-toolbars.md
+++ b/docs/mfc/docking-and-floating-toolbars.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["CBRS_SIZE_DYNAMIC", "CBRS_SIZE_FIXED"]
 helpviewer_keywords: ["size [MFC], toolbars", "size", "frame windows [MFC], toolbar docking", "CBRS_ALIGN_ANY constant [MFC]", "palettes, floating", "toolbars [MFC], docking", "CBRS_SIZE_DYNAMIC constant [MFC]", "floating toolbars", "toolbars [MFC], size", "toolbars [MFC], floating", "fixed-size toolbars", "CBRS_SIZE_FIXED constant [MFC]", "toolbar controls [MFC], wrapping", "toolbars [MFC], wrapping", "floating palettes"]
 ms.assetid: b7f9f9d4-f629-47d2-a3c4-2b33fa6b51e4
+ms.topic: concept-article
 ---
 # Docking and Floating Toolbars
 
diff --git a/docs/mfc/document-template-creation.md b/docs/mfc/document-template-creation.md
index e4506f1132..5efdb1673b 100644
--- a/docs/mfc/document-template-creation.md
+++ b/docs/mfc/document-template-creation.md
@@ -13,7 +13,7 @@ The document-template constructor specifies what types of documents, windows, an
 
 [!code-cpp[NVC_MFCDocView#7](codesnippet/cpp/document-template-creation_1.cpp)]
 
-The pointer to a new `CMultiDocTemplate` object is used as an argument to [AddDocTemplate](reference/cwinapp-class.md#adddoctemplate). Arguments to the `CMultiDocTemplate` constructor include the resource ID associated with the document type's menus and accelerators, and three uses of the [RUNTIME_CLASS](reference/run-time-object-model-services.md#runtime_class) macro. `RUNTIME_CLASS` returns the [CRuntimeClass](reference/cruntimeclass-structure.md) object for the C++ class named as its argument. The three `CRuntimeClass` objects passed to the document-template constructor supply the information needed to create new objects of the specified classes during the document creation process. The example shows creation of a document template that creates `CScribDoc` objects with `CScribView` objects attached. The views are framed by standard MDI child frame windows.
+The pointer to a new `CMultiDocTemplate` object is used as an argument to [AddDocTemplate](reference/cwinapp-class.md#adddoctemplate). Arguments to the `CMultiDocTemplate` constructor include the resource ID associated with the document type's menus and accelerators, and three uses of the [RUNTIME_CLASS](reference/run-time-object-model-services.md#runtime_class) macro. `RUNTIME_CLASS` returns the [CRuntimeClass](reference/cruntimeclass-structure.md) object for the C++ class named as its argument. The three `CRuntimeClass` objects passed to the document-template constructor supply the information needed to create new objects of the specified classes during the document creation process. The example shows creation of a document template that creates `CMyDoc` objects with `CMyView` objects attached. The views are framed by custom MDI child frame windows `CChildFrame`.
 
 ## See also
 
diff --git a/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md b/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md
index 0371f4f355..f3ecc1650e 100644
--- a/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md
+++ b/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md
@@ -4,6 +4,7 @@ title: "Dragging and Dropping Files in a Frame Window"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["drag and drop [MFC], files", "drag and drop [MFC], File Manager", "Windows Explorer [MFC]", "File Manager drag and drop support [MFC]", "files [MFC], drag and drop", "frame windows [MFC], dragging and dropping files in", "drag and drop [MFC], Windows Explorer"]
 ms.assetid: 85560fe9-121b-4105-bd7b-216b966e19fa
+ms.topic: concept-article
 ---
 # Dragging and Dropping Files in a Frame Window
 
diff --git a/docs/mfc/dragging-images-from-an-image-list.md b/docs/mfc/dragging-images-from-an-image-list.md
index d1978d040d..ecea5051da 100644
--- a/docs/mfc/dragging-images-from-an-image-list.md
+++ b/docs/mfc/dragging-images-from-an-image-list.md
@@ -4,6 +4,7 @@ title: "Dragging Images from an Image List"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CImageList class [MFC], dragging images from", "dragging images from image lists [MFC]", "image lists [MFC], dragging images from", "images [MFC], dragging from image lists"]
 ms.assetid: af691db8-e4f0-4046-b7b9-9acc68d3713d
+ms.topic: concept-article
 ---
 # Dragging Images from an Image List
 
diff --git a/docs/mfc/drawing-and-printing-classes.md b/docs/mfc/drawing-and-printing-classes.md
index 69a545ce58..d43f6e9aff 100644
--- a/docs/mfc/drawing-and-printing-classes.md
+++ b/docs/mfc/drawing-and-printing-classes.md
@@ -4,6 +4,7 @@ title: "Drawing and Printing Classes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["output [MFC], graphical classes", "drawing [MFC], classes", "printing classes [MFC]", "graphics [MFC], graphical output classes"]
 ms.assetid: 2781c599-a038-462a-98ca-634b07ee22b0
+ms.topic: concept-article
 ---
 # Drawing and Printing Classes
 
diff --git a/docs/mfc/drawing-images-from-an-image-list.md b/docs/mfc/drawing-images-from-an-image-list.md
index 1220623723..0f0e5cd601 100644
--- a/docs/mfc/drawing-images-from-an-image-list.md
+++ b/docs/mfc/drawing-images-from-an-image-list.md
@@ -4,6 +4,7 @@ title: "Drawing Images from an Image List"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CImageList class [MFC], drawing images from", "drawing [MFC], images from image lists", "image lists [MFC], drawing images from", "images [MFC], drawing"]
 ms.assetid: 2f6063fb-1c28-45f8-a333-008c064db11c
+ms.topic: concept-article
 ---
 # Drawing Images from an Image List
 
diff --git a/docs/mfc/drawing-in-a-view.md b/docs/mfc/drawing-in-a-view.md
index 88d9d6fd1b..ecd59ea951 100644
--- a/docs/mfc/drawing-in-a-view.md
+++ b/docs/mfc/drawing-in-a-view.md
@@ -4,6 +4,7 @@ title: "Drawing in a View"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["drawing [MFC], in views", "views [MFC], printing", "views [MFC], updating", "printing [MFC], views", "views [MFC], rendering", "printing views [MFC]", "paint messages in view class [MFC]", "device contexts, screen drawings"]
 ms.assetid: e3761db6-0f19-4482-a4cd-ac38ef7c4d3a
+ms.topic: how-to
 ---
 # Drawing in a View
 
diff --git a/docs/mfc/drawing-tool-classes.md b/docs/mfc/drawing-tool-classes.md
index 3e7fda79fa..0e33ab2346 100644
--- a/docs/mfc/drawing-tool-classes.md
+++ b/docs/mfc/drawing-tool-classes.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["vc.classes.drawing"]
 helpviewer_keywords: ["drawing [MFC], tool classes", "screen output classes [MFC]", "output classes [MFC]"]
 ms.assetid: e907bd89-38b5-47c9-b76a-95e0bf3bb41d
+ms.topic: concept-article
 ---
 # Drawing Tool Classes
 
diff --git a/docs/mfc/dynamic-object-creation.md b/docs/mfc/dynamic-object-creation.md
index 508a2012a9..a7e77c3fe6 100644
--- a/docs/mfc/dynamic-object-creation.md
+++ b/docs/mfc/dynamic-object-creation.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Dynamic Object Creation"
 title: "Dynamic Object Creation"
+description: "Learn more about: Dynamic Object Creation"
 ms.date: "03/27/2020"
 helpviewer_keywords: ["object creation [MFC], dynamically at run time", "CObject class [MFC], dynamic object creation", "objects [MFC], creating dynamically at run time", "dynamic object creation [MFC]"]
-ms.assetid: 3e0f51cb-3e24-4231-817f-1c0ce9f2d5df
 ---
 # Dynamic Object Creation
 
@@ -17,5 +16,5 @@ This article explains how to create an object dynamically at run time. The proce
 
 ## See also
 
-[Destroying Window Objects](tn017-destroying-window-objects.md)
+[Destroying Window Objects](tn017-destroying-window-objects.md)\
 [Using CObject](using-cobject.md)
diff --git a/docs/mfc/enabling-tool-tips.md b/docs/mfc/enabling-tool-tips.md
index c101a6b1fb..4f59728c5a 100644
--- a/docs/mfc/enabling-tool-tips.md
+++ b/docs/mfc/enabling-tool-tips.md
@@ -4,6 +4,7 @@ title: "Enabling Tool Tips"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["initializing tool tips [MFC]", "enabling tool tips [MFC]", "tool tips [MFC], initializing", "tool tips [MFC], enabling"]
 ms.assetid: 06b7c889-7722-4ce6-8b88-9efa50fe6369
+ms.topic: how-to
 ---
 # Enabling Tool Tips
 
diff --git a/docs/mfc/exchanging-data.md b/docs/mfc/exchanging-data.md
index ad56d4f597..8ea303ddf5 100644
--- a/docs/mfc/exchanging-data.md
+++ b/docs/mfc/exchanging-data.md
@@ -4,6 +4,7 @@ title: "Exchanging Data"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["property sheets [MFC], data exchange", "exchanging data with property sheets [MFC]", "DDX (dialog data exchange) [MFC], property sheets"]
 ms.assetid: 689f02d0-51a9-455b-8ffb-5b44f0aefa28
+ms.topic: concept-article
 ---
 # Exchanging Data
 
diff --git a/docs/mfc/handling-commands-in-the-document.md b/docs/mfc/handling-commands-in-the-document.md
index 9d43c35b0d..f821152d3e 100644
--- a/docs/mfc/handling-commands-in-the-document.md
+++ b/docs/mfc/handling-commands-in-the-document.md
@@ -4,6 +4,7 @@ title: "Handling Commands in the Document"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["message maps [MFC], in document class", "command handling [MFC]", "documents [MFC], message maps", "message handling [MFC], WM_COMMAND messages", "command handling [MFC], commands in documents", "documents [MFC], handling messages in"]
 ms.assetid: c7375584-27af-4275-b2fd-afea476785d0
+ms.topic: concept-article
 ---
 # Handling Commands in the Document
 
diff --git a/docs/mfc/handling-customization-notifications.md b/docs/mfc/handling-customization-notifications.md
index 86936b07f9..1d2ffb237d 100644
--- a/docs/mfc/handling-customization-notifications.md
+++ b/docs/mfc/handling-customization-notifications.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["TBN_CUSTHELP", "TBN_QUERYINSERT", "TBNOTIFY", "NMHDR", "TBN_TOOLBARCHANGE", "TBN_ENDDRAG", "NM_SETFOCUS", "TBN_RESET", "NM_RETURN", "NM_ENDWAIT", "NM_STARTWAIT", "TBN_BEGINDRAG", "NM_OUTOFMEMORY", "TBN_QUERYDELETE", "NM_DBLCLK", "TBN_ENDADJUST", "NM_KILLFOCUS", "NM_RCLICK", "TBN_BEGINADJUST", "NM_CLICK"]
 helpviewer_keywords: ["TBN_ENDADJUST notification [MFC]", "TBNOTIFY notification [MFC]", "TBN_BEGINDRAG notification [MFC]", "TBN_TOOLBARCHANGE notification [MFC]", "NM_CLICK notification [MFC]", "NM_RETURN notification [MFC]", "NM_RCLICK notification [MFC]", "TBN_ENDDRAG notification [MFC]", "TBN_BEGINADJUST notification [MFC]", "NM_ENDWAIT notification [MFC]", "NM_KILLFOCUS notification [MFC]", "NM_SETFOCUS notification [MFC]", "NM_OUTOFMEMORY notification [MFC]", "TBN_QUERYINSERT notification [MFC]", "NMHDR [MFC]", "NM_STARTWAIT notification [MFC]", "CToolBarCtrl class [MFC], handling notifications", "TBN_CUSTHELP notification [MFC]", "TBN_RESET notification [MFC]", "NM_DBLCLK notification [MFC]", "TBN_QUERYDELETE notification [MFC]", "NM_RDBLCLK notification [MFC]", "TBN_GETBUTTONINFO notification [MFC]"]
 ms.assetid: 219ea08e-7515-4b98-85cb-47120f08c0a2
+ms.topic: concept-article
 ---
 # Handling Customization Notifications
 
diff --git a/docs/mfc/handling-reflected-messages.md b/docs/mfc/handling-reflected-messages.md
index 95b15f8a98..f7d74de5c8 100644
--- a/docs/mfc/handling-reflected-messages.md
+++ b/docs/mfc/handling-reflected-messages.md
@@ -4,6 +4,7 @@ title: "Handling Reflected Messages"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["message handling [MFC], reflected messages", "reflected messages, handling"]
 ms.assetid: 147a4e0c-51cc-4447-a8e1-c28b4cece578
+ms.topic: concept-article
 ---
 # Handling Reflected Messages
 
diff --git a/docs/mfc/handling-the-apply-button.md b/docs/mfc/handling-the-apply-button.md
index 0c1e31e8d0..3cfdef6bf9 100644
--- a/docs/mfc/handling-the-apply-button.md
+++ b/docs/mfc/handling-the-apply-button.md
@@ -4,6 +4,7 @@ title: "Handling the Apply Button"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Apply button in property sheet", "property sheets, Apply button"]
 ms.assetid: 7e977015-59b8-406f-b545-aad0bfd8d55b
+ms.topic: concept-article
 ---
 # Handling the Apply Button
 
diff --git a/docs/mfc/handling-tool-tip-notifications.md b/docs/mfc/handling-tool-tip-notifications.md
index d950042ea4..8c1ed327ee 100644
--- a/docs/mfc/handling-tool-tip-notifications.md
+++ b/docs/mfc/handling-tool-tip-notifications.md
@@ -4,6 +4,7 @@ title: "Handling Tool Tip Notifications"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["TOOLTIPTEXT structure [MFC]", "CToolBarCtrl class [MFC], handling notifications", "notifications [MFC], tool tips", "tool tips [MFC], notifications"]
 ms.assetid: ddb93b5f-2e4f-4537-8053-3453c86e2bbb
+ms.topic: concept-article
 ---
 # Handling Tool Tip Notifications
 
diff --git a/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md b/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md
index 982332e710..12058fb2d4 100644
--- a/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md
+++ b/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["TTN_NEEDTEXT"]
 helpviewer_keywords: ["TTN_NEEDTEXT message [MFC]", "notifications [MFC], tool tips", "tool tips [MFC], notifications"]
 ms.assetid: d0370a65-21ba-4676-bcc5-8cf851bbb15c
+ms.topic: concept-article
 ---
 # Handling TTN_NEEDTEXT Notification for Tool Tips
 
diff --git a/docs/mfc/handling-windows-messages-in-your-dialog-box.md b/docs/mfc/handling-windows-messages-in-your-dialog-box.md
index 170b2d4651..66db7e6608 100644
--- a/docs/mfc/handling-windows-messages-in-your-dialog-box.md
+++ b/docs/mfc/handling-windows-messages-in-your-dialog-box.md
@@ -4,6 +4,7 @@ title: "Handling Windows Messages in Your Dialog Box"
 ms.date: "09/05/2019"
 helpviewer_keywords: ["MFC dialog boxes [MFC], Windows messages", "Windows messages [MFC], handling", "message handling [MFC], in dialog boxes"]
 ms.assetid: 4af0c9cb-09da-4b15-97df-a1cfb89def79
+ms.topic: concept-article
 ---
 # Handling Windows Messages in Your Dialog Box
 
diff --git a/docs/mfc/implementing-working-areas-in-list-controls.md b/docs/mfc/implementing-working-areas-in-list-controls.md
index 9649cfcd2b..0ee8d8fcbf 100644
--- a/docs/mfc/implementing-working-areas-in-list-controls.md
+++ b/docs/mfc/implementing-working-areas-in-list-controls.md
@@ -4,6 +4,7 @@ title: "Implementing Working Areas in List Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["list controls [MFC], working areas", "working areas in list control [MFC]"]
 ms.assetid: fbbb356b-3359-4348-8603-f1cb114cadde
+ms.topic: concept-article
 ---
 # Implementing Working Areas in List Controls
 
diff --git a/docs/mfc/initializing-and-cleaning-up-documents-and-views.md b/docs/mfc/initializing-and-cleaning-up-documents-and-views.md
index 4462b237bf..9245198be4 100644
--- a/docs/mfc/initializing-and-cleaning-up-documents-and-views.md
+++ b/docs/mfc/initializing-and-cleaning-up-documents-and-views.md
@@ -4,6 +4,7 @@ title: "Initializing and Cleaning Up Documents and Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["initializing documents [MFC]", "views [MFC], cleaning up", "documents [MFC], initializing", "documents [MFC], cleaning up", "views [MFC], initializing", "initializing objects [MFC], document objects", "document objects [MFC], life cycle of", "initializing views [MFC]"]
 ms.assetid: 95d6f09b-a047-4079-856a-ae7d0548e9d2
+ms.topic: how-to
 ---
 # Initializing and Cleaning Up Documents and Views
 
diff --git a/docs/mfc/initializing-documents-and-views.md b/docs/mfc/initializing-documents-and-views.md
index 326411c876..43ac07fab7 100644
--- a/docs/mfc/initializing-documents-and-views.md
+++ b/docs/mfc/initializing-documents-and-views.md
@@ -4,6 +4,7 @@ title: "Initializing Documents and Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["initializing documents [MFC]", "documents [MFC], initializing", "views [MFC], initializing", "initializing objects [MFC], document objects", "initializing views [MFC]"]
 ms.assetid: 33cb8643-8a16-478c-bc26-eccc734e3661
+ms.topic: concept-article
 ---
 # Initializing Documents and Views
 
diff --git a/docs/mfc/initializing-the-dialog-box.md b/docs/mfc/initializing-the-dialog-box.md
index f3fa2fa7af..ba9d129545 100644
--- a/docs/mfc/initializing-the-dialog-box.md
+++ b/docs/mfc/initializing-the-dialog-box.md
@@ -4,6 +4,7 @@ title: "Initializing the Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["initializing dialog boxes [MFC]", "OnInitDialog method [MFC]", "modal dialog boxes [MFC], initializing", "modeless dialog boxes [MFC], initializing", "MFC dialog boxes [MFC], initializing"]
 ms.assetid: 968142f5-19f9-4b34-a1d4-8e6412d4379b
+ms.topic: concept-article
 ---
 # Initializing the Dialog Box
 
diff --git a/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md b/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md
index c47acf19dd..af5b7bc529 100644
--- a/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md
+++ b/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md
@@ -4,6 +4,7 @@ title: "Initializing the Parts of a CStatusBarCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CStatusBarCtrl class [MFC], simple mode", "status bars [MFC], declaring parts of", "simple status bars [MFC]", "status bars [MFC], icons", "status bars [MFC], simple mode", "icons, using in status bars", "CStatusBarCtrl class [MFC], declaring parts of"]
 ms.assetid: 60e8f285-d2d8-424a-a6ea-2fc548370303
+ms.topic: concept-article
 ---
 # Initializing the Parts of a CStatusBarCtrl Object
 
diff --git a/docs/mfc/inserting-a-form-into-a-project.md b/docs/mfc/inserting-a-form-into-a-project.md
index 51e916c60c..0166e9f5d3 100644
--- a/docs/mfc/inserting-a-form-into-a-project.md
+++ b/docs/mfc/inserting-a-form-into-a-project.md
@@ -4,6 +4,7 @@ title: "Inserting a Form into a Project"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["inserting forms [MFC]", "Insert New dialog box [MFC]", "forms, adding to projects"]
 ms.assetid: f3bd2998-3ce2-496d-ac5c-57ca70eec7cb
+ms.topic: how-to
 ---
 # Inserting a Form into a Project
 
diff --git a/docs/mfc/interpreting-user-input-through-a-view.md b/docs/mfc/interpreting-user-input-through-a-view.md
index 4a71432b22..6e1086bbe1 100644
--- a/docs/mfc/interpreting-user-input-through-a-view.md
+++ b/docs/mfc/interpreting-user-input-through-a-view.md
@@ -4,6 +4,7 @@ title: "Interpreting User Input Through a View"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["interpreting user input through views [MFC]", "views [MFC], user interface and input", "input [MFC], view class [MFC]", "CView class [MFC], interpreting user input", "user input [MFC], interpreting through view class [MFC]"]
 ms.assetid: f0302a70-661f-4781-8fe7-78f082bef2a5
+ms.topic: concept-article
 ---
 # Interpreting User Input Through a View
 
diff --git a/docs/mfc/life-cycle-of-a-dialog-box.md b/docs/mfc/life-cycle-of-a-dialog-box.md
index 1375df3e61..f178c1f067 100644
--- a/docs/mfc/life-cycle-of-a-dialog-box.md
+++ b/docs/mfc/life-cycle-of-a-dialog-box.md
@@ -4,6 +4,7 @@ title: "Working with Dialog Boxes in MFC"
 ms.date: "09/27/2019"
 helpviewer_keywords: ["dialog boxes [MFC], life cycle", "modal dialog boxes [MFC], life cycle", "modeless dialog boxes [MFC], life cycle", "MFC dialog boxes [MFC], life cycle", "life cycle of dialog boxes [MFC]"]
 ms.assetid: e16fd78e-238d-4f31-8c9d-8564f3953bd9
+ms.topic: concept-article
 ---
 # Working with Dialog Boxes in MFC
 
diff --git a/docs/mfc/making-and-using-controls.md b/docs/mfc/making-and-using-controls.md
index 92fd5c28a6..6e88beb322 100644
--- a/docs/mfc/making-and-using-controls.md
+++ b/docs/mfc/making-and-using-controls.md
@@ -4,6 +4,7 @@ title: "Making and Using Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [MFC], creating for dialog boxes", "Windows common controls [MFC], about common controls", "common controls [MFC], about common controls"]
 ms.assetid: a252acad-3cc0-440e-bbc6-43eaaf8cb7bb
+ms.topic: concept-article
 ---
 # Making and Using Controls
 
diff --git a/docs/mfc/making-owner-drawn-header-controls.md b/docs/mfc/making-owner-drawn-header-controls.md
index 121655e7e4..68a3e251f9 100644
--- a/docs/mfc/making-owner-drawn-header-controls.md
+++ b/docs/mfc/making-owner-drawn-header-controls.md
@@ -4,6 +4,7 @@ title: "Making Owner-Drawn Header Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["header controls [MFC], owner-drawn", "drawing [MFC], header controls", "CHeaderCtrl class [MFC], making owner-drawn", "controls [MFC], header", "owner-drawn header controls [MFC]"]
 ms.assetid: 455c113b-e8d0-400c-8690-dbb92cba0d05
+ms.topic: concept-article
 ---
 # Making Owner-Drawn Header Controls
 
diff --git a/docs/mfc/making-owner-drawn-tabs.md b/docs/mfc/making-owner-drawn-tabs.md
index f27d45d88b..f3421ab838 100644
--- a/docs/mfc/making-owner-drawn-tabs.md
+++ b/docs/mfc/making-owner-drawn-tabs.md
@@ -4,6 +4,7 @@ title: "Making Owner-Drawn Tabs"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["owner-drawn tabs [MFC]", "tabs [MFC], owner-drawn", "CTabCtrl class [MFC], owner-drawn tabs", "drawing [MFC], tabs"]
 ms.assetid: 11af2926-41d7-47e3-9eec-c595283f6371
+ms.topic: concept-article
 ---
 # Making Owner-Drawn Tabs
 
diff --git a/docs/mfc/managing-data-with-document-data-variables.md b/docs/mfc/managing-data-with-document-data-variables.md
index 1d6951c2b7..be73faee85 100644
--- a/docs/mfc/managing-data-with-document-data-variables.md
+++ b/docs/mfc/managing-data-with-document-data-variables.md
@@ -4,6 +4,7 @@ title: "Managing Data with Document Data Variables"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["documents [MFC], data storage", "friend classes [MFC]", "classes [MFC], friend", "data [MFC]", "data [MFC], documents", "collection classes [MFC], used by document object", "document data [MFC]", "member variables [MFC], document class [MFC]"]
 ms.assetid: e70b87f4-8c30-49e5-8986-521c2ff91704
+ms.topic: concept-article
 ---
 # Managing Data with Document Data Variables
 
diff --git a/docs/mfc/managing-mdi-child-windows.md b/docs/mfc/managing-mdi-child-windows.md
index 378345309e..beca42fc23 100644
--- a/docs/mfc/managing-mdi-child-windows.md
+++ b/docs/mfc/managing-mdi-child-windows.md
@@ -5,6 +5,7 @@ ms.date: "11/19/2018"
 f1_keywords: ["MDICLIENT"]
 helpviewer_keywords: ["MDI [MFC], child windows", "child windows [MFC], and MDICLIENT window", "MDICLIENT window [MFC]", "windows [MFC], MDI", "frame windows [MFC], MDI child windows", "child windows [MFC]", "MDI [MFC], frame windows"]
 ms.assetid: 1828d96e-a561-48ae-a661-ba9701de6bee
+ms.topic: concept-article
 ---
 # Managing MDI Child Windows
 
diff --git a/docs/mfc/managing-menus-control-bars-and-accelerators.md b/docs/mfc/managing-menus-control-bars-and-accelerators.md
index bdd164b2c9..329610e659 100644
--- a/docs/mfc/managing-menus-control-bars-and-accelerators.md
+++ b/docs/mfc/managing-menus-control-bars-and-accelerators.md
@@ -4,6 +4,7 @@ title: "Managing Menus, Control Bars, and Accelerators"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MDI [MFC], frame windows", "control bars [MFC], updating in frame windows", "menus [MFC], updating as context changes", "user interface objects [MFC], updating", "accelerator tables [MFC]", "sharing menus [MFC]", "updating user-interface objects [MFC]", "frame windows [MFC], updating", "status bars [MFC], updating"]
 ms.assetid: 97ca1997-06df-4373-b023-4f7ecd81047b
+ms.topic: concept-article
 ---
 # Managing Menus, Control Bars, and Accelerators
 
diff --git a/docs/mfc/managing-the-current-view.md b/docs/mfc/managing-the-current-view.md
index 9a14f7cccd..ecd15ad51e 100644
--- a/docs/mfc/managing-the-current-view.md
+++ b/docs/mfc/managing-the-current-view.md
@@ -4,6 +4,7 @@ title: "Managing the Current View"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["views [MFC], and OnActivateView method [MFC]", "views [MFC], deactivating", "views [MFC], activating", "frame windows [MFC], current view", "OnActivateView method [MFC]", "views [MFC], current", "deactivating views [MFC]", "current view in frame window [MFC]"]
 ms.assetid: 0a1cc22d-d646-4536-9ad2-3cb6d7092e4a
+ms.topic: concept-article
 ---
 # Managing the Current View
 
diff --git a/docs/mfc/managing-the-state-data-of-mfc-modules.md b/docs/mfc/managing-the-state-data-of-mfc-modules.md
index f40ff4f6b7..37c7bead20 100644
--- a/docs/mfc/managing-the-state-data-of-mfc-modules.md
+++ b/docs/mfc/managing-the-state-data-of-mfc-modules.md
@@ -4,6 +4,7 @@ title: "Managing the State Data of MFC Modules"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["global state [MFC]", "data management [MFC], MFC modules", "window procedure entry points [MFC]", "exported interfaces and global state [MFC]", "module states [MFC], saving and restoring", "data management [MFC]", "MFC, managing state data", "multiple modules [MFC]", "module state restored [MFC]"]
 ms.assetid: 81889c11-0101-4a66-ab3c-f81cf199e1bb
+ms.topic: concept-article
 ---
 # Managing the State Data of MFC Modules
 
diff --git a/docs/mfc/manipulating-image-lists.md b/docs/mfc/manipulating-image-lists.md
index 7b782d16ed..6d92caf6d4 100644
--- a/docs/mfc/manipulating-image-lists.md
+++ b/docs/mfc/manipulating-image-lists.md
@@ -4,6 +4,7 @@ title: "Manipulating Image Lists"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["image lists [MFC], manipulating", "lists [MFC], image", "CImageList class [MFC], manipulating"]
 ms.assetid: 043418f8-077e-4dce-b8bb-2b7b0d7b5156
+ms.topic: concept-article
 ---
 # Manipulating Image Lists
 
diff --git a/docs/mfc/manipulating-menus-during-program-execution.md b/docs/mfc/manipulating-menus-during-program-execution.md
index 27ce44d928..830ad98dea 100644
--- a/docs/mfc/manipulating-menus-during-program-execution.md
+++ b/docs/mfc/manipulating-menus-during-program-execution.md
@@ -4,6 +4,7 @@ title: "Manipulating Menus During Program Execution"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["menus [MFC], editing during execution", "menus during execution [MFC], deleting", "CMenu class [MFC], manipulating menus during execution", "menus [MFC], manipulating during execution", "menus during execution"]
 ms.assetid: 722c7c00-4be2-4967-877d-f96aaa604396
+ms.topic: concept-article
 ---
 # Manipulating Menus During Program Execution
 
diff --git a/docs/mfc/manipulating-the-progress-control.md b/docs/mfc/manipulating-the-progress-control.md
index 69a85df1a2..364d495b2c 100644
--- a/docs/mfc/manipulating-the-progress-control.md
+++ b/docs/mfc/manipulating-the-progress-control.md
@@ -4,6 +4,7 @@ title: "Manipulating the Progress Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CProgressCtrl class [MFC], working with", "progress controls [MFC], manipulating", "CProgressCtrl class [MFC], manipulating", "controlling progress controls [MFC]", "CProgressCtrl class [MFC], using"]
 ms.assetid: 9af561d1-980b-4003-a6da-ff79be15bf23
+ms.topic: how-to
 ---
 # Manipulating the Progress Control
 
diff --git a/docs/mfc/manipulating-the-tool-tip-control.md b/docs/mfc/manipulating-the-tool-tip-control.md
index 0663d49d96..a368c8f895 100644
--- a/docs/mfc/manipulating-the-tool-tip-control.md
+++ b/docs/mfc/manipulating-the-tool-tip-control.md
@@ -4,6 +4,7 @@ title: "Manipulating the Tool Tip Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CToolTipCtrl class [MFC], manipulating tool tip attributes", "tool tips [MFC], attributes"]
 ms.assetid: 3600afe5-712a-4b56-8456-96e85fe879af
+ms.topic: concept-article
 ---
 # Manipulating the Tool Tip Control
 
diff --git a/docs/mfc/mapping-messages.md b/docs/mfc/mapping-messages.md
index 58e53eb5f2..2f59ba6b40 100644
--- a/docs/mfc/mapping-messages.md
+++ b/docs/mfc/mapping-messages.md
@@ -4,6 +4,7 @@ title: "Mapping Messages"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["message maps [MFC], about message maps", "mappings [MFC], commands", "commands [MFC], mapping", "command mapping [MFC]", "message handling [MFC], connecting to handler functions", "commands [MFC], connecting to handler functions", "mappings [MFC], messages", "messages [MFC], mapping"]
 ms.assetid: 996f0652-0698-4b8c-b893-cdaa836d9d0f
+ms.topic: concept-article
 ---
 # Mapping Messages
 
diff --git a/docs/mfc/mapping-windows-messages-to-your-class.md b/docs/mfc/mapping-windows-messages-to-your-class.md
index f8a7a8751e..f34a3d5da2 100644
--- a/docs/mfc/mapping-windows-messages-to-your-class.md
+++ b/docs/mfc/mapping-windows-messages-to-your-class.md
@@ -4,6 +4,7 @@ title: "Mapping Windows Messages to Your Class"
 ms.date: "09/06/2019"
 helpviewer_keywords: ["MFC dialog boxes [MFC], Windows messages", "message maps [MFC], in dialog class", "Windows messages [MFC], mapping in dialog classes", "messages to dialog class [MFC]", "mappings [MFC], messages to dialog class [MFC]", "message maps [MFC], mapping Windows messages to classes", "messages to dialog class [MFC], mapping", "Class Wizard [MFC]"]
 ms.assetid: a4c6fd1f-1d33-47c9-baa0-001755746d6d
+ms.topic: concept-article
 ---
 # Mapping Windows Messages to Your Class
 
diff --git a/docs/mfc/message-categories.md b/docs/mfc/message-categories.md
index 5bc141928a..8f26f6242e 100644
--- a/docs/mfc/message-categories.md
+++ b/docs/mfc/message-categories.md
@@ -4,6 +4,7 @@ title: "Message Categories"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["messages [MFC], categories", "control-notification messages [MFC]", "Windows messages [MFC], categories", "controls [MFC], notifications", "command messages [MFC]", "messages [MFC], Windows", "message handling [MFC], message types"]
 ms.assetid: 68e1db75-9da6-4a4d-b2c2-dc4d59f8d87b
+ms.topic: how-to
 ---
 # Message Categories
 
diff --git a/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md b/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md
index aff377276a..e657b70267 100644
--- a/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md
+++ b/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md
@@ -4,6 +4,7 @@ title: "MFC ActiveX Controls: Returning Error Codes From a Method"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], error codes", "SetNotSupported method, using", "errors [MFC], ActiveX control error codes", "GetNotSupported method [MFC]", "FireError method [MFC]", "SCODE, MFC ActiveX controls", "ThrowError method [MFC]"]
 ms.assetid: 771fb9c9-2413-4dcc-b386-7bc4c4adeafd
+ms.topic: troubleshooting-error-codes
 ---
 # MFC ActiveX Controls: Returning Error Codes From a Method
 
diff --git a/docs/mfc/mfc-concepts.md b/docs/mfc/mfc-concepts.md
index 3ff73e4812..837ceb34f6 100644
--- a/docs/mfc/mfc-concepts.md
+++ b/docs/mfc/mfc-concepts.md
@@ -3,6 +3,7 @@ description: "Learn more about: MFC Concepts"
 title: "MFC Concepts"
 ms.date: "01/09/2018"
 f1_keywords: ["Concepts"]
+ms.topic: concept-article
 ---
 # MFC Concepts
 
diff --git a/docs/mfc/on-update-command-ui-macro.md b/docs/mfc/on-update-command-ui-macro.md
index b5eb0ecd79..12493f2855 100644
--- a/docs/mfc/on-update-command-ui-macro.md
+++ b/docs/mfc/on-update-command-ui-macro.md
@@ -5,6 +5,7 @@ ms.date: "09/06/2019"
 f1_keywords: ["ON_UPDATE_COMMAND_UI"]
 helpviewer_keywords: ["ON_UPDATE_COMMAND_UI macro [MFC]", "update handlers [MFC]", "command-handler macros", "updating user-interface objects [MFC]"]
 ms.assetid: 3e72b50f-4119-4c82-81cf-6e09b132de05
+ms.topic: reference
 ---
 # ON_UPDATE_COMMAND_UI Macro
 
diff --git a/docs/mfc/opening-files.md b/docs/mfc/opening-files.md
index c758c1bb9c..1901d6e2ee 100644
--- a/docs/mfc/opening-files.md
+++ b/docs/mfc/opening-files.md
@@ -4,6 +4,7 @@ title: "Opening Files"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Open member functions [MFC]", "CFile class [MFC], variable", "opening files, in MFC", "Open calls [MFC]", "Open method, CFile class [MFC]", "examples [MFC], opening files", "opening files, handling exceptions", "exception handling [MFC], when opening files", "files [MFC], opening", "file objects [MFC]", "MFC, file operations", "opening files [MFC]", "exception handling [MFC], opening files"]
 ms.assetid: a991b8ec-b04a-4766-b47e-7485b5dd0b01
+ms.topic: how-to
 ---
 # Opening Files
 
diff --git a/docs/mfc/optimizing-control-drawing.md b/docs/mfc/optimizing-control-drawing.md
index 389d769e75..f66c88ff25 100644
--- a/docs/mfc/optimizing-control-drawing.md
+++ b/docs/mfc/optimizing-control-drawing.md
@@ -4,6 +4,7 @@ title: "Optimizing Control Drawing"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], optimizing"]
 ms.assetid: 29ff985d-9bf5-4678-b62d-aad12def75fb
+ms.topic: concept-article
 ---
 # Optimizing Control Drawing
 
diff --git a/docs/mfc/optimizing-persistence-and-initialization.md b/docs/mfc/optimizing-persistence-and-initialization.md
index 51e8befc88..6fa231bfd5 100644
--- a/docs/mfc/optimizing-persistence-and-initialization.md
+++ b/docs/mfc/optimizing-persistence-and-initialization.md
@@ -4,6 +4,7 @@ title: "Optimizing Persistence and Initialization"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], optimizing", "performance, ActiveX controls", "optimization, ActiveX controls", "optimizing performance, ActiveX controls"]
 ms.assetid: e821e19e-b9eb-49ab-b719-0743420ba80b
+ms.topic: concept-article
 ---
 # Optimizing Persistence and Initialization
 
diff --git a/docs/mfc/orchestrating-other-window-actions.md b/docs/mfc/orchestrating-other-window-actions.md
index 41b8115884..d58e98acd2 100644
--- a/docs/mfc/orchestrating-other-window-actions.md
+++ b/docs/mfc/orchestrating-other-window-actions.md
@@ -4,6 +4,7 @@ title: "Orchestrating Other Window Actions"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["frame windows [MFC], print preview", "context-sensitive Help [MFC], frame windows", "print preview [MFC], and frame windows", "frame windows [MFC], context-sensitive Help", "frame windows [MFC], semimodal states", "context-sensitive Help [MFC]"]
 ms.assetid: 5f34eea8-2bf8-4479-95c7-45e8f443db8f
+ms.topic: concept-article
 ---
 # Orchestrating Other Window Actions
 
diff --git a/docs/mfc/ordering-items-in-the-header-control.md b/docs/mfc/ordering-items-in-the-header-control.md
index 5dfc66ea14..8fecf83fd9 100644
--- a/docs/mfc/ordering-items-in-the-header-control.md
+++ b/docs/mfc/ordering-items-in-the-header-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["DS_DRAGDROP"]
 helpviewer_keywords: ["sequence [MFC]", "sequence [MFC], header control items", "OrderToIndex method [MFC]", "DS_DRAGDROP notification [MFC]", "GetOrderArray method [MFC]", "SetOrderArray method [MFC]", "header controls [MFC], ordering items"]
 ms.assetid: 5aaef872-75b5-49c5-8fed-6f9a81fca812
+ms.topic: concept-article
 ---
 # Ordering Items in the Header Control
 
diff --git a/docs/mfc/overriding-the-standard-command-routing.md b/docs/mfc/overriding-the-standard-command-routing.md
index df1c2ddbd3..ba18313793 100644
--- a/docs/mfc/overriding-the-standard-command-routing.md
+++ b/docs/mfc/overriding-the-standard-command-routing.md
@@ -4,6 +4,7 @@ title: "Overriding the Standard Command Routing"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC, command routing", "command routing [MFC], overriding", "command handling [MFC], routing commands", "overriding, standard command routing"]
 ms.assetid: 872b698a-7432-40c4-9008-68721e8effa5
+ms.topic: concept-article
 ---
 # Overriding the Standard Command Routing
 
diff --git a/docs/mfc/overview-of-the-rich-edit-control.md b/docs/mfc/overview-of-the-rich-edit-control.md
index e14a976fb8..ae897f634a 100644
--- a/docs/mfc/overview-of-the-rich-edit-control.md
+++ b/docs/mfc/overview-of-the-rich-edit-control.md
@@ -4,6 +4,7 @@ title: "Overview of the Rich Edit Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["rich edit controls [MFC]"]
 ms.assetid: ad589b9f-a3fd-4820-bf1f-6b1965997e68
+ms.topic: concept-article
 ---
 # Overview of the Rich Edit Control
 
diff --git a/docs/mfc/printing-and-print-preview.md b/docs/mfc/printing-and-print-preview.md
index 5ad4329b9a..b2ca617220 100644
--- a/docs/mfc/printing-and-print-preview.md
+++ b/docs/mfc/printing-and-print-preview.md
@@ -4,6 +4,7 @@ title: "Printing and Print Preview"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["printing [MFC]", "previewing printing", "printing [MFC]", "print preview", "printing [MFC], print preview"]
 ms.assetid: d15059cd-32de-4450-95f7-e73aece238f6
+ms.topic: concept-article
 ---
 # Printing and Print Preview
 
diff --git a/docs/mfc/printing-in-rich-edit-controls.md b/docs/mfc/printing-in-rich-edit-controls.md
index 21c9af612a..b984736a3f 100644
--- a/docs/mfc/printing-in-rich-edit-controls.md
+++ b/docs/mfc/printing-in-rich-edit-controls.md
@@ -4,6 +4,7 @@ title: "Printing in Rich Edit Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["printing [MFC], CRichEditCtrl", "rich edit controls [MFC], printing", "CRichEditCtrl class [MFC], printing"]
 ms.assetid: dbda0e40-018f-424e-b5d8-7b489aaf27af
+ms.topic: concept-article
 ---
 # Printing in Rich Edit Controls
 
diff --git a/docs/mfc/printing.md b/docs/mfc/printing.md
index 2e4c83c98f..58d2fd9d61 100644
--- a/docs/mfc/printing.md
+++ b/docs/mfc/printing.md
@@ -4,6 +4,7 @@ title: "Printing"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["view classes [MFC], print operations", "documents [MFC], printing", "printing [MFC], from framework", "printing [MFC]"]
 ms.assetid: be465e8d-b0c9-4fc5-9fa8-d10486064f76
+ms.topic: concept-article
 ---
 # Printing
 
diff --git a/docs/mfc/processing-header-control-notifications.md b/docs/mfc/processing-header-control-notifications.md
index 5e4ec0c1a2..0c3aa456c2 100644
--- a/docs/mfc/processing-header-control-notifications.md
+++ b/docs/mfc/processing-header-control-notifications.md
@@ -4,6 +4,7 @@ title: "Processing Header-Control Notifications"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CHeaderCtrl class [MFC], processing notifications", "controls [MFC], header", "notifications [MFC], processing for CHeaderCtrl", "header controls [MFC], processing notifications", "header control notifications"]
 ms.assetid: e6c6af7c-d458-4d33-85aa-48014ccde5f6
+ms.topic: concept-article
 ---
 # Processing Header-Control Notifications
 
diff --git a/docs/mfc/processing-notification-messages-in-a-rebar-control.md b/docs/mfc/processing-notification-messages-in-a-rebar-control.md
index 4a606ad68e..d4b1a732bd 100644
--- a/docs/mfc/processing-notification-messages-in-a-rebar-control.md
+++ b/docs/mfc/processing-notification-messages-in-a-rebar-control.md
@@ -4,6 +4,7 @@ title: "Processing Notification Messages in a Rebar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["RBN_ notification messages, description of", "CReBarCtrl class [MFC], notification messages sent by", "RBN_ notification messages [MFC]", "notifications [MFC], CReBarCtrl"]
 ms.assetid: 40f43a60-0c18-4d8d-8fab-213a095624f9
+ms.topic: concept-article
 ---
 # Processing Notification Messages in a Rebar Control
 
diff --git a/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md b/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md
index 40487fce81..e8d46f354f 100644
--- a/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md
+++ b/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["DTN_CLOSEUP", "DTN_DATETIMECHANGE", "DTN_DROPDOWN"]
 helpviewer_keywords: ["DTN_DROPDOWN notification [MFC]", "DTN_DATETIMECHANGE notification [MFC]", "DTN_CLOSEUP notification [MFC]", "DateTimePicker control [MFC], handling notifications", "CDateTimeCtrl class [MFC], handling notifications", "DTN_FORMAT notification [MFC]", "DateTimePicker control [MFC]"]
 ms.assetid: ffbe29ab-ff80-4609-89f7-260b404439c4
+ms.topic: concept-article
 ---
 # Processing Notification Messages in Date and Time Picker Controls
 
diff --git a/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md b/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md
index f6f17343c9..17f7c1247f 100644
--- a/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md
+++ b/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md
@@ -4,6 +4,7 @@ title: "Processing Notification Messages in Extended Combo Box Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["extended combo boxes [MFC], notifications", "notifications [MFC], extended combo box controls"]
 ms.assetid: 4e442758-d054-4746-bb1a-6ff84accb127
+ms.topic: concept-article
 ---
 # Processing Notification Messages in Extended Combo Box Controls
 
diff --git a/docs/mfc/processing-notification-messages-in-list-controls.md b/docs/mfc/processing-notification-messages-in-list-controls.md
index 2f76695521..9381aeaa0e 100644
--- a/docs/mfc/processing-notification-messages-in-list-controls.md
+++ b/docs/mfc/processing-notification-messages-in-list-controls.md
@@ -4,6 +4,7 @@ title: "Processing Notification Messages in List Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["processing notifications [MFC]", "CListCtrl class [MFC], processing notifications"]
 ms.assetid: 1f0e296e-d2a3-48fc-ae38-51d7fb096f51
+ms.topic: concept-article
 ---
 # Processing Notification Messages in List Controls
 
diff --git a/docs/mfc/processing-notification-messages-in-month-calendar-controls.md b/docs/mfc/processing-notification-messages-in-month-calendar-controls.md
index 2effdb45f9..7f2c355b6a 100644
--- a/docs/mfc/processing-notification-messages-in-month-calendar-controls.md
+++ b/docs/mfc/processing-notification-messages-in-month-calendar-controls.md
@@ -4,6 +4,7 @@ title: "Processing Notification Messages in Month Calendar Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CMonthCalCtrl class [MFC], notifications", "CMonthCalCtrl class [MFC], day states", "month calendar controls [MFC], notification messages", "notifications [MFC], for CMonthCalCtrl", "notifications [MFC], month calendar control"]
 ms.assetid: 607c3e90-0756-493b-9503-ce835a50c7ab
+ms.topic: concept-article
 ---
 # Processing Notification Messages in Month Calendar Controls
 
diff --git a/docs/mfc/processing-tab-control-notification-messages.md b/docs/mfc/processing-tab-control-notification-messages.md
index a0abab7d8a..04bb96866d 100644
--- a/docs/mfc/processing-tab-control-notification-messages.md
+++ b/docs/mfc/processing-tab-control-notification-messages.md
@@ -4,6 +4,7 @@ title: "Processing Tab Control Notification Messages"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["notifications [MFC], tab controls", "CTabCtrl class [MFC], processing notifications", "notifications [MFC], processing in CTabCtrl", "processing notifications [MFC]", "tab controls [MFC], processing notifications"]
 ms.assetid: 758ccb7a-9e73-48f8-9073-23f7cb09918c
+ms.topic: concept-article
 ---
 # Processing Tab Control Notification Messages
 
diff --git a/docs/mfc/property-sheets-and-property-pages-mfc.md b/docs/mfc/property-sheets-and-property-pages-mfc.md
index 66e1363c04..bf59565782 100644
--- a/docs/mfc/property-sheets-and-property-pages-mfc.md
+++ b/docs/mfc/property-sheets-and-property-pages-mfc.md
@@ -2,7 +2,7 @@
 description: "Learn more about: Property Sheets and Property Pages (MFC)"
 title: "Property Sheets and Property Pages (MFC)"
 ms.date: "11/04/2016"
-helpviewer_keywords: ["MFC dialog boxes [MFC], tabs", "property pages [MFC], property sheets", "CPropertyPage class [MFC], property sheets and pages", "CPropertySheet class [MFC], property sheets and pages", "property sheets, propert pages"]
+helpviewer_keywords: ["MFC dialog boxes [MFC], tabs", "property pages [MFC], property sheets", "CPropertyPage class [MFC], property sheets and pages", "CPropertySheet class [MFC], property sheets and pages", "property sheets, property pages"]
 ms.assetid: de8fea12-6c35-4cef-8625-b8073a379446
 ---
 # Property Sheets and Property Pages (MFC)
diff --git a/docs/mfc/providing-drag-and-drop-support-for-header-items.md b/docs/mfc/providing-drag-and-drop-support-for-header-items.md
index e3c3b78cab..0d8f5e116f 100644
--- a/docs/mfc/providing-drag-and-drop-support-for-header-items.md
+++ b/docs/mfc/providing-drag-and-drop-support-for-header-items.md
@@ -4,6 +4,7 @@ title: "Providing Drag-and-Drop Support for Header Items"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HDS_DRAGDROP style", "header items in header controls", "CHeaderCtrl class [MFC], drag and drop support", "HDN_ notifications [MFC]"]
 ms.assetid: 93a152ec-804f-488f-b260-b3a438d0dc0f
+ms.topic: concept-article
 ---
 # Providing Drag-and-Drop Support for Header Items
 
diff --git a/docs/mfc/providing-flicker-free-activation.md b/docs/mfc/providing-flicker-free-activation.md
index e4f3a54191..177d650be4 100644
--- a/docs/mfc/providing-flicker-free-activation.md
+++ b/docs/mfc/providing-flicker-free-activation.md
@@ -4,6 +4,7 @@ title: "Providing Flicker-Free Activation"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], flicker-free", "flicker, MFC ActiveX controls", "activation [MFC], flicker-free"]
 ms.assetid: bcb24b77-31d8-44a0-8c58-2ea6213b4c43
+ms.topic: concept-article
 ---
 # Providing Flicker-Free Activation
 
diff --git a/docs/mfc/providing-mouse-interaction-while-inactive.md b/docs/mfc/providing-mouse-interaction-while-inactive.md
index 0cc692d9e0..21a2b68585 100644
--- a/docs/mfc/providing-mouse-interaction-while-inactive.md
+++ b/docs/mfc/providing-mouse-interaction-while-inactive.md
@@ -4,6 +4,7 @@ title: "Providing Mouse Interaction While Inactive"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], mouse interaction"]
 ms.assetid: b09106bf-44c7-4b9b-a6d9-0d624f16f5b3
+ms.topic: concept-article
 ---
 # Providing Mouse Interaction While Inactive
 
diff --git a/docs/mfc/providing-windowless-activation.md b/docs/mfc/providing-windowless-activation.md
index b78c0e19c4..cf11fd11d9 100644
--- a/docs/mfc/providing-windowless-activation.md
+++ b/docs/mfc/providing-windowless-activation.md
@@ -4,6 +4,7 @@ title: "Providing Windowless Activation"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["windowless activation of MFC ActiveX controls", "activation [MFC], MFC ActiveX controls", "MFC ActiveX controls [MFC], activate options", "activation [MFC], windowless"]
 ms.assetid: 094903b5-c344-42fa-96ff-ce01e16891c5
+ms.topic: concept-article
 ---
 # Providing Windowless Activation
 
diff --git a/docs/mfc/reading-and-writing-files.md b/docs/mfc/reading-and-writing-files.md
index 0ef0ecd046..22afa9e55f 100644
--- a/docs/mfc/reading-and-writing-files.md
+++ b/docs/mfc/reading-and-writing-files.md
@@ -4,6 +4,7 @@ title: "Reading and Writing Files"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CFile class [MFC], objects", "examples [MFC], reading files", "files [MFC], writing to", "examples [MFC], writing to files", "files [MFC], reading", "MFC, file operations", "CFile class [MFC], reading and writing CFile objects", "reading files", "writing to files [MFC]"]
 ms.assetid: cac0c826-ba56-495f-99b3-ce6336f65763
+ms.topic: how-to
 ---
 # Reading and Writing Files
 
diff --git a/docs/mfc/receiving-notification-from-common-controls.md b/docs/mfc/receiving-notification-from-common-controls.md
index ee2aadff48..8e78346291 100644
--- a/docs/mfc/receiving-notification-from-common-controls.md
+++ b/docs/mfc/receiving-notification-from-common-controls.md
@@ -4,6 +4,7 @@ title: "Receiving Notification from Common Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["OnNotify method [MFC]", "common controls [MFC], notifications", "ON_NOTIFY macro [MFC]", "controls [MFC], notifications", "receiving notifications from common controls", "notifications [MFC], common controls", "Windows common controls [MFC], notifications", "WM_NOTIFY message"]
 ms.assetid: 50194592-d60d-44d0-8ab3-338a2a2c63e7
+ms.topic: concept-article
 ---
 # Receiving Notification from Common Controls
 
diff --git a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md
index 5ac27990ea..91fc8ecb27 100644
--- a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md
+++ b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Use the Microsoft Visual Studio Add IDL MFC property wizard to add a property to an IDL interface in your MFC or ATL project"
 title: "Add an IDL MFC property"
-ms.date: "04/14/2022"
+description: "Learn more about: Use the Microsoft Visual Studio Add IDL MFC property wizard to add a property to an IDL interface in your MFC or ATL project"
+ms.date: 04/14/2022
 f1_keywords: ["vc.codewiz.prop.overview"]
 helpviewer_keywords: ["interfaces, adding properties", "properties [C++], adding to interfaces", "names, add property wizard", "add property wizard", "stock properties, about stock properties", "stock properties"]
 ms.custom: devdivchpfy22
@@ -167,7 +167,7 @@ If you're adding a property to an MFC dispinterface, you can choose one of the f
 |`ReadyState`|Returns or sets the control's `ReadyState` property.<br/>A control can be uninitialized, initialized, loading, interactive, or complete.<br/>For more information, see [READYSTATE](/previous-versions/aa768362\(v=vs.85\)) in the *Internet SDK*.|
 |`Text`|Returns or sets the text contained in a control.<br/>Has no **Member variable** implementation type.|
 
-## See Also
+## See also
 
 [Add Property](../../ide/adding-a-property-visual-cpp.md)
 
diff --git a/docs/mfc/reference/application-control.md b/docs/mfc/reference/application-control.md
index 8c32271d69..71d0ea63f2 100644
--- a/docs/mfc/reference/application-control.md
+++ b/docs/mfc/reference/application-control.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Application Control"
 title: "Application Control"
-ms.date: "11/04/2016"
+description: "Learn more about: Application Control"
+ms.date: 11/04/2016
 helpviewer_keywords: ["application control [MFC]"]
-ms.assetid: c1f69f15-e0fe-4515-9f36-d63d31869deb
 ---
 # Application Control
 
@@ -258,7 +257,7 @@ Nonzero if the server class is successfully registered; otherwise 0.
 
 Most applications can use `COleTemplateServer::Register` to register the application's document types. If your application's system-registry format does not fit the typical pattern, you can use `AfxOleRegisterServerClass` for more control.
 
-The registry consists of a set of keys and values. The *rglpszRegister* and *rglpszOverwrite* arguments are arrays of pointers to strings, each consisting of a key and a value separated by a **NULL** character ( `'\0'`). Each of these strings can have replaceable parameters whose places are marked by the character sequences *%1* through *%5*.
+The registry consists of a set of keys and values. The *rglpszRegister* and *rglpszOverwrite* arguments are arrays of pointers to strings, each consisting of a key and a value separated by a **NULL** character (`'\0'`). Each of these strings can have replaceable parameters whose places are marked by the character sequences *%1* through *%5*.
 
 The symbols are filled in as follows:
 
diff --git a/docs/mfc/reference/application-information-and-management.md b/docs/mfc/reference/application-information-and-management.md
index cffc7c4c52..444361085b 100644
--- a/docs/mfc/reference/application-information-and-management.md
+++ b/docs/mfc/reference/application-information-and-management.md
@@ -1,9 +1,8 @@
 ---
 title: "Application Information and Management"
 description: "Reference to the Microsoft Foundation Class library (MFC) application information and management functions."
-ms.date: "01/27/2020"
+ms.date: 01/27/2020
 helpviewer_keywords: ["applications [MFC], managing"]
-ms.assetid: b72f4154-24db-4e75-bca3-6873e2459c15
 ---
 # Application Information and Management
 
@@ -173,6 +172,7 @@ HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName,  LPCTSTR lpszType );
 
 *`lpszName`*\
 A pointer to a string containing the resource ID.
+
 *`lpszType`*\
 A pointer to the type of resource. For a list of resource types, see [`FindResource`](/windows/win32/api/winbase/nf-winbase-findresourcea) in the Windows SDK.
 
diff --git a/docs/mfc/reference/buffercommand-enumeration.md b/docs/mfc/reference/buffercommand-enumeration.md
index 347d457d89..23d430be1a 100644
--- a/docs/mfc/reference/buffercommand-enumeration.md
+++ b/docs/mfc/reference/buffercommand-enumeration.md
@@ -11,7 +11,7 @@ Used by [CMemFile::GetBufferPtr](cmemfile-class.md#getbufferptr) to determine wh
 
 ## Syntax
 
-``` cpp
+```cpp
 public enum BufferCommand
 {
    bufferRead,
diff --git a/docs/mfc/reference/carchive-class.md b/docs/mfc/reference/carchive-class.md
index 043ef933eb..8d8f606693 100644
--- a/docs/mfc/reference/carchive-class.md
+++ b/docs/mfc/reference/carchive-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CArchive Class"
 title: "CArchive Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CArchive Class"
+ms.date: 11/04/2016
 f1_keywords: ["CArchive", "AFX/CArchive", "AFX/CArchive::CArchive", "AFX/CArchive::Abort", "AFX/CArchive::Close", "AFX/CArchive::Flush", "AFX/CArchive::GetFile", "AFX/CArchive::GetObjectSchema", "AFX/CArchive::IsBufferEmpty", "AFX/CArchive::IsLoading", "AFX/CArchive::IsStoring", "AFX/CArchive::MapObject", "AFX/CArchive::Read", "AFX/CArchive::ReadClass", "AFX/CArchive::ReadObject", "AFX/CArchive::ReadString", "AFX/CArchive::SerializeClass", "AFX/CArchive::SetLoadParams", "AFX/CArchive::SetObjectSchema", "AFX/CArchive::SetStoreParams", "AFX/CArchive::Write", "AFX/CArchive::WriteClass", "AFX/CArchive::WriteObject", "AFX/CArchive::WriteString", "AFX/CArchive::m_pDocument"]
 helpviewer_keywords: ["CArchive [MFC], CArchive", "CArchive [MFC], Abort", "CArchive [MFC], Close", "CArchive [MFC], Flush", "CArchive [MFC], GetFile", "CArchive [MFC], GetObjectSchema", "CArchive [MFC], IsBufferEmpty", "CArchive [MFC], IsLoading", "CArchive [MFC], IsStoring", "CArchive [MFC], MapObject", "CArchive [MFC], Read", "CArchive [MFC], ReadClass", "CArchive [MFC], ReadObject", "CArchive [MFC], ReadString", "CArchive [MFC], SerializeClass", "CArchive [MFC], SetLoadParams", "CArchive [MFC], SetObjectSchema", "CArchive [MFC], SetStoreParams", "CArchive [MFC], Write", "CArchive [MFC], WriteClass", "CArchive [MFC], WriteObject", "CArchive [MFC], WriteString", "CArchive [MFC], m_pDocument"]
 ---
@@ -74,7 +74,7 @@ You must create a [`CFile`](../../mfc/reference/cfile-class.md) object before yo
 
 When you construct a `CArchive` object, you attach it to an object of class `CFile` (or a derived class) that represents an open file. You also specify whether the archive will be used for loading or storing. A `CArchive` object can process not only primitive types but also objects of [`CObject`](../../mfc/reference/cobject-class.md)-derived classes designed for serialization. A serializable class usually has a `Serialize` member function, and it usually uses the [`DECLARE_SERIAL`](../../mfc/reference/run-time-object-model-services.md#declare_serial) and [`IMPLEMENT_SERIAL`](../../mfc/reference/run-time-object-model-services.md#implement_serial) macros, as described under class `CObject`.
 
-The overloaded extraction ( `>>`) and insertion ( `<<`) operators are convenient archive programming interfaces that support both primitive types and `CObject`-derived classes.
+The overloaded extraction (`>>`) and insertion (`<<`) operators are convenient archive programming interfaces that support both primitive types and `CObject`-derived classes.
 
 `CArchive` also supports programming with the MFC Windows Sockets classes [`CSocket`](../../mfc/reference/csocket-class.md) and [`CSocketFile`](../../mfc/reference/csocketfile-class.md). The [`IsBufferEmpty`](#isbufferempty) member function supports that usage.
 
@@ -570,7 +570,7 @@ A [`CObject`](../../mfc/reference/cobject-class.md) pointer that must be safely
 
 ### Remarks
 
-This function is normally called by the `CArchive` extraction ( `>>`) operator overloaded for a [`CObject`](../../mfc/reference/cobject-class.md) pointer. `ReadObject`, in turn, calls the `Serialize` function of the archived class.
+This function is normally called by the `CArchive` extraction (`>>`) operator overloaded for a [`CObject`](../../mfc/reference/cobject-class.md) pointer. `ReadObject`, in turn, calls the `Serialize` function of the archived class.
 
 If you supply a nonzero *`pClass`* parameter, which is obtained by the [`RUNTIME_CLASS`](../../mfc/reference/run-time-object-model-services.md#runtime_class) macro, then the function verifies the run-time class of the archived object. This assumes you have used the `IMPLEMENT_SERIAL` macro in the implementation of the class.
 
@@ -781,7 +781,7 @@ A constant pointer to the object being stored.
 
 ### Remarks
 
-This function is normally called by the `CArchive` insertion ( `<<`) operator overloaded for `CObject`. `WriteObject`, in turn, calls the `Serialize` function of the archived class.
+This function is normally called by the `CArchive` insertion (`<<`) operator overloaded for `CObject`. `WriteObject`, in turn, calls the `Serialize` function of the archived class.
 
 You must use the `IMPLEMENT_SERIAL` macro to enable archiving. `WriteObject` writes the ASCII class name to the archive. This class name is validated later during the load process. A special encoding scheme prevents unnecessary duplication of the class name for multiple objects of the class. This scheme also prevents redundant storage of objects that are targets of more than one pointer.
 
diff --git a/docs/mfc/reference/casyncsocket-class.md b/docs/mfc/reference/casyncsocket-class.md
index d68ce7630f..9d1d045acd 100644
--- a/docs/mfc/reference/casyncsocket-class.md
+++ b/docs/mfc/reference/casyncsocket-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CAsyncSocket Class"
 title: "CAsyncSocket Class"
-ms.date: "06/25/2020"
+description: "Learn more about: CAsyncSocket Class"
+ms.date: 06/25/2020
 f1_keywords: ["CAsyncSocket", "AFXSOCK/CAsyncSocket", "AFXSOCK/CAsyncSocket::CAsyncSocket", "AFXSOCK/CAsyncSocket::Accept", "AFXSOCK/CAsyncSocket::AsyncSelect", "AFXSOCK/CAsyncSocket::Attach", "AFXSOCK/CAsyncSocket::Bind", "AFXSOCK/CAsyncSocket::Close", "AFXSOCK/CAsyncSocket::Connect", "AFXSOCK/CAsyncSocket::Create", "AFXSOCK/CAsyncSocket::Detach", "AFXSOCK/CAsyncSocket::FromHandle", "AFXSOCK/CAsyncSocket::GetLastError", "AFXSOCK/CAsyncSocket::GetPeerName", "AFXSOCK/CAsyncSocket::GetPeerNameEx", "AFXSOCK/CAsyncSocket::GetSockName", "AFXSOCK/CAsyncSocket::GetSockNameEx", "AFXSOCK/CAsyncSocket::GetSockOpt", "AFXSOCK/CAsyncSocket::IOCtl", "AFXSOCK/CAsyncSocket::Listen", "AFXSOCK/CAsyncSocket::Receive", "AFXSOCK/CAsyncSocket::ReceiveFrom", "AFXSOCK/CAsyncSocket::ReceiveFromEx", "AFXSOCK/CAsyncSocket::Send", "AFXSOCK/CAsyncSocket::SendTo", "AFXSOCK/CAsyncSocket::SendToEx", "AFXSOCK/CAsyncSocket::SetSockOpt", "AFXSOCK/CAsyncSocket::ShutDown", "AFXSOCK/CASyncSocket::Socket", "AFXSOCK/CAsyncSocket::OnAccept", "AFXSOCK/CAsyncSocket::OnClose", "AFXSOCK/CAsyncSocket::OnConnect", "AFXSOCK/CAsyncSocket::OnOutOfBandData", "AFXSOCK/CAsyncSocket::OnReceive", "AFXSOCK/CAsyncSocket::OnSend", "AFXSOCK/CAsyncSocket::m_hSocket"]
 helpviewer_keywords: ["CAsyncSocket [MFC], CAsyncSocket", "CAsyncSocket [MFC], Accept", "CAsyncSocket [MFC], AsyncSelect", "CAsyncSocket [MFC], Attach", "CAsyncSocket [MFC], Bind", "CAsyncSocket [MFC], Close", "CAsyncSocket [MFC], Connect", "CAsyncSocket [MFC], Create", "CAsyncSocket [MFC], Detach", "CAsyncSocket [MFC], FromHandle", "CAsyncSocket [MFC], GetLastError", "CAsyncSocket [MFC], GetPeerName", "CAsyncSocket [MFC], GetPeerNameEx", "CAsyncSocket [MFC], GetSockName", "CAsyncSocket [MFC], GetSockNameEx", "CAsyncSocket [MFC], GetSockOpt", "CAsyncSocket [MFC], IOCtl", "CAsyncSocket [MFC], Listen", "CAsyncSocket [MFC], Receive", "CAsyncSocket [MFC], ReceiveFrom", "CAsyncSocket [MFC], ReceiveFromEx", "CAsyncSocket [MFC], Send", "CAsyncSocket [MFC], SendTo", "CAsyncSocket [MFC], SendToEx", "CAsyncSocket [MFC], SetSockOpt", "CAsyncSocket [MFC], ShutDown", "CASyncSocket [MFC], Socket", "CAsyncSocket [MFC], OnAccept", "CAsyncSocket [MFC], OnClose", "CAsyncSocket [MFC], OnConnect", "CAsyncSocket [MFC], OnOutOfBandData", "CAsyncSocket [MFC], OnReceive", "CAsyncSocket [MFC], OnSend", "CAsyncSocket [MFC], m_hSocket"]
-ms.assetid: cca4d5a1-aa0f-48bd-843e-ef0e2d7fc00b
 ---
 # `CAsyncSocket` Class
 
@@ -844,7 +843,7 @@ This routine can be used on any socket in any state. It is used to get or retrie
 
 - `FIONREAD` Determine the maximum number of bytes that can be read with one `Receive` call from this socket. The *`lpArgument`* parameter points at a `DWORD` in which `IOCtl` stores the result. If this socket is of type `SOCK_STREAM`, `FIONREAD` returns the total amount of data which can be read in a single `Receive`; this is normally the same as the total amount of data queued on the socket. If this socket is of type `SOCK_DGRAM`, `FIONREAD` returns the size of the first datagram queued on the socket.
 
-- `SIOCATMARK` Determine whether all out-of-band data has been read. This applies only to a socket of type `SOCK_STREAM` which has been configured for in-line reception of any out-of-band data ( `SO_OOBINLINE`). If no out-of-band data is waiting to be read, the operation returns nonzero. Otherwise it returns 0, and the next `Receive` or `ReceiveFrom` performed on the socket will retrieve some or all of the data preceding the "mark"; the application should use the `SIOCATMARK` operation to determine whether any data remains. If there is any normal data preceding the "urgent" (out-of-band) data, it will be received in order. (Note that a `Receive` or `ReceiveFrom` will never mix out-of-band and normal data in the same call.) The *`lpArgument`* parameter points at a `DWORD` in which `IOCtl` stores the result.
+- `SIOCATMARK` Determine whether all out-of-band data has been read. This applies only to a socket of type `SOCK_STREAM` which has been configured for in-line reception of any out-of-band data (`SO_OOBINLINE`). If no out-of-band data is waiting to be read, the operation returns nonzero. Otherwise it returns 0, and the next `Receive` or `ReceiveFrom` performed on the socket will retrieve some or all of the data preceding the "mark"; the application should use the `SIOCATMARK` operation to determine whether any data remains. If there is any normal data preceding the "urgent" (out-of-band) data, it will be received in order. (Note that a `Receive` or `ReceiveFrom` will never mix out-of-band and normal data in the same call.) The *`lpArgument`* parameter points at a `DWORD` in which `IOCtl` stores the result.
 
 This function is a subset of `ioctl()` as used in Berkeley sockets. In particular, there is no command which is equivalent to `FIOASYNC`, while `SIOCATMARK` is the only socket-level command which is supported.
 
diff --git a/docs/mfc/reference/cbasekeyframe-class.md b/docs/mfc/reference/cbasekeyframe-class.md
index 03a3f49563..40785c05ad 100644
--- a/docs/mfc/reference/cbasekeyframe-class.md
+++ b/docs/mfc/reference/cbasekeyframe-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CBaseKeyFrame Class"
 title: "CBaseKeyFrame Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CBaseKeyFrame Class"
+ms.date: 11/04/2016
 f1_keywords: ["CBaseKeyFrame", "AFXANIMATIONCONTROLLER/CBaseKeyFrame", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::CBaseKeyFrame", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::AddToStoryboard", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::GetAnimationKeyframe", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::IsAdded", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::IsKeyframeAtOffset", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::m_bAdded", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::m_bIsKeyframeAtOffset", "AFXANIMATIONCONTROLLER/CBaseKeyFrame::m_keyframe"]
 helpviewer_keywords: ["CBaseKeyFrame [MFC], CBaseKeyFrame", "CBaseKeyFrame [MFC], AddToStoryboard", "CBaseKeyFrame [MFC], GetAnimationKeyframe", "CBaseKeyFrame [MFC], IsAdded", "CBaseKeyFrame [MFC], IsKeyframeAtOffset", "CBaseKeyFrame [MFC], m_bAdded", "CBaseKeyFrame [MFC], m_bIsKeyframeAtOffset", "CBaseKeyFrame [MFC], m_keyframe"]
-ms.assetid: 285a2eff-e7c4-43be-b5aa-737727e6866d
 ---
 # CBaseKeyFrame Class
 
@@ -115,7 +114,7 @@ BOOL IsAdded() const;
 
 ### Return Value
 
-TRUE if a keyframe is added to a storyboard; otehrwise FALSE.
+TRUE if a keyframe is added to a storyboard; otherwise FALSE.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cbasepane-class.md b/docs/mfc/reference/cbasepane-class.md
index b2c88c5ae6..b535d8ccdd 100644
--- a/docs/mfc/reference/cbasepane-class.md
+++ b/docs/mfc/reference/cbasepane-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CBasePane Class"
 title: "CBasePane Class"
-ms.date: "11/06/2018"
+description: "Learn more about: CBasePane Class"
+ms.date: 11/06/2018
 f1_keywords: ["CBasePane", "AFXBASEPANE/CBasePane", "AFXBASEPANE/CBasePane::AccNotifyObjectFocusEvent", "AFXBASEPANE/CBasePane::AddPane", "AFXBASEPANE/CBasePane::AdjustDockingLayout", "AFXBASEPANE/CBasePane::AdjustLayout", "AFXBASEPANE/CBasePane::CalcFixedLayout", "AFXBASEPANE/CBasePane::CanAcceptPane", "AFXBASEPANE/CBasePane::CanAutoHide", "AFXBASEPANE/CBasePane::CanBeAttached", "AFXBASEPANE/CBasePane::CanBeClosed", "AFXBASEPANE/CBasePane::CanBeDocked", "AFXBASEPANE/CBasePane::CanBeResized", "AFXBASEPANE/CBasePane::CanBeTabbedDocument", "AFXBASEPANE/CBasePane::CanFloat", "AFXBASEPANE/CBasePane::CanFocus", "AFXBASEPANE/CBasePane::CopyState", "AFXBASEPANE/CBasePane::CreateDefaultMiniframe", "AFXBASEPANE/CBasePane::CreateEx", "AFXBASEPANE/CBasePane::DockPane", "AFXBASEPANE/CBasePane::DockPaneUsingRTTI", "AFXBASEPANE/CBasePane::DockToFrameWindow", "AFXBASEPANE/CBasePane::DoesAllowDynInsertBefore", "AFXBASEPANE/CBasePane::EnableDocking", "AFXBASEPANE/CBasePane::EnableGripper", "AFXBASEPANE/CBasePane::FloatPane", "AFXBASEPANE/CBasePane::get_accHelpTopic", "AFXBASEPANE/CBasePane::get_accSelection", "AFXBASEPANE/CBasePane::GetCaptionHeight", "AFXBASEPANE/CBasePane::GetControlBarStyle", "AFXBASEPANE/CBasePane::GetCurrentAlignment", "AFXBASEPANE/CBasePane::GetDockingMode", "AFXBASEPANE/CBasePane::GetDockSiteFrameWnd", "AFXBASEPANE/CBasePane::GetEnabledAlignment", "AFXBASEPANE/CBasePane::GetMFCStyle", "AFXBASEPANE/CBasePane::GetPaneIcon", "AFXBASEPANE/CBasePane::GetPaneRow", "AFXBASEPANE/CBasePane::GetPaneStyle", "AFXBASEPANE/CBasePane::GetParentDockSite", "AFXBASEPANE/CBasePane::GetParentMiniFrame", "AFXBASEPANE/CBasePane::GetParentTabbedPane", "AFXBASEPANE/CBasePane::GetParentTabWnd", "AFXBASEPANE/CBasePane::GetRecentVisibleState", "AFXBASEPANE/CBasePane::HideInPrintPreviewMode", "AFXBASEPANE/CBasePane::InsertPane", "AFXBASEPANE/CBasePane::IsAccessibilityCompatible", "AFXBASEPANE/CBasePane::IsAutoHideMode", "AFXBASEPANE/CBasePane::IsDialogControl", "AFXBASEPANE/CBasePane::IsDocked", "AFXBASEPANE/CBasePane::IsFloating", "AFXBASEPANE/CBasePane::IsHorizontal", "AFXBASEPANE/CBasePane::IsInFloatingMultiPaneFrameWnd", "AFXBASEPANE/CBasePane::IsMDITabbed", "AFXBASEPANE/CBasePane::IsPaneVisible", "AFXBASEPANE/CBasePane::IsPointNearDockSite", "AFXBASEPANE/CBasePane::IsResizable", "AFXBASEPANE/CBasePane::IsRestoredFromRegistry", "AFXBASEPANE/CBasePane::IsTabbed", "AFXBASEPANE/CBasePane::IsVisible", "AFXBASEPANE/CBasePane::LoadState", "AFXBASEPANE/CBasePane::MoveWindow", "AFXBASEPANE/CBasePane::OnAfterChangeParent", "AFXBASEPANE/CBasePane::OnBeforeChangeParent", "AFXBASEPANE/CBasePane::OnDrawCaption", "AFXBASEPANE/CBasePane::OnMovePaneDivider", "AFXBASEPANE/CBasePane::OnPaneContextMenu", "AFXBASEPANE/CBasePane::OnRemoveFromMiniFrame", "AFXBASEPANE/CBasePane::OnSetAccData", "AFXBASEPANE/CBasePane::PaneFromPoint", "AFXBASEPANE/CBasePane::RecalcLayout", "AFXBASEPANE/CBasePane::RemovePaneFromDockManager", "AFXBASEPANE/CBasePane::SaveState", "AFXBASEPANE/CBasePane::SelectDefaultFont", "AFXBASEPANE/CBasePane::SetControlBarStyle", "AFXBASEPANE/CBasePane::SetDockingMode", "AFXBASEPANE/CBasePane::SetPaneAlignment", "AFXBASEPANE/CBasePane::SetPaneStyle", "AFXBASEPANE/CBasePane::SetWindowPos", "AFXBASEPANE/CBasePane::ShowPane", "AFXBASEPANE/CBasePane::StretchPane", "AFXBASEPANE/CBasePane::UndockPane", "AFXBASEPANE/CBasePane::DoPaint"]
 helpviewer_keywords: ["CBasePane [MFC], AccNotifyObjectFocusEvent", "CBasePane [MFC], AddPane", "CBasePane [MFC], AdjustDockingLayout", "CBasePane [MFC], AdjustLayout", "CBasePane [MFC], CalcFixedLayout", "CBasePane [MFC], CanAcceptPane", "CBasePane [MFC], CanAutoHide", "CBasePane [MFC], CanBeAttached", "CBasePane [MFC], CanBeClosed", "CBasePane [MFC], CanBeDocked", "CBasePane [MFC], CanBeResized", "CBasePane [MFC], CanBeTabbedDocument", "CBasePane [MFC], CanFloat", "CBasePane [MFC], CanFocus", "CBasePane [MFC], CopyState", "CBasePane [MFC], CreateDefaultMiniframe", "CBasePane [MFC], CreateEx", "CBasePane [MFC], DockPane", "CBasePane [MFC], DockPaneUsingRTTI", "CBasePane [MFC], DockToFrameWindow", "CBasePane [MFC], DoesAllowDynInsertBefore", "CBasePane [MFC], EnableDocking", "CBasePane [MFC], EnableGripper", "CBasePane [MFC], FloatPane", "CBasePane [MFC], get_accHelpTopic", "CBasePane [MFC], get_accSelection", "CBasePane [MFC], GetCaptionHeight", "CBasePane [MFC], GetControlBarStyle", "CBasePane [MFC], GetCurrentAlignment", "CBasePane [MFC], GetDockingMode", "CBasePane [MFC], GetDockSiteFrameWnd", "CBasePane [MFC], GetEnabledAlignment", "CBasePane [MFC], GetMFCStyle", "CBasePane [MFC], GetPaneIcon", "CBasePane [MFC], GetPaneRow", "CBasePane [MFC], GetPaneStyle", "CBasePane [MFC], GetParentDockSite", "CBasePane [MFC], GetParentMiniFrame", "CBasePane [MFC], GetParentTabbedPane", "CBasePane [MFC], GetParentTabWnd", "CBasePane [MFC], GetRecentVisibleState", "CBasePane [MFC], HideInPrintPreviewMode", "CBasePane [MFC], InsertPane", "CBasePane [MFC], IsAccessibilityCompatible", "CBasePane [MFC], IsAutoHideMode", "CBasePane [MFC], IsDialogControl", "CBasePane [MFC], IsDocked", "CBasePane [MFC], IsFloating", "CBasePane [MFC], IsHorizontal", "CBasePane [MFC], IsInFloatingMultiPaneFrameWnd", "CBasePane [MFC], IsMDITabbed", "CBasePane [MFC], IsPaneVisible", "CBasePane [MFC], IsPointNearDockSite", "CBasePane [MFC], IsResizable", "CBasePane [MFC], IsRestoredFromRegistry", "CBasePane [MFC], IsTabbed", "CBasePane [MFC], IsVisible", "CBasePane [MFC], LoadState", "CBasePane [MFC], MoveWindow", "CBasePane [MFC], OnAfterChangeParent", "CBasePane [MFC], OnBeforeChangeParent", "CBasePane [MFC], OnDrawCaption", "CBasePane [MFC], OnMovePaneDivider", "CBasePane [MFC], OnPaneContextMenu", "CBasePane [MFC], OnRemoveFromMiniFrame", "CBasePane [MFC], OnSetAccData", "CBasePane [MFC], PaneFromPoint", "CBasePane [MFC], RecalcLayout", "CBasePane [MFC], RemovePaneFromDockManager", "CBasePane [MFC], SaveState", "CBasePane [MFC], SelectDefaultFont", "CBasePane [MFC], SetControlBarStyle", "CBasePane [MFC], SetDockingMode", "CBasePane [MFC], SetPaneAlignment", "CBasePane [MFC], SetPaneStyle", "CBasePane [MFC], SetWindowPos", "CBasePane [MFC], ShowPane", "CBasePane [MFC], StretchPane", "CBasePane [MFC], UndockPane", "CBasePane [MFC], DoPaint"]
-ms.assetid: 8163dd51-d7c7-4def-9c74-61f8ecdfad82
 ---
 # CBasePane Class
 
@@ -80,7 +79,7 @@ class CBasePane : public CWnd
 |[CBasePane::GetMFCStyle](#getmfcstyle)|Returns the pane styles specific to MFC.|
 |[CBasePane::GetPaneIcon](#getpaneicon)|Returns a handle to the pane icon.|
 |`CBasePane::GetPaneRect`|Used internally.|
-|[CBasePane::GetPaneRow](#getpanerow)|Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md)object where the pane is docked.|
+|[CBasePane::GetPaneRow](#getpanerow)|Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md) object where the pane is docked.|
 |[CBasePane::GetPaneStyle](#getpanestyle)|Returns the pane style.|
 |[CBasePane::GetParentDockSite](#getparentdocksite)|Returns a pointer to the parent dock site.|
 |[CBasePane::GetParentMiniFrame](#getparentminiframe)|Returns a pointer to the parent mini-frame window.|
@@ -892,7 +891,7 @@ By setting *m_dockMode* or overriding `GetDockingMode` you can control the docki
 
 ## <a name="getdocksiteframewnd"></a> CBasePane::GetDockSiteFrameWnd
 
-Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md)object where the pane is docked.
+Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md) object where the pane is docked.
 
 ```
 virtual CWnd* GetDockSiteFrameWnd() const;
@@ -967,7 +966,7 @@ The default implementation calls [CWnd::GetIcon](../../mfc/reference/cwnd-class.
 
 ## <a name="getpanerow"></a> CBasePane::GetPaneRow
 
-Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md)object where the pane is docked.
+Returns a pointer to the [CDockingPanesRow](../../mfc/reference/cdockingpanesrow-class.md) object where the pane is docked.
 
 ```
 CDockingPanesRow* GetPaneRow();
diff --git a/docs/mfc/reference/ccmdtarget-class.md b/docs/mfc/reference/ccmdtarget-class.md
index 6d4a3bb06a..6c3bdf1fc0 100644
--- a/docs/mfc/reference/ccmdtarget-class.md
+++ b/docs/mfc/reference/ccmdtarget-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CCmdTarget Class"
 title: "CCmdTarget Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CCmdTarget Class"
+ms.date: 11/04/2016
 f1_keywords: ["CCmdTarget", "AFXWIN/CCmdTarget", "AFXWIN/CCmdTarget::CCmdTarget", "AFXWIN/CCmdTarget::BeginWaitCursor", "AFXWIN/CCmdTarget::DoOleVerb", "AFXWIN/CCmdTarget::EnableAutomation", "AFXWIN/CCmdTarget::EnableConnections", "AFXWIN/CCmdTarget::EnableTypeLib", "AFXWIN/CCmdTarget::EndWaitCursor", "AFXWIN/CCmdTarget::EnumOleVerbs", "AFXWIN/CCmdTarget::FromIDispatch", "AFXWIN/CCmdTarget::GetDispatchIID", "AFXWIN/CCmdTarget::GetIDispatch", "AFXWIN/CCmdTarget::GetTypeInfoCount", "AFXWIN/CCmdTarget::GetTypeInfoOfGuid", "AFXWIN/CCmdTarget::GetTypeLib", "AFXWIN/CCmdTarget::GetTypeLibCache", "AFXWIN/CCmdTarget::IsInvokeAllowed", "AFXWIN/CCmdTarget::IsResultExpected", "AFXWIN/CCmdTarget::OnCmdMsg", "AFXWIN/CCmdTarget::OnFinalRelease", "AFXWIN/CCmdTarget::RestoreWaitCursor"]
 helpviewer_keywords: ["CCmdTarget [MFC], CCmdTarget", "CCmdTarget [MFC], BeginWaitCursor", "CCmdTarget [MFC], DoOleVerb", "CCmdTarget [MFC], EnableAutomation", "CCmdTarget [MFC], EnableConnections", "CCmdTarget [MFC], EnableTypeLib", "CCmdTarget [MFC], EndWaitCursor", "CCmdTarget [MFC], EnumOleVerbs", "CCmdTarget [MFC], FromIDispatch", "CCmdTarget [MFC], GetDispatchIID", "CCmdTarget [MFC], GetIDispatch", "CCmdTarget [MFC], GetTypeInfoCount", "CCmdTarget [MFC], GetTypeInfoOfGuid", "CCmdTarget [MFC], GetTypeLib", "CCmdTarget [MFC], GetTypeLibCache", "CCmdTarget [MFC], IsInvokeAllowed", "CCmdTarget [MFC], IsResultExpected", "CCmdTarget [MFC], OnCmdMsg", "CCmdTarget [MFC], OnFinalRelease", "CCmdTarget [MFC], RestoreWaitCursor"]
 ---
@@ -299,7 +299,7 @@ HRESULT GetTypeInfoOfGuid(
 ### Parameters
 
 *`lcid`*\
-A locale identifier ( `LCID`).
+A locale identifier (`LCID`).
 
 *`guid`*\
 The [GUID](/windows/win32/api/guiddef/ns-guiddef-guid) of the type description.
diff --git a/docs/mfc/reference/ccombobox-class.md b/docs/mfc/reference/ccombobox-class.md
index 02046d4a90..ca740d929f 100644
--- a/docs/mfc/reference/ccombobox-class.md
+++ b/docs/mfc/reference/ccombobox-class.md
@@ -1,10 +1,9 @@
 ---
 title: "CComboBox Class"
 description: "API reference for the MFC Windows combo box class CComboBox"
-ms.date: "08/27/2020"
+ms.date: 08/27/2020
 f1_keywords: ["CComboBox", "AFXWIN/CComboBox", "AFXWIN/CComboBox::CComboBox", "AFXWIN/CComboBox::AddString", "AFXWIN/CComboBox::Clear", "AFXWIN/CComboBox::CompareItem", "AFXWIN/CComboBox::Copy", "AFXWIN/CComboBox::Create", "AFXWIN/CComboBox::Cut", "AFXWIN/CComboBox::DeleteItem", "AFXWIN/CComboBox::DeleteString", "AFXWIN/CComboBox::Dir", "AFXWIN/CComboBox::DrawItem", "AFXWIN/CComboBox::FindString", "AFXWIN/CComboBox::FindStringExact", "AFXWIN/CComboBox::GetComboBoxInfo", "AFXWIN/CComboBox::GetCount", "AFXWIN/CComboBox::GetCueBanner", "AFXWIN/CComboBox::GetCurSel", "AFXWIN/CComboBox::GetDroppedControlRect", "AFXWIN/CComboBox::GetDroppedState", "AFXWIN/CComboBox::GetDroppedWidth", "AFXWIN/CComboBox::GetEditSel", "AFXWIN/CComboBox::GetExtendedUI", "AFXWIN/CComboBox::GetHorizontalExtent", "AFXWIN/CComboBox::GetItemData", "AFXWIN/CComboBox::GetItemDataPtr", "AFXWIN/CComboBox::GetItemHeight", "AFXWIN/CComboBox::GetLBText", "AFXWIN/CComboBox::GetLBTextLen", "AFXWIN/CComboBox::GetLocale", "AFXWIN/CComboBox::GetMinVisible", "AFXWIN/CComboBox::GetTopIndex", "AFXWIN/CComboBox::InitStorage", "AFXWIN/CComboBox::InsertString", "AFXWIN/CComboBox::LimitText", "AFXWIN/CComboBox::MeasureItem", "AFXWIN/CComboBox::Paste", "AFXWIN/CComboBox::ResetContent", "AFXWIN/CComboBox::SelectString", "AFXWIN/CComboBox::SetCueBanner", "AFXWIN/CComboBox::SetCurSel", "AFXWIN/CComboBox::SetDroppedWidth", "AFXWIN/CComboBox::SetEditSel", "AFXWIN/CComboBox::SetExtendedUI", "AFXWIN/CComboBox::SetHorizontalExtent", "AFXWIN/CComboBox::SetItemData", "AFXWIN/CComboBox::SetItemDataPtr", "AFXWIN/CComboBox::SetItemHeight", "AFXWIN/CComboBox::SetLocale", "AFXWIN/CComboBox::SetMinVisibleItems", "AFXWIN/CComboBox::SetTopIndex", "AFXWIN/CComboBox::ShowDropDown"]
 helpviewer_keywords: ["CComboBox [MFC], CComboBox", "CComboBox [MFC], AddString", "CComboBox [MFC], Clear", "CComboBox [MFC], CompareItem", "CComboBox [MFC], Copy", "CComboBox [MFC], Create", "CComboBox [MFC], Cut", "CComboBox [MFC], DeleteItem", "CComboBox [MFC], DeleteString", "CComboBox [MFC], Dir", "CComboBox [MFC], DrawItem", "CComboBox [MFC], FindString", "CComboBox [MFC], FindStringExact", "CComboBox [MFC], GetComboBoxInfo", "CComboBox [MFC], GetCount", "CComboBox [MFC], GetCueBanner", "CComboBox [MFC], GetCurSel", "CComboBox [MFC], GetDroppedControlRect", "CComboBox [MFC], GetDroppedState", "CComboBox [MFC], GetDroppedWidth", "CComboBox [MFC], GetEditSel", "CComboBox [MFC], GetExtendedUI", "CComboBox [MFC], GetHorizontalExtent", "CComboBox [MFC], GetItemData", "CComboBox [MFC], GetItemDataPtr", "CComboBox [MFC], GetItemHeight", "CComboBox [MFC], GetLBText", "CComboBox [MFC], GetLBTextLen", "CComboBox [MFC], GetLocale", "CComboBox [MFC], GetMinVisible", "CComboBox [MFC], GetTopIndex", "CComboBox [MFC], InitStorage", "CComboBox [MFC], InsertString", "CComboBox [MFC], LimitText", "CComboBox [MFC], MeasureItem", "CComboBox [MFC], Paste", "CComboBox [MFC], ResetContent", "CComboBox [MFC], SelectString", "CComboBox [MFC], SetCueBanner", "CComboBox [MFC], SetCurSel", "CComboBox [MFC], SetDroppedWidth", "CComboBox [MFC], SetEditSel", "CComboBox [MFC], SetExtendedUI", "CComboBox [MFC], SetHorizontalExtent", "CComboBox [MFC], SetItemData", "CComboBox [MFC], SetItemDataPtr", "CComboBox [MFC], SetItemHeight", "CComboBox [MFC], SetLocale", "CComboBox [MFC], SetMinVisibleItems", "CComboBox [MFC], SetTopIndex", "CComboBox [MFC], ShowDropDown"]
-ms.assetid: 4e73b5df-0d2e-4658-9706-38133fb10513
 ---
 # `CComboBox` Class
 
@@ -515,7 +514,7 @@ BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;
 
 ### Parameters
 
-*`pcbi*<br/>
+*`pcbi`*<br/>
 A pointer to the [`COMBOBOXINFO`](/windows/win32/api/winuser/ns-winuser-comboboxinfo) structure.
 
 ### Return Value
diff --git a/docs/mfc/reference/ccommandlineinfo-class.md b/docs/mfc/reference/ccommandlineinfo-class.md
index 944fb85dd1..0702885e23 100644
--- a/docs/mfc/reference/ccommandlineinfo-class.md
+++ b/docs/mfc/reference/ccommandlineinfo-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CCommandLineInfo Class"
 title: "CCommandLineInfo Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CCommandLineInfo Class"
+ms.date: 11/04/2016
 f1_keywords: ["CCommandLineInfo", "AFXWIN/CCommandLineInfo", "AFXWIN/CCommandLineInfo::CCommandLineInfo", "AFXWIN/CCommandLineInfo::ParseParam", "AFXWIN/CCommandLineInfo::m_bRunAutomated", "AFXWIN/CCommandLineInfo::m_bRunEmbedded", "AFXWIN/CCommandLineInfo::m_bShowSplash", "AFXWIN/CCommandLineInfo::m_nShellCommand", "AFXWIN/CCommandLineInfo::m_strDriverName", "AFXWIN/CCommandLineInfo::m_strFileName", "AFXWIN/CCommandLineInfo::m_strPortName", "AFXWIN/CCommandLineInfo::m_strPrinterName", "AFXWIN/CCommandLineInfo::m_strRestartIdentifier"]
 helpviewer_keywords: ["CCommandLineInfo [MFC], CCommandLineInfo", "CCommandLineInfo [MFC], ParseParam", "CCommandLineInfo [MFC], m_bRunAutomated", "CCommandLineInfo [MFC], m_bRunEmbedded", "CCommandLineInfo [MFC], m_bShowSplash", "CCommandLineInfo [MFC], m_nShellCommand", "CCommandLineInfo [MFC], m_strDriverName", "CCommandLineInfo [MFC], m_strFileName", "CCommandLineInfo [MFC], m_strPortName", "CCommandLineInfo [MFC], m_strPrinterName", "CCommandLineInfo [MFC], m_strRestartIdentifier"]
 ---
@@ -83,7 +83,7 @@ CCommandLineInfo();
 
 ### Remarks
 
-The default is to show the splash screen ( `m_bShowSplash=TRUE`) and to execute the **New** command on the **File** menu ( `m_nShellCommand`**`=NewFile`**).
+The default is to show the splash screen (`m_bShowSplash=TRUE`) and to execute the **New** command on the **File** menu (`m_nShellCommand`**`=NewFile`**).
 
 The application framework calls [`ParseParam`](#parseparam) to fill data members of this object.
 
diff --git a/docs/mfc/reference/cd2dbitmap-class.md b/docs/mfc/reference/cd2dbitmap-class.md
index 47d1045b09..9527c8a653 100644
--- a/docs/mfc/reference/cd2dbitmap-class.md
+++ b/docs/mfc/reference/cd2dbitmap-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CD2DBitmap Class"
 title: "CD2DBitmap Class"
+description: "Learn more about: CD2DBitmap Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap::CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap::Attach", "AFXRENDERTARGET/CD2DBitmap::CopyFromBitmap", "AFXRENDERTARGET/CD2DBitmap::CopyFromMemory", "AFXRENDERTARGET/CD2DBitmap::CopyFromRenderTarget", "AFXRENDERTARGET/CD2DBitmap::Create", "AFXRENDERTARGET/CD2DBitmap::Destroy", "AFXRENDERTARGET/CD2DBitmap::Detach", "AFXRENDERTARGET/CD2DBitmap::Get", "AFXRENDERTARGET/CD2DBitmap::GetDPI", "AFXRENDERTARGET/CD2DBitmap::GetPixelFormat", "AFXRENDERTARGET/CD2DBitmap::GetPixelSize", "AFXRENDERTARGET/CD2DBitmap::GetSize", "AFXRENDERTARGET/CD2DBitmap::IsValid", "AFXRENDERTARGET/CD2DBitmap::CommonInit", "AFXRENDERTARGET/CD2DBitmap::m_bAutoDestroyHBMP", "AFXRENDERTARGET/CD2DBitmap::m_hBmpSrc", "AFXRENDERTARGET/CD2DBitmap::m_lpszType", "AFXRENDERTARGET/CD2DBitmap::m_pBitmap", "AFXRENDERTARGET/CD2DBitmap::m_sizeDest", "AFXRENDERTARGET/CD2DBitmap::m_strPath", "AFXRENDERTARGET/CD2DBitmap::m_uiResID"]
 helpviewer_keywords: ["CD2DBitmap [MFC], CD2DBitmap", "CD2DBitmap [MFC], CD2DBitmap", "CD2DBitmap [MFC], Attach", "CD2DBitmap [MFC], CopyFromBitmap", "CD2DBitmap [MFC], CopyFromMemory", "CD2DBitmap [MFC], CopyFromRenderTarget", "CD2DBitmap [MFC], Create", "CD2DBitmap [MFC], Destroy", "CD2DBitmap [MFC], Detach", "CD2DBitmap [MFC], Get", "CD2DBitmap [MFC], GetDPI", "CD2DBitmap [MFC], GetPixelFormat", "CD2DBitmap [MFC], GetPixelSize", "CD2DBitmap [MFC], GetSize", "CD2DBitmap [MFC], IsValid", "CD2DBitmap [MFC], CommonInit", "CD2DBitmap [MFC], m_bAutoDestroyHBMP", "CD2DBitmap [MFC], m_hBmpSrc", "CD2DBitmap [MFC], m_lpszType", "CD2DBitmap [MFC], m_pBitmap", "CD2DBitmap [MFC], m_sizeDest", "CD2DBitmap [MFC], m_strPath", "CD2DBitmap [MFC], m_uiResID"]
-ms.assetid: 2b3686f1-812c-462b-b449-9f0cb6949bf6
 ---
 # CD2DBitmap Class
 
@@ -327,7 +326,7 @@ CD2DSizeU GetPixelSize() const;
 
 ### Return Value
 
-The size, in pixels, of the bitmap..
+The size, in pixels, of the bitmap.
 
 ## <a name="getsize"></a> CD2DBitmap::GetSize
 
diff --git a/docs/mfc/reference/cd2dpathgeometry-class.md b/docs/mfc/reference/cd2dpathgeometry-class.md
index 40f5c337f6..c8a9259457 100644
--- a/docs/mfc/reference/cd2dpathgeometry-class.md
+++ b/docs/mfc/reference/cd2dpathgeometry-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CD2DPathGeometry Class"
 title: "CD2DPathGeometry Class"
+description: "Learn more about: CD2DPathGeometry Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CD2DPathGeometry", "AFXRENDERTARGET/CD2DPathGeometry", "AFXRENDERTARGET/CD2DPathGeometry::CD2DPathGeometry", "AFXRENDERTARGET/CD2DPathGeometry::Attach", "AFXRENDERTARGET/CD2DPathGeometry::Create", "AFXRENDERTARGET/CD2DPathGeometry::Destroy", "AFXRENDERTARGET/CD2DPathGeometry::Detach", "AFXRENDERTARGET/CD2DPathGeometry::GetFigureCount", "AFXRENDERTARGET/CD2DPathGeometry::GetSegmentCount", "AFXRENDERTARGET/CD2DPathGeometry::Open", "AFXRENDERTARGET/CD2DPathGeometry::Stream", "AFXRENDERTARGET/CD2DPathGeometry::m_pPathGeometry"]
 helpviewer_keywords: ["CD2DPathGeometry [MFC], CD2DPathGeometry", "CD2DPathGeometry [MFC], Attach", "CD2DPathGeometry [MFC], Create", "CD2DPathGeometry [MFC], Destroy", "CD2DPathGeometry [MFC], Detach", "CD2DPathGeometry [MFC], GetFigureCount", "CD2DPathGeometry [MFC], GetSegmentCount", "CD2DPathGeometry [MFC], Open", "CD2DPathGeometry [MFC], Stream", "CD2DPathGeometry [MFC], m_pPathGeometry"]
-ms.assetid: 686216eb-5080-4242-ace5-8fa1ce96307c
 ---
 # CD2DPathGeometry Class
 
@@ -127,7 +126,7 @@ Pointer to detached resource interface.
 
 ## <a name="getfigurecount"></a> CD2DPathGeometry::GetFigureCount
 
-Retrieves tthe number of figures in the path geometry.
+Retrieves the number of figures in the path geometry.
 
 ```
 int GetFigureCount() const;
diff --git a/docs/mfc/reference/cdaodatabase-class.md b/docs/mfc/reference/cdaodatabase-class.md
index a59cea4963..f1b5b85af3 100644
--- a/docs/mfc/reference/cdaodatabase-class.md
+++ b/docs/mfc/reference/cdaodatabase-class.md
@@ -4,6 +4,7 @@ title: "CDaoDatabase Class"
 ms.date: "09/17/2019"
 f1_keywords: ["CDaoDatabase", "AFXDAO/CDaoDatabase", "AFXDAO/CDaoDatabase::CDaoDatabase", "AFXDAO/CDaoDatabase::CanTransact", "AFXDAO/CDaoDatabase::CanUpdate", "AFXDAO/CDaoDatabase::Close", "AFXDAO/CDaoDatabase::Create", "AFXDAO/CDaoDatabase::CreateRelation", "AFXDAO/CDaoDatabase::DeleteQueryDef", "AFXDAO/CDaoDatabase::DeleteRelation", "AFXDAO/CDaoDatabase::DeleteTableDef", "AFXDAO/CDaoDatabase::Execute", "AFXDAO/CDaoDatabase::GetConnect", "AFXDAO/CDaoDatabase::GetName", "AFXDAO/CDaoDatabase::GetQueryDefCount", "AFXDAO/CDaoDatabase::GetQueryDefInfo", "AFXDAO/CDaoDatabase::GetQueryTimeout", "AFXDAO/CDaoDatabase::GetRecordsAffected", "AFXDAO/CDaoDatabase::GetRelationCount", "AFXDAO/CDaoDatabase::GetRelationInfo", "AFXDAO/CDaoDatabase::GetTableDefCount", "AFXDAO/CDaoDatabase::GetTableDefInfo", "AFXDAO/CDaoDatabase::GetVersion", "AFXDAO/CDaoDatabase::IsOpen", "AFXDAO/CDaoDatabase::Open", "AFXDAO/CDaoDatabase::SetQueryTimeout", "AFXDAO/CDaoDatabase::m_pDAODatabase", "AFXDAO/CDaoDatabase::m_pWorkspace"]
 helpviewer_keywords: ["CDaoDatabase [MFC], CDaoDatabase", "CDaoDatabase [MFC], CanTransact", "CDaoDatabase [MFC], CanUpdate", "CDaoDatabase [MFC], Close", "CDaoDatabase [MFC], Create", "CDaoDatabase [MFC], CreateRelation", "CDaoDatabase [MFC], DeleteQueryDef", "CDaoDatabase [MFC], DeleteRelation", "CDaoDatabase [MFC], DeleteTableDef", "CDaoDatabase [MFC], Execute", "CDaoDatabase [MFC], GetConnect", "CDaoDatabase [MFC], GetName", "CDaoDatabase [MFC], GetQueryDefCount", "CDaoDatabase [MFC], GetQueryDefInfo", "CDaoDatabase [MFC], GetQueryTimeout", "CDaoDatabase [MFC], GetRecordsAffected", "CDaoDatabase [MFC], GetRelationCount", "CDaoDatabase [MFC], GetRelationInfo", "CDaoDatabase [MFC], GetTableDefCount", "CDaoDatabase [MFC], GetTableDefInfo", "CDaoDatabase [MFC], GetVersion", "CDaoDatabase [MFC], IsOpen", "CDaoDatabase [MFC], Open", "CDaoDatabase [MFC], SetQueryTimeout", "CDaoDatabase [MFC], m_pDAODatabase", "CDaoDatabase [MFC], m_pWorkspace"]
+ms.custom: sfi-ropc-nochange
 ---
 # CDaoDatabase Class
 
diff --git a/docs/mfc/reference/cdaofieldexchange-class.md b/docs/mfc/reference/cdaofieldexchange-class.md
index e38d0fa693..47e1f63124 100644
--- a/docs/mfc/reference/cdaofieldexchange-class.md
+++ b/docs/mfc/reference/cdaofieldexchange-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CDaoFieldExchange Class"
 title: "CDaoFieldExchange Class"
-ms.date: "09/17/2019"
+description: "Learn more about: CDaoFieldExchange Class"
+ms.date: 09/17/2019
 f1_keywords: ["CDaoFieldExchange", "AFXDAO/CDaoFieldExchange", "AFXDAO/CDaoFieldExchange::IsValidOperation", "AFXDAO/CDaoFieldExchange::SetFieldType", "AFXDAO/CDaoFieldExchange::m_nOperation", "AFXDAO/CDaoFieldExchange::m_prs"]
 helpviewer_keywords: ["CDaoFieldExchange [MFC], IsValidOperation", "CDaoFieldExchange [MFC], SetFieldType", "CDaoFieldExchange [MFC], m_nOperation", "CDaoFieldExchange [MFC], m_prs"]
 ---
@@ -44,7 +44,7 @@ Use this class if you are writing data exchange routines for custom data types;
 > The DAO database classes are distinct from the MFC database classes based on Open Database Connectivity (ODBC). All DAO database class names have the "CDao" prefix. You can still access ODBC data sources with the DAO classes. In general, the MFC classes based on DAO are more capable than the MFC classes based on ODBC. The DAO-based classes can access data, including through ODBC drivers, via their own database engine. They also support Data Definition Language (DDL) operations, such as adding tables via the classes instead of having to call DAO yourself.
 
 > [!NOTE]
-> DAO record field exchange (DFX) is very similar to record field exchange (RFX) in the ODBC-based MFC database classes ( `CDatabase`, `CRecordset`). If you understand RFX, you will find it easy to use DFX.
+> DAO record field exchange (DFX) is very similar to record field exchange (RFX) in the ODBC-based MFC database classes (`CDatabase`, `CRecordset`). If you understand RFX, you will find it easy to use DFX.
 
 A `CDaoFieldExchange` object provides the context information needed for DAO record field exchange to take place. `CDaoFieldExchange` objects support a number of operations, including binding parameters and field data members and setting various flags on the fields of the current record. DFX operations are performed on recordset-class data members of types defined by the **`enum`** **FieldType** in `CDaoFieldExchange`. Possible **FieldType** values are:
 
diff --git a/docs/mfc/reference/cdaorecordset-class.md b/docs/mfc/reference/cdaorecordset-class.md
index 9614d6e514..4525538078 100644
--- a/docs/mfc/reference/cdaorecordset-class.md
+++ b/docs/mfc/reference/cdaorecordset-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CDaoRecordset Class"
 title: "CDaoRecordset Class"
-ms.date: "08/27/2018"
+description: "Learn more about: CDaoRecordset Class"
+ms.date: 08/27/2018
 f1_keywords: ["CDaoRecordset", "AFXDAO/CDaoRecordset", "AFXDAO/CDaoRecordset::CDaoRecordset", "AFXDAO/CDaoRecordset::AddNew", "AFXDAO/CDaoRecordset::CanAppend", "AFXDAO/CDaoRecordset::CanBookmark", "AFXDAO/CDaoRecordset::CancelUpdate", "AFXDAO/CDaoRecordset::CanRestart", "AFXDAO/CDaoRecordset::CanScroll", "AFXDAO/CDaoRecordset::CanTransact", "AFXDAO/CDaoRecordset::CanUpdate", "AFXDAO/CDaoRecordset::Close", "AFXDAO/CDaoRecordset::Delete", "AFXDAO/CDaoRecordset::DoFieldExchange", "AFXDAO/CDaoRecordset::Edit", "AFXDAO/CDaoRecordset::FillCache", "AFXDAO/CDaoRecordset::Find", "AFXDAO/CDaoRecordset::FindFirst", "AFXDAO/CDaoRecordset::FindLast", "AFXDAO/CDaoRecordset::FindNext", "AFXDAO/CDaoRecordset::FindPrev", "AFXDAO/CDaoRecordset::GetAbsolutePosition", "AFXDAO/CDaoRecordset::GetBookmark", "AFXDAO/CDaoRecordset::GetCacheSize", "AFXDAO/CDaoRecordset::GetCacheStart", "AFXDAO/CDaoRecordset::GetCurrentIndex", "AFXDAO/CDaoRecordset::GetDateCreated", "AFXDAO/CDaoRecordset::GetDateLastUpdated", "AFXDAO/CDaoRecordset::GetDefaultDBName", "AFXDAO/CDaoRecordset::GetDefaultSQL", "AFXDAO/CDaoRecordset::GetEditMode", "AFXDAO/CDaoRecordset::GetFieldCount", "AFXDAO/CDaoRecordset::GetFieldInfo", "AFXDAO/CDaoRecordset::GetFieldValue", "AFXDAO/CDaoRecordset::GetIndexCount", "AFXDAO/CDaoRecordset::GetIndexInfo", "AFXDAO/CDaoRecordset::GetLastModifiedBookmark", "AFXDAO/CDaoRecordset::GetLockingMode", "AFXDAO/CDaoRecordset::GetName", "AFXDAO/CDaoRecordset::GetParamValue", "AFXDAO/CDaoRecordset::GetPercentPosition", "AFXDAO/CDaoRecordset::GetRecordCount", "AFXDAO/CDaoRecordset::GetSQL", "AFXDAO/CDaoRecordset::GetType", "AFXDAO/CDaoRecordset::GetValidationRule", "AFXDAO/CDaoRecordset::GetValidationText", "AFXDAO/CDaoRecordset::IsBOF", "AFXDAO/CDaoRecordset::IsDeleted", "AFXDAO/CDaoRecordset::IsEOF", "AFXDAO/CDaoRecordset::IsFieldDirty", "AFXDAO/CDaoRecordset::IsFieldNull", "AFXDAO/CDaoRecordset::IsFieldNullable", "AFXDAO/CDaoRecordset::IsOpen", "AFXDAO/CDaoRecordset::Move", "AFXDAO/CDaoRecordset::MoveFirst", "AFXDAO/CDaoRecordset::MoveLast", "AFXDAO/CDaoRecordset::MoveNext", "AFXDAO/CDaoRecordset::MovePrev", "AFXDAO/CDaoRecordset::Open", "AFXDAO/CDaoRecordset::Requery", "AFXDAO/CDaoRecordset::Seek", "AFXDAO/CDaoRecordset::SetAbsolutePosition", "AFXDAO/CDaoRecordset::SetBookmark", "AFXDAO/CDaoRecordset::SetCacheSize", "AFXDAO/CDaoRecordset::SetCacheStart", "AFXDAO/CDaoRecordset::SetCurrentIndex", "AFXDAO/CDaoRecordset::SetFieldDirty", "AFXDAO/CDaoRecordset::SetFieldNull", "AFXDAO/CDaoRecordset::SetFieldValue", "AFXDAO/CDaoRecordset::SetFieldValueNull", "AFXDAO/CDaoRecordset::SetLockingMode", "AFXDAO/CDaoRecordset::SetParamValue", "AFXDAO/CDaoRecordset::SetParamValueNull", "AFXDAO/CDaoRecordset::SetPercentPosition", "AFXDAO/CDaoRecordset::Update", "AFXDAO/CDaoRecordset::m_bCheckCacheForDirtyFields", "AFXDAO/CDaoRecordset::m_nFields", "AFXDAO/CDaoRecordset::m_nParams", "AFXDAO/CDaoRecordset::m_pDAORecordset", "AFXDAO/CDaoRecordset::m_pDatabase", "AFXDAO/CDaoRecordset::m_strFilter", "AFXDAO/CDaoRecordset::m_strSort"]
 helpviewer_keywords: ["CDaoRecordset [MFC], CDaoRecordset", "CDaoRecordset [MFC], AddNew", "CDaoRecordset [MFC], CanAppend", "CDaoRecordset [MFC], CanBookmark", "CDaoRecordset [MFC], CancelUpdate", "CDaoRecordset [MFC], CanRestart", "CDaoRecordset [MFC], CanScroll", "CDaoRecordset [MFC], CanTransact", "CDaoRecordset [MFC], CanUpdate", "CDaoRecordset [MFC], Close", "CDaoRecordset [MFC], Delete", "CDaoRecordset [MFC], DoFieldExchange", "CDaoRecordset [MFC], Edit", "CDaoRecordset [MFC], FillCache", "CDaoRecordset [MFC], Find", "CDaoRecordset [MFC], FindFirst", "CDaoRecordset [MFC], FindLast", "CDaoRecordset [MFC], FindNext", "CDaoRecordset [MFC], FindPrev", "CDaoRecordset [MFC], GetAbsolutePosition", "CDaoRecordset [MFC], GetBookmark", "CDaoRecordset [MFC], GetCacheSize", "CDaoRecordset [MFC], GetCacheStart", "CDaoRecordset [MFC], GetCurrentIndex", "CDaoRecordset [MFC], GetDateCreated", "CDaoRecordset [MFC], GetDateLastUpdated", "CDaoRecordset [MFC], GetDefaultDBName", "CDaoRecordset [MFC], GetDefaultSQL", "CDaoRecordset [MFC], GetEditMode", "CDaoRecordset [MFC], GetFieldCount", "CDaoRecordset [MFC], GetFieldInfo", "CDaoRecordset [MFC], GetFieldValue", "CDaoRecordset [MFC], GetIndexCount", "CDaoRecordset [MFC], GetIndexInfo", "CDaoRecordset [MFC], GetLastModifiedBookmark", "CDaoRecordset [MFC], GetLockingMode", "CDaoRecordset [MFC], GetName", "CDaoRecordset [MFC], GetParamValue", "CDaoRecordset [MFC], GetPercentPosition", "CDaoRecordset [MFC], GetRecordCount", "CDaoRecordset [MFC], GetSQL", "CDaoRecordset [MFC], GetType", "CDaoRecordset [MFC], GetValidationRule", "CDaoRecordset [MFC], GetValidationText", "CDaoRecordset [MFC], IsBOF", "CDaoRecordset [MFC], IsDeleted", "CDaoRecordset [MFC], IsEOF", "CDaoRecordset [MFC], IsFieldDirty", "CDaoRecordset [MFC], IsFieldNull", "CDaoRecordset [MFC], IsFieldNullable", "CDaoRecordset [MFC], IsOpen", "CDaoRecordset [MFC], Move", "CDaoRecordset [MFC], MoveFirst", "CDaoRecordset [MFC], MoveLast", "CDaoRecordset [MFC], MoveNext", "CDaoRecordset [MFC], MovePrev", "CDaoRecordset [MFC], Open", "CDaoRecordset [MFC], Requery", "CDaoRecordset [MFC], Seek", "CDaoRecordset [MFC], SetAbsolutePosition", "CDaoRecordset [MFC], SetBookmark", "CDaoRecordset [MFC], SetCacheSize", "CDaoRecordset [MFC], SetCacheStart", "CDaoRecordset [MFC], SetCurrentIndex", "CDaoRecordset [MFC], SetFieldDirty", "CDaoRecordset [MFC], SetFieldNull", "CDaoRecordset [MFC], SetFieldValue", "CDaoRecordset [MFC], SetFieldValueNull", "CDaoRecordset [MFC], SetLockingMode", "CDaoRecordset [MFC], SetParamValue", "CDaoRecordset [MFC], SetParamValueNull", "CDaoRecordset [MFC], SetPercentPosition", "CDaoRecordset [MFC], Update", "CDaoRecordset [MFC], m_bCheckCacheForDirtyFields", "CDaoRecordset [MFC], m_nFields", "CDaoRecordset [MFC], m_nParams", "CDaoRecordset [MFC], m_pDAORecordset", "CDaoRecordset [MFC], m_pDatabase", "CDaoRecordset [MFC], m_strFilter", "CDaoRecordset [MFC], m_strSort"]
 ---
@@ -1623,7 +1623,7 @@ You can move forward or backward. `Move( 1 )` is equivalent to `MoveNext`, and `
 > Calling any of the `Move` functions throws an exception if the recordset has no records. In general, call both `IsBOF` and `IsEOF` before a Move operation to determine whether the recordset has any records. After you call `Open` or `Requery`, call either `IsBOF` or `IsEOF`.
 
 > [!NOTE]
-> If you have scrolled past the beginning or end of the recordset ( `IsBOF` or `IsEOF` returns nonzero), a call to `Move` throws a `CDaoException`.
+> If you have scrolled past the beginning or end of the recordset (`IsBOF` or `IsEOF` returns nonzero), a call to `Move` throws a `CDaoException`.
 
 > [!NOTE]
 > If you call any of the `Move` functions while the current record is being updated or added, the updates are lost without warning.
diff --git a/docs/mfc/reference/cdaotabledef-class.md b/docs/mfc/reference/cdaotabledef-class.md
index 5ad89da173..8e9f63fcc5 100644
--- a/docs/mfc/reference/cdaotabledef-class.md
+++ b/docs/mfc/reference/cdaotabledef-class.md
@@ -4,6 +4,7 @@ title: "CDaoTableDef Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CDaoTableDef", "AFXDAO/CDaoTableDef", "AFXDAO/CDaoTableDef::CDaoTableDef", "AFXDAO/CDaoTableDef::Append", "AFXDAO/CDaoTableDef::CanUpdate", "AFXDAO/CDaoTableDef::Close", "AFXDAO/CDaoTableDef::Create", "AFXDAO/CDaoTableDef::CreateField", "AFXDAO/CDaoTableDef::CreateIndex", "AFXDAO/CDaoTableDef::DeleteField", "AFXDAO/CDaoTableDef::DeleteIndex", "AFXDAO/CDaoTableDef::GetAttributes", "AFXDAO/CDaoTableDef::GetConnect", "AFXDAO/CDaoTableDef::GetDateCreated", "AFXDAO/CDaoTableDef::GetDateLastUpdated", "AFXDAO/CDaoTableDef::GetFieldCount", "AFXDAO/CDaoTableDef::GetFieldInfo", "AFXDAO/CDaoTableDef::GetIndexCount", "AFXDAO/CDaoTableDef::GetIndexInfo", "AFXDAO/CDaoTableDef::GetName", "AFXDAO/CDaoTableDef::GetRecordCount", "AFXDAO/CDaoTableDef::GetSourceTableName", "AFXDAO/CDaoTableDef::GetValidationRule", "AFXDAO/CDaoTableDef::GetValidationText", "AFXDAO/CDaoTableDef::IsOpen", "AFXDAO/CDaoTableDef::Open", "AFXDAO/CDaoTableDef::RefreshLink", "AFXDAO/CDaoTableDef::SetAttributes", "AFXDAO/CDaoTableDef::SetConnect", "AFXDAO/CDaoTableDef::SetName", "AFXDAO/CDaoTableDef::SetSourceTableName", "AFXDAO/CDaoTableDef::SetValidationRule", "AFXDAO/CDaoTableDef::SetValidationText", "AFXDAO/CDaoTableDef::m_pDAOTableDef", "AFXDAO/CDaoTableDef::m_pDatabase"]
 helpviewer_keywords: ["CDaoTableDef [MFC], CDaoTableDef", "CDaoTableDef [MFC], Append", "CDaoTableDef [MFC], CanUpdate", "CDaoTableDef [MFC], Close", "CDaoTableDef [MFC], Create", "CDaoTableDef [MFC], CreateField", "CDaoTableDef [MFC], CreateIndex", "CDaoTableDef [MFC], DeleteField", "CDaoTableDef [MFC], DeleteIndex", "CDaoTableDef [MFC], GetAttributes", "CDaoTableDef [MFC], GetConnect", "CDaoTableDef [MFC], GetDateCreated", "CDaoTableDef [MFC], GetDateLastUpdated", "CDaoTableDef [MFC], GetFieldCount", "CDaoTableDef [MFC], GetFieldInfo", "CDaoTableDef [MFC], GetIndexCount", "CDaoTableDef [MFC], GetIndexInfo", "CDaoTableDef [MFC], GetName", "CDaoTableDef [MFC], GetRecordCount", "CDaoTableDef [MFC], GetSourceTableName", "CDaoTableDef [MFC], GetValidationRule", "CDaoTableDef [MFC], GetValidationText", "CDaoTableDef [MFC], IsOpen", "CDaoTableDef [MFC], Open", "CDaoTableDef [MFC], RefreshLink", "CDaoTableDef [MFC], SetAttributes", "CDaoTableDef [MFC], SetConnect", "CDaoTableDef [MFC], SetName", "CDaoTableDef [MFC], SetSourceTableName", "CDaoTableDef [MFC], SetValidationRule", "CDaoTableDef [MFC], SetValidationText", "CDaoTableDef [MFC], m_pDAOTableDef", "CDaoTableDef [MFC], m_pDatabase"]
+ms.custom: sfi-ropc-nochange
 ---
 # CDaoTableDef Class
 
diff --git a/docs/mfc/reference/cdaoworkspace-class.md b/docs/mfc/reference/cdaoworkspace-class.md
index 777678f429..0f1ddba2a6 100644
--- a/docs/mfc/reference/cdaoworkspace-class.md
+++ b/docs/mfc/reference/cdaoworkspace-class.md
@@ -4,6 +4,7 @@ title: "CDaoWorkspace Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CDaoWorkspace", "AFXDAO/CDaoWorkspace", "AFXDAO/CDaoWorkspace::CDaoWorkspace", "AFXDAO/CDaoWorkspace::Append", "AFXDAO/CDaoWorkspace::BeginTrans", "AFXDAO/CDaoWorkspace::Close", "AFXDAO/CDaoWorkspace::CommitTrans", "AFXDAO/CDaoWorkspace::CompactDatabase", "AFXDAO/CDaoWorkspace::Create", "AFXDAO/CDaoWorkspace::GetDatabaseCount", "AFXDAO/CDaoWorkspace::GetDatabaseInfo", "AFXDAO/CDaoWorkspace::GetIniPath", "AFXDAO/CDaoWorkspace::GetIsolateODBCTrans", "AFXDAO/CDaoWorkspace::GetLoginTimeout", "AFXDAO/CDaoWorkspace::GetName", "AFXDAO/CDaoWorkspace::GetUserName", "AFXDAO/CDaoWorkspace::GetVersion", "AFXDAO/CDaoWorkspace::GetWorkspaceCount", "AFXDAO/CDaoWorkspace::GetWorkspaceInfo", "AFXDAO/CDaoWorkspace::Idle", "AFXDAO/CDaoWorkspace::IsOpen", "AFXDAO/CDaoWorkspace::Open", "AFXDAO/CDaoWorkspace::RepairDatabase", "AFXDAO/CDaoWorkspace::Rollback", "AFXDAO/CDaoWorkspace::SetDefaultPassword", "AFXDAO/CDaoWorkspace::SetDefaultUser", "AFXDAO/CDaoWorkspace::SetIniPath", "AFXDAO/CDaoWorkspace::SetIsolateODBCTrans", "AFXDAO/CDaoWorkspace::SetLoginTimeout", "AFXDAO/CDaoWorkspace::m_pDAOWorkspace"]
 helpviewer_keywords: ["CDaoWorkspace [MFC], CDaoWorkspace", "CDaoWorkspace [MFC], Append", "CDaoWorkspace [MFC], BeginTrans", "CDaoWorkspace [MFC], Close", "CDaoWorkspace [MFC], CommitTrans", "CDaoWorkspace [MFC], CompactDatabase", "CDaoWorkspace [MFC], Create", "CDaoWorkspace [MFC], GetDatabaseCount", "CDaoWorkspace [MFC], GetDatabaseInfo", "CDaoWorkspace [MFC], GetIniPath", "CDaoWorkspace [MFC], GetIsolateODBCTrans", "CDaoWorkspace [MFC], GetLoginTimeout", "CDaoWorkspace [MFC], GetName", "CDaoWorkspace [MFC], GetUserName", "CDaoWorkspace [MFC], GetVersion", "CDaoWorkspace [MFC], GetWorkspaceCount", "CDaoWorkspace [MFC], GetWorkspaceInfo", "CDaoWorkspace [MFC], Idle", "CDaoWorkspace [MFC], IsOpen", "CDaoWorkspace [MFC], Open", "CDaoWorkspace [MFC], RepairDatabase", "CDaoWorkspace [MFC], Rollback", "CDaoWorkspace [MFC], SetDefaultPassword", "CDaoWorkspace [MFC], SetDefaultUser", "CDaoWorkspace [MFC], SetIniPath", "CDaoWorkspace [MFC], SetIsolateODBCTrans", "CDaoWorkspace [MFC], SetLoginTimeout", "CDaoWorkspace [MFC], m_pDAOWorkspace"]
+ms.custom: sfi-ropc-nochange
 ---
 # CDaoWorkspace Class
 
diff --git a/docs/mfc/reference/cdatabase-class.md b/docs/mfc/reference/cdatabase-class.md
index 77fb3fd71c..7258c18594 100644
--- a/docs/mfc/reference/cdatabase-class.md
+++ b/docs/mfc/reference/cdatabase-class.md
@@ -4,6 +4,7 @@ title: "CDatabase Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CDatabase", "AFXDB/CDatabase", "AFXDB/CDatabase::CDatabase", "AFXDB/CDatabase::BeginTrans", "AFXDB/CDatabase::BindParameters", "AFXDB/CDatabase::Cancel", "AFXDB/CDatabase::CanTransact", "AFXDB/CDatabase::CanUpdate", "AFXDB/CDatabase::Close", "AFXDB/CDatabase::CommitTrans", "AFXDB/CDatabase::ExecuteSQL", "AFXDB/CDatabase::GetBookmarkPersistence", "AFXDB/CDatabase::GetConnect", "AFXDB/CDatabase::GetCursorCommitBehavior", "AFXDB/CDatabase::GetCursorRollbackBehavior", "AFXDB/CDatabase::GetDatabaseName", "AFXDB/CDatabase::IsOpen", "AFXDB/CDatabase::OnSetOptions", "AFXDB/CDatabase::Open", "AFXDB/CDatabase::OpenEx", "AFXDB/CDatabase::Rollback", "AFXDB/CDatabase::SetLoginTimeout", "AFXDB/CDatabase::SetQueryTimeout", "AFXDB/CDatabase::m_hdbc"]
 helpviewer_keywords: ["CDatabase [MFC], CDatabase", "CDatabase [MFC], BeginTrans", "CDatabase [MFC], BindParameters", "CDatabase [MFC], Cancel", "CDatabase [MFC], CanTransact", "CDatabase [MFC], CanUpdate", "CDatabase [MFC], Close", "CDatabase [MFC], CommitTrans", "CDatabase [MFC], ExecuteSQL", "CDatabase [MFC], GetBookmarkPersistence", "CDatabase [MFC], GetConnect", "CDatabase [MFC], GetCursorCommitBehavior", "CDatabase [MFC], GetCursorRollbackBehavior", "CDatabase [MFC], GetDatabaseName", "CDatabase [MFC], IsOpen", "CDatabase [MFC], OnSetOptions", "CDatabase [MFC], Open", "CDatabase [MFC], OpenEx", "CDatabase [MFC], Rollback", "CDatabase [MFC], SetLoginTimeout", "CDatabase [MFC], SetQueryTimeout", "CDatabase [MFC], m_hdbc"]
+ms.custom: sfi-ropc-nochange
 ---
 # `CDatabase` Class
 
diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md
index 5c2e0f0847..1c72d7d397 100644
--- a/docs/mfc/reference/cdc-class.md
+++ b/docs/mfc/reference/cdc-class.md
@@ -1,7 +1,7 @@
 ---
 title: "CDC Class"
 description: "Learn more about: CDC Class"
-ms.date: "11/19/2018"
+ms.date: 11/19/2018
 f1_keywords: ["CDC", "AFXWIN/CDC", "AFXWIN/CDC::CDC", "AFXWIN/CDC::AbortDoc", "AFXWIN/CDC::AbortPath", "AFXWIN/CDC::AddMetaFileComment", "AFXWIN/CDC::AlphaBlend", "AFXWIN/CDC::AngleArc", "AFXWIN/CDC::Arc", "AFXWIN/CDC::ArcTo", "AFXWIN/CDC::Attach", "AFXWIN/CDC::BeginPath", "AFXWIN/CDC::BitBlt", "AFXWIN/CDC::Chord", "AFXWIN/CDC::CloseFigure", "AFXWIN/CDC::CreateCompatibleDC", "AFXWIN/CDC::CreateDC", "AFXWIN/CDC::CreateIC", "AFXWIN/CDC::DeleteDC", "AFXWIN/CDC::DeleteTempMap", "AFXWIN/CDC::Detach", "AFXWIN/CDC::DPtoHIMETRIC", "AFXWIN/CDC::DPtoLP", "AFXWIN/CDC::Draw3dRect", "AFXWIN/CDC::DrawDragRect", "AFXWIN/CDC::DrawEdge", "AFXWIN/CDC::DrawEscape", "AFXWIN/CDC::DrawFocusRect", "AFXWIN/CDC::DrawFrameControl", "AFXWIN/CDC::DrawIcon", "AFXWIN/CDC::DrawState", "AFXWIN/CDC::DrawText", "AFXWIN/CDC::DrawTextEx", "AFXWIN/CDC::Ellipse", "AFXWIN/CDC::EndDoc", "AFXWIN/CDC::EndPage", "AFXWIN/CDC::EndPath", "AFXWIN/CDC::EnumObjects", "AFXWIN/CDC::Escape", "AFXWIN/CDC::ExcludeClipRect", "AFXWIN/CDC::ExcludeUpdateRgn", "AFXWIN/CDC::ExtFloodFill", "AFXWIN/CDC::ExtTextOut", "AFXWIN/CDC::FillPath", "AFXWIN/CDC::FillRect", "AFXWIN/CDC::FillRgn", "AFXWIN/CDC::FillSolidRect", "AFXWIN/CDC::FlattenPath", "AFXWIN/CDC::FloodFill", "AFXWIN/CDC::FrameRect", "AFXWIN/CDC::FrameRgn", "AFXWIN/CDC::FromHandle", "AFXWIN/CDC::GetArcDirection", "AFXWIN/CDC::GetAspectRatioFilter", "AFXWIN/CDC::GetBkColor", "AFXWIN/CDC::GetBkMode", "AFXWIN/CDC::GetBoundsRect", "AFXWIN/CDC::GetBrushOrg", "AFXWIN/CDC::GetCharABCWidths", "AFXWIN/CDC::GetCharABCWidthsI", "AFXWIN/CDC::GetCharacterPlacement", "AFXWIN/CDC::GetCharWidth", "AFXWIN/CDC::GetCharWidthI", "AFXWIN/CDC::GetClipBox", "AFXWIN/CDC::GetColorAdjustment", "AFXWIN/CDC::GetCurrentBitmap", "AFXWIN/CDC::GetCurrentBrush", "AFXWIN/CDC::GetCurrentFont", "AFXWIN/CDC::GetCurrentPalette", "AFXWIN/CDC::GetCurrentPen", "AFXWIN/CDC::GetCurrentPosition", "AFXWIN/CDC::GetDCBrushColor", "AFXWIN/CDC::GetDCPenColor", "AFXWIN/CDC::GetDeviceCaps", "AFXWIN/CDC::GetFontData", "AFXWIN/CDC::GetFontLanguageInfo", "AFXWIN/CDC::GetGlyphOutline", "AFXWIN/CDC::GetGraphicsMode", "AFXWIN/CDC::GetHalftoneBrush", "AFXWIN/CDC::GetKerningPairs", "AFXWIN/CDC::GetLayout", "AFXWIN/CDC::GetMapMode", "AFXWIN/CDC::GetMiterLimit", "AFXWIN/CDC::GetNearestColor", "AFXWIN/CDC::GetOutlineTextMetrics", "AFXWIN/CDC::GetOutputCharWidth", "AFXWIN/CDC::GetOutputTabbedTextExtent", "AFXWIN/CDC::GetOutputTextExtent", "AFXWIN/CDC::GetOutputTextMetrics", "AFXWIN/CDC::GetPath", "AFXWIN/CDC::GetPixel", "AFXWIN/CDC::GetPolyFillMode", "AFXWIN/CDC::GetROP2", "AFXWIN/CDC::GetSafeHdc", "AFXWIN/CDC::GetStretchBltMode", "AFXWIN/CDC::GetTabbedTextExtent", "AFXWIN/CDC::GetTextAlign", "AFXWIN/CDC::GetTextCharacterExtra", "AFXWIN/CDC::GetTextColor", "AFXWIN/CDC::GetTextExtent", "AFXWIN/CDC::GetTextExtentExPointI", "AFXWIN/CDC::GetTextExtentPointI", "AFXWIN/CDC::GetTextFace", "AFXWIN/CDC::GetTextMetrics", "AFXWIN/CDC::GetViewportExt", "AFXWIN/CDC::GetViewportOrg", "AFXWIN/CDC::GetWindow", "AFXWIN/CDC::GetWindowExt", "AFXWIN/CDC::GetWindowOrg", "AFXWIN/CDC::GetWorldTransform", "AFXWIN/CDC::GradientFill", "AFXWIN/CDC::GrayString", "AFXWIN/CDC::HIMETRICtoDP", "AFXWIN/CDC::HIMETRICtoLP", "AFXWIN/CDC::IntersectClipRect", "AFXWIN/CDC::InvertRect", "AFXWIN/CDC::InvertRgn", "AFXWIN/CDC::IsPrinting", "AFXWIN/CDC::LineTo", "AFXWIN/CDC::LPtoDP", "AFXWIN/CDC::LPtoHIMETRIC", "AFXWIN/CDC::MaskBlt", "AFXWIN/CDC::ModifyWorldTransform", "AFXWIN/CDC::MoveTo", "AFXWIN/CDC::OffsetClipRgn", "AFXWIN/CDC::OffsetViewportOrg", "AFXWIN/CDC::OffsetWindowOrg", "AFXWIN/CDC::PaintRgn", "AFXWIN/CDC::PatBlt", "AFXWIN/CDC::Pie", "AFXWIN/CDC::PlayMetaFile", "AFXWIN/CDC::PlgBlt", "AFXWIN/CDC::PolyBezier", "AFXWIN/CDC::PolyBezierTo", "AFXWIN/CDC::PolyDraw", "AFXWIN/CDC::Polygon", "AFXWIN/CDC::Polyline", "AFXWIN/CDC::PolylineTo", "AFXWIN/CDC::PolyPolygon", "AFXWIN/CDC::PolyPolyline", "AFXWIN/CDC::PtVisible", "AFXWIN/CDC::RealizePalette", "AFXWIN/CDC::Rectangle", "AFXWIN/CDC::RectVisible", "AFXWIN/CDC::ReleaseAttribDC", "AFXWIN/CDC::ReleaseOutputDC", "AFXWIN/CDC::ResetDC", "AFXWIN/CDC::RestoreDC", "AFXWIN/CDC::RoundRect", "AFXWIN/CDC::SaveDC", "AFXWIN/CDC::ScaleViewportExt", "AFXWIN/CDC::ScaleWindowExt", "AFXWIN/CDC::ScrollDC", "AFXWIN/CDC::SelectClipPath", "AFXWIN/CDC::SelectClipRgn", "AFXWIN/CDC::SelectObject", "AFXWIN/CDC::SelectPalette", "AFXWIN/CDC::SelectStockObject", "AFXWIN/CDC::SetAbortProc", "AFXWIN/CDC::SetArcDirection", "AFXWIN/CDC::SetAttribDC", "AFXWIN/CDC::SetBkColor", "AFXWIN/CDC::SetBkMode", "AFXWIN/CDC::SetBoundsRect", "AFXWIN/CDC::SetBrushOrg", "AFXWIN/CDC::SetColorAdjustment", "AFXWIN/CDC::SetDCBrushColor", "AFXWIN/CDC::SetDCPenColor", "AFXWIN/CDC::SetGraphicsMode", "AFXWIN/CDC::SetLayout", "AFXWIN/CDC::SetMapMode", "AFXWIN/CDC::SetMapperFlags", "AFXWIN/CDC::SetMiterLimit", "AFXWIN/CDC::SetOutputDC", "AFXWIN/CDC::SetPixel", "AFXWIN/CDC::SetPixelV", "AFXWIN/CDC::SetPolyFillMode", "AFXWIN/CDC::SetROP2", "AFXWIN/CDC::SetStretchBltMode", "AFXWIN/CDC::SetTextAlign", "AFXWIN/CDC::SetTextCharacterExtra", "AFXWIN/CDC::SetTextColor", "AFXWIN/CDC::SetTextJustification", "AFXWIN/CDC::SetViewportExt", "AFXWIN/CDC::SetViewportOrg", "AFXWIN/CDC::SetWindowExt", "AFXWIN/CDC::SetWindowOrg", "AFXWIN/CDC::SetWorldTransform", "AFXWIN/CDC::StartDoc", "AFXWIN/CDC::StartPage", "AFXWIN/CDC::StretchBlt", "AFXWIN/CDC::StrokeAndFillPath", "AFXWIN/CDC::StrokePath", "AFXWIN/CDC::TabbedTextOut", "AFXWIN/CDC::TextOut", "AFXWIN/CDC::TransparentBlt", "AFXWIN/CDC::UpdateColors", "AFXWIN/CDC::WidenPath", "AFXWIN/CDC::m_hAttribDC", "AFXWIN/CDC::m_hDC"]
 helpviewer_keywords: ["CDC [MFC], CDC", "CDC [MFC], AbortDoc", "CDC [MFC], AbortPath", "CDC [MFC], AddMetaFileComment", "CDC [MFC], AlphaBlend", "CDC [MFC], AngleArc", "CDC [MFC], Arc", "CDC [MFC], ArcTo", "CDC [MFC], Attach", "CDC [MFC], BeginPath", "CDC [MFC], BitBlt", "CDC [MFC], Chord", "CDC [MFC], CloseFigure", "CDC [MFC], CreateCompatibleDC", "CDC [MFC], CreateDC", "CDC [MFC], CreateIC", "CDC [MFC], DeleteDC", "CDC [MFC], DeleteTempMap", "CDC [MFC], Detach", "CDC [MFC], DPtoHIMETRIC", "CDC [MFC], DPtoLP", "CDC [MFC], Draw3dRect", "CDC [MFC], DrawDragRect", "CDC [MFC], DrawEdge", "CDC [MFC], DrawEscape", "CDC [MFC], DrawFocusRect", "CDC [MFC], DrawFrameControl", "CDC [MFC], DrawIcon", "CDC [MFC], DrawState", "CDC [MFC], DrawText", "CDC [MFC], DrawTextEx", "CDC [MFC], Ellipse", "CDC [MFC], EndDoc", "CDC [MFC], EndPage", "CDC [MFC], EndPath", "CDC [MFC], EnumObjects", "CDC [MFC], Escape", "CDC [MFC], ExcludeClipRect", "CDC [MFC], ExcludeUpdateRgn", "CDC [MFC], ExtFloodFill", "CDC [MFC], ExtTextOut", "CDC [MFC], FillPath", "CDC [MFC], FillRect", "CDC [MFC], FillRgn", "CDC [MFC], FillSolidRect", "CDC [MFC], FlattenPath", "CDC [MFC], FloodFill", "CDC [MFC], FrameRect", "CDC [MFC], FrameRgn", "CDC [MFC], FromHandle", "CDC [MFC], GetArcDirection", "CDC [MFC], GetAspectRatioFilter", "CDC [MFC], GetBkColor", "CDC [MFC], GetBkMode", "CDC [MFC], GetBoundsRect", "CDC [MFC], GetBrushOrg", "CDC [MFC], GetCharABCWidths", "CDC [MFC], GetCharABCWidthsI", "CDC [MFC], GetCharacterPlacement", "CDC [MFC], GetCharWidth", "CDC [MFC], GetCharWidthI", "CDC [MFC], GetClipBox", "CDC [MFC], GetColorAdjustment", "CDC [MFC], GetCurrentBitmap", "CDC [MFC], GetCurrentBrush", "CDC [MFC], GetCurrentFont", "CDC [MFC], GetCurrentPalette", "CDC [MFC], GetCurrentPen", "CDC [MFC], GetCurrentPosition", "CDC [MFC], GetDCBrushColor", "CDC [MFC], GetDCPenColor", "CDC [MFC], GetDeviceCaps", "CDC [MFC], GetFontData", "CDC [MFC], GetFontLanguageInfo", "CDC [MFC], GetGlyphOutline", "CDC [MFC], GetGraphicsMode", "CDC [MFC], GetHalftoneBrush", "CDC [MFC], GetKerningPairs", "CDC [MFC], GetLayout", "CDC [MFC], GetMapMode", "CDC [MFC], GetMiterLimit", "CDC [MFC], GetNearestColor", "CDC [MFC], GetOutlineTextMetrics", "CDC [MFC], GetOutputCharWidth", "CDC [MFC], GetOutputTabbedTextExtent", "CDC [MFC], GetOutputTextExtent", "CDC [MFC], GetOutputTextMetrics", "CDC [MFC], GetPath", "CDC [MFC], GetPixel", "CDC [MFC], GetPolyFillMode", "CDC [MFC], GetROP2", "CDC [MFC], GetSafeHdc", "CDC [MFC], GetStretchBltMode", "CDC [MFC], GetTabbedTextExtent", "CDC [MFC], GetTextAlign", "CDC [MFC], GetTextCharacterExtra", "CDC [MFC], GetTextColor", "CDC [MFC], GetTextExtent", "CDC [MFC], GetTextExtentExPointI", "CDC [MFC], GetTextExtentPointI", "CDC [MFC], GetTextFace", "CDC [MFC], GetTextMetrics", "CDC [MFC], GetViewportExt", "CDC [MFC], GetViewportOrg", "CDC [MFC], GetWindow", "CDC [MFC], GetWindowExt", "CDC [MFC], GetWindowOrg", "CDC [MFC], GetWorldTransform", "CDC [MFC], GradientFill", "CDC [MFC], GrayString", "CDC [MFC], HIMETRICtoDP", "CDC [MFC], HIMETRICtoLP", "CDC [MFC], IntersectClipRect", "CDC [MFC], InvertRect", "CDC [MFC], InvertRgn", "CDC [MFC], IsPrinting", "CDC [MFC], LineTo", "CDC [MFC], LPtoDP", "CDC [MFC], LPtoHIMETRIC", "CDC [MFC], MaskBlt", "CDC [MFC], ModifyWorldTransform", "CDC [MFC], MoveTo", "CDC [MFC], OffsetClipRgn", "CDC [MFC], OffsetViewportOrg", "CDC [MFC], OffsetWindowOrg", "CDC [MFC], PaintRgn", "CDC [MFC], PatBlt", "CDC [MFC], Pie", "CDC [MFC], PlayMetaFile", "CDC [MFC], PlgBlt", "CDC [MFC], PolyBezier", "CDC [MFC], PolyBezierTo", "CDC [MFC], PolyDraw", "CDC [MFC], Polygon", "CDC [MFC], Polyline", "CDC [MFC], PolylineTo", "CDC [MFC], PolyPolygon", "CDC [MFC], PolyPolyline", "CDC [MFC], PtVisible", "CDC [MFC], RealizePalette", "CDC [MFC], Rectangle", "CDC [MFC], RectVisible", "CDC [MFC], ReleaseAttribDC", "CDC [MFC], ReleaseOutputDC", "CDC [MFC], ResetDC", "CDC [MFC], RestoreDC", "CDC [MFC], RoundRect", "CDC [MFC], SaveDC", "CDC [MFC], ScaleViewportExt", "CDC [MFC], ScaleWindowExt", "CDC [MFC], ScrollDC", "CDC [MFC], SelectClipPath", "CDC [MFC], SelectClipRgn", "CDC [MFC], SelectObject", "CDC [MFC], SelectPalette", "CDC [MFC], SelectStockObject", "CDC [MFC], SetAbortProc", "CDC [MFC], SetArcDirection", "CDC [MFC], SetAttribDC", "CDC [MFC], SetBkColor", "CDC [MFC], SetBkMode", "CDC [MFC], SetBoundsRect", "CDC [MFC], SetBrushOrg", "CDC [MFC], SetColorAdjustment", "CDC [MFC], SetDCBrushColor", "CDC [MFC], SetDCPenColor", "CDC [MFC], SetGraphicsMode", "CDC [MFC], SetLayout", "CDC [MFC], SetMapMode", "CDC [MFC], SetMapperFlags", "CDC [MFC], SetMiterLimit", "CDC [MFC], SetOutputDC", "CDC [MFC], SetPixel", "CDC [MFC], SetPixelV", "CDC [MFC], SetPolyFillMode", "CDC [MFC], SetROP2", "CDC [MFC], SetStretchBltMode", "CDC [MFC], SetTextAlign", "CDC [MFC], SetTextCharacterExtra", "CDC [MFC], SetTextColor", "CDC [MFC], SetTextJustification", "CDC [MFC], SetViewportExt", "CDC [MFC], SetViewportOrg", "CDC [MFC], SetWindowExt", "CDC [MFC], SetWindowOrg", "CDC [MFC], SetWorldTransform", "CDC [MFC], StartDoc", "CDC [MFC], StartPage", "CDC [MFC], StretchBlt", "CDC [MFC], StrokeAndFillPath", "CDC [MFC], StrokePath", "CDC [MFC], TabbedTextOut", "CDC [MFC], TextOut", "CDC [MFC], TransparentBlt", "CDC [MFC], UpdateColors", "CDC [MFC], WidenPath", "CDC [MFC], m_hAttribDC", "CDC [MFC], m_hDC"]
 ---
@@ -590,7 +590,7 @@ Nonzero if the function is successful; otherwise 0.
 
 ### Remarks
 
-This function is similar to `CDC::Arc`, except that the current position is updated. The points ( *`x1`*, *`y1`*) and ( *`x2`*, *`y2`*) specify the bounding rectangle. An ellipse formed by the given bounding rectangle defines the curve of the arc. The arc extends counterclockwise (the default arc direction) from the point where it intersects the radial line from the center of the bounding rectangle to ( *`x3*`, *`y3`*). The arc ends where it intersects the radial line from the center of the bounding rectangle to ( *`x4`*, *`y4`*). If the starting point and ending point are the same, a complete ellipse is drawn.
+This function is similar to `CDC::Arc`, except that the current position is updated. The points ( *`x1`*, *`y1`*) and ( *`x2`*, *`y2`*) specify the bounding rectangle. An ellipse formed by the given bounding rectangle defines the curve of the arc. The arc extends counterclockwise (the default arc direction) from the point where it intersects the radial line from the center of the bounding rectangle to ( *`x3`*, *`y3`*). The arc ends where it intersects the radial line from the center of the bounding rectangle to ( *`x4`*, *`y4`*). If the starting point and ending point are the same, a complete ellipse is drawn.
 
 A line is drawn from the current position to the starting point of the arc. If no error occurs, the current position is set to the ending point of the arc. The arc is drawn using the current pen; it isn't filled.
 
@@ -764,7 +764,7 @@ Specifies the bounding rectangle (in logical units). You can pass either a `LPRE
 *`ptStart`*\
 Specifies the x- and y-coordinates of the point that defines the chord's starting point (in logical units). This point doesn't have to lie exactly on the chord. You can pass either a `POINT` structure or a `CPoint` object for this parameter.
 
-*`ptEnd*`\
+*`ptEnd`*\
 Specifies the x- and y-coordinates of the point that defines the chord's ending point (in logical units). This point doesn't have to lie exactly on the chord. You can pass either a [`POINT`](/windows/win32/api/windef/ns-windef-point) structure or a [`CPoint`](../../atl-mfc-shared/reference/cpoint-class.md) object for this parameter.
 
 ### Return Value
@@ -2999,7 +2999,7 @@ The function stores the values in the buffer pointed to by *`lpBuffer`*. This bu
 
 If a character in the consecutive group of characters doesn't exist in a particular font, it will be assigned the width value of the default character.
 
-## <a name="getoutputtabbedtextextent"></a>`CDC::GetOutputTabbedTextExtent`
+## <a name="getoutputtabbedtextextent"></a> `CDC::GetOutputTabbedTextExtent`
 
 Call this member function to compute the width and height of a character string using [`m_hDC`](#m_hdc), the output device context.
 
@@ -3145,7 +3145,7 @@ The device context must contain a closed path. The points of the path are return
 
 ## <a name="getpixel"></a> `CDC::GetPixel`
 
-Retrieves the RGB color value of the pixel at the point specified by *`x`* and *`y*`.
+Retrieves the RGB color value of the pixel at the point specified by *`x`* and *`y`*.
 
 ```
 COLORREF GetPixel(
diff --git a/docs/mfc/reference/cdialog-class.md b/docs/mfc/reference/cdialog-class.md
index 099d0e3718..fa6866e8b8 100644
--- a/docs/mfc/reference/cdialog-class.md
+++ b/docs/mfc/reference/cdialog-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CDialog Class"
 title: "CDialog Class"
-ms.date: "09/07/2019"
+description: "Learn more about: CDialog Class"
+ms.date: 09/07/2019
 f1_keywords: ["CDialog", "AFXWIN/CDialog", "AFXWIN/CDialog::CDialog", "AFXWIN/CDialog::Create", "AFXWIN/CDialog::CreateIndirect", "AFXWIN/CDialog::DoModal", "AFXWIN/CDialog::EndDialog", "AFXWIN/CDialog::GetDefID", "AFXWIN/CDialog::GotoDlgCtrl", "AFXWIN/CDialog::InitModalIndirect", "AFXWIN/CDialog::MapDialogRect", "AFXWIN/CDialog::NextDlgCtrl", "AFXWIN/CDialog::OnInitDialog", "AFXWIN/CDialog::OnSetFont", "AFXWIN/CDialog::PrevDlgCtrl", "AFXWIN/CDialog::SetDefID", "AFXWIN/CDialog::SetHelpID", "AFXWIN/CDialog::OnCancel", "AFXWIN/CDialog::OnOK"]
 helpviewer_keywords: ["CDialog [MFC], CDialog", "CDialog [MFC], Create", "CDialog [MFC], CreateIndirect", "CDialog [MFC], DoModal", "CDialog [MFC], EndDialog", "CDialog [MFC], GetDefID", "CDialog [MFC], GotoDlgCtrl", "CDialog [MFC], InitModalIndirect", "CDialog [MFC], MapDialogRect", "CDialog [MFC], NextDlgCtrl", "CDialog [MFC], OnInitDialog", "CDialog [MFC], OnSetFont", "CDialog [MFC], PrevDlgCtrl", "CDialog [MFC], SetDefID", "CDialog [MFC], SetHelpID", "CDialog [MFC], OnCancel", "CDialog [MFC], OnOK"]
-ms.assetid: ca64b77e-2cd2-47e3-8eff-c2645ad578f9
 ---
 # CDialog Class
 
@@ -287,7 +286,7 @@ DWORD GetDefID() const;
 
 ### Return Value
 
-A 32-bit value ( `DWORD`). If the default pushbutton has an ID value, the high-order word contains DC_HASDEFID and the low-order word contains the ID value. If the default pushbutton does not have an ID value, the return value is 0.
+A 32-bit value (`DWORD`). If the default pushbutton has an ID value, the high-order word contains DC_HASDEFID and the low-order word contains the ID value. If the default pushbutton does not have an ID value, the return value is 0.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cdockablepane-class.md b/docs/mfc/reference/cdockablepane-class.md
index 159c429e7f..cd6f713116 100644
--- a/docs/mfc/reference/cdockablepane-class.md
+++ b/docs/mfc/reference/cdockablepane-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CDockablePane Class"
 title: "CDockablePane Class"
-ms.date: "07/02/2019"
+description: "Learn more about: CDockablePane Class"
+ms.date: 07/02/2019
 f1_keywords: ["CDockablePane", "AFXDOCKABLEPANE/CDockablePane", "AFXDOCKABLEPANE/CDockablePane::CDockablePane", "AFXDOCKABLEPANE/CDockablePane::AttachToTabWnd", "AFXDOCKABLEPANE/CDockablePane::CalcFixedLayout", "AFXDOCKABLEPANE/CDockablePane::CanAcceptMiniFrame", "AFXDOCKABLEPANE/CDockablePane::CanAcceptPane", "AFXDOCKABLEPANE/CDockablePane::CanAutoHide", "AFXDOCKABLEPANE/CDockablePane::CanBeAttached", "AFXDOCKABLEPANE/CDockablePane::ConvertToTabbedDocument", "AFXDOCKABLEPANE/CDockablePane::CopyState", "AFXDOCKABLEPANE/CDockablePane::Create", "AFXDOCKABLEPANE/CDockablePane::CreateDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::CreateEx", "AFXDOCKABLEPANE/CDockablePane::CreateTabbedPane", "AFXDOCKABLEPANE/CDockablePane::DockPaneContainer", "AFXDOCKABLEPANE/CDockablePane::DockPaneStandard", "AFXDOCKABLEPANE/CDockablePane::DockToRecentPos", "AFXDOCKABLEPANE/CDockablePane::DockToWindow", "AFXDOCKABLEPANE/CDockablePane::EnableAutohideAll", "AFXDOCKABLEPANE/CDockablePane::EnableGripper", "AFXDOCKABLEPANE/CDockablePane::GetAHRestoredRect", "AFXDOCKABLEPANE/CDockablePane::GetAHSlideMode", "AFXDOCKABLEPANE/CDockablePane::GetCaptionHeight", "AFXDOCKABLEPANE/CDockablePane::GetDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::GetDockingStatus", "AFXDOCKABLEPANE/CDockablePane::GetDragSensitivity", "AFXDOCKABLEPANE/CDockablePane::GetLastPercentInPaneContainer", "AFXDOCKABLEPANE/CDockablePane::GetTabArea", "AFXDOCKABLEPANE/CDockablePane::GetTabbedPaneRTC", "AFXDOCKABLEPANE/CDockablePane::HasAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::HitTest", "AFXDOCKABLEPANE/CDockablePane::IsAutohideAllEnabled", "AFXDOCKABLEPANE/CDockablePane::IsAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::IsDocked", "AFXDOCKABLEPANE/CDockablePane::IsHideInAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::IsInFloatingMultiPaneFrameWnd", "AFXDOCKABLEPANE/CDockablePane::IsResizable", "AFXDOCKABLEPANE/CDockablePane::IsTabLocationBottom", "AFXDOCKABLEPANE/CDockablePane::IsTracked", "AFXDOCKABLEPANE/CDockablePane::IsVisible", "AFXDOCKABLEPANE/CDockablePane::OnAfterChangeParent", "AFXDOCKABLEPANE/CDockablePane::OnAfterDockFromMiniFrame", "AFXDOCKABLEPANE/CDockablePane::OnBeforeChangeParent", "AFXDOCKABLEPANE/CDockablePane::OnBeforeFloat", "AFXDOCKABLEPANE/CDockablePane::RemoveFromDefaultPaneDividier", "AFXDOCKABLEPANE/CDockablePane::ReplacePane", "AFXDOCKABLEPANE/CDockablePane::RestoreDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::SetAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::SetAutoHideParents", "AFXDOCKABLEPANE/CDockablePane::SetLastPercentInPaneContainer", "AFXDOCKABLEPANE/CDockablePane::SetRestoredDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::SetTabbedPaneRTC", "AFXDOCKABLEPANE/CDockablePane::ShowPane", "AFXDOCKABLEPANE/CDockablePane::Slide", "AFXDOCKABLEPANE/CDockablePane::ToggleAutoHide", "AFXDOCKABLEPANE/CDockablePane::UndockPane", "AFXDOCKABLEPANE/CDockablePane::CheckAutoHideCondition", "AFXDOCKABLEPANE/CDockablePane::CheckStopSlideCondition", "AFXDOCKABLEPANE/CDockablePane::DrawCaption", "AFXDOCKABLEPANE/CDockablePane::OnPressButtons", "AFXDOCKABLEPANE/CDockablePane::OnSlide", "AFXDOCKABLEPANE/CDockablePane::m_bDisableAnimation", "AFXDOCKABLEPANE/CDockablePane::m_bHideInAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::m_nSlideSteps"]
 helpviewer_keywords: ["CDockablePane [MFC], CDockablePane", "CDockablePane [MFC], AttachToTabWnd", "CDockablePane [MFC], CalcFixedLayout", "CDockablePane [MFC], CanAcceptMiniFrame", "CDockablePane [MFC], CanAcceptPane", "CDockablePane [MFC], CanAutoHide", "CDockablePane [MFC], CanBeAttached", "CDockablePane [MFC], ConvertToTabbedDocument", "CDockablePane [MFC], CopyState", "CDockablePane [MFC], Create", "CDockablePane [MFC], CreateDefaultPaneDivider", "CDockablePane [MFC], CreateEx", "CDockablePane [MFC], CreateTabbedPane", "CDockablePane [MFC], DockPaneContainer", "CDockablePane [MFC], DockPaneStandard", "CDockablePane [MFC], DockToRecentPos", "CDockablePane [MFC], DockToWindow", "CDockablePane [MFC], EnableAutohideAll", "CDockablePane [MFC], EnableGripper", "CDockablePane [MFC], GetAHRestoredRect", "CDockablePane [MFC], GetAHSlideMode", "CDockablePane [MFC], GetCaptionHeight", "CDockablePane [MFC], GetDefaultPaneDivider", "CDockablePane [MFC], GetDockingStatus", "CDockablePane [MFC], GetDragSensitivity", "CDockablePane [MFC], GetLastPercentInPaneContainer", "CDockablePane [MFC], GetTabArea", "CDockablePane [MFC], GetTabbedPaneRTC", "CDockablePane [MFC], HasAutoHideMode", "CDockablePane [MFC], HitTest", "CDockablePane [MFC], IsAutohideAllEnabled", "CDockablePane [MFC], IsAutoHideMode", "CDockablePane [MFC], IsDocked", "CDockablePane [MFC], IsHideInAutoHideMode", "CDockablePane [MFC], IsInFloatingMultiPaneFrameWnd", "CDockablePane [MFC], IsResizable", "CDockablePane [MFC], IsTabLocationBottom", "CDockablePane [MFC], IsTracked", "CDockablePane [MFC], IsVisible", "CDockablePane [MFC], OnAfterChangeParent", "CDockablePane [MFC], OnAfterDockFromMiniFrame", "CDockablePane [MFC], OnBeforeChangeParent", "CDockablePane [MFC], OnBeforeFloat", "CDockablePane [MFC], RemoveFromDefaultPaneDividier", "CDockablePane [MFC], ReplacePane", "CDockablePane [MFC], RestoreDefaultPaneDivider", "CDockablePane [MFC], SetAutoHideMode", "CDockablePane [MFC], SetAutoHideParents", "CDockablePane [MFC], SetLastPercentInPaneContainer", "CDockablePane [MFC], SetRestoredDefaultPaneDivider", "CDockablePane [MFC], SetTabbedPaneRTC", "CDockablePane [MFC], ShowPane", "CDockablePane [MFC], Slide", "CDockablePane [MFC], ToggleAutoHide", "CDockablePane [MFC], UndockPane", "CDockablePane [MFC], CheckAutoHideCondition", "CDockablePane [MFC], CheckStopSlideCondition", "CDockablePane [MFC], DrawCaption", "CDockablePane [MFC], OnPressButtons", "CDockablePane [MFC], OnSlide", "CDockablePane [MFC], m_bDisableAnimation", "CDockablePane [MFC], m_bHideInAutoHideMode", "CDockablePane [MFC], m_nSlideSteps"]
 ---
@@ -874,7 +874,7 @@ One of the following status values:
 
 The framework calls this method to handle docking of a floating pane.
 
-For floating toolbars or docking panes that use the `DT_IMMEDIATE` docking mode, the framework delays the dock command to enable the user to move the window out of the client area of the parent frame before docking occurs. The length of the delay is measured in milliseconds and is controlled by the [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) data member.. The default value of [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) is 200. This behavior emulates the docking behavior of Microsoft Word 2007.
+For floating toolbars or docking panes that use the `DT_IMMEDIATE` docking mode, the framework delays the dock command to enable the user to move the window out of the client area of the parent frame before docking occurs. The length of the delay is measured in milliseconds and is controlled by the [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) data member. The default value of [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) is 200. This behavior emulates the docking behavior of Microsoft Word 2007.
 
 For delayed docking states (`CS_DELAY_DOCK` and `CS_DELAY_DOCK_TO_TAB`), the framework doesn't perform docking until the user releases the mouse button. If a pane uses the `DT_STANDARD` docking mode, the framework displays a rectangle at the projected docking location. If a pane uses the `DT_SMART` docking mode, the framework displays smart docking markers and semi-transparent rectangles at the projected docking location. To specify the docking mode for your pane, call the [`CBasePane::SetDockingMode`](../../mfc/reference/cbasepane-class.md#setdockingmode) method. For more information about smart docking, see [`CDockingManager::GetSmartDockingParams`](../../mfc/reference/cdockingmanager-class.md#getsmartdockingparams).
 
@@ -1142,7 +1142,7 @@ If the dockable pane is in autohide mode and `IsHideInAutoHideMode` returns `TRU
 
 If the dockable pane isn't in autohide mode, the visibility state is determined by the [`CBasePane::IsVisible`](../../mfc/reference/cbasepane-class.md#isvisible) method.
 
-## ##  <a name="loadstate"></a> `CDockablePane::LoadState`
+## <a name="loadstate"></a> `CDockablePane::LoadState`
 
 For internal use only. For more detail, see the source code located in the `mfc` folder of your Visual Studio installation. For example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`.
 
@@ -1201,7 +1201,7 @@ virtual void OnAfterChangeParent(CWnd* pWndOldParent);
 
 ### Parameters
 
-[in] *`pWndOldParent`*\
+[in] *`pWndOldParent`*
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cdocobjectserver-class.md b/docs/mfc/reference/cdocobjectserver-class.md
index 70f2fed087..b99f2715ac 100644
--- a/docs/mfc/reference/cdocobjectserver-class.md
+++ b/docs/mfc/reference/cdocobjectserver-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CDocObjectServer Class"
 title: "CDocObjectServer Class"
-ms.date: "09/12/2018"
+description: "Learn more about: CDocObjectServer Class"
+ms.date: 09/12/2018
 f1_keywords: ["CDocObjectServer", "AFXDOCOB/CDocObjectServer", "AFXDOCOB/CDocObjectServer::CDocObjectServer", "AFXDOCOB/CDocObjectServer::ActivateDocObject", "AFXDOCOB/CDocObjectServer::OnActivateView", "AFXDOCOB/CDocObjectServer::OnApplyViewState", "AFXDOCOB/CDocObjectServer::OnSaveViewState"]
 helpviewer_keywords: ["CDocObjectServer [MFC], CDocObjectServer", "CDocObjectServer [MFC], ActivateDocObject", "CDocObjectServer [MFC], OnActivateView", "CDocObjectServer [MFC], OnApplyViewState", "CDocObjectServer [MFC], OnSaveViewState"]
-ms.assetid: 18cd0dff-0616-4472-b8d9-66c081bc383a
 ---
 # CDocObjectServer Class
 
@@ -94,7 +93,7 @@ A pointer to the `IOleDocumentSite` interface implemented by the container.
 
 ### Remarks
 
-When a DocObject is active, the client site OLE interface ( `IOleDocumentSite`) is what allows the DocObject server to communicate with its client (the container). When a DocObject server is activated, it first checks that the container implements the `IOleDocumentSite` interface. If so, [COleServerDoc::GetDocObjectServer](../../mfc/reference/coleserverdoc-class.md#getdocobjectserver) is called to see if the container supports DocObjects. By default, `GetDocObjectServer` returns NULL. You must override `COleServerDoc::GetDocObjectServer` to construct a new `CDocObjectServer` object or a derived object of your own, with pointers to the `COleServerDoc` container and its `IOleDocumentSite` interface as arguments to the constructor.
+When a DocObject is active, the client site OLE interface (`IOleDocumentSite`) is what allows the DocObject server to communicate with its client (the container). When a DocObject server is activated, it first checks that the container implements the `IOleDocumentSite` interface. If so, [COleServerDoc::GetDocObjectServer](../../mfc/reference/coleserverdoc-class.md#getdocobjectserver) is called to see if the container supports DocObjects. By default, `GetDocObjectServer` returns NULL. You must override `COleServerDoc::GetDocObjectServer` to construct a new `CDocObjectServer` object or a derived object of your own, with pointers to the `COleServerDoc` container and its `IOleDocumentSite` interface as arguments to the constructor.
 
 ## <a name="onactivateview"></a> CDocObjectServer::OnActivateView
 
diff --git a/docs/mfc/reference/ceditview-class.md b/docs/mfc/reference/ceditview-class.md
index 618fca8547..19e9d78e46 100644
--- a/docs/mfc/reference/ceditview-class.md
+++ b/docs/mfc/reference/ceditview-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CEditView Class"
 title: "CEditView Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CEditView Class"
+ms.date: 11/04/2016
 f1_keywords: ["CEditView", "AFXEXT/CEditView", "AFXEXT/CEditView::CEditView", "AFXEXT/CEditView::FindText", "AFXEXT/CEditView::GetBufferLength", "AFXEXT/CEditView::GetEditCtrl", "AFXEXT/CEditView::GetPrinterFont", "AFXEXT/CEditView::GetSelectedText", "AFXEXT/CEditView::LockBuffer", "AFXEXT/CEditView::PrintInsideRect", "AFXEXT/CEditView::SerializeRaw", "AFXEXT/CEditView::SetPrinterFont", "AFXEXT/CEditView::SetTabStops", "AFXEXT/CEditView::UnlockBuffer", "AFXEXT/CEditView::OnFindNext", "AFXEXT/CEditView::OnReplaceAll", "AFXEXT/CEditView::OnReplaceSel", "AFXEXT/CEditView::OnTextNotFound", "AFXEXT/CEditView::dwStyleDefault"]
 helpviewer_keywords: ["CEditView [MFC], CEditView", "CEditView [MFC], FindText", "CEditView [MFC], GetBufferLength", "CEditView [MFC], GetEditCtrl", "CEditView [MFC], GetPrinterFont", "CEditView [MFC], GetSelectedText", "CEditView [MFC], LockBuffer", "CEditView [MFC], PrintInsideRect", "CEditView [MFC], SerializeRaw", "CEditView [MFC], SetPrinterFont", "CEditView [MFC], SetTabStops", "CEditView [MFC], UnlockBuffer", "CEditView [MFC], OnFindNext", "CEditView [MFC], OnReplaceAll", "CEditView [MFC], OnReplaceSel", "CEditView [MFC], OnTextNotFound", "CEditView [MFC], dwStyleDefault"]
-ms.assetid: bf38255c-fcbe-450c-95b2-3c5e35f86c37
 ---
 # CEditView Class
 
@@ -427,7 +426,7 @@ Width of each tab stop, in dialog units.
 
 ### Remarks
 
-Only a single tab-stop width is supported. ( `CEdit` objects support multiple tab widths.) Widths are in dialog units, which equal one-fourth of the average character width (based on uppercase and lowercase alphabetic characters only) of the font used at the time of printing or displaying. You should not use `CEdit::SetTabStops` because `CEditView` must cache the tab-stop value.
+Only a single tab-stop width is supported. (`CEdit` objects support multiple tab widths.) Widths are in dialog units, which equal one-fourth of the average character width (based on uppercase and lowercase alphabetic characters only) of the font used at the time of printing or displaying. You should not use `CEdit::SetTabStops` because `CEditView` must cache the tab-stop value.
 
 This function modifies only the tabs of the object for which it is called. To change the tab stops for each `CEditView` object in your application, call each object's `SetTabStops` function.
 
diff --git a/docs/mfc/reference/cfile-class.md b/docs/mfc/reference/cfile-class.md
index 85224ecfbd..1621e32746 100644
--- a/docs/mfc/reference/cfile-class.md
+++ b/docs/mfc/reference/cfile-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CFile Class"
 title: "CFile Class"
-ms.date: "06/12/2018"
+description: "Learn more about: CFile Class"
+ms.date: 06/12/2018
 f1_keywords: ["CFile", "AFX/CFile", "AFX/CFile::CFile", "AFX/CFile::Abort", "AFX/CFile::Close", "AFX/CFile::Duplicate", "AFX/CFile::Flush", "AFX/CFile::GetFileName", "AFX/CFile::GetFilePath", "AFX/CFile::GetFileTitle", "AFX/CFile::GetLength", "AFX/CFile::GetPosition", "AFX/CFile::GetStatus", "AFX/CFile::LockRange", "AFX/CFile::Open", "AFX/CFile::Read", "AFX/CFile::Remove", "AFX/CFile::Rename", "AFX/CFile::Seek", "AFX/CFile::SeekToBegin", "AFX/CFile::SeekToEnd", "AFX/CFile::SetFilePath", "AFX/CFile::SetLength", "AFX/CFile::SetStatus", "AFX/CFile::UnlockRange", "AFX/CFile::Write", "AFX/CFile::hFileNull", "AFX/CFile::m_hFile", "AFX/CFile::m_pTM"]
 helpviewer_keywords: ["CFile [MFC], CFile", "CFile [MFC], Abort", "CFile [MFC], Close", "CFile [MFC], Duplicate", "CFile [MFC], Flush", "CFile [MFC], GetFileName", "CFile [MFC], GetFilePath", "CFile [MFC], GetFileTitle", "CFile [MFC], GetLength", "CFile [MFC], GetPosition", "CFile [MFC], GetStatus", "CFile [MFC], LockRange", "CFile [MFC], Open", "CFile [MFC], Read", "CFile [MFC], Remove", "CFile [MFC], Rename", "CFile [MFC], Seek", "CFile [MFC], SeekToBegin", "CFile [MFC], SeekToEnd", "CFile [MFC], SetFilePath", "CFile [MFC], SetLength", "CFile [MFC], SetStatus", "CFile [MFC], UnlockRange", "CFile [MFC], Write", "CFile [MFC], hFileNull", "CFile [MFC], m_hFile", "CFile [MFC], m_pTM"]
-ms.assetid: b2eb5757-d499-4e67-b044-dd7d1abaa0f8
 ---
 # CFile Class
 
@@ -277,7 +276,7 @@ The name of the file.
 
 For example, when you call `GetFileName` to generate a message to the user about the file `c:\windows\write\myfile.wri`, the filename, `myfile.wri`, is returned.
 
-To return the entire path of the file, including the name, call [GetFilePath](#getfilepath). To return the title of the file ( `myfile`), call [GetFileTitle](#getfiletitle).
+To return the entire path of the file, including the name, call [GetFilePath](#getfilepath). To return the title of the file (`myfile`), call [GetFileTitle](#getfiletitle).
 
 ### Example
 
diff --git a/docs/mfc/reference/cfindreplacedialog-class.md b/docs/mfc/reference/cfindreplacedialog-class.md
index e2354f49f9..e24c9f2471 100644
--- a/docs/mfc/reference/cfindreplacedialog-class.md
+++ b/docs/mfc/reference/cfindreplacedialog-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CFindReplaceDialog Class"
 title: "CFindReplaceDialog Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CFindReplaceDialog Class"
+ms.date: 11/04/2016
 f1_keywords: ["CFindReplaceDialog", "AFXDLGS/CFindReplaceDialog", "AFXDLGS/CFindReplaceDialog::CFindReplaceDialog", "AFXDLGS/CFindReplaceDialog::Create", "AFXDLGS/CFindReplaceDialog::FindNext", "AFXDLGS/CFindReplaceDialog::GetFindString", "AFXDLGS/CFindReplaceDialog::GetNotifier", "AFXDLGS/CFindReplaceDialog::GetReplaceString", "AFXDLGS/CFindReplaceDialog::IsTerminating", "AFXDLGS/CFindReplaceDialog::MatchCase", "AFXDLGS/CFindReplaceDialog::MatchWholeWord", "AFXDLGS/CFindReplaceDialog::ReplaceAll", "AFXDLGS/CFindReplaceDialog::ReplaceCurrent", "AFXDLGS/CFindReplaceDialog::SearchDown", "AFXDLGS/CFindReplaceDialog::m_fr"]
 helpviewer_keywords: ["CFindReplaceDialog [MFC], CFindReplaceDialog", "CFindReplaceDialog [MFC], Create", "CFindReplaceDialog [MFC], FindNext", "CFindReplaceDialog [MFC], GetFindString", "CFindReplaceDialog [MFC], GetNotifier", "CFindReplaceDialog [MFC], GetReplaceString", "CFindReplaceDialog [MFC], IsTerminating", "CFindReplaceDialog [MFC], MatchCase", "CFindReplaceDialog [MFC], MatchWholeWord", "CFindReplaceDialog [MFC], ReplaceAll", "CFindReplaceDialog [MFC], ReplaceCurrent", "CFindReplaceDialog [MFC], SearchDown", "CFindReplaceDialog [MFC], m_fr"]
-ms.assetid: 610f0b5d-b398-4ef6-8c05-e9d6641e50a8
 ---
 # CFindReplaceDialog Class
 
@@ -142,7 +141,7 @@ Nonzero if the dialog box object was successfully created; otherwise 0.
 
 ### Remarks
 
-In order for the parent window to be notified of find/replace requests, you must use the Windows [RegisterWindowMessage](/windows/win32/api/winuser/nf-winuser-registerwindowmessagew) function whose return value is a message number unique to the application's instance. Your frame window should have a message map entry that declares the callback function ( `OnFindReplace` in the example that follows) that handles this registered message. The following code fragment is an example of how to do this for a frame window class named `CMyRichEditView`:
+In order for the parent window to be notified of find/replace requests, you must use the Windows [RegisterWindowMessage](/windows/win32/api/winuser/nf-winuser-registerwindowmessagew) function whose return value is a message number unique to the application's instance. Your frame window should have a message map entry that declares the callback function (`OnFindReplace` in the example that follows) that handles this registered message. The following code fragment is an example of how to do this for a frame window class named `CMyRichEditView`:
 
 [!code-cpp[NVC_MFCDocView#171](../../mfc/codesnippet/cpp/cfindreplacedialog-class_2.h)]
 &nbsp;
diff --git a/docs/mfc/reference/cfont-class.md b/docs/mfc/reference/cfont-class.md
index 768ca7bd6a..2b22401550 100644
--- a/docs/mfc/reference/cfont-class.md
+++ b/docs/mfc/reference/cfont-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CFont Class"
 title: "CFont Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CFont Class"
+ms.date: 11/04/2016
 f1_keywords: ["CFont", "AFXWIN/CFont", "AFXWIN/CFont::CFont", "AFXWIN/CFont::CreateFont", "AFXWIN/CFont::CreateFontIndirect", "AFXWIN/CFont::CreatePointFont", "AFXWIN/CFont::CreatePointFontIndirect", "AFXWIN/CFont::FromHandle", "AFXWIN/CFont::GetLogFont"]
 helpviewer_keywords: ["CFont [MFC], CFont", "CFont [MFC], CreateFont", "CFont [MFC], CreateFontIndirect", "CFont [MFC], CreatePointFont", "CFont [MFC], CreatePointFontIndirect", "CFont [MFC], FromHandle", "CFont [MFC], GetLogFont"]
-ms.assetid: 3fad6bfe-d6ce-4ab9-967a-5ce0aa102800
 ---
 # `CFont` Class
 
@@ -102,7 +101,7 @@ BOOL CreateFont(
 ### Parameters
 
 *`nHeight`*<br/>
-Specifies the desired height (in logical units) of the font. See the `lfHeight` member of the [`LOGFONT`](/windows/win32/api/wingdi/ns-wingdi-logfontw)structure in the Windows SDK for a description. The absolute value of *`nHeight`* must not exceed 16,384 device units after it is converted. For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size or the smallest font if all the fonts exceed the requested size.
+Specifies the desired height (in logical units) of the font. See the `lfHeight` member of the [`LOGFONT`](/windows/win32/api/wingdi/ns-wingdi-logfontw) structure in the Windows SDK for a description. The absolute value of *`nHeight`* must not exceed 16,384 device units after it is converted. For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size or the smallest font if all the fonts exceed the requested size.
 
 *`nWidth`*<br/>
 Specifies the average width (in logical units) of characters in the font. If *`nWidth`* is 0, the aspect ratio of the device will be matched against the digitization aspect ratio of the available fonts to find the closest match, which is determined by the absolute value of the difference.
@@ -173,7 +172,7 @@ When you finish with the `CFont` object created by the `CreateFont` function, us
 
 ## <a name="createfontindirect"></a> `CFont::CreateFontIndirect`
 
-Initializes a `CFont` object with the characteristics given in a [`LOGFONT`](/windows/win32/api/wingdi/ns-wingdi-logfontw)structure.
+Initializes a `CFont` object with the characteristics given in a [`LOGFONT`](/windows/win32/api/wingdi/ns-wingdi-logfontw) structure.
 
 ```
 BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
diff --git a/docs/mfc/reference/cframewnd-class.md b/docs/mfc/reference/cframewnd-class.md
index 969f96a322..670db48714 100644
--- a/docs/mfc/reference/cframewnd-class.md
+++ b/docs/mfc/reference/cframewnd-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CFrameWnd Class"
 title: "CFrameWnd Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CFrameWnd Class"
+ms.date: 11/04/2016
 f1_keywords: ["CFrameWnd", "AFXWIN/CFrameWnd", "AFXWIN/CFrameWnd::CFrameWnd", "AFXWIN/CFrameWnd::ActivateFrame", "AFXWIN/CFrameWnd::BeginModalState", "AFXWIN/CFrameWnd::Create", "AFXWIN/CFrameWnd::CreateView", "AFXWIN/CFrameWnd::DockControlBar", "AFXWIN/CFrameWnd::EnableDocking", "AFXWIN/CFrameWnd::EndModalState", "AFXWIN/CFrameWnd::FloatControlBar", "AFXWIN/CFrameWnd::GetActiveDocument", "AFXWIN/CFrameWnd::GetActiveFrame", "AFXWIN/CFrameWnd::GetActiveView", "AFXWIN/CFrameWnd::GetControlBar", "AFXWIN/CFrameWnd::GetDockState", "AFXWIN/CFrameWnd::GetMenuBarState", "AFXWIN/CFrameWnd::GetMenuBarVisibility", "AFXWIN/CFrameWnd::GetMessageBar", "AFXWIN/CFrameWnd::GetMessageString", "AFXWIN/CFrameWnd::GetTitle", "AFXWIN/CFrameWnd::InitialUpdateFrame", "AFXWIN/CFrameWnd::InModalState", "AFXWIN/CFrameWnd::IsTracking", "AFXWIN/CFrameWnd::LoadAccelTable", "AFXWIN/CFrameWnd::LoadBarState", "AFXWIN/CFrameWnd::LoadFrame", "AFXWIN/CFrameWnd::NegotiateBorderSpace", "AFXWIN/CFrameWnd::OnBarCheck", "AFXWIN/CFrameWnd::OnContextHelp", "AFXWIN/CFrameWnd::OnSetPreviewMode", "AFXWIN/CFrameWnd::OnUpdateControlBarMenu", "AFXWIN/CFrameWnd::RecalcLayout", "AFXWIN/CFrameWnd::SaveBarState", "AFXWIN/CFrameWnd::SetActivePreviewView", "AFXWIN/CFrameWnd::SetActiveView", "AFXWIN/CFrameWnd::SetDockState", "AFXWIN/CFrameWnd::SetMenuBarState", "AFXWIN/CFrameWnd::SetMenuBarVisibility", "AFXWIN/CFrameWnd::SetMessageText", "AFXWIN/CFrameWnd::SetProgressBarPosition", "AFXWIN/CFrameWnd::SetProgressBarRange", "AFXWIN/CFrameWnd::SetProgressBarState", "AFXWIN/CFrameWnd::SetTaskbarOverlayIcon", "AFXWIN/CFrameWnd::SetTitle", "AFXWIN/CFrameWnd::ShowControlBar", "AFXWIN/CFrameWnd::ShowOwnedWindows", "AFXWIN/CFrameWnd::OnCreateClient", "AFXWIN/CFrameWnd::OnHideMenuBar", "AFXWIN/CFrameWnd::OnShowMenuBar", "AFXWIN/CFrameWnd::m_bAutoMenuEnable", "AFXWIN/CFrameWnd::rectDefault"]
 helpviewer_keywords: ["CFrameWnd [MFC], CFrameWnd", "CFrameWnd [MFC], ActivateFrame", "CFrameWnd [MFC], BeginModalState", "CFrameWnd [MFC], Create", "CFrameWnd [MFC], CreateView", "CFrameWnd [MFC], DockControlBar", "CFrameWnd [MFC], EnableDocking", "CFrameWnd [MFC], EndModalState", "CFrameWnd [MFC], FloatControlBar", "CFrameWnd [MFC], GetActiveDocument", "CFrameWnd [MFC], GetActiveFrame", "CFrameWnd [MFC], GetActiveView", "CFrameWnd [MFC], GetControlBar", "CFrameWnd [MFC], GetDockState", "CFrameWnd [MFC], GetMenuBarState", "CFrameWnd [MFC], GetMenuBarVisibility", "CFrameWnd [MFC], GetMessageBar", "CFrameWnd [MFC], GetMessageString", "CFrameWnd [MFC], GetTitle", "CFrameWnd [MFC], InitialUpdateFrame", "CFrameWnd [MFC], InModalState", "CFrameWnd [MFC], IsTracking", "CFrameWnd [MFC], LoadAccelTable", "CFrameWnd [MFC], LoadBarState", "CFrameWnd [MFC], LoadFrame", "CFrameWnd [MFC], NegotiateBorderSpace", "CFrameWnd [MFC], OnBarCheck", "CFrameWnd [MFC], OnContextHelp", "CFrameWnd [MFC], OnSetPreviewMode", "CFrameWnd [MFC], OnUpdateControlBarMenu", "CFrameWnd [MFC], RecalcLayout", "CFrameWnd [MFC], SaveBarState", "CFrameWnd [MFC], SetActivePreviewView", "CFrameWnd [MFC], SetActiveView", "CFrameWnd [MFC], SetDockState", "CFrameWnd [MFC], SetMenuBarState", "CFrameWnd [MFC], SetMenuBarVisibility", "CFrameWnd [MFC], SetMessageText", "CFrameWnd [MFC], SetProgressBarPosition", "CFrameWnd [MFC], SetProgressBarRange", "CFrameWnd [MFC], SetProgressBarState", "CFrameWnd [MFC], SetTaskbarOverlayIcon", "CFrameWnd [MFC], SetTitle", "CFrameWnd [MFC], ShowControlBar", "CFrameWnd [MFC], ShowOwnedWindows", "CFrameWnd [MFC], OnCreateClient", "CFrameWnd [MFC], OnHideMenuBar", "CFrameWnd [MFC], OnShowMenuBar", "CFrameWnd [MFC], m_bAutoMenuEnable", "CFrameWnd [MFC], rectDefault"]
-ms.assetid: e2220aba-5bf4-4002-b960-fbcafcad01f1
 ---
 # `CFrameWnd` Class
 
@@ -420,7 +419,7 @@ If there is no active MDI child or the application is a single document interfac
 
 ## <a name="getactiveview"></a> `CFrameWnd::GetActiveView`
 
-Call this member function to obtain a pointer to the active view (if any) attached to a frame window ( `CFrameWnd`).
+Call this member function to obtain a pointer to the active view (if any) attached to a frame window (`CFrameWnd`).
 
 ```
 CView* GetActiveView() const;
@@ -432,7 +431,7 @@ A pointer to the current [`CView`](../../mfc/reference/cview-class.md). If there
 
 ### Remarks
 
-This function returns `NULL` when called for an MDI main frame window ( `CMDIFrameWnd`). In an MDI application, the MDI main frame window does not have a view associated with it. Instead, each individual child window ( `CMDIChildWnd`) has one or more associated views. The active view in an MDI application can be obtained by first finding the active MDI child window and then finding the active view for that child window. The active MDI child window can be found by calling the function `MDIGetActive` or `GetActiveFrame` as demonstrated in the following:
+This function returns `NULL` when called for an MDI main frame window (`CMDIFrameWnd`). In an MDI application, the MDI main frame window does not have a view associated with it. Instead, each individual child window (`CMDIChildWnd`) has one or more associated views. The active view in an MDI application can be obtained by first finding the active MDI child window and then finding the active view for that child window. The active MDI child window can be found by calling the function `MDIGetActive` or `GetActiveFrame` as demonstrated in the following:
 
 [!code-cpp[NVC_MFCWindowing#2](../../mfc/reference/codesnippet/cpp/cframewnd-class_2.cpp)]
 
@@ -512,7 +511,7 @@ This method returns one of the following values:
 
 - `AFX_MBV_DISPLAYONFOCUS` (0x02) - The menu is hidden by default. If the menu is hidden, press the ALT key to display the menu and give it the focus. If the menu is displayed, press the ALT or ESC key to hide it.
 
-- `AFX_MBV_ DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10` (0x06) - The menu is hidden by default. If the menu is hidden, press the F10 key to display the menu and give it the focus. If the menu is displayed, press the F10 key to toggle the focus on or off the menu. The menu is displayed until you press the ALT or ESC key to hide it.
+- `AFX_MBV_DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10` (0x06) - The menu is hidden by default. If the menu is hidden, press the F10 key to display the menu and give it the focus. If the menu is displayed, press the F10 key to toggle the focus on or off the menu. The menu is displayed until you press the ALT or ESC key to hide it.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cgopherconnection-class.md b/docs/mfc/reference/cgopherconnection-class.md
index 585855bbfe..d05ead9a3a 100644
--- a/docs/mfc/reference/cgopherconnection-class.md
+++ b/docs/mfc/reference/cgopherconnection-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CGopherConnection Class"
 title: "CGopherConnection Class"
+description: "Learn more about: CGopherConnection Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CGopherConnection", "AFXINET/CGopherConnection", "AFXINET/CGopherConnection::CGopherConnection", "AFXINET/CGopherConnection::CreateLocator", "AFXINET/CGopherConnection::GetAttribute", "AFXINET/CGopherConnection::OpenFile"]
 helpviewer_keywords: ["CGopherConnection [MFC], CGopherConnection", "CGopherConnection [MFC], CreateLocator", "CGopherConnection [MFC], GetAttribute", "CGopherConnection [MFC], OpenFile"]
-ms.assetid: b5b96aea-ac99-430e-bd84-d1372b43f78f
 ---
 # CGopherConnection Class
 
@@ -167,8 +166,9 @@ Call this member function to retrieve specific attribute information about an it
 
 ```
 BOOL GetAttribute(
-    CGopherLocator& refLocator    CString strRequestedAttributes,
-    CString& strResult,);
+    CGopherLocator& refLocator,
+    CString strRequestedAttributes,
+    CString& strResult);
 ```
 
 ### Parameters
@@ -222,11 +222,11 @@ Override the *dwContext* default to set the context identifier to a value of you
 
 ## See also
 
-[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)<br/>
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
-[CFtpConnection Class](../../mfc/reference/cftpconnection-class.md)<br/>
-[CHttpConnection Class](../../mfc/reference/chttpconnection-class.md)<br/>
-[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)<br/>
-[CGopherLocator Class](../../mfc/reference/cgopherlocator-class.md)<br/>
-[CGopherFile Class](../../mfc/reference/cgopherfile-class.md)<br/>
+[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)\
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
+[CFtpConnection Class](../../mfc/reference/cftpconnection-class.md)\
+[CHttpConnection Class](../../mfc/reference/chttpconnection-class.md)\
+[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)\
+[CGopherLocator Class](../../mfc/reference/cgopherlocator-class.md)\
+[CGopherFile Class](../../mfc/reference/cgopherfile-class.md)\
 [CInternetSession Class](../../mfc/reference/cinternetsession-class.md)
diff --git a/docs/mfc/reference/cimagelist-class.md b/docs/mfc/reference/cimagelist-class.md
index 184a95db73..ca80bcc33e 100644
--- a/docs/mfc/reference/cimagelist-class.md
+++ b/docs/mfc/reference/cimagelist-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CImageList Class"
 title: "CImageList Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CImageList Class"
+ms.date: 11/04/2016
 f1_keywords: ["CImageList", "AFXCMN/CImageList", "AFXCMN/CImageList::CImageList", "AFXCMN/CImageList::Add", "AFXCMN/CImageList::Attach", "AFXCMN/CImageList::BeginDrag", "AFXCMN/CImageList::Copy", "AFXCMN/CImageList::Create", "AFXCMN/CImageList::DeleteImageList", "AFXCMN/CImageList::DeleteTempMap", "AFXCMN/CImageList::Detach", "AFXCMN/CImageList::DragEnter", "AFXCMN/CImageList::DragLeave", "AFXCMN/CImageList::DragMove", "AFXCMN/CImageList::DragShowNolock", "AFXCMN/CImageList::Draw", "AFXCMN/CImageList::DrawEx", "AFXCMN/CImageList::DrawIndirect", "AFXCMN/CImageList::EndDrag", "AFXCMN/CImageList::ExtractIcon", "AFXCMN/CImageList::FromHandle", "AFXCMN/CImageList::FromHandlePermanent", "AFXCMN/CImageList::GetBkColor", "AFXCMN/CImageList::GetDragImage", "AFXCMN/CImageList::GetImageCount", "AFXCMN/CImageList::GetImageInfo", "AFXCMN/CImageList::GetSafeHandle", "AFXCMN/CImageList::Read", "AFXCMN/CImageList::Remove", "AFXCMN/CImageList::Replace", "AFXCMN/CImageList::SetBkColor", "AFXCMN/CImageList::SetDragCursorImage", "AFXCMN/CImageList::SetImageCount", "AFXCMN/CImageList::SetOverlayImage", "AFXCMN/CImageList::Write", "AFXCMN/CImageList::m_hImageList"]
 helpviewer_keywords: ["CImageList [MFC], CImageList", "CImageList [MFC], Add", "CImageList [MFC], Attach", "CImageList [MFC], BeginDrag", "CImageList [MFC], Copy", "CImageList [MFC], Create", "CImageList [MFC], DeleteImageList", "CImageList [MFC], DeleteTempMap", "CImageList [MFC], Detach", "CImageList [MFC], DragEnter", "CImageList [MFC], DragLeave", "CImageList [MFC], DragMove", "CImageList [MFC], DragShowNolock", "CImageList [MFC], Draw", "CImageList [MFC], DrawEx", "CImageList [MFC], DrawIndirect", "CImageList [MFC], EndDrag", "CImageList [MFC], ExtractIcon", "CImageList [MFC], FromHandle", "CImageList [MFC], FromHandlePermanent", "CImageList [MFC], GetBkColor", "CImageList [MFC], GetDragImage", "CImageList [MFC], GetImageCount", "CImageList [MFC], GetImageInfo", "CImageList [MFC], GetSafeHandle", "CImageList [MFC], Read", "CImageList [MFC], Remove", "CImageList [MFC], Replace", "CImageList [MFC], SetBkColor", "CImageList [MFC], SetDragCursorImage", "CImageList [MFC], SetImageCount", "CImageList [MFC], SetOverlayImage", "CImageList [MFC], Write", "CImageList [MFC], m_hImageList"]
-ms.assetid: b6d1a704-1c82-4548-8a8f-77972adc98a5
 ---
 # `CImageList` Class
 
@@ -359,7 +358,7 @@ Nonzero if successful; otherwise 0.
 
 ## <a name="deletetempmap"></a> `CImageList::DeleteTempMap`
 
-Called automatically by the `CWinApp` idle-time handler, `DeleteTempMap` deletes any temporary `CImageList` objects created by [FromHandle](#fromhandle), but does not destroy any handles ( `hImageList`) temporarily associated with the `ImageList` objects.
+Called automatically by the `CWinApp` idle-time handler, `DeleteTempMap` deletes any temporary `CImageList` objects created by [FromHandle](#fromhandle), but does not destroy any handles (`hImageList`) temporarily associated with the `ImageList` objects.
 
 ```
 static void PASCAL DeleteTempMap();
diff --git a/docs/mfc/reference/cinternetexception-class.md b/docs/mfc/reference/cinternetexception-class.md
index 9d9ccae462..0af84f7303 100644
--- a/docs/mfc/reference/cinternetexception-class.md
+++ b/docs/mfc/reference/cinternetexception-class.md
@@ -90,7 +90,7 @@ DWORD m_dwError;
 
 This error value may be a system error code, found in WINERROR.H, or an error value from WININET.H.
 
-For a list of Win32 error codes, see [Error Codes](/windows/win32/Debug/system-error-codes). For a list of Internet-specific error messages, see  . Both topics are in the Windows SDK.
+For a list of Win32 error codes, see [Error Codes](/windows/win32/Debug/system-error-codes).
 
 ## See also
 
diff --git a/docs/mfc/reference/clistctrl-class.md b/docs/mfc/reference/clistctrl-class.md
index 8ddf377080..a9e92a75d1 100644
--- a/docs/mfc/reference/clistctrl-class.md
+++ b/docs/mfc/reference/clistctrl-class.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: CListCtrl Class"
 title: "CListCtrl Class"
+description: "Learn more about: CListCtrl Class"
 ms.date: 06/29/2022
 f1_keywords: ["CListCtrl", "AFXCMN/CListCtrl", "AFXCMN/CListCtrl::CListCtrl", "AFXCMN/CListCtrl::ApproximateViewRect", "AFXCMN/CListCtrl::Arrange", "AFXCMN/CListCtrl::CancelEditLabel", "AFXCMN/CListCtrl::Create", "AFXCMN/CListCtrl::CreateDragImage", "AFXCMN/CListCtrl::CreateEx", "AFXCMN/CListCtrl::DeleteAllItems", "AFXCMN/CListCtrl::DeleteColumn", "AFXCMN/CListCtrl::DeleteItem", "AFXCMN/CListCtrl::DrawItem", "AFXCMN/CListCtrl::EditLabel", "AFXCMN/CListCtrl::EnableGroupView", "AFXCMN/CListCtrl::EnsureVisible", "AFXCMN/CListCtrl::FindItem", "AFXCMN/CListCtrl::GetBkColor", "AFXCMN/CListCtrl::GetBkImage", "AFXCMN/CListCtrl::GetCallbackMask", "AFXCMN/CListCtrl::GetCheck", "AFXCMN/CListCtrl::GetColumn", "AFXCMN/CListCtrl::GetColumnOrderArray", "AFXCMN/CListCtrl::GetColumnWidth", "AFXCMN/CListCtrl::GetCountPerPage", "AFXCMN/CListCtrl::GetEditControl", "AFXCMN/CListCtrl::GetEmptyText", "AFXCMN/CListCtrl::GetExtendedStyle", "AFXCMN/CListCtrl::GetFirstSelectedItemPosition", "AFXCMN/CListCtrl::GetFocusedGroup", "AFXCMN/CListCtrl::GetGroupCount", "AFXCMN/CListCtrl::GetGroupInfo", "AFXCMN/CListCtrl::GetGroupInfoByIndex", "AFXCMN/CListCtrl::GetGroupMetrics", "AFXCMN/CListCtrl::GetGroupRect", "AFXCMN/CListCtrl::GetGroupState", "AFXCMN/CListCtrl::GetHeaderCtrl", "AFXCMN/CListCtrl::GetHotCursor", "AFXCMN/CListCtrl::GetHotItem", "AFXCMN/CListCtrl::GetHoverTime", "AFXCMN/CListCtrl::GetImageList", "AFXCMN/CListCtrl::GetInsertMark", "AFXCMN/CListCtrl::GetInsertMarkColor", "AFXCMN/CListCtrl::GetInsertMarkRect", "AFXCMN/CListCtrl::GetItem", "AFXCMN/CListCtrl::GetItemCount", "AFXCMN/CListCtrl::GetItemData", "AFXCMN/CListCtrl::GetItemIndexRect", "AFXCMN/CListCtrl::GetItemPosition", "AFXCMN/CListCtrl::GetItemRect", "AFXCMN/CListCtrl::GetItemSpacing", "AFXCMN/CListCtrl::GetItemState", "AFXCMN/CListCtrl::GetItemText", "AFXCMN/CListCtrl::GetNextItem", "AFXCMN/CListCtrl::GetNextItemIndex", "AFXCMN/CListCtrl::GetNextSelectedItem", "AFXCMN/CListCtrl::GetNumberOfWorkAreas", "AFXCMN/CListCtrl::GetOrigin", "AFXCMN/CListCtrl::GetOutlineColor", "AFXCMN/CListCtrl::GetSelectedColumn", "AFXCMN/CListCtrl::GetSelectedCount", "AFXCMN/CListCtrl::GetSelectionMark", "AFXCMN/CListCtrl::GetStringWidth", "AFXCMN/CListCtrl::GetSubItemRect", "AFXCMN/CListCtrl::GetTextBkColor", "AFXCMN/CListCtrl::GetTextColor", "AFXCMN/CListCtrl::GetTileInfo", "AFXCMN/CListCtrl::GetTileViewInfo", "AFXCMN/CListCtrl::GetToolTips", "AFXCMN/CListCtrl::GetTopIndex", "AFXCMN/CListCtrl::GetView", "AFXCMN/CListCtrl::GetViewRect", "AFXCMN/CListCtrl::GetWorkAreas", "AFXCMN/CListCtrl::HasGroup", "AFXCMN/CListCtrl::HitTest", "AFXCMN/CListCtrl::InsertColumn", "AFXCMN/CListCtrl::InsertGroup", "AFXCMN/CListCtrl::InsertGroupSorted", "AFXCMN/CListCtrl::InsertItem", "AFXCMN/CListCtrl::InsertMarkHitTest", "AFXCMN/CListCtrl::IsGroupViewEnabled", "AFXCMN/CListCtrl::IsItemVisible", "AFXCMN/CListCtrl::MapIDToIndex", "AFXCMN/CListCtrl::MapIndexToID", "AFXCMN/CListCtrl::MoveGroup", "AFXCMN/CListCtrl::MoveItemToGroup", "AFXCMN/CListCtrl::RedrawItems", "AFXCMN/CListCtrl::RemoveAllGroups", "AFXCMN/CListCtrl::RemoveGroup", "AFXCMN/CListCtrl::Scroll", "AFXCMN/CListCtrl::SetBkColor", "AFXCMN/CListCtrl::SetBkImage", "AFXCMN/CListCtrl::SetCallbackMask", "AFXCMN/CListCtrl::SetCheck", "AFXCMN/CListCtrl::SetColumn", "AFXCMN/CListCtrl::SetColumnOrderArray", "AFXCMN/CListCtrl::SetColumnWidth", "AFXCMN/CListCtrl::SetExtendedStyle", "AFXCMN/CListCtrl::SetGroupInfo", "AFXCMN/CListCtrl::SetGroupMetrics", "AFXCMN/CListCtrl::SetHotCursor", "AFXCMN/CListCtrl::SetHotItem", "AFXCMN/CListCtrl::SetHoverTime", "AFXCMN/CListCtrl::SetIconSpacing", "AFXCMN/CListCtrl::SetImageList", "AFXCMN/CListCtrl::SetInfoTip", "AFXCMN/CListCtrl::SetInsertMark", "AFXCMN/CListCtrl::SetInsertMarkColor", "AFXCMN/CListCtrl::SetItem", "AFXCMN/CListCtrl::SetItemCount", "AFXCMN/CListCtrl::SetItemCountEx", "AFXCMN/CListCtrl::SetItemData", "AFXCMN/CListCtrl::SetItemIndexState", "AFXCMN/CListCtrl::SetItemPosition", "AFXCMN/CListCtrl::SetItemState", "AFXCMN/CListCtrl::SetItemText", "AFXCMN/CListCtrl::SetOutlineColor", "AFXCMN/CListCtrl::SetSelectedColumn", "AFXCMN/CListCtrl::SetSelectionMark", "AFXCMN/CListCtrl::SetTextBkColor", "AFXCMN/CListCtrl::SetTextColor", "AFXCMN/CListCtrl::SetTileInfo", "AFXCMN/CListCtrl::SetTileViewInfo", "AFXCMN/CListCtrl::SetToolTips", "AFXCMN/CListCtrl::SetView", "AFXCMN/CListCtrl::SetWorkAreas", "AFXCMN/CListCtrl::SortGroups", "AFXCMN/CListCtrl::SortItems", "AFXCMN/CListCtrl::SortItemsEx", "AFXCMN/CListCtrl::SubItemHitTest", "AFXCMN/CListCtrl::Update"]
 helpviewer_keywords: ["CListCtrl [MFC], CListCtrl", "CListCtrl [MFC], ApproximateViewRect", "CListCtrl [MFC], Arrange", "CListCtrl [MFC], CancelEditLabel", "CListCtrl [MFC], Create", "CListCtrl [MFC], CreateDragImage", "CListCtrl [MFC], CreateEx", "CListCtrl [MFC], DeleteAllItems", "CListCtrl [MFC], DeleteColumn", "CListCtrl [MFC], DeleteItem", "CListCtrl [MFC], DrawItem", "CListCtrl [MFC], EditLabel", "CListCtrl [MFC], EnableGroupView", "CListCtrl [MFC], EnsureVisible", "CListCtrl [MFC], FindItem", "CListCtrl [MFC], GetBkColor", "CListCtrl [MFC], GetBkImage", "CListCtrl [MFC], GetCallbackMask", "CListCtrl [MFC], GetCheck", "CListCtrl [MFC], GetColumn", "CListCtrl [MFC], GetColumnOrderArray", "CListCtrl [MFC], GetColumnWidth", "CListCtrl [MFC], GetCountPerPage", "CListCtrl [MFC], GetEditControl", "CListCtrl [MFC], GetEmptyText", "CListCtrl [MFC], GetExtendedStyle", "CListCtrl [MFC], GetFirstSelectedItemPosition", "CListCtrl [MFC], GetFocusedGroup", "CListCtrl [MFC], GetGroupCount", "CListCtrl [MFC], GetGroupInfo", "CListCtrl [MFC], GetGroupInfoByIndex", "CListCtrl [MFC], GetGroupMetrics", "CListCtrl [MFC], GetGroupRect", "CListCtrl [MFC], GetGroupState", "CListCtrl [MFC], GetHeaderCtrl", "CListCtrl [MFC], GetHotCursor", "CListCtrl [MFC], GetHotItem", "CListCtrl [MFC], GetHoverTime", "CListCtrl [MFC], GetImageList", "CListCtrl [MFC], GetInsertMark", "CListCtrl [MFC], GetInsertMarkColor", "CListCtrl [MFC], GetInsertMarkRect", "CListCtrl [MFC], GetItem", "CListCtrl [MFC], GetItemCount", "CListCtrl [MFC], GetItemData", "CListCtrl [MFC], GetItemIndexRect", "CListCtrl [MFC], GetItemPosition", "CListCtrl [MFC], GetItemRect", "CListCtrl [MFC], GetItemSpacing", "CListCtrl [MFC], GetItemState", "CListCtrl [MFC], GetItemText", "CListCtrl [MFC], GetNextItem", "CListCtrl [MFC], GetNextItemIndex", "CListCtrl [MFC], GetNextSelectedItem", "CListCtrl [MFC], GetNumberOfWorkAreas", "CListCtrl [MFC], GetOrigin", "CListCtrl [MFC], GetOutlineColor", "CListCtrl [MFC], GetSelectedColumn", "CListCtrl [MFC], GetSelectedCount", "CListCtrl [MFC], GetSelectionMark", "CListCtrl [MFC], GetStringWidth", "CListCtrl [MFC], GetSubItemRect", "CListCtrl [MFC], GetTextBkColor", "CListCtrl [MFC], GetTextColor", "CListCtrl [MFC], GetTileInfo", "CListCtrl [MFC], GetTileViewInfo", "CListCtrl [MFC], GetToolTips", "CListCtrl [MFC], GetTopIndex", "CListCtrl [MFC], GetView", "CListCtrl [MFC], GetViewRect", "CListCtrl [MFC], GetWorkAreas", "CListCtrl [MFC], HasGroup", "CListCtrl [MFC], HitTest", "CListCtrl [MFC], InsertColumn", "CListCtrl [MFC], InsertGroup", "CListCtrl [MFC], InsertGroupSorted", "CListCtrl [MFC], InsertItem", "CListCtrl [MFC], InsertMarkHitTest", "CListCtrl [MFC], IsGroupViewEnabled", "CListCtrl [MFC], IsItemVisible", "CListCtrl [MFC], MapIDToIndex", "CListCtrl [MFC], MapIndexToID", "CListCtrl [MFC], MoveGroup", "CListCtrl [MFC], MoveItemToGroup", "CListCtrl [MFC], RedrawItems", "CListCtrl [MFC], RemoveAllGroups", "CListCtrl [MFC], RemoveGroup", "CListCtrl [MFC], Scroll", "CListCtrl [MFC], SetBkColor", "CListCtrl [MFC], SetBkImage", "CListCtrl [MFC], SetCallbackMask", "CListCtrl [MFC], SetCheck", "CListCtrl [MFC], SetColumn", "CListCtrl [MFC], SetColumnOrderArray", "CListCtrl [MFC], SetColumnWidth", "CListCtrl [MFC], SetExtendedStyle", "CListCtrl [MFC], SetGroupInfo", "CListCtrl [MFC], SetGroupMetrics", "CListCtrl [MFC], SetHotCursor", "CListCtrl [MFC], SetHotItem", "CListCtrl [MFC], SetHoverTime", "CListCtrl [MFC], SetIconSpacing", "CListCtrl [MFC], SetImageList", "CListCtrl [MFC], SetInfoTip", "CListCtrl [MFC], SetInsertMark", "CListCtrl [MFC], SetInsertMarkColor", "CListCtrl [MFC], SetItem", "CListCtrl [MFC], SetItemCount", "CListCtrl [MFC], SetItemCountEx", "CListCtrl [MFC], SetItemData", "CListCtrl [MFC], SetItemIndexState", "CListCtrl [MFC], SetItemPosition", "CListCtrl [MFC], SetItemState", "CListCtrl [MFC], SetItemText", "CListCtrl [MFC], SetOutlineColor", "CListCtrl [MFC], SetSelectedColumn", "CListCtrl [MFC], SetSelectionMark", "CListCtrl [MFC], SetTextBkColor", "CListCtrl [MFC], SetTextColor", "CListCtrl [MFC], SetTileInfo", "CListCtrl [MFC], SetTileViewInfo", "CListCtrl [MFC], SetToolTips", "CListCtrl [MFC], SetView", "CListCtrl [MFC], SetWorkAreas", "CListCtrl [MFC], SortGroups", "CListCtrl [MFC], SortItems", "CListCtrl [MFC], SortItemsEx", "CListCtrl [MFC], SubItemHitTest", "CListCtrl [MFC], Update"]
@@ -427,7 +427,7 @@ CImageList* CreateDragImage(
 
 ### Parameters
 
-*`nItem*`\
+*`nItem`*\
 Index of the item whose drag image list is to be created.
 
 *`lpPoint`*\
diff --git a/docs/mfc/reference/cmapstringtoob-class.md b/docs/mfc/reference/cmapstringtoob-class.md
index f48bf10173..7d7404e995 100644
--- a/docs/mfc/reference/cmapstringtoob-class.md
+++ b/docs/mfc/reference/cmapstringtoob-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CMapStringToOb Class"
 title: "CMapStringToOb Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMapStringToOb Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMapStringToOb", "AFXCOLL/CMapStringToOb", "AFXCOLL/CMapStringToOb::CMapStringToOb", "AFXCOLL/CMapStringToOb::GetCount", "AFXCOLL/CMapStringToOb::GetHashTableSize", "AFXCOLL/CMapStringToOb::GetNextAssoc", "AFXCOLL/CMapStringToOb::GetSize", "AFXCOLL/CMapStringToOb::GetStartPosition", "AFXCOLL/CMapStringToOb::HashKey", "AFXCOLL/CMapStringToOb::InitHashTable", "AFXCOLL/CMapStringToOb::IsEmpty", "AFXCOLL/CMapStringToOb::Lookup", "AFXCOLL/CMapStringToOb::LookupKey", "AFXCOLL/CMapStringToOb::RemoveAll", "AFXCOLL/CMapStringToOb::RemoveKey", "AFXCOLL/CMapStringToOb::SetAt"]
 helpviewer_keywords: ["CMapStringToOb [MFC], CMapStringToOb", "CMapStringToOb [MFC], GetCount", "CMapStringToOb [MFC], GetHashTableSize", "CMapStringToOb [MFC], GetNextAssoc", "CMapStringToOb [MFC], GetSize", "CMapStringToOb [MFC], GetStartPosition", "CMapStringToOb [MFC], HashKey", "CMapStringToOb [MFC], InitHashTable", "CMapStringToOb [MFC], IsEmpty", "CMapStringToOb [MFC], Lookup", "CMapStringToOb [MFC], LookupKey", "CMapStringToOb [MFC], RemoveAll", "CMapStringToOb [MFC], RemoveKey", "CMapStringToOb [MFC], SetAt"]
 ---
@@ -399,7 +399,7 @@ Nonzero if the element was found; otherwise 0.
 
 ### Remarks
 
-`Lookup` uses a hashing algorithm to quickly find the map element with a key that matches exactly ( `CString` value).
+`Lookup` uses a hashing algorithm to quickly find the map element with a key that matches exactly (`CString` value).
 
 The following table shows other member functions that are similar to `CMapStringToOb::LookUp`.
 
diff --git a/docs/mfc/reference/cmdichildwndex-class.md b/docs/mfc/reference/cmdichildwndex-class.md
index 69dede7425..b1f2e320dd 100644
--- a/docs/mfc/reference/cmdichildwndex-class.md
+++ b/docs/mfc/reference/cmdichildwndex-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMDIChildWndEx Class"
 title: "CMDIChildWndEx Class"
+description: "Learn more about: CMDIChildWndEx Class"
 ms.date: "10/18/2018"
 f1_keywords: ["CMDIChildWndEx", "AFXMDICHILDWNDEX/CMDIChildWndEx", "AFXMDICHILDWNDEX/CMDIChildWndEx::ActivateTopLevelFrame", "AFXMDICHILDWNDEX/CMDIChildWndEx::AddPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::AddTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::AdjustDockingLayout", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnMDITabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnTaskBarTabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnWindowsList", "AFXMDICHILDWNDEX/CMDIChildWndEx::DockPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::DockPaneLeftOf", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableAutoHidePanes", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableDocking", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetDockingManager", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetDocumentName", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetFrameIcon", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetFrameText", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetRelatedTabGroup", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTabProxyWnd", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTaskbarPreviewWnd", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetToolbarButtonToolTipText", "AFXMDICHILDWNDEX/CMDIChildWndEx::InsertPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::InvalidateIconicBitmaps", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsPointNearDockSite", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsReadOnly", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsRegisteredWithTaskbarTabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTaskbarTabsSupportEnabled", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTaskbarThumbnailClipRectEnabled", "AFXMDICHILDWNDEX/CMDIChildWndEx::m_dwDefaultTaskbarTabPropertyFlags", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnGetIconicLivePreviewBitmap", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnGetIconicThumbnail", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnMoveMiniFrame", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnSetPreviewMode", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailActivate", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailMouseActivate", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailStretch", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnUpdateFrameTitle", "AFXMDICHILDWNDEX/CMDIChildWndEx::PaneFromPoint", "AFXMDICHILDWNDEX/CMDIChildWndEx::RecalcLayout", "AFXMDICHILDWNDEX/CMDIChildWndEx::RegisterTaskbarTab", "AFXMDICHILDWNDEX/CMDIChildWndEx::RemovePaneFromDockManager", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetRelatedTabGroup", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabActive", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabOrder", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabProperties", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::ShowPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::UnregisterTaskbarTab", "AFXMDICHILDWNDEX/CMDIChildWndEx::UpdateTaskbarTabIcon"]
 helpviewer_keywords: ["CMDIChildWndEx [MFC], ActivateTopLevelFrame", "CMDIChildWndEx [MFC], AddPane", "CMDIChildWndEx [MFC], AddTabbedPane", "CMDIChildWndEx [MFC], AdjustDockingLayout", "CMDIChildWndEx [MFC], CanShowOnMDITabs", "CMDIChildWndEx [MFC], CanShowOnTaskBarTabs", "CMDIChildWndEx [MFC], CanShowOnWindowsList", "CMDIChildWndEx [MFC], DockPane", "CMDIChildWndEx [MFC], DockPaneLeftOf", "CMDIChildWndEx [MFC], EnableAutoHidePanes", "CMDIChildWndEx [MFC], EnableDocking", "CMDIChildWndEx [MFC], EnableTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], GetDockingManager", "CMDIChildWndEx [MFC], GetDocumentName", "CMDIChildWndEx [MFC], GetFrameIcon", "CMDIChildWndEx [MFC], GetFrameText", "CMDIChildWndEx [MFC], GetPane", "CMDIChildWndEx [MFC], GetRelatedTabGroup", "CMDIChildWndEx [MFC], GetTabbedPane", "CMDIChildWndEx [MFC], GetTabProxyWnd", "CMDIChildWndEx [MFC], GetTaskbarPreviewWnd", "CMDIChildWndEx [MFC], GetTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], GetToolbarButtonToolTipText", "CMDIChildWndEx [MFC], InsertPane", "CMDIChildWndEx [MFC], InvalidateIconicBitmaps", "CMDIChildWndEx [MFC], IsPointNearDockSite", "CMDIChildWndEx [MFC], IsReadOnly", "CMDIChildWndEx [MFC], IsRegisteredWithTaskbarTabs", "CMDIChildWndEx [MFC], IsTabbedPane", "CMDIChildWndEx [MFC], IsTaskbarTabsSupportEnabled", "CMDIChildWndEx [MFC], IsTaskbarThumbnailClipRectEnabled", "CMDIChildWndEx [MFC], m_dwDefaultTaskbarTabPropertyFlags", "CMDIChildWndEx [MFC], OnGetIconicLivePreviewBitmap", "CMDIChildWndEx [MFC], OnGetIconicThumbnail", "CMDIChildWndEx [MFC], OnMoveMiniFrame", "CMDIChildWndEx [MFC], OnPressTaskbarThmbnailCloseButton", "CMDIChildWndEx [MFC], OnSetPreviewMode", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailActivate", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailMouseActivate", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailStretch", "CMDIChildWndEx [MFC], OnUpdateFrameTitle", "CMDIChildWndEx [MFC], PaneFromPoint", "CMDIChildWndEx [MFC], RecalcLayout", "CMDIChildWndEx [MFC], RegisterTaskbarTab", "CMDIChildWndEx [MFC], RemovePaneFromDockManager", "CMDIChildWndEx [MFC], SetRelatedTabGroup", "CMDIChildWndEx [MFC], SetTaskbarTabActive", "CMDIChildWndEx [MFC], SetTaskbarTabOrder", "CMDIChildWndEx [MFC], SetTaskbarTabProperties", "CMDIChildWndEx [MFC], SetTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], ShowPane", "CMDIChildWndEx [MFC], UnregisterTaskbarTab", "CMDIChildWndEx [MFC], UpdateTaskbarTabIcon"]
-ms.assetid: d39fec06-0bd6-4271-917d-35aae3b24d8e
 ---
 # CMDIChildWndEx Class
 
@@ -62,7 +61,7 @@ class CMDIChildWndEx : public CMDIChildWnd
 |[CMDIChildWndEx::OnGetIconicLivePreviewBitmap](#ongeticoniclivepreviewbitmap)|Called by the framework when it needs to obtain a bitmap for live preview of MDI child.|
 |[CMDIChildWndEx::OnGetIconicThumbnail](#ongeticonicthumbnail)|Called by the framework when it needs to obtain a bitmap for iconic thumbnail of MDI child.|
 |[CMDIChildWndEx::OnMoveMiniFrame](#onmoveminiframe)|Called by the framework to move a mini-frame window.|
-|[CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton](#onpresstaskbarthmbnailclosebutton)|Called by the framework when the user presses close button on Taskbar tab thumbnail..|
+|[CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton](#onpresstaskbarthmbnailclosebutton)|Called by the framework when the user presses close button on Taskbar tab thumbnail.|
 |[CMDIChildWndEx::OnSetPreviewMode](#onsetpreviewmode)|Called by the framework to enter or exit print preview mode.|
 |[CMDIChildWndEx::OnTaskbarTabThumbnailActivate](#ontaskbartabthumbnailactivate)|Called by the framework when the Taskbar tab thumbnail should process WM_ACTIVATE message.|
 |[CMDIChildWndEx::OnTaskbarTabThumbnailMouseActivate](#ontaskbartabthumbnailmouseactivate)|Called by the framework when the Taskbar tab thumbnail should process WM_MOUSEACTIVATE message.|
diff --git a/docs/mfc/reference/cmdiframewndex-class.md b/docs/mfc/reference/cmdiframewndex-class.md
index cdf8a46ed9..4cebc0fd4d 100644
--- a/docs/mfc/reference/cmdiframewndex-class.md
+++ b/docs/mfc/reference/cmdiframewndex-class.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: CMDIFrameWndEx class"
 title: "CMDIFrameWndEx Class"
+description: "Learn more about: CMDIFrameWndEx class"
 ms.date: 08/16/2022
 f1_keywords: ["CMDIFrameWndEx", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::ActiveItemRecalcLayout", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::AddPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::AdjustClientArea", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::AdjustDockingLayout", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::AreMDITabs", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::CanConvertControlBarToMDIChild", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::ControlBarToTabbedDocument", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::CreateDocumentWindow", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::CreateNewWindow", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::DockPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::DockPaneLeftOf", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableAutoHidePanes", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableDocking", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableFullScreenMainMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableFullScreenMode", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableLoadDockState", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableMDITabbedGroups", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableMDITabs", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableMDITabsLastActiveActivation", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnablePaneMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::EnableWindowsDialog", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetActivePopup", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetDefaultResId", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetMDITabGroups", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetMDITabs", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetMDITabsContextMenuAllowedItems", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetMenuBar", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetRibbonBar", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetTearOffBars", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::GetToolbarButtonToolTipText", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::InsertPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsFullScreen", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsMDITabbedGroup", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsMemberOfMDITabGroup", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsMenuBarAvailable", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsPointNearDockSite", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::IsPrintPreview", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::LoadFrame", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::LoadMDIState", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::MDITabMoveToNextGroup", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::MDITabNewGroup", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::NegotiateBorderSpace", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnCloseDockingPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnCloseMiniFrame", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnClosePopupMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnCmdMsg", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnDrawMenuImage", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnDrawMenuLogo", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnEraseMDIClientBackground", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnMenuButtonToolHitTest", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnMoveMiniFrame", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnSetPreviewMode", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnShowCustomizePane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnShowMDITabContextMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnShowPanes", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnShowPopupMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnSizeMDIClient", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnTearOffMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::OnUpdateFrameMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::PaneFromPoint", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::RecalcLayout", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::RemovePaneFromDockManager", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::SaveMDIState", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::SetPrintPreviewFrame", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::SetupToolbarMenu", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::ShowFullScreen", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::ShowPane", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::ShowWindowsDialog", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::TabbedDocumentToControlBar", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::UpdateCaption", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::UpdateMDITabbedBarsIcons", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::WinHelp", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::m_bCanConvertControlBarToMDIChild", "AFXMDIFRAMEWNDEX/CMDIFrameWndEx::m_bDisableSetRedraw"]
 helpviewer_keywords: ["CMDIFrameWndEx [MFC], ActiveItemRecalcLayout", "CMDIFrameWndEx [MFC], AddPane", "CMDIFrameWndEx [MFC], AdjustClientArea", "CMDIFrameWndEx [MFC], AdjustDockingLayout", "CMDIFrameWndEx [MFC], AreMDITabs", "CMDIFrameWndEx [MFC], CanConvertControlBarToMDIChild", "CMDIFrameWndEx [MFC], ControlBarToTabbedDocument", "CMDIFrameWndEx [MFC], CreateDocumentWindow", "CMDIFrameWndEx [MFC], CreateNewWindow", "CMDIFrameWndEx [MFC], DockPane", "CMDIFrameWndEx [MFC], DockPaneLeftOf", "CMDIFrameWndEx [MFC], EnableAutoHidePanes", "CMDIFrameWndEx [MFC], EnableDocking", "CMDIFrameWndEx [MFC], EnableFullScreenMainMenu", "CMDIFrameWndEx [MFC], EnableFullScreenMode", "CMDIFrameWndEx [MFC], EnableLoadDockState", "CMDIFrameWndEx [MFC], EnableMDITabbedGroups", "CMDIFrameWndEx [MFC], EnableMDITabs", "CMDIFrameWndEx [MFC], EnableMDITabsLastActiveActivation", "CMDIFrameWndEx [MFC], EnablePaneMenu", "CMDIFrameWndEx [MFC], EnableWindowsDialog", "CMDIFrameWndEx [MFC], GetActivePopup", "CMDIFrameWndEx [MFC], GetPane", "CMDIFrameWndEx [MFC], GetDefaultResId", "CMDIFrameWndEx [MFC], GetMDITabGroups", "CMDIFrameWndEx [MFC], GetMDITabs", "CMDIFrameWndEx [MFC], GetMDITabsContextMenuAllowedItems", "CMDIFrameWndEx [MFC], GetMenuBar", "CMDIFrameWndEx [MFC], GetRibbonBar", "CMDIFrameWndEx [MFC], GetTearOffBars", "CMDIFrameWndEx [MFC], GetToolbarButtonToolTipText", "CMDIFrameWndEx [MFC], InsertPane", "CMDIFrameWndEx [MFC], IsFullScreen", "CMDIFrameWndEx [MFC], IsMDITabbedGroup", "CMDIFrameWndEx [MFC], IsMemberOfMDITabGroup", "CMDIFrameWndEx [MFC], IsMenuBarAvailable", "CMDIFrameWndEx [MFC], IsPointNearDockSite", "CMDIFrameWndEx [MFC], IsPrintPreview", "CMDIFrameWndEx [MFC], LoadFrame", "CMDIFrameWndEx [MFC], LoadMDIState", "CMDIFrameWndEx [MFC], MDITabMoveToNextGroup", "CMDIFrameWndEx [MFC], MDITabNewGroup", "CMDIFrameWndEx [MFC], NegotiateBorderSpace", "CMDIFrameWndEx [MFC], OnCloseDockingPane", "CMDIFrameWndEx [MFC], OnCloseMiniFrame", "CMDIFrameWndEx [MFC], OnClosePopupMenu", "CMDIFrameWndEx [MFC], OnCmdMsg", "CMDIFrameWndEx [MFC], OnDrawMenuImage", "CMDIFrameWndEx [MFC], OnDrawMenuLogo", "CMDIFrameWndEx [MFC], OnEraseMDIClientBackground", "CMDIFrameWndEx [MFC], OnMenuButtonToolHitTest", "CMDIFrameWndEx [MFC], OnMoveMiniFrame", "CMDIFrameWndEx [MFC], OnSetPreviewMode", "CMDIFrameWndEx [MFC], OnShowCustomizePane", "CMDIFrameWndEx [MFC], OnShowMDITabContextMenu", "CMDIFrameWndEx [MFC], OnShowPanes", "CMDIFrameWndEx [MFC], OnShowPopupMenu", "CMDIFrameWndEx [MFC], OnSizeMDIClient", "CMDIFrameWndEx [MFC], OnTearOffMenu", "CMDIFrameWndEx [MFC], OnUpdateFrameMenu", "CMDIFrameWndEx [MFC], PaneFromPoint", "CMDIFrameWndEx [MFC], RecalcLayout", "CMDIFrameWndEx [MFC], RemovePaneFromDockManager", "CMDIFrameWndEx [MFC], SaveMDIState", "CMDIFrameWndEx [MFC], SetPrintPreviewFrame", "CMDIFrameWndEx [MFC], SetupToolbarMenu", "CMDIFrameWndEx [MFC], ShowFullScreen", "CMDIFrameWndEx [MFC], ShowPane", "CMDIFrameWndEx [MFC], ShowWindowsDialog", "CMDIFrameWndEx [MFC], TabbedDocumentToControlBar", "CMDIFrameWndEx [MFC], UpdateCaption", "CMDIFrameWndEx [MFC], UpdateMDITabbedBarsIcons", "CMDIFrameWndEx [MFC], WinHelp", "CMDIFrameWndEx [MFC], m_bCanConvertControlBarToMDIChild", "CMDIFrameWndEx [MFC], m_bDisableSetRedraw"]
@@ -72,9 +72,9 @@ class CMDIFrameWndEx : public CMDIFrameWnd
 |[`CMDIFrameWndEx::OnClosePopupMenu`](#onclosepopupmenu)|Called by the framework when an active pop-up menu processes a `WM_DESTROY` message.|
 |[`CMDIFrameWndEx::OnCmdMsg`](#oncmdmsg)|Called by the framework to route and dispatch command messages and to update command user-interface objects.|
 |[`CMDIFrameWndEx::OnDrawMenuImage`](#ondrawmenuimage)|Called by the framework when the image associated with a menu item is drawn.|
-|[`CMDIFrameWndEx::OnDrawMenuLogo`](#ondrawmenulogo)|Called by the framework when a [`CMFCPopupMenu`](../../mfc/reference/cmfcpopupmenu-class.md)processes a `WM_PAINT` message.|
+|[`CMDIFrameWndEx::OnDrawMenuLogo`](#ondrawmenulogo)|Called by the framework when a [`CMFCPopupMenu`](../../mfc/reference/cmfcpopupmenu-class.md) processes a `WM_PAINT` message.|
 |[`CMDIFrameWndEx::OnEraseMDIClientBackground`](#onerasemdiclientbackground)|Called by the framework when the MDI frame window processes a `WM_ERASEBKGND` message.|
-|[`CMDIFrameWndEx::OnMenuButtonToolHitTest`](#onmenubuttontoolhittest)|Called by the framework when a [`CMFCToolBarButton`](../../mfc/reference/cmfctoolbarbutton-class.md)object processes a `WM_NCHITTEST` message.|
+|[`CMDIFrameWndEx::OnMenuButtonToolHitTest`](#onmenubuttontoolhittest)|Called by the framework when a [`CMFCToolBarButton`](../../mfc/reference/cmfctoolbarbutton-class.md) object processes a `WM_NCHITTEST` message.|
 |[`CMDIFrameWndEx::OnMoveMiniFrame`](#onmoveminiframe)|Called by the framework to move a mini-frame window.|
 |[`CMDIFrameWndEx::OnSetPreviewMode`](#onsetpreviewmode)|Sets the application's main frame window print-preview mode. (Overrides [`CFrameWnd::OnSetPreviewMode`](../../mfc/reference/cframewnd-class.md#onsetpreviewmode).)|
 |[`CMDIFrameWndEx::OnShowCustomizePane`](#onshowcustomizepane)|Called by the framework when a Quick Customize pane is activated.|
@@ -1045,7 +1045,7 @@ virtual BOOL LoadMDIState(LPCTSTR lpszProfileName);
 To load or save the state of MDI tabs and groups and the list of opened documents, do the following:
 
 - Call [`CMDIFrameWndEx::SaveMDIState`](#savemdistate) when the main frame is being closed
-- Call [`CMDIFrameWndEx::LoadMDIState`](#loadmdistate) when the main frame is being created. The recommended place for this call is before the main frame is displayed for the first time. Add `CWinAppEx::EnableLoadWindowPlacement` `(FALSE);` before `pMainFrame->LoadFrame (IDR_MAINFRAME);.` Add `CWinAppEx::ReloadWindowPlacement` `(pMainFrame);` after the call to `LoadMDIState` to display the main frame at the position that was stored in the registry.
+- Call [`CMDIFrameWndEx::LoadMDIState`](#loadmdistate) when the main frame is being created. The recommended place for this call is before the main frame is displayed for the first time. Add `CWinAppEx::EnableLoadWindowPlacement` `(FALSE);` before `pMainFrame->LoadFrame (IDR_MAINFRAME);`. Add `CWinAppEx::ReloadWindowPlacement` `(pMainFrame);` after the call to `LoadMDIState` to display the main frame at the position that was stored in the registry.
 - Override `GetDocumentName` in the `CMDIChildWndEx`- derived class if your application displays documents that aren't stored as files. The returned string will be saved in the registry as the document identifier. The base implementation of [`CMDIChildWndEx::GetDocumentName`](../../mfc/reference/cmdichildwndex-class.md#getdocumentname) returns a value obtained from [`CDocument::GetPathName`](../../mfc/reference/cdocument-class.md#getpathname).
 - Override [`CMDIFrameWndEx::CreateDocumentWindow`](#createdocumentwindow) to correctly create documents when they're being loaded from the registry. The first parameter is the string that `GetDocumentName` returned.
 
@@ -1282,7 +1282,7 @@ Override this method  if you want to customize image rendering for the menu item
 
 ## <a name="ondrawmenulogo"></a> `CMDIFrameWndEx::OnDrawMenuLogo`
 
-Called by the framework when a [`CMFCPopupMenu`](../../mfc/reference/cmfcpopupmenu-class.md)processes a `WM_PAINT` message.
+Called by the framework when a [`CMFCPopupMenu`](../../mfc/reference/cmfcpopupmenu-class.md) processes a `WM_PAINT` message.
 
 ```cpp
 virtual void OnDrawMenuLogo(
@@ -1313,7 +1313,7 @@ Override this member function if you want to process the `WM_ERASEBKGND` message
 
 ## <a name="onmenubuttontoolhittest"></a> `CMDIFrameWndEx::OnMenuButtonToolHitTest`
 
-Called by the framework when a [`CMFCToolBarButton`](../../mfc/reference/cmfctoolbarbutton-class.md)object processes a `WM_NCHITTEST` message.
+Called by the framework when a [`CMFCToolBarButton`](../../mfc/reference/cmfctoolbarbutton-class.md) object processes a `WM_NCHITTEST` message.
 
 ```cpp
 virtual BOOL OnMenuButtonToolHitTest(
diff --git a/docs/mfc/reference/cmditabinfo-class.md b/docs/mfc/reference/cmditabinfo-class.md
index 1f9cfbb176..f2c9ffc9a0 100644
--- a/docs/mfc/reference/cmditabinfo-class.md
+++ b/docs/mfc/reference/cmditabinfo-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMDITabInfo Class"
 title: "CMDITabInfo Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMDITabInfo Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMDITabInfo", "AFXMDICLIENTAREAWND/CMDITabInfo", "AFXMDICLIENTAREAWND/CMDITabInfo::Serialize", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bAutoColor", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bDocumentMenu", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bEnableTabSwap", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bFlatFrame", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bTabCloseButton", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bTabCustomTooltips", "AFXMDICLIENTAREAWND/CMDITabInfo::m_bTabIcons", "AFXMDICLIENTAREAWND/CMDITabInfo::m_nTabBorderSize", "AFXMDICLIENTAREAWND/CMDITabInfo::m_style", "AFXMDICLIENTAREAWND/CMDITabInfo::m_tabLocation"]
 helpviewer_keywords: ["CMDITabInfo [MFC], Serialize", "CMDITabInfo [MFC], m_bAutoColor", "CMDITabInfo [MFC], m_bDocumentMenu", "CMDITabInfo [MFC], m_bEnableTabSwap", "CMDITabInfo [MFC], m_bFlatFrame", "CMDITabInfo [MFC], m_bTabCloseButton", "CMDITabInfo [MFC], m_bTabCustomTooltips", "CMDITabInfo [MFC], m_bTabIcons", "CMDITabInfo [MFC], m_nTabBorderSize", "CMDITabInfo [MFC], m_style", "CMDITabInfo [MFC], m_tabLocation"]
-ms.assetid: 988ae1b7-4f7f-4239-b88f-7e28b3291c5e
 ---
 # CMDITabInfo Class
 
@@ -64,7 +63,7 @@ The following example demonstrates how to set the values of the various member v
 
 **Header:** afxmdiclientareawnd.h
 
-## <a name="m_bactivetabclosebutton_"></a> CMDITabInfo::m_bActiveTabCloseButton;
+## <a name="m_bactivetabclosebutton_"></a> CMDITabInfo::m_bActiveTabCloseButton
 
 Specifies whether a **Close** button is displayed on the label of the active tab.
 
diff --git a/docs/mfc/reference/cmemfile-class.md b/docs/mfc/reference/cmemfile-class.md
index cef271bf9c..d6b8ff1995 100644
--- a/docs/mfc/reference/cmemfile-class.md
+++ b/docs/mfc/reference/cmemfile-class.md
@@ -1,10 +1,9 @@
 ---
 title: "CMemFile Class"
 description: "Describes the functions available in the CMemFile class which allows you to work with memory files."
-ms.date: "07/23/2020"
-f1_keywords: ["CMemFile", "AFX/CMemFile", "AFX/CMemFile::CMemFile", "AFX/CMemFile::Attach", "AFX/CMemFile::Detach", "AFX/CMemFile::Alloc", "AFX/CMemFile::Free", "AFX/CmemFile::GetBufferPtr", AFX/CMemFile::GrowFile", "AFX/CMemFile::Memcpy", "AFX/CMemFile::Realloc"]
+ms.date: 07/23/2020
+f1_keywords: ["CMemFile", "AFX/CMemFile", "AFX/CMemFile::CMemFile", "AFX/CMemFile::Attach", "AFX/CMemFile::Detach", "AFX/CMemFile::Alloc", "AFX/CMemFile::Free", "AFX/CmemFile::GetBufferPtr", "AFX/CMemFile::GrowFile", "AFX/CMemFile::Memcpy", "AFX/CMemFile::Realloc"]
 helpviewer_keywords: ["CMemFile [MFC], CMemFile", "CMemFile [MFC], Attach", "CMemFile [MFC], Detach", "CMemFile [MFC], Alloc", "CMemFile [MFC], Free", "CMemFile [MFC], GetBufferPtr", "CMemFile [MFC], GrowFile", "CMemFile [MFC], Memcpy", "CMemFile [MFC], Realloc"]
-ms.assetid: 20e86515-e465-4f73-b2ea-e49789d63165
 ---
 # CMemFile Class
 
@@ -86,7 +85,7 @@ virtual BYTE* Alloc(SIZE_T nBytes);
 
 ### Parameters
 
-*nBytes*<br/>
+*nBytes*\
 Number of bytes of memory to be allocated.
 
 ### Return Value
@@ -112,13 +111,13 @@ void Attach(
 
 ### Parameters
 
-*lpBuffer*<br/>
+*lpBuffer*\
 Pointer to the buffer to be attached to `CMemFile`.
 
-*nBufferSize*<br/>
+*nBufferSize*\
 An integer that specifies the size of the buffer in bytes.
 
-*nGrowBytes*<br/>
+*nGrowBytes*\
 The memory allocation increment in bytes.
 
 ### Remarks
@@ -127,7 +126,7 @@ This causes `CMemFile` to use the block of memory as the memory file.
 
 If *nGrowBytes* is 0, `CMemFile` will set the file length to *nBufferSize*. This means that the data in the memory block before it was attached to `CMemFile` will be used as the file. Memory files created in this manner can't be grown.
 
-Since the file can't be grown, be careful not to cause `CMemFile` to attempt to grow the file. For example, don't call the `CMemFile` overrides of [CFile:Write](../../mfc/reference/cfile-class.md#write) to write past the end or don't call [CFile:SetLength](../../mfc/reference/cfile-class.md#setlength) with a length longer than *nBufferSize*.
+Since the file can't be grown, be careful not to cause `CMemFile` to attempt to grow the file. For example, don't call the `CMemFile` overrides of [CFile::Write](../../mfc/reference/cfile-class.md#write) to write past the end or don't call [CFile::SetLength](../../mfc/reference/cfile-class.md#setlength) with a length longer than *nBufferSize*.
 
 If *nGrowBytes* is greater than 0, `CMemFile` will ignore the contents of the memory block you've attached. You'll have to write the contents of the memory file from scratch using the `CMemFile` override of `CFile::Write`. If you attempt to write past the end of the file or grow the file by calling the `CMemFile` override of `CFile::SetLength`, `CMemFile` will grow the memory allocation in increments of *nGrowBytes*. Growing the memory allocation will fail if the memory block you pass to `Attach` wasn't allocated with a method compatible with [Alloc](#alloc). To be compatible with the default implementation of `Alloc`, you must allocate the memory with the run-time library function [malloc](../../c-runtime-library/reference/malloc.md) or [calloc](../../c-runtime-library/reference/calloc.md).
 
@@ -146,13 +145,13 @@ CMemFile(
 
 ### Parameters
 
-*nGrowBytes*<br/>
+*nGrowBytes*\
 The memory allocation increment in bytes.
 
-*lpBuffer*
+*lpBuffer*\
 Pointer to a buffer that receives information of the size *nBufferSize*.
 
-*nBufferSize*<br/>
+*nBufferSize*\
 An integer that specifies the size of the file buffer, in bytes.
 
 ### Remarks
@@ -179,7 +178,7 @@ A pointer to the memory block that contains the contents of the memory file.
 
 ### Remarks
 
-Calling this function also closes the `CMemFile`. You can reattach the memory block to `CMemFile` by calling [Attach](#attach). If you want to reattach the file and use the data in it, you should call [CFile::GetLength](../../mfc/reference/cfile-class.md#getlength) to get the length of the file before calling `Detach`. If you attach a memory block to `CMemFile` so that you can use its data ( `nGrowBytes` == 0), then you can't grow the memory file.
+Calling this function also closes the `CMemFile`. You can reattach the memory block to `CMemFile` by calling [Attach](#attach). If you want to reattach the file and use the data in it, you should call [CFile::GetLength](../../mfc/reference/cfile-class.md#getlength) to get the length of the file before calling `Detach`. If you attach a memory block to `CMemFile` so that you can use its data (`nGrowBytes` == 0), then you can't grow the memory file.
 
 ## <a name="free"></a> CMemFile::Free
 
@@ -191,7 +190,7 @@ virtual void Free(BYTE* lpMem);
 
 ### Parameters
 
-*lpMem*<br/>
+*lpMem*\
 Pointer to the memory to be deallocated.
 
 ### Remarks
@@ -213,16 +212,16 @@ virtual UINT GetBufferPtr(
 
 ### Parameters
 
-*nCommand*<br/>
-The [bufferCommand](buffercommand-enumeration.md) to carry out (`bufferCheck`, `bufferCommit`, `bufferRead`, or `bufferWrite` ).
+*nCommand*\
+The [bufferCommand](buffercommand-enumeration.md) to carry out (`bufferCheck`, `bufferCommit`, `bufferRead`, or `bufferWrite`).
 
-*nCount*<br/>
+*nCount*\
 Depending on *nCommand*, the number of bytes in the buffer to read, write, or commit. When reading from the buffer, specify -1 to return a buffer from the current position to the end of the file.
 
-*ppBufStart*<br/>
+*ppBufStart*\
 [out] The start of the buffer. Must be `NULL` when *nCommand* is `bufferCommit`.
 
-*ppBufMax*<br/>
+*ppBufMax*\
 [out] The end of the buffer. Must be `NULL` when nCommand is `bufferCommit`.
 
 ### Return Value
@@ -252,7 +251,7 @@ virtual void GrowFile(SIZE_T dwNewLen);
 
 ### Parameters
 
-*dwNewLen*<br/>
+*dwNewLen*\
 New size of the memory file.
 
 ### Remarks
@@ -272,13 +271,13 @@ virtual BYTE* Memcpy(
 
 ### Parameters
 
-*lpMemTarget*<br/>
+*lpMemTarget*\
 Pointer to the memory block into which the source memory will be copied.
 
-*lpMemSource*<br/>
+*lpMemSource*\
 Pointer to the source memory block.
 
-*nBytes*<br/>
+*nBytes*\
 Number of bytes to be copied.
 
 ### Return Value
@@ -301,10 +300,10 @@ virtual BYTE* Realloc(
 
 ### Parameters
 
-*lpMem*<br/>
+*lpMem*\
 A pointer to the memory block to be reallocated.
 
-*nBytes*<br/>
+*nBytes*\
 New size for the memory block.
 
 ### Return Value
@@ -317,5 +316,5 @@ Override this function to implement custom memory reallocation. If you override
 
 ## See also
 
-[CFile Class](../../mfc/reference/cfile-class.md)<br/>
+[CFile Class](../../mfc/reference/cfile-class.md)\
 [Hierarchy Chart](../../mfc/hierarchy-chart.md)
diff --git a/docs/mfc/reference/cmfcbasetabctrl-class.md b/docs/mfc/reference/cmfcbasetabctrl-class.md
index cf6a14ee2c..d34822e52a 100644
--- a/docs/mfc/reference/cmfcbasetabctrl-class.md
+++ b/docs/mfc/reference/cmfcbasetabctrl-class.md
@@ -1,7 +1,7 @@
 ---
 title: "CMFCBaseTabCtrl Class"
 description: "Learn more about: CMFCBaseTabCtrl Class"
-ms.date: "11/04/2016"
+ms.date: 11/04/2016
 f1_keywords: ["CMFCBaseTabCtrl", "AFXBASETABCTRL/CMFCBaseTabCtrl", "AFXBASETABCTRL/CMFCBaseTabCtrl::AddIcon", "AFXBASETABCTRL/CMFCBaseTabCtrl::AddTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::ApplyRestoredTabInfo", "AFXBASETABCTRL/CMFCBaseTabCtrl::AutoDestroyWindow", "AFXBASETABCTRL/CMFCBaseTabCtrl::CalcRectEdit", "AFXBASETABCTRL/CMFCBaseTabCtrl::CleanUp", "AFXBASETABCTRL/CMFCBaseTabCtrl::ClearImageList", "AFXBASETABCTRL/CMFCBaseTabCtrl::DetachTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableActivateLastActive", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableAutoColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableCustomToolTips", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableInPlaceEdit", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableTabDetach", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnableTabSwap", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnsureVisible", "AFXBASETABCTRL/CMFCBaseTabCtrl::EnterDragMode", "AFXBASETABCTRL/CMFCBaseTabCtrl::FindTargetWnd", "AFXBASETABCTRL/CMFCBaseTabCtrl::FireChangeActiveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::FireChangingActiveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetActiveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetActiveTabColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetActiveTabTextColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetActiveWnd", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetAutoColors", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetFirstVisibleTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetFirstVisibleTabNum", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetHighlightedTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetImageList", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetImageSize", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetLastVisibleTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetLocation", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetMaxWindowSize", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabArea", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabBkColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabBorderSize", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabByID", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabCloseButton", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabFromHwnd", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabFromPoint", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabFullWidth", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabHicon", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabID", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabIcon", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabLabel", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabRect", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabsHeight", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabsRect", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabTextColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabWnd", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabWndNoWrapper", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetTabsNum", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetToolTipCtrl", "AFXBASETABCTRL/CMFCBaseTabCtrl::GetVisibleTabsNum", "AFXBASETABCTRL/CMFCBaseTabCtrl::HasImage", "AFXBASETABCTRL/CMFCBaseTabCtrl::HideSingleTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::InsertTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::InvalidateTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsActiveTabCloseButton", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsAutoColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsAutoDestroyWindow", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsColored", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsDialogControl", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsDrawNoPrefix", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsFlatFrame", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsFlatTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsHideSingleTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsIconAdded", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsInPlaceEdit", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsLeftRightRounded", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsMDITab", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsOneNoteStyle", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsPtInTabArea", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabCloseButtonHighlighted", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabCloseButtonPressed", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabDetachable", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabIconOnly", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabSwapEnabled", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsTabVisible", "AFXBASETABCTRL/CMFCBaseTabCtrl::IsVS2005Style", "AFXBASETABCTRL/CMFCBaseTabCtrl::MoveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnChangeTabs", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnDragEnter", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnDragLeave", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnDragOver", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnDrop", "AFXBASETABCTRL/CMFCBaseTabCtrl::OnRenameTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::PreTranslateMessage", "AFXBASETABCTRL/CMFCBaseTabCtrl::RecalcLayout", "AFXBASETABCTRL/CMFCBaseTabCtrl::RemoveAllTabs", "AFXBASETABCTRL/CMFCBaseTabCtrl::RemoveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::RenameTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::ResetImageList", "AFXBASETABCTRL/CMFCBaseTabCtrl::Serialize", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetActiveTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetActiveTabColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetActiveTabTextColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetAutoColors", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetDockingBarWrapperRTC", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetDrawNoPrefix", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetImageList", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetLocation", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabBkColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabBorderSize", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabHicon", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabIcon", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabIconOnly", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabLabel", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabsHeight", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabTextColor", "AFXBASETABCTRL/CMFCBaseTabCtrl::SetTabsOrder", "AFXBASETABCTRL/CMFCBaseTabCtrl::ShowTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::StartRenameTab", "AFXBASETABCTRL/CMFCBaseTabCtrl::SwapTabs", "AFXBASETABCTRL/CMFCBaseTabCtrl::CreateWrapper", "AFXBASETABCTRL/CMFCBaseTabCtrl::m_bActivateTabOnRightClick", "AFXBASETABCTRL/CMFCBaseTabCtrl::m_bAutoDestroyWindow"]
 helpviewer_keywords: ["CMFCBaseTabCtrl [MFC], AddIcon", "CMFCBaseTabCtrl [MFC], AddTab", "CMFCBaseTabCtrl [MFC], ApplyRestoredTabInfo", "CMFCBaseTabCtrl [MFC], AutoDestroyWindow", "CMFCBaseTabCtrl [MFC], CalcRectEdit", "CMFCBaseTabCtrl [MFC], CleanUp", "CMFCBaseTabCtrl [MFC], ClearImageList", "CMFCBaseTabCtrl [MFC], DetachTab", "CMFCBaseTabCtrl [MFC], EnableActivateLastActive", "CMFCBaseTabCtrl [MFC], EnableAutoColor", "CMFCBaseTabCtrl [MFC], EnableCustomToolTips", "CMFCBaseTabCtrl [MFC], EnableInPlaceEdit", "CMFCBaseTabCtrl [MFC], EnableTabDetach", "CMFCBaseTabCtrl [MFC], EnableTabSwap", "CMFCBaseTabCtrl [MFC], EnsureVisible", "CMFCBaseTabCtrl [MFC], EnterDragMode", "CMFCBaseTabCtrl [MFC], FindTargetWnd", "CMFCBaseTabCtrl [MFC], FireChangeActiveTab", "CMFCBaseTabCtrl [MFC], FireChangingActiveTab", "CMFCBaseTabCtrl [MFC], GetActiveTab", "CMFCBaseTabCtrl [MFC], GetActiveTabColor", "CMFCBaseTabCtrl [MFC], GetActiveTabTextColor", "CMFCBaseTabCtrl [MFC], GetActiveWnd", "CMFCBaseTabCtrl [MFC], GetAutoColors", "CMFCBaseTabCtrl [MFC], GetFirstVisibleTab", "CMFCBaseTabCtrl [MFC], GetFirstVisibleTabNum", "CMFCBaseTabCtrl [MFC], GetHighlightedTab", "CMFCBaseTabCtrl [MFC], GetImageList", "CMFCBaseTabCtrl [MFC], GetImageSize", "CMFCBaseTabCtrl [MFC], GetLastVisibleTab", "CMFCBaseTabCtrl [MFC], GetLocation", "CMFCBaseTabCtrl [MFC], GetMaxWindowSize", "CMFCBaseTabCtrl [MFC], GetTabArea", "CMFCBaseTabCtrl [MFC], GetTabBkColor", "CMFCBaseTabCtrl [MFC], GetTabBorderSize", "CMFCBaseTabCtrl [MFC], GetTabByID", "CMFCBaseTabCtrl [MFC], GetTabCloseButton", "CMFCBaseTabCtrl [MFC], GetTabFromHwnd", "CMFCBaseTabCtrl [MFC], GetTabFromPoint", "CMFCBaseTabCtrl [MFC], GetTabFullWidth", "CMFCBaseTabCtrl [MFC], GetTabHicon", "CMFCBaseTabCtrl [MFC], GetTabID", "CMFCBaseTabCtrl [MFC], GetTabIcon", "CMFCBaseTabCtrl [MFC], GetTabLabel", "CMFCBaseTabCtrl [MFC], GetTabRect", "CMFCBaseTabCtrl [MFC], GetTabsHeight", "CMFCBaseTabCtrl [MFC], GetTabsRect", "CMFCBaseTabCtrl [MFC], GetTabTextColor", "CMFCBaseTabCtrl [MFC], GetTabWnd", "CMFCBaseTabCtrl [MFC], GetTabWndNoWrapper", "CMFCBaseTabCtrl [MFC], GetTabsNum", "CMFCBaseTabCtrl [MFC], GetToolTipCtrl", "CMFCBaseTabCtrl [MFC], GetVisibleTabsNum", "CMFCBaseTabCtrl [MFC], HasImage", "CMFCBaseTabCtrl [MFC], HideSingleTab", "CMFCBaseTabCtrl [MFC], InsertTab", "CMFCBaseTabCtrl [MFC], InvalidateTab", "CMFCBaseTabCtrl [MFC], IsActiveTabCloseButton", "CMFCBaseTabCtrl [MFC], IsAutoColor", "CMFCBaseTabCtrl [MFC], IsAutoDestroyWindow", "CMFCBaseTabCtrl [MFC], IsColored", "CMFCBaseTabCtrl [MFC], IsDialogControl", "CMFCBaseTabCtrl [MFC], IsDrawNoPrefix", "CMFCBaseTabCtrl [MFC], IsFlatFrame", "CMFCBaseTabCtrl [MFC], IsFlatTab", "CMFCBaseTabCtrl [MFC], IsHideSingleTab", "CMFCBaseTabCtrl [MFC], IsIconAdded", "CMFCBaseTabCtrl [MFC], IsInPlaceEdit", "CMFCBaseTabCtrl [MFC], IsLeftRightRounded", "CMFCBaseTabCtrl [MFC], IsMDITab", "CMFCBaseTabCtrl [MFC], IsOneNoteStyle", "CMFCBaseTabCtrl [MFC], IsPtInTabArea", "CMFCBaseTabCtrl [MFC], IsTabCloseButtonHighlighted", "CMFCBaseTabCtrl [MFC], IsTabCloseButtonPressed", "CMFCBaseTabCtrl [MFC], IsTabDetachable", "CMFCBaseTabCtrl [MFC], IsTabIconOnly", "CMFCBaseTabCtrl [MFC], IsTabSwapEnabled", "CMFCBaseTabCtrl [MFC], IsTabVisible", "CMFCBaseTabCtrl [MFC], IsVS2005Style", "CMFCBaseTabCtrl [MFC], MoveTab", "CMFCBaseTabCtrl [MFC], OnChangeTabs", "CMFCBaseTabCtrl [MFC], OnDragEnter", "CMFCBaseTabCtrl [MFC], OnDragLeave", "CMFCBaseTabCtrl [MFC], OnDragOver", "CMFCBaseTabCtrl [MFC], OnDrop", "CMFCBaseTabCtrl [MFC], OnRenameTab", "CMFCBaseTabCtrl [MFC], PreTranslateMessage", "CMFCBaseTabCtrl [MFC], RecalcLayout", "CMFCBaseTabCtrl [MFC], RemoveAllTabs", "CMFCBaseTabCtrl [MFC], RemoveTab", "CMFCBaseTabCtrl [MFC], RenameTab", "CMFCBaseTabCtrl [MFC], ResetImageList", "CMFCBaseTabCtrl [MFC], Serialize", "CMFCBaseTabCtrl [MFC], SetActiveTab", "CMFCBaseTabCtrl [MFC], SetActiveTabColor", "CMFCBaseTabCtrl [MFC], SetActiveTabTextColor", "CMFCBaseTabCtrl [MFC], SetAutoColors", "CMFCBaseTabCtrl [MFC], SetDockingBarWrapperRTC", "CMFCBaseTabCtrl [MFC], SetDrawNoPrefix", "CMFCBaseTabCtrl [MFC], SetImageList", "CMFCBaseTabCtrl [MFC], SetLocation", "CMFCBaseTabCtrl [MFC], SetTabBkColor", "CMFCBaseTabCtrl [MFC], SetTabBorderSize", "CMFCBaseTabCtrl [MFC], SetTabHicon", "CMFCBaseTabCtrl [MFC], SetTabIcon", "CMFCBaseTabCtrl [MFC], SetTabIconOnly", "CMFCBaseTabCtrl [MFC], SetTabLabel", "CMFCBaseTabCtrl [MFC], SetTabsHeight", "CMFCBaseTabCtrl [MFC], SetTabTextColor", "CMFCBaseTabCtrl [MFC], SetTabsOrder", "CMFCBaseTabCtrl [MFC], ShowTab", "CMFCBaseTabCtrl [MFC], StartRenameTab", "CMFCBaseTabCtrl [MFC], SwapTabs", "CMFCBaseTabCtrl [MFC], CreateWrapper", "CMFCBaseTabCtrl [MFC], m_bActivateTabOnRightClick", "CMFCBaseTabCtrl [MFC], m_bAutoDestroyWindow"]
 ---
@@ -1756,7 +1756,7 @@ virtual void SetActiveTabColor(COLORREF clr);
 
 ### Remarks
 
-The framework obtains the default background color for active tabs from the [GetSysColor](/windows/win32/api/winuser/nf-winuser-getsyscolor)method.
+The framework obtains the default background color for active tabs from the [GetSysColor](/windows/win32/api/winuser/nf-winuser-getsyscolor) method.
 
 ## <a name="setactivetabtextcolor"></a> CMFCBaseTabCtrl::SetActiveTabTextColor
 
diff --git a/docs/mfc/reference/cmfcbutton-class.md b/docs/mfc/reference/cmfcbutton-class.md
index 5e3103d317..a244e55d07 100644
--- a/docs/mfc/reference/cmfcbutton-class.md
+++ b/docs/mfc/reference/cmfcbutton-class.md
@@ -11,7 +11,7 @@ The `CMFCButton` class adds functionality to the [`CButton`](../../mfc/reference
 
 ## Syntax
 
-```
+```cpp
 class CMFCButton : public CButton
 ```
 
@@ -45,7 +45,7 @@ class CMFCButton : public CButton
 |[`CMFCButton::IsPushed`](#ispushed)|Indicates whether a button is pushed.|
 |[`CMFCButton::IsRadioButton`](#isradiobutton)|Indicates whether a button is a radio button.|
 |[`CMFCButton::IsWindowsThemingEnabled`](#iswindowsthemingenabled)|Indicates whether the style of the button border corresponds to the current Windows theme.|
-|`CMFCButton::OnDrawParentBackground`|Draws the background of a button's parent in the specified area. (Overrides [`AFX_GLOBAL_DATA::DrawParentBackground`](../../mfc/reference/afx-global-data-structure.md)|
+|`CMFCButton::OnDrawParentBackground`|Draws the background of a button's parent in the specified area. (Overrides [`AFX_GLOBAL_DATA::DrawParentBackground`](../../mfc/reference/afx-global-data-structure.md).)|
 |`CMFCButton::PreTranslateMessage`|Translates window messages before they are dispatched to the [`TranslateMessage`](/windows/win32/api/winuser/nf-winuser-translatemessage) and [`DispatchMessage`](/windows/win32/api/winuser/nf-winuser-dispatchmessage) Windows functions. (Overrides [`CWnd::PreTranslateMessage`](../../mfc/reference/cwnd-class.md#pretranslatemessage).)|
 |[`CMFCButton::SetAutorepeatMode`](#setautorepeatmode)|Sets a button to auto-repeat mode.|
 |[`CMFCButton::SetCheckedImage`](#setcheckedimage)|Sets the image for a checked button.|
@@ -78,8 +78,8 @@ class CMFCButton : public CButton
 |[`CMFCButton::m_bDontUseWinXPTheme`](#m_bDontUseWinXPTheme)|Specifies whether to use Windows XP themes.|
 |[`CMFCButton::m_bDrawFocus`](#m_bdrawfocus)|Indicates whether to draw a focus rectangle around a button.|
 |[`CMFCButton::m_nFlatStyle`](#m_nflatstyle)|Specifies the style of the button, such as borderless, flat, semi-flat, or 3D.|
-|[`CMFCButton::m_bGrayDisabled`](#m_bGrayDisabled)|When TRUE, enables a disabled button to be drawn as grayed-out.|
-|[`CMFCButton::m_bHighlightChecked`](#m_bhighlightchecked)|Indicates whether to highlight a BS_CHECKBOX-style button when the cursor hovers over it.|
+|[`CMFCButton::m_bGrayDisabled`](#m_bGrayDisabled)|When `TRUE`, enables a disabled button to be drawn as grayed-out.|
+|[`CMFCButton::m_bHighlightChecked`](#m_bhighlightchecked)|Indicates whether to highlight a `BS_CHECKBOX`-style button when the cursor hovers over it.|
 |[`CMFCButton::m_bResponseOnButtonDown`](#m_bResponseOnButtonDown)|Indicates whether to respond to button down events.|
 |[`CMFCButton::m_bRightImage`](#m_brightimage)|Indicates whether to display an image on the right side of the button.|
 |[`CMFCButton::m_bTopImage`](#m_bTopImage)| Indicates whether the image is on top of the button.|
@@ -125,7 +125,7 @@ The following example demonstrates how to configure the properties of the button
 
 Resets internal variables and frees allocated resources such as images, bitmaps, and icons.
 
-```
+```cpp
 virtual void CleanUp();
 ```
 
@@ -139,11 +139,9 @@ void EnableFullTextTooltip(BOOL bOn=TRUE);
 
 ### Parameters
 
-*`bOn`*<br/>
+*`bOn`*\
 [in] `TRUE` to display all of the text; `FALSE` to display truncated text.
 
-### Remarks
-
 ## <a name="enablemenufont"></a> `CMFCButton::EnableMenuFont`
 
 Specifies whether the button text font is the same as the application menu font.
@@ -156,10 +154,10 @@ void EnableMenuFont(
 
 ### Parameters
 
-*`bOn`*<br/>
+*`bOn`*\
 [in] `TRUE` to use the application menu font as the button text font; `FALSE` to use the system font. The default is `TRUE`.
 
-*`bRedraw`*<br/>
+*`bRedraw`*\
 [in] `TRUE` to immediately redraw the screen; otherwise, `FALSE`. The default is `TRUE`.
 
 ### Remarks
@@ -170,13 +168,13 @@ If you do not use this method to specify the button text font, you can specify t
 
 Specifies whether the style of the button border corresponds to the current Windows theme.
 
-```
+```cpp
 static void EnableWindowsTheming(BOOL bEnable = TRUE);
 ```
 
 ### Parameters
 
-*`bEnable`*<br/>
+*`bEnable`*\
 [in] `TRUE` to use the current Windows theme to draw button borders; `FALSE` to not use the Windows theme. The default is `TRUE`.
 
 ### Remarks
@@ -187,7 +185,7 @@ This method affects all buttons in your application that are derived from the `C
 
 Returns a reference to the underlying tooltip control.
 
-```
+```cpp
 CToolTipCtrl& GetToolTipCtrl();
 ```
 
@@ -195,13 +193,11 @@ CToolTipCtrl& GetToolTipCtrl();
 
 A reference to the underlying tooltip control.
 
-### Remarks
-
 ## <a name="isautocheck"></a> `CMFCButton::IsAutoCheck`
 
 Indicates whether a check box or radio button is an automatic button.
 
-```
+```cpp
 BOOL IsAutoCheck() const;
 ```
 
@@ -209,13 +205,11 @@ BOOL IsAutoCheck() const;
 
 `TRUE` if the button has style `BS_AUTOCHECKBOX` or `BS_AUTORADIOBUTTON`; otherwise, `FALSE`.
 
-### Remarks
-
 ## <a name="isautorepeatcommandmode"></a> `CMFCButton::IsAutorepeatCommandMode`
 
 Indicates whether a button is set to auto-repeat mode.
 
-```
+```cpp
 BOOL IsAutorepeatCommandMode() const;
 ```
 
@@ -231,7 +225,7 @@ Use the [`CMFCButton::SetAutorepeatMode`](#setautorepeatmode) method to set a bu
 
 Indicates whether a button is a check box button.
 
-```
+```cpp
 BOOL IsCheckBox() const;
 ```
 
@@ -239,13 +233,11 @@ BOOL IsCheckBox() const;
 
 `TRUE` if the button has either `BS_CHECKBOX` or `BS_AUTOCHECKBOX` style; otherwise, `FALSE`.
 
-### Remarks
-
 ## <a name="ischecked"></a> `CMFCButton::IsChecked`
 
 Indicates whether the current button is checked.
 
-```
+```cpp
 BOOL IsChecked() const;
 ```
 
@@ -261,7 +253,7 @@ The framework uses different ways to indicate that different kinds of buttons ar
 
 Indicates whether a button is highlighted.
 
-```
+```cpp
 BOOL IsHighlighted() const;
 ```
 
@@ -277,7 +269,7 @@ A button becomes highlighted when the mouse hovers over the button.
 
 Indicates whether a button is pushed and highlighted.
 
-```
+```cpp
 BOOL IsPressed() const;
 ```
 
@@ -285,13 +277,11 @@ BOOL IsPressed() const;
 
 `TRUE` if the button is pressed; otherwise, `FALSE`.
 
-### Remarks
-
 ## <a name="ispushed"></a> `CMFCButton::IsPushed`
 
 Indicates whether a button is pushed.
 
-```
+```cpp
 BOOL IsPushed() const;
 ```
 
@@ -299,13 +289,11 @@ BOOL IsPushed() const;
 
 `TRUE` if the button is pushed; otherwise, `FALSE`.
 
-### Remarks
-
 ## <a name="isradiobutton"></a> `CMFCButton::IsRadioButton`
 
 Indicates whether a button is a radio button.
 
-```
+```cpp
 BOOL IsRadioButton() const;
 ```
 
@@ -313,13 +301,11 @@ BOOL IsRadioButton() const;
 
 `TRUE` if the button style is `BS_RADIOBUTTON` or `BS_AUTORADIOBUTTON`; otherwise, `FALSE`.
 
-### Remarks
-
 ## <a name="iswindowsthemingenabled"></a> `CMFCButton::IsWindowsThemingEnabled`
 
 Indicates whether the style of the button border corresponds to the current Windows theme.
 
-```
+```cpp
 static BOOL IsWindowsThemingEnabled();
 ```
 
@@ -331,7 +317,7 @@ static BOOL IsWindowsThemingEnabled();
 
 Specifies whether to use Windows XP themes when drawing the button.
 
-```
+```cpp
 BOOL m_bDontUseWinXPTheme;
 ```
 
@@ -339,7 +325,7 @@ BOOL m_bDontUseWinXPTheme;
 
 Indicates whether to draw a focus rectangle around a button.
 
-```
+```cpp
 BOOL m_bDrawFocus;
 ```
 
@@ -353,7 +339,7 @@ The `CMFCButton` constructor initializes this member to `TRUE`.
 
 When `TRUE`, enables a disabled button to be drawn as grayed-out.
 
-```
+```cpp
 BOOL m_bGrayDisabled;
 ```
 
@@ -361,7 +347,7 @@ BOOL m_bGrayDisabled;
 
 Indicates whether to highlight a `BS_CHECKBOX`-style button when the cursor hovers over it.
 
-```
+```cpp
 BOOL m_bHighlightChecked;
 ```
 
@@ -373,7 +359,7 @@ Set the `m_bHighlightChecked` member to `TRUE` to specify that the framework wil
 
 Indicates whether to respond to button down events.
 
-```
+```cpp
 BOOL m_bResponseOnButtonDown;
 ```
 
@@ -381,15 +367,15 @@ BOOL m_bResponseOnButtonDown;
 
 Indicates whether to display an image on the right side of the button.
 
-```
+```cpp
 BOOL m_bRightImage;
 ```
 
-## <a name="m_bTopImage"></a> `CMFCButton::m_bTopImage](#m_bTopImage)`
+## <a name="m_bTopImage"></a> `CMFCButton::m_bTopImage`
 
 Indicates whether the image is on top of the button.
 
-```
+```cpp
 BOOL m_bTopImage;
 ```
 
@@ -401,7 +387,7 @@ Set the `m_bRightImage` member to `TRUE` to specify that the framework will disp
 
 Indicates whether the button is transparent.
 
-```
+```cpp
 BOOL m_bTransparent;
 ```
 
@@ -413,7 +399,7 @@ Set the `m_bTransparent` member to `TRUE` to specify that the framework will mak
 
 Specifies the alignment of the button text.
 
-```
+```cpp
 AlignStyle m_nAlignStyle;
 ```
 
@@ -429,11 +415,11 @@ Use one of the following `CMFCButton::AlignStyle` enumeration values to specify
 
 The `CMFCButton` constructor initializes this member to `ALIGN_CENTER`.
 
-## <a name="m_bWasDblClk"></a> `CMFCButton::m_bWasDblClk`](#m_bWasDblClk)|
+## <a name="m_bWasDblClk"></a> `CMFCButton::m_bWasDblClk`
 
-Indicates whether the last click event was a double-click.|
+Indicates whether the last click event was a double-click.
 
-```
+```cpp
 BOOL m_bWasDblClk;
 ```
 
@@ -441,8 +427,8 @@ BOOL m_bWasDblClk;
 
 Specifies the style of the button, such as borderless, flat, semi-flat, or 3D.
 
-```
-FlatStyle  m_nFlatStyle;
+```cpp
+FlatStyle m_nFlatStyle;
 ```
 
 ### Remarks
@@ -469,7 +455,7 @@ The following example demonstrates how to set the values of the `m_nFlatStyle` m
 
 Called by the framework to draw a button.
 
-```
+```cpp
 virtual void OnDraw(
     CDC* pDC,
     const CRect& rect,
@@ -478,13 +464,13 @@ virtual void OnDraw(
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
-*`rect`*<br/>
+*`rect`*\
 [in] A reference to a rectangle that bounds the button.
 
-*`uiState`*<br/>
+*`uiState`*\
 [in] The current button state. For more information, see the `itemState` member of the [`DRAWITEMSTRUCT` Structure](/windows/win32/api/winuser/ns-winuser-drawitemstruct) topic.
 
 ### Remarks
@@ -495,7 +481,7 @@ Override this method to use your own code to draw a button.
 
 Called by the framework to draw the border of a button.
 
-```
+```cpp
 virtual void OnDrawBorder(
     CDC* pDC,
     CRect& rectClient,
@@ -504,13 +490,13 @@ virtual void OnDrawBorder(
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
-*`rectClient`*<br/>
+*`rectClient`*\
 [in] A reference to a rectangle that bounds the button.
 
-*`uiState`*<br/>
+*`uiState`*\
 [in] The current button state. For more information, see the `itemState` member of the [`DRAWITEMSTRUCT` Structure](/windows/win32/api/winuser/ns-winuser-drawitemstruct) topic.
 
 ### Remarks
@@ -521,7 +507,7 @@ Override this method to use your own code to draw the border.
 
 Called by the framework to draw the focus rectangle for a button.
 
-```
+```cpp
 virtual void OnDrawFocusRect(
     CDC* pDC,
     const CRect& rectClient);
@@ -529,10 +515,10 @@ virtual void OnDrawFocusRect(
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
-*`rectClient`*<br/>
+*`rectClient`*\
 [in] A reference to a rectangle that bounds the button.
 
 ### Remarks
@@ -543,7 +529,7 @@ Override this method to use your own code to draw the focus rectangle.
 
 Called by the framework to draw the button text.
 
-```
+```cpp
 virtual void OnDrawText(
     CDC* pDC,
     const CRect& rect,
@@ -554,19 +540,19 @@ virtual void OnDrawText(
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
-*`rect`*<br/>
+*`rect`*\
 [in] A reference to a rectangle that bounds the button.
 
-*`strText`*<br/>
+*`strText`*\
 [in] The text to draw.
 
-*`uiDTFlags`*<br/>
+*`uiDTFlags`*\
 [in] Flags that specify how to format the text. For more information, see the *`nFormat`* parameter of the [`CDC::DrawText`](../../mfc/reference/cdc-class.md#drawtext) method.
 
-*`uiState`*<br/>
+*`uiState`*\
 [in] Reserved.
 
 ### Remarks
@@ -577,7 +563,7 @@ Override this method to use your own code to draw the button text.
 
 Called by the framework to draw the background of the button text.
 
-```
+```cpp
 virtual void OnFillBackground(
     CDC* pDC,
     const CRect& rectClient);
@@ -585,10 +571,10 @@ virtual void OnFillBackground(
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
-*`rectClient`*<br/>
+*`rectClient`*\
 [in] A reference to a rectangle that bounds the button.
 
 ### Remarks
@@ -599,21 +585,19 @@ Override this method to use your own code to draw the background of a button.
 
 Retrieves the font that is associated with the specified device context.
 
-```
+```cpp
 virtual CFont* SelectFont(CDC* pDC);
 ```
 
 ### Parameters
 
-*`pDC`*<br/>
+*`pDC`*\
 [in] A pointer to a device context.
 
 ### Return Value
 
 Override this method to use your own code to retrieve the font.
 
-### Remarks
-
 ## <a name="setautorepeatmode"></a> `CMFCButton::SetAutorepeatMode`
 
 Sets a button to auto-repeat mode.
@@ -624,7 +608,7 @@ void SetAutorepeatMode(int nTimeDelay=500);
 
 ### Parameters
 
-*`nTimeDelay`*<br/>
+*`nTimeDelay`*\
 [in] A nonnegative number that specifies the interval between messages that are sent to the parent window. The interval is measured in milliseconds and its default value is 500 milliseconds. Specify zero to disable auto-repeat message mode.
 
 ### Remarks
@@ -658,44 +642,42 @@ void SetCheckedImage(
 
 ### Parameters
 
-*`hIcon`*<br/>
+*`hIcon`*\
 [in] Handle to the icon that contains the bitmap and mask for the new image.
 
-*`bAutoDestroy`*<br/>
+*`bAutoDestroy`*\
 [in] `TRUE` to specify that bitmap resources be destroyed automatically; otherwise, `FALSE`. The default is `TRUE`.
 
-*`hIconHot`*<br/>
+*`hIconHot`*\
 [in] Handle to the icon that contains the image for the selected state.
 
-*`hBitmap`*<br/>
+*`hBitmap`*\
 [in] Handle to the bitmap that contains the image for the non-selected state.
 
-*`hBitmapHot`*<br/>
+*`hBitmapHot`*\
 [in] Handle to the bitmap that contains the image for the selected state.
 
-*`bMap3dColors`*<br/>
+*`bMap3dColors`*\
 [in] Specifies a transparent color for the button background; that is, the face of the button. `TRUE` to use the color value RGB(192, 192, 192); `FALSE` to use the color value defined by `AFX_GLOBAL_DATA::clrBtnFace`.
 
-*`uiBmpResId`*<br/>
+*`uiBmpResId`*\
 [in] Resource ID for the non-selected image.
 
-*`uiBmpHotResId`*<br/>
+*`uiBmpHotResId`*\
 [in] Resource ID for the selected image.
 
-*`hIconDisabled`*<br/>
+*`hIconDisabled`*\
 [in] Handle to the icon for the disabled image.
 
-*`hBitmapDisabled`*<br/>
+*`hBitmapDisabled`*\
 [in] Handle to the bitmap that contains the disabled image.
 
-*`uiBmpDsblResID`*<br/>
+*`uiBmpDsblResID`*\
 [in] Resource ID of the disabled bitmap.
 
-*`bAlphaBlend`*<br/>
+*`bAlphaBlend`*\
 [in] `TRUE` to use only 32-bit images that use the alpha channel; `FALSE`, to not use only alpha channel images. The default is `FALSE`.
 
-### Remarks
-
 ## <a name="setfacecolor"></a> `CMFCButton::SetFaceColor`
 
 Sets the background color for the button text.
@@ -708,17 +690,17 @@ void SetFaceColor(
 
 ### Parameters
 
-*`crFace`*<br/>
+*`crFace`*\
 [in] An RGB color value.
 
-*`bRedraw`*<br/>
+*`bRedraw`*\
 [in] `TRUE` to redraw the screen immediately; otherwise, `FALSE`.
 
 ### Remarks
 
 Use this method to define a new fill color for the button background (face). Note that the background is not filled when the [`CMFCButton::m_bTransparent`](#m_btransparent) member variable is `TRUE`.
 
-## <a name="setimage"></a> CMFCButton::SetImage
+## <a name="setimage"></a> `CMFCButton::SetImage`
 
 Sets the image for a button.
 
@@ -745,44 +727,42 @@ void SetImage(
 
 ### Parameters
 
-*`hIcon`*<br/>
+*`hIcon`*\
 [in] Handle to the icon that contains the bitmap and mask for the new image.
 
-*`bAutoDestroy`*<br/>
+*`bAutoDestroy`*\
 [in] `TRUE` to specify that bitmap resources be destroyed automatically; otherwise, `FALSE`. The default is `TRUE`.
 
-*`hIconHot`*<br/>
+*`hIconHot`*\
 [in] Handle to the icon that contains the image for the selected state.
 
-*`hBitmap`*<br/>
+*`hBitmap`*\
 [in] Handle to the bitmap that contains the image for the non-selected state.
 
-*`hBitmapHot`*<br/>
+*`hBitmapHot`*\
 [in] Handle to the bitmap that contains the image for the selected state.
 
-*`uiBmpResId`*<br/>
+*`uiBmpResId`*\
 [in] Resource ID for the non-selected image.
 
-*`uiBmpHotResId`*<br/>
+*`uiBmpHotResId`*\
 [in] Resource ID for the selected image.
 
-*`bMap3dColors`*<br/>
+*`bMap3dColors`*\
 [in] Specifies a transparent color for the button background; that is, the face of the button. `TRUE` to use the color value RGB(192, 192, 192); `FALSE` to use the color value defined by `AFX_GLOBAL_DATA::clrBtnFace`.
 
-*`hIconDisabled`*<br/>
+*`hIconDisabled`*\
 [in] Handle to the icon for the disabled image.
 
-*`hBitmapDisabled`*<br/>
+*`hBitmapDisabled`*\
 [in] Handle to the bitmap that contains the disabled image.
 
-*`uiBmpDsblResID`*<br/>
+*`uiBmpDsblResID`*\
 [in] Resource ID of the disabled bitmap.
 
-*`bAlphaBlend`*<br/>
+*`bAlphaBlend`*\
 [in] `TRUE` to use only 32-bit images that use the alpha channel; `FALSE`, to not use only alpha channel images. The default is `FALSE`.
 
-### Remarks
-
 ### Example
 
 The following example demonstrates how to use various versions of the `SetImage` method in the `CMFCButton` class. The example is part of the [New Controls sample](../../overview/visual-cpp-samples.md).
@@ -800,7 +780,7 @@ void SetMouseCursor(HCURSOR hcursor);
 
 ### Parameters
 
-*`hcursor`*<br/>
+*`hcursor`*\
 [in] The handle of a cursor.
 
 ### Remarks
@@ -839,16 +819,14 @@ void SetStdImage(
 
 ### Parameters
 
-*`id`*<br/>
+*`id`*\
 [in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image values specify images such as arrows, pins, and radio buttons.
 
-*`state`*<br/>
+*`state`*\
 [in] One of the button image state identifiers that is defined in the `CMenuImages::IMAGE_STATE` enumeration. The image states specify button colors such as black, gray, light gray, white, and dark gray. The default value is `CMenuImages::ImageBlack`.
 
-*`idDisabled`*<br/>
-[in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image indicates that the button is disabled. The default value is the first button image ( `CMenuImages::IdArrowDown`).
-
-### Remarks
+*`idDisabled`*\
+[in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image indicates that the button is disabled. The default value is the first button image (`CMenuImages::IdArrowDown`).
 
 ## <a name="settextcolor"></a> `CMFCButton::SetTextColor`
 
@@ -860,11 +838,9 @@ void SetTextColor(COLORREF clrText);
 
 ### Parameters
 
-*`clrText`*<br/>
+*`clrText`*\
 [in] An RGB color value.
 
-### Remarks
-
 ## <a name="settexthotcolor"></a> `CMFCButton::SetTextHotColor`
 
 Sets the color of the button text for a button that is selected.
@@ -875,11 +851,9 @@ void SetTextHotColor(COLORREF clrTextHot);
 
 ### Parameters
 
-*`clrTextHot`*<br/>
+*`clrTextHot`*\
 [in] An RGB color value.
 
-### Remarks
-
 ## <a name="settooltip"></a> `CMFCButton::SetTooltip`
 
 Associates a tooltip with a button.
@@ -890,22 +864,20 @@ void SetTooltip(LPCTSTR lpszToolTipText);
 
 ### Parameters
 
-*`lpszToolTipText`*<br/>
+*`lpszToolTipText`*\
 [in] Pointer to the text for the tooltip. Specify `NULL` to disable the tooltip.
 
-### Remarks
-
 ## <a name="sizetocontent"></a> `CMFCButton::SizeToContent`
 
 Resizes a button to contain its button text and image.
 
-```
+```cpp
 virtual CSize SizeToContent(BOOL bCalcOnly=FALSE);
 ```
 
 ### Parameters
 
-*`bCalcOnly`*<br/>
+*`bCalcOnly`*\
 [in] `TRUE` to calculate, but not change, the new size of the button; `FALSE` to change the size of the button. The default is `FALSE`.
 
 ### Return Value
diff --git a/docs/mfc/reference/cmfcdynamiclayout-class.md b/docs/mfc/reference/cmfcdynamiclayout-class.md
index 0c8f47f3f0..c41f1893c7 100644
--- a/docs/mfc/reference/cmfcdynamiclayout-class.md
+++ b/docs/mfc/reference/cmfcdynamiclayout-class.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: CMFCDynamicLayout Class"
 title: "CMFCDynamicLayout Class"
+description: "Learn more about: CMFCDynamicLayout Class"
 ms.date: "08/29/2019"
 f1_keywords: ["CMFCDynamicLayout", "AFXLAYOUT/CMFCDynamicLayout", "AFXLAYOUT/CMFCDynamicLayout::AddItem", "AFXLAYOUT/CMFCDynamicLayout::Adjust", "AFXLAYOUT/CMFCDynamicLayout::Create", "AFXLAYOUT/CMFCDynamicLayout::GetHostWnd", "AFXLAYOUT/CMFCDynamicLayout::GetMinSize", "AFXLAYOUT/CMFCDynamicLayout::GetWindowRect", "AFXLAYOUT/CMFCDynamicLayout::HasItem", "AFXLAYOUT/CMFCDynamicLayout::IsEmpty", "AFXLAYOUT/CMFCDynamicLayout::LoadResource", "AFXLAYOUT/CMFCDynamicLayout::SetMinSize"]
-ms.assetid: c2df2976-f049-47fc-9cf0-abe3e01948bc
 ---
 # CMFCDynamicLayout Class
 
@@ -170,7 +169,7 @@ The position and size of a child control is changed dynamically when a hosting w
 Retrieves the rectangle for the window's current client area.
 
 ```cpp
-void GetHostWndRect(CRect& rect,);
+void GetHostWndRect(CRect& rect);
 ```
 
 ### Parameters
@@ -503,5 +502,5 @@ A [SizeSettings](#sizesettings_structure) value that encapsulates the requested
 
 ## See also
 
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
 [Classes](../../mfc/reference/mfc-classes.md)
diff --git a/docs/mfc/reference/cmfceditbrowsectrl-class.md b/docs/mfc/reference/cmfceditbrowsectrl-class.md
index 4674427de8..c24728b72e 100644
--- a/docs/mfc/reference/cmfceditbrowsectrl-class.md
+++ b/docs/mfc/reference/cmfceditbrowsectrl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCEditBrowseCtrl Class"
 title: "CMFCEditBrowseCtrl Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMFCEditBrowseCtrl Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMFCEditBrowseCtrl", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::EnableBrowseButton", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::EnableFileBrowseButton", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::EnableFolderBrowseButton", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::GetMode", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::OnAfterUpdate", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::OnBrowse", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::OnChangeLayout", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::OnDrawBrowseButton", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::OnIllegalFileName", "AFXEDITBROWSECTRL/CMFCEditBrowseCtrl::SetBrowseButtonImage"]
 helpviewer_keywords: ["CMFCEditBrowseCtrl [MFC], EnableBrowseButton", "CMFCEditBrowseCtrl [MFC], EnableFileBrowseButton", "CMFCEditBrowseCtrl [MFC], EnableFolderBrowseButton", "CMFCEditBrowseCtrl [MFC], GetMode", "CMFCEditBrowseCtrl [MFC], OnAfterUpdate", "CMFCEditBrowseCtrl [MFC], OnBrowse", "CMFCEditBrowseCtrl [MFC], OnChangeLayout", "CMFCEditBrowseCtrl [MFC], OnDrawBrowseButton", "CMFCEditBrowseCtrl [MFC], OnIllegalFileName", "CMFCEditBrowseCtrl [MFC], SetBrowseButtonImage"]
-ms.assetid: 69cfd886-3d35-4bee-8901-7c88fcf9520f
 ---
 # CMFCEditBrowseCtrl Class
 
@@ -69,7 +68,7 @@ Perform the following steps to incorporate an edit browse control in your applic
 
 1. Embed either the `CMFCEditBrowseCtrl` object or the derived edit browse control object into the parent window object.
 
-1. If you use the **Class Wizard** to create a dialog box, add an edit control ( `CEdit`) to the dialog box form. Also, add a variable to access the control in your header file. In your header file, change the type of the variable from `CEdit` to `CMFCEditBrowseCtrl`. The edit browse control will be created automatically. If you do not use the **Class Wizard**, add a `CMFCEditBrowseCtrl` variable to your header file and then call its `Create` method.
+1. If you use the **Class Wizard** to create a dialog box, add an edit control (`CEdit`) to the dialog box form. Also, add a variable to access the control in your header file. In your header file, change the type of the variable from `CEdit` to `CMFCEditBrowseCtrl`. The edit browse control will be created automatically. If you do not use the **Class Wizard**, add a `CMFCEditBrowseCtrl` variable to your header file and then call its `Create` method.
 
 1. If you add an edit browse control to a dialog box, use the **ClassWizard** tool to set up data exchange.
 
diff --git a/docs/mfc/reference/cmfcmenubar-class.md b/docs/mfc/reference/cmfcmenubar-class.md
index b541ec3c64..8b8174252b 100644
--- a/docs/mfc/reference/cmfcmenubar-class.md
+++ b/docs/mfc/reference/cmfcmenubar-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCMenuBar Class"
 title: "CMFCMenuBar Class"
+description: "Learn more about: CMFCMenuBar Class"
 ms.date: "10/18/2018"
 f1_keywords: ["CMFCMenuBar", "AFXMENUBAR/CMFCMenuBar", "AFXMENUBAR/CMFCMenuBar::AdjustLocations", "AFXMENUBAR/CMFCMenuBar::AllowChangeTextLabels", "AFXMENUBAR/CMFCMenuBar::AllowShowOnPaneMenu", "AFXMENUBAR/CMFCMenuBar::CalcFixedLayout", "AFXMENUBAR/CMFCMenuBar::CalcLayout", "AFXMENUBAR/CMFCMenuBar::CalcMaxButtonHeight", "AFXMENUBAR/CMFCMenuBar::CanBeClosed", "AFXMENUBAR/CMFCMenuBar::CanBeRestored", "AFXMENUBAR/CMFCMenuBar::Create", "AFXMENUBAR/CMFCMenuBar::CreateEx", "AFXMENUBAR/CMFCMenuBar::CreateFromMenu", "AFXMENUBAR/CMFCMenuBar::EnableHelpCombobox", "AFXMENUBAR/CMFCMenuBar::EnableMenuShadows", "AFXMENUBAR/CMFCMenuBar::GetAvailableExpandSize", "AFXMENUBAR/CMFCMenuBar::GetColumnWidth", "AFXMENUBAR/CMFCMenuBar::GetDefaultMenu", "AFXMENUBAR/CMFCMenuBar::GetDefaultMenuResId", "AFXMENUBAR/CMFCMenuBar::GetFloatPopupDirection", "AFXMENUBAR/CMFCMenuBar::GetForceDownArrows", "AFXMENUBAR/CMFCMenuBar::GetHelpCombobox", "AFXMENUBAR/CMFCMenuBar::GetHMenu", "AFXMENUBAR/CMFCMenuBar::GetMenuFont", "AFXMENUBAR/CMFCMenuBar::GetMenuItem", "AFXMENUBAR/CMFCMenuBar::GetRowHeight", "AFXMENUBAR/CMFCMenuBar::GetSystemButton", "AFXMENUBAR/CMFCMenuBar::GetSystemButtonsCount", "AFXMENUBAR/CMFCMenuBar::GetSystemMenu", "AFXMENUBAR/CMFCMenuBar::HighlightDisabledItems", "AFXMENUBAR/CMFCMenuBar::IsButtonExtraSizeAvailable", "AFXMENUBAR/CMFCMenuBar::IsHighlightDisabledItems", "AFXMENUBAR/CMFCMenuBar::IsMenuShadows", "AFXMENUBAR/CMFCMenuBar::IsRecentlyUsedMenus", "AFXMENUBAR/CMFCMenuBar::IsShowAllCommands", "AFXMENUBAR/CMFCMenuBar::IsShowAllCommandsDelay", "AFXMENUBAR/CMFCMenuBar::LoadState", "AFXMENUBAR/CMFCMenuBar::OnChangeHot", "AFXMENUBAR/CMFCMenuBar::OnDefaultMenuLoaded", "AFXMENUBAR/CMFCMenuBar::OnSendCommand", "AFXMENUBAR/CMFCMenuBar::OnSetDefaultButtonText", "AFXMENUBAR/CMFCMenuBar::OnToolHitTest", "AFXMENUBAR/CMFCMenuBar::PreTranslateMessage", "AFXMENUBAR/CMFCMenuBar::RestoreOriginalstate", "AFXMENUBAR/CMFCMenuBar::SaveState", "AFXMENUBAR/CMFCMenuBar::SetDefaultMenuResId", "AFXMENUBAR/CMFCMenuBar::SetForceDownArrows", "AFXMENUBAR/CMFCMenuBar::SetMaximizeMode", "AFXMENUBAR/CMFCMenuBar::SetMenuButtonRTC", "AFXMENUBAR/CMFCMenuBar::SetMenuFont", "AFXMENUBAR/CMFCMenuBar::SetRecentlyUsedMenus", "AFXMENUBAR/CMFCMenuBar::SetShowAllCommands"]
 helpviewer_keywords: ["CMFCMenuBar [MFC], AdjustLocations", "CMFCMenuBar [MFC], AllowChangeTextLabels", "CMFCMenuBar [MFC], AllowShowOnPaneMenu", "CMFCMenuBar [MFC], CalcFixedLayout", "CMFCMenuBar [MFC], CalcLayout", "CMFCMenuBar [MFC], CalcMaxButtonHeight", "CMFCMenuBar [MFC], CanBeClosed", "CMFCMenuBar [MFC], CanBeRestored", "CMFCMenuBar [MFC], Create", "CMFCMenuBar [MFC], CreateEx", "CMFCMenuBar [MFC], CreateFromMenu", "CMFCMenuBar [MFC], EnableHelpCombobox", "CMFCMenuBar [MFC], EnableMenuShadows", "CMFCMenuBar [MFC], GetAvailableExpandSize", "CMFCMenuBar [MFC], GetColumnWidth", "CMFCMenuBar [MFC], GetDefaultMenu", "CMFCMenuBar [MFC], GetDefaultMenuResId", "CMFCMenuBar [MFC], GetFloatPopupDirection", "CMFCMenuBar [MFC], GetForceDownArrows", "CMFCMenuBar [MFC], GetHelpCombobox", "CMFCMenuBar [MFC], GetHMenu", "CMFCMenuBar [MFC], GetMenuFont", "CMFCMenuBar [MFC], GetMenuItem", "CMFCMenuBar [MFC], GetRowHeight", "CMFCMenuBar [MFC], GetSystemButton", "CMFCMenuBar [MFC], GetSystemButtonsCount", "CMFCMenuBar [MFC], GetSystemMenu", "CMFCMenuBar [MFC], HighlightDisabledItems", "CMFCMenuBar [MFC], IsButtonExtraSizeAvailable", "CMFCMenuBar [MFC], IsHighlightDisabledItems", "CMFCMenuBar [MFC], IsMenuShadows", "CMFCMenuBar [MFC], IsRecentlyUsedMenus", "CMFCMenuBar [MFC], IsShowAllCommands", "CMFCMenuBar [MFC], IsShowAllCommandsDelay", "CMFCMenuBar [MFC], LoadState", "CMFCMenuBar [MFC], OnChangeHot", "CMFCMenuBar [MFC], OnDefaultMenuLoaded", "CMFCMenuBar [MFC], OnSendCommand", "CMFCMenuBar [MFC], OnSetDefaultButtonText", "CMFCMenuBar [MFC], OnToolHitTest", "CMFCMenuBar [MFC], PreTranslateMessage", "CMFCMenuBar [MFC], RestoreOriginalstate", "CMFCMenuBar [MFC], SaveState", "CMFCMenuBar [MFC], SetDefaultMenuResId", "CMFCMenuBar [MFC], SetForceDownArrows", "CMFCMenuBar [MFC], SetMaximizeMode", "CMFCMenuBar [MFC], SetMenuButtonRTC", "CMFCMenuBar [MFC], SetMenuFont", "CMFCMenuBar [MFC], SetRecentlyUsedMenus", "CMFCMenuBar [MFC], SetShowAllCommands"]
-ms.assetid: 8a3ce4c7-b012-4dc0-b4f8-53c10b4b86b8
 ---
 # CMFCMenuBar Class
 
@@ -663,7 +662,7 @@ When you configure a menu bar to display recently used items, the menu bar displ
 
 - Display the full menu after the user clicks the arrow at the bottom of the menu.
 
-By default, all `CMFCMenuBar` objects use the option to display the full menu after a short delay. This option cannot be changed programmatically in the `CMFCMenuBar` class. However, a user can change the behavior during toolbar customization by using the **Customize** dialog box..
+By default, all `CMFCMenuBar` objects use the option to display the full menu after a short delay. This option cannot be changed programmatically in the `CMFCMenuBar` class. However, a user can change the behavior during toolbar customization by using the **Customize** dialog box.
 
 ## <a name="loadstate"></a> CMFCMenuBar::LoadState
 
@@ -977,6 +976,6 @@ If a menu does not display all the menu commands, it hides the commands that are
 
 ## See also
 
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
-[Classes](../../mfc/reference/mfc-classes.md)<br/>
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
+[Classes](../../mfc/reference/mfc-classes.md)\
 [CMFCToolBar Class](../../mfc/reference/cmfctoolbar-class.md)
diff --git a/docs/mfc/reference/cmfcpreviewctrlimpl-class.md b/docs/mfc/reference/cmfcpreviewctrlimpl-class.md
index 22d3cb1583..0dc7d37952 100644
--- a/docs/mfc/reference/cmfcpreviewctrlimpl-class.md
+++ b/docs/mfc/reference/cmfcpreviewctrlimpl-class.md
@@ -1,18 +1,17 @@
 ---
-description: "Learn more about: CMFCPreviewCtrlImpl Class"
 title: "CMFCPreviewCtrlImpl Class"
+description: "Learn more about: CMFCPreviewCtrlImpl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CMFCPreviewCtrlImpl", "AFXWIN/CMFCPreviewCtrlImpl", "AFXWIN/CMFCPreviewCtrlImpl::CMFCPreviewCtrlImpl", "AFXWIN/CMFCPreviewCtrlImpl::Create", "AFXWIN/CMFCPreviewCtrlImpl::Destroy", "AFXWIN/CMFCPreviewCtrlImpl::Focus", "AFXWIN/CMFCPreviewCtrlImpl::GetDocument", "AFXWIN/CMFCPreviewCtrlImpl::Redraw", "AFXWIN/CMFCPreviewCtrlImpl::SetDocument", "AFXWIN/CMFCPreviewCtrlImpl::SetHost", "AFXWIN/CMFCPreviewCtrlImpl::SetPreviewVisuals", "AFXWIN/CMFCPreviewCtrlImpl::SetRect", "AFXWIN/CMFCPreviewCtrlImpl::DoPaint", "AFXWIN/CMFCPreviewCtrlImpl::m_clrBackColor", "AFXWIN/CMFCPreviewCtrlImpl::m_clrTextColor", "AFXWIN/CMFCPreviewCtrlImpl::m_font", "AFXWIN/CMFCPreviewCtrlImpl::m_pDocument"]
 helpviewer_keywords: ["CMFCPreviewCtrlImpl [MFC], CMFCPreviewCtrlImpl", "CMFCPreviewCtrlImpl [MFC], Create", "CMFCPreviewCtrlImpl [MFC], Destroy", "CMFCPreviewCtrlImpl [MFC], Focus", "CMFCPreviewCtrlImpl [MFC], GetDocument", "CMFCPreviewCtrlImpl [MFC], Redraw", "CMFCPreviewCtrlImpl [MFC], SetDocument", "CMFCPreviewCtrlImpl [MFC], SetHost", "CMFCPreviewCtrlImpl [MFC], SetPreviewVisuals", "CMFCPreviewCtrlImpl [MFC], SetRect", "CMFCPreviewCtrlImpl [MFC], DoPaint", "CMFCPreviewCtrlImpl [MFC], m_clrBackColor", "CMFCPreviewCtrlImpl [MFC], m_clrTextColor", "CMFCPreviewCtrlImpl [MFC], m_font", "CMFCPreviewCtrlImpl [MFC], m_pDocument"]
-ms.assetid: 06257fa0-54c9-478d-9d68-c9698c3f93ed
 ---
-# CMFCPreviewCtrlImpl Class
+# `CMFCPreviewCtrlImpl` Class
 
 This class implements a window that is placed on a host window provided by the Shell for Rich Preview.
 
 ## Syntax
 
-```
+```cpp
 class CMFCPreviewCtrlImpl : public CWnd;
 ```
 
@@ -22,37 +21,37 @@ class CMFCPreviewCtrlImpl : public CWnd;
 
 |Name|Description|
 |----------|-----------------|
-|[CMFCPreviewCtrlImpl::~CMFCPreviewCtrlImpl](#dtor)|Destructs a preview control object.|
-|[CMFCPreviewCtrlImpl::CMFCPreviewCtrlImpl](#cmfcpreviewctrlimpl)|Constructs a preview control object.|
+|[`CMFCPreviewCtrlImpl::~CMFCPreviewCtrlImpl`](#dtor)|Destructs a preview control object.|
+|[`CMFCPreviewCtrlImpl::CMFCPreviewCtrlImpl`](#cmfcpreviewctrlimpl)|Constructs a preview control object.|
 
 ### Public Methods
 
 |Name|Description|
 |----------|-----------------|
-|[CMFCPreviewCtrlImpl::Create](#create)|Overloaded. Called by a Rich Preview handler to create the Windows window.|
-|[CMFCPreviewCtrlImpl::Destroy](#destroy)|Called by a Rich Preview handler when it needs to destroy this control.|
-|[CMFCPreviewCtrlImpl::Focus](#focus)|Sets input focus to this control.|
-|[CMFCPreviewCtrlImpl::GetDocument](#getdocument)|Returns a document connected to this preview control.|
-|[CMFCPreviewCtrlImpl::Redraw](#redraw)|Tells this control to redraw.|
-|[CMFCPreviewCtrlImpl::SetDocument](#setdocument)|Called by the preview handler to create a relationship between the document implementation and the preview control.|
-|[CMFCPreviewCtrlImpl::SetHost](#sethost)|Sets a new parent for this control.|
-|[CMFCPreviewCtrlImpl::SetPreviewVisuals](#setpreviewvisuals)|Called by a Rich Preview handler when it needs to set visuals of rich preview content.|
-|[CMFCPreviewCtrlImpl::SetRect](#setrect)|Sets a new bounding rectangle for this control.|
+|[`CMFCPreviewCtrlImpl::Create`](#create)|Overloaded. Called by a Rich Preview handler to create the Windows window.|
+|[`CMFCPreviewCtrlImpl::Destroy`](#destroy)|Called by a Rich Preview handler when it needs to destroy this control.|
+|[`CMFCPreviewCtrlImpl::Focus`](#focus)|Sets input focus to this control.|
+|[`CMFCPreviewCtrlImpl::GetDocument`](#getdocument)|Returns a document connected to this preview control.|
+|[`CMFCPreviewCtrlImpl::Redraw`](#redraw)|Tells this control to redraw.|
+|[`CMFCPreviewCtrlImpl::SetDocument`](#setdocument)|Called by the preview handler to create a relationship between the document implementation and the preview control.|
+|[`CMFCPreviewCtrlImpl::SetHost`](#sethost)|Sets a new parent for this control.|
+|[`CMFCPreviewCtrlImpl::SetPreviewVisuals`](#setpreviewvisuals)|Called by a Rich Preview handler when it needs to set visuals of rich preview content.|
+|[`CMFCPreviewCtrlImpl::SetRect`](#setrect)|Sets a new bounding rectangle for this control.|
 
 ### Protected Methods
 
 |Name|Description|
 |----------|-----------------|
-|[CMFCPreviewCtrlImpl::DoPaint](#dopaint)|Called by the framework to render the preview.|
+|[`CMFCPreviewCtrlImpl::DoPaint`](#dopaint)|Called by the framework to render the preview.|
 
 ### Protected Data Members
 
 |Name|Description|
 |----------|-----------------|
-|[CMFCPreviewCtrlImpl::m_clrBackColor](#m_clrbackcolor)|Background color of preview window.|
-|[CMFCPreviewCtrlImpl::m_clrTextColor](#m_clrtextcolor)|Text color of preview window.|
-|[CMFCPreviewCtrlImpl::m_font](#m_font)|Font used to display text in the preview window.|
-|[CMFCPreviewCtrlImpl::m_pDocument](#m_pdocument)|A pointer to a document whose content is previewed in the control.|
+|[`CMFCPreviewCtrlImpl::m_clrBackColor`](#m_clrbackcolor)|Background color of preview window.|
+|[`CMFCPreviewCtrlImpl::m_clrTextColor`](#m_clrtextcolor)|Text color of preview window.|
+|[`CMFCPreviewCtrlImpl::m_font`](#m_font)|Font used to display text in the preview window.|
+|[`CMFCPreviewCtrlImpl::m_pDocument`](#m_pdocument)|A pointer to a document whose content is previewed in the control.|
 
 ## Requirements
 
@@ -60,99 +59,101 @@ class CMFCPreviewCtrlImpl : public CWnd;
 
 ## Inheritance Hierarchy
 
-[CObject](../../mfc/reference/cobject-class.md)
+[CObject](cobject-class.md)
 
-[CCmdTarget](../../mfc/reference/ccmdtarget-class.md)
+[CCmdTarget](ccmdtarget-class.md)
 
-[CWnd](../../mfc/reference/cwnd-class.md)
+[CWnd](cwnd-class.md)
 
-[CMFCPreviewCtrlImpl](../../mfc/reference/cmfcpreviewctrlimpl-class.md)
+[CMFCPreviewCtrlImpl](cmfcpreviewctrlimpl-class.md)
 
-## <a name="cmfcpreviewctrlimpl"></a> CMFCPreviewCtrlImpl::CMFCPreviewCtrlImpl
+## <a name="cmfcpreviewctrlimpl"></a> `CMFCPreviewCtrlImpl::CMFCPreviewCtrlImpl`
 
 Constructs a preview control object.
 
 ### Syntax
 
+```cpp
 CMFCPreviewCtrlImpl();
+```
 
-## <a name="create"></a> CMFCPreviewCtrlImpl::Create
+## <a name="create"></a> `CMFCPreviewCtrlImpl::Create`
 
 Overloaded. Called by a Rich Preview handler to create the Windows window.
 
 ### Syntax
 
-```
+```cpp
 virtual BOOL Create(
-   HWND hWndParent,
-   const RECT* prc
+    HWND hWndParent,
+    const RECT* prc
 );
 virtual BOOL Create(
-   HWND hWndParent,
-   const RECT* prc,
-   CCreateContext* pContext
+    HWND hWndParent,
+    const RECT* prc,
+    CCreateContext* pContext
 );
 ```
 
 ### Parameters
 
-*hWndParent*<br/>
+*`hWndParent`*\
 A handle to the host window supplied by the Shell for Rich Preview.
 
-*prc*<br/>
+*`prc`*\
 Specifies the initial size and position of the window.
 
-*pContext*<br/>
+*`pContext`*\
 A pointer to a creation context.
 
 ### Return Value
 
-TRUE if creation succeeded; otherwise FALSE.
+`TRUE` if creation succeeded; otherwise `FALSE`.
 
-## <a name="destroy"></a> CMFCPreviewCtrlImpl::Destroy
+## <a name="destroy"></a> `CMFCPreviewCtrlImpl::Destroy`
 
 Called by a Rich Preview handler when it needs to destroy this control.
 
 ### Syntax
 
-```
+```cpp
 virtual void Destroy();
 ```
 
-## <a name="dopaint"></a> CMFCPreviewCtrlImpl::DoPaint
+## <a name="dopaint"></a> `CMFCPreviewCtrlImpl::DoPaint`
 
 Called by the framework to render the preview.
 
 ### Syntax
 
-```
+```cpp
 virtual void DoPaint(
-   CPaintDC* pDC
+    CPaintDC* pDC
 );
 ```
 
 ### Parameters
 
-*pDC*<br/>
+*`pDC`*\
 A pointer to a device context for painting.
 
-## <a name="focus"></a> CMFCPreviewCtrlImpl::Focus
+## <a name="focus"></a> `CMFCPreviewCtrlImpl::Focus`
 
 Sets input focus to this control.
 
 ### Syntax
 
-```
+```cpp
 virtual void Focus();
 ```
 
-## <a name="getdocument"></a> CMFCPreviewCtrlImpl::GetDocument
+## <a name="getdocument"></a> `CMFCPreviewCtrlImpl::GetDocument`
 
 Returns a document connected to this preview control.
 
 ### Syntax
 
-```
+```cpp
 ATL::IDocument* GetDocument();
 ```
 
@@ -160,55 +161,57 @@ ATL::IDocument* GetDocument();
 
 A pointer to a document, whose content is previewed in the control.
 
-## <a name="m_clrbackcolor"></a> CMFCPreviewCtrlImpl::m_clrBackColor
+## <a name="m_clrbackcolor"></a> `CMFCPreviewCtrlImpl::m_clrBackColor`
 
 Background color of the preview window.
 
 ### Syntax
 
-```
+```cpp
 COLORREF m_clrBackColor;
 ```
 
-## <a name="m_clrtextcolor"></a> CMFCPreviewCtrlImpl::m_clrTextColor
+## <a name="m_clrtextcolor"></a> `CMFCPreviewCtrlImpl::m_clrTextColor`
 
 Text color of the preview window.
 
 ### Syntax
 
-```
+```cpp
 COLORREF m_clrTextColor;
 ```
 
-## <a name="m_font"></a> CMFCPreviewCtrlImpl::m_font  Font used to display text in the preview window.
+## <a name="m_font"></a> `CMFCPreviewCtrlImpl::m_font`
+
+Font used to display text in the preview window.
 
 ### Syntax
 
-```
+```cpp
 CFont m_font;
 ```
 
-## <a name="m_pdocument"></a> CMFCPreviewCtrlImpl::m_pDocument
+## <a name="m_pdocument"></a> `CMFCPreviewCtrlImpl::m_pDocument`
 
 A pointer to a document whose content is previewed in the control.
 
 ### Syntax
 
-```
+```cpp
 ATL::IDocument* m_pDocument;
 ```
 
-## <a name="redraw"></a> CMFCPreviewCtrlImpl::Redraw
+## <a name="redraw"></a> `CMFCPreviewCtrlImpl::Redraw`
 
 Tells this control to redraw.
 
 ### Syntax
 
-```
+```cpp
 virtual void Redraw();
 ```
 
-## <a name="setdocument"></a> CMFCPreviewCtrlImpl::SetDocument
+## <a name="setdocument"></a> `CMFCPreviewCtrlImpl::SetDocument`
 
 Called by the preview handler to create a relationship between the document implementation and the preview control.
 
@@ -216,88 +219,88 @@ Called by the preview handler to create a relationship between the document impl
 
 ```cpp
 void SetDocument(
-   IDocument* pDocument
+    IDocument* pDocument
 );
 ```
 
 ### Parameters
 
-*pDocument*<br/>
+*`pDocument`*\
 A pointer to the document implementation.
 
-## <a name="sethost"></a> CMFCPreviewCtrlImpl::SetHost
+## <a name="sethost"></a> `CMFCPreviewCtrlImpl::SetHost`
 
 Sets a new parent for this control.
 
 ### Syntax
 
-```
+```cpp
 virtual void SetHost(
-   HWND hWndParent
+    HWND hWndParent
 );
 ```
 
 ### Parameters
 
-*hWndParent*<br/>
+*`hWndParent`*\
 A handle to the new parent window.
 
-## <a name="setpreviewvisuals"></a> CMFCPreviewCtrlImpl::SetPreviewVisuals
+## <a name="setpreviewvisuals"></a> `CMFCPreviewCtrlImpl::SetPreviewVisuals`
 
 Called by a Rich Preview handler when it needs to set visuals of rich preview content.
 
 ### Syntax
 
-```
+```cpp
 virtual void SetPreviewVisuals(
-   COLORREF clrBack,
-   COLORREF clrText,
-   const LOGFONTW *plf
+    COLORREF clrBack,
+    COLORREF clrText,
+    const LOGFONTW *plf
 );
 ```
 
 ### Parameters
 
-*clrBack*<br/>
+*`clrBack`*\
 Background color of preview window.
 
-*clrText*<br/>
+*`clrText`*\
 Text color of preview window.
 
-*plf*<br/>
+*`plf`*\
 Font used to display text in the preview window.
 
-## <a name="setrect"></a> CMFCPreviewCtrlImpl::SetRect
+## <a name="setrect"></a> `CMFCPreviewCtrlImpl::SetRect`
 
 Sets a new bounding rectangle for this control.
 
 ### Syntax
 
-```
+```cpp
 virtual void SetRect(
-   const RECT* prc,
-   BOOL bRedraw
+    const RECT* prc,
+    BOOL bRedraw
 );
 ```
 
 ### Parameters
 
-*prc*<br/>
+*`prc`*\
 Specifies the new size and position of the preview control.
 
-*bRedraw*<br/>
+*`bRedraw`*\
 Specifies whether the control should be redrawn.
 
 ### Remarks
 
 Usually a new bounding rectangle is set when the host control is resized.
 
-## <a name="dtor"></a> CMFCPreviewCtrlImpl::~CMFCPreviewCtrlImpl
+## <a name="dtor"></a> `CMFCPreviewCtrlImpl::~CMFCPreviewCtrlImpl`
 
 Destructs a preview control object.
 
 ### Syntax
 
-```
+```cpp
 virtual ~CMFCPreviewCtrlImpl();
 ```
diff --git a/docs/mfc/reference/cmfcpropertygridctrl-class.md b/docs/mfc/reference/cmfcpropertygridctrl-class.md
index 319ba89f9d..08bc061cf3 100644
--- a/docs/mfc/reference/cmfcpropertygridctrl-class.md
+++ b/docs/mfc/reference/cmfcpropertygridctrl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCPropertyGridCtrl Class"
 title: "CMFCPropertyGridCtrl Class"
+description: "Learn more about: CMFCPropertyGridCtrl Class"
 ms.date: "11/19/2018"
 f1_keywords: ["CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::accSelect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AddProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AlwaysShowUserToolTip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CloseColorPopup", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::Create", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::DeleteProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::DrawControlBarColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnableDescriptionArea", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnableHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnsureVisible", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ExpandAll", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::FindItemByData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accChildCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accFocus", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accHelp", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accHelpTopic", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accKeyboardShortcut", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetBkColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetBoldFont", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetCurSel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetCustomColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetDescriptionHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetDescriptionRows", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetHeaderHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetLeftColumnWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetListRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetPropertyColumnWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetPropertyCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetRowHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetScrollBarCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetTextColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::HitTest", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::InitHeader", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsAlphabeticMode", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsAlwaysShowUserToolTip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsDescriptionArea", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsGroupNameFullWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsMarkModifiedProperties", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsShowDragContext", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsVSDotNetLook", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::MarkModifiedProperties", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::RemoveAll", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ResetOriginalValues", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetAlphabeticMode", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetBoolLabels", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetCurSel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetCustomColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetDescriptionRows", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetGroupNameFullWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetListDelimiter", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetShowDragContext", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetVSDotNetLook", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::UpdateColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AdjustLayout", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CompareProps", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EditItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EndEditItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::Init", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnChangeSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnClickButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawBorder", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawList", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnPropertyChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnSelectCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ValidateItemData"]
 helpviewer_keywords: ["CMFCPropertyGridCtrl [MFC], CMFCPropertyGridCtrl", "CMFCPropertyGridCtrl [MFC], accSelect", "CMFCPropertyGridCtrl [MFC], AddProperty", "CMFCPropertyGridCtrl [MFC], AlwaysShowUserToolTip", "CMFCPropertyGridCtrl [MFC], CloseColorPopup", "CMFCPropertyGridCtrl [MFC], Create", "CMFCPropertyGridCtrl [MFC], DeleteProperty", "CMFCPropertyGridCtrl [MFC], DrawControlBarColors", "CMFCPropertyGridCtrl [MFC], EnableDescriptionArea", "CMFCPropertyGridCtrl [MFC], EnableHeaderCtrl", "CMFCPropertyGridCtrl [MFC], EnsureVisible", "CMFCPropertyGridCtrl [MFC], ExpandAll", "CMFCPropertyGridCtrl [MFC], FindItemByData", "CMFCPropertyGridCtrl [MFC], get_accChildCount", "CMFCPropertyGridCtrl [MFC], get_accFocus", "CMFCPropertyGridCtrl [MFC], get_accHelp", "CMFCPropertyGridCtrl [MFC], get_accHelpTopic", "CMFCPropertyGridCtrl [MFC], get_accKeyboardShortcut", "CMFCPropertyGridCtrl [MFC], get_accSelection", "CMFCPropertyGridCtrl [MFC], GetBkColor", "CMFCPropertyGridCtrl [MFC], GetBoldFont", "CMFCPropertyGridCtrl [MFC], GetCurSel", "CMFCPropertyGridCtrl [MFC], GetCustomColors", "CMFCPropertyGridCtrl [MFC], GetDescriptionHeight", "CMFCPropertyGridCtrl [MFC], GetDescriptionRows", "CMFCPropertyGridCtrl [MFC], GetHeaderCtrl", "CMFCPropertyGridCtrl [MFC], GetHeaderHeight", "CMFCPropertyGridCtrl [MFC], GetLeftColumnWidth", "CMFCPropertyGridCtrl [MFC], GetListRect", "CMFCPropertyGridCtrl [MFC], GetProperty", "CMFCPropertyGridCtrl [MFC], GetPropertyColumnWidth", "CMFCPropertyGridCtrl [MFC], GetPropertyCount", "CMFCPropertyGridCtrl [MFC], GetRowHeight", "CMFCPropertyGridCtrl [MFC], GetScrollBarCtrl", "CMFCPropertyGridCtrl [MFC], GetTextColor", "CMFCPropertyGridCtrl [MFC], HitTest", "CMFCPropertyGridCtrl [MFC], InitHeader", "CMFCPropertyGridCtrl [MFC], IsAlphabeticMode", "CMFCPropertyGridCtrl [MFC], IsAlwaysShowUserToolTip", "CMFCPropertyGridCtrl [MFC], IsDescriptionArea", "CMFCPropertyGridCtrl [MFC], IsGroupNameFullWidth", "CMFCPropertyGridCtrl [MFC], IsHeaderCtrl", "CMFCPropertyGridCtrl [MFC], IsMarkModifiedProperties", "CMFCPropertyGridCtrl [MFC], IsShowDragContext", "CMFCPropertyGridCtrl [MFC], IsVSDotNetLook", "CMFCPropertyGridCtrl [MFC], MarkModifiedProperties", "CMFCPropertyGridCtrl [MFC], RemoveAll", "CMFCPropertyGridCtrl [MFC], ResetOriginalValues", "CMFCPropertyGridCtrl [MFC], SetAlphabeticMode", "CMFCPropertyGridCtrl [MFC], SetBoolLabels", "CMFCPropertyGridCtrl [MFC], SetCurSel", "CMFCPropertyGridCtrl [MFC], SetCustomColors", "CMFCPropertyGridCtrl [MFC], SetDescriptionRows", "CMFCPropertyGridCtrl [MFC], SetGroupNameFullWidth", "CMFCPropertyGridCtrl [MFC], SetListDelimiter", "CMFCPropertyGridCtrl [MFC], SetShowDragContext", "CMFCPropertyGridCtrl [MFC], SetVSDotNetLook", "CMFCPropertyGridCtrl [MFC], UpdateColor", "CMFCPropertyGridCtrl [MFC], AdjustLayout", "CMFCPropertyGridCtrl [MFC], CompareProps", "CMFCPropertyGridCtrl [MFC], EditItem", "CMFCPropertyGridCtrl [MFC], EndEditItem", "CMFCPropertyGridCtrl [MFC], Init", "CMFCPropertyGridCtrl [MFC], OnChangeSelection", "CMFCPropertyGridCtrl [MFC], OnClickButton", "CMFCPropertyGridCtrl [MFC], OnDrawBorder", "CMFCPropertyGridCtrl [MFC], OnDrawDescription", "CMFCPropertyGridCtrl [MFC], OnDrawList", "CMFCPropertyGridCtrl [MFC], OnDrawProperty", "CMFCPropertyGridCtrl [MFC], OnPropertyChanged", "CMFCPropertyGridCtrl [MFC], OnSelectCombo", "CMFCPropertyGridCtrl [MFC], ValidateItemData"]
-ms.assetid: 95877cae-2311-4a2a-9031-0c8c3cf0a5f9
 ---
 # CMFCPropertyGridCtrl Class
 
@@ -179,7 +178,7 @@ virtual HRESULT accSelect(
 ### Parameters
 
 [in] *`flagsSelect`*\
-[in] *`varChild`*\
+[in] *`varChild`*
 
 ### Return Value
 
@@ -235,7 +234,7 @@ void AlwaysShowUserToolTip(BOOL bShow = TRUE);
 
 ### Parameters
 
-[in] *`bShow`*\
+[in] *`bShow`*
 
 ### Remarks
 
@@ -524,7 +523,7 @@ virtual HRESULT get_accChildCount(long* pcountChildren);
 
 ### Parameters
 
-[in] *`pcountChildren`*\
+[in] *`pcountChildren`*
 
 ### Return Value
 
@@ -538,7 +537,7 @@ virtual HRESULT get_accFocus(VARIANT* pvarChild);
 
 ### Parameters
 
-[in] *`pvarChild`*\
+[in] *`pvarChild`*
 
 ### Return Value
 
@@ -555,7 +554,7 @@ virtual HRESULT get_accHelp(
 ### Parameters
 
 [in] *`varChild`*\
-[in] *`pszHelp`*\
+[in] *`pszHelp`*
 
 ### Return Value
 
@@ -574,7 +573,7 @@ virtual HRESULT get_accHelpTopic(
 
 [in] *`pszHelpFile`*\
 [in] *`varChild`*\
-[in] *`pidTopic`*\
+[in] *`pidTopic`*
 
 ### Return Value
 
@@ -591,7 +590,7 @@ virtual HRESULT get_accKeyboardShortcut(
 ### Parameters
 
 [in] *`varChild`*\
-[in] *`pszKeyboardShortcut`*\
+[in] *`pszKeyboardShortcut`*
 
 ### Return Value
 
@@ -605,7 +604,7 @@ virtual HRESULT get_accSelection(VARIANT* pvarChildren);
 
 ### Parameters
 
-[in] *`pvarChildren`*\
+[in] *`pvarChildren`*
 
 ### Return Value
 
@@ -781,7 +780,7 @@ CRect GetListRect() const;
 
 ### Return Value
 
-The bounding rectangle of the property grid control. This rectange doesn't include the description area and header.
+The bounding rectangle of the property grid control. This rectangle doesn't include the description area and header.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cmfcpropertygridproperty-class.md b/docs/mfc/reference/cmfcpropertygridproperty-class.md
index 31a00e36f8..8bf3752df3 100644
--- a/docs/mfc/reference/cmfcpropertygridproperty-class.md
+++ b/docs/mfc/reference/cmfcpropertygridproperty-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CMFCPropertyGridProperty class"
 title: "CMFCPropertyGridProperty class"
-ms.date: "10/12/2022"
+description: "Learn more about: CMFCPropertyGridProperty class"
+ms.date: 10/12/2022
 f1_keywords: ["CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AddOption", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AddSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AdjustButtonRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AdjustInPlaceEditRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AllowEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateInPlaceEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateSpinControl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Enable", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::EnableSpinControl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Expand", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::FormatProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetExpandedSubItems", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetHierarchyLevel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetNameTooltip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOption", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOptionCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetParent", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetSubItemsCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetValueTooltip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::HitTest", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsAllowEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsEnabled", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsExpanded", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsGroup", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsInPlaceEditing", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsModified", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsParentExpanded", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsSelected", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsVisible", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnCloseCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDblClk", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawExpandBox", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnEndEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnKillSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnPosSizeChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnRClickName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnRClickValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSelectCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSetCursor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSetSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnUpdateValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::PushChar", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Redraw", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::RemoveAllOptions", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::RemoveSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::ResetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Show", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::HasButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Init", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsValueChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnCtlColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDestroyWindow", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnKillFocus", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatDouble", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatFloat", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatLong", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatShort"]
 helpviewer_keywords: ["CMFCPropertyGridProperty [MFC], CMFCPropertyGridProperty", "CMFCPropertyGridProperty [MFC], AddOption", "CMFCPropertyGridProperty [MFC], AddSubItem", "CMFCPropertyGridProperty [MFC], AdjustButtonRect", "CMFCPropertyGridProperty [MFC], AdjustInPlaceEditRect", "CMFCPropertyGridProperty [MFC], AllowEdit", "CMFCPropertyGridProperty [MFC], CreateInPlaceEdit", "CMFCPropertyGridProperty [MFC], CreateSpinControl", "CMFCPropertyGridProperty [MFC], Enable", "CMFCPropertyGridProperty [MFC], EnableSpinControl", "CMFCPropertyGridProperty [MFC], Expand", "CMFCPropertyGridProperty [MFC], FormatProperty", "CMFCPropertyGridProperty [MFC], GetData", "CMFCPropertyGridProperty [MFC], GetDescription", "CMFCPropertyGridProperty [MFC], GetExpandedSubItems", "CMFCPropertyGridProperty [MFC], GetHierarchyLevel", "CMFCPropertyGridProperty [MFC], GetName", "CMFCPropertyGridProperty [MFC], GetNameTooltip", "CMFCPropertyGridProperty [MFC], GetOption", "CMFCPropertyGridProperty [MFC], GetOptionCount", "CMFCPropertyGridProperty [MFC], GetOriginalValue", "CMFCPropertyGridProperty [MFC], GetParent", "CMFCPropertyGridProperty [MFC], GetRect", "CMFCPropertyGridProperty [MFC], GetSubItem", "CMFCPropertyGridProperty [MFC], GetSubItemsCount", "CMFCPropertyGridProperty [MFC], GetValue", "CMFCPropertyGridProperty [MFC], GetValueTooltip", "CMFCPropertyGridProperty [MFC], HitTest", "CMFCPropertyGridProperty [MFC], IsAllowEdit", "CMFCPropertyGridProperty [MFC], IsEnabled", "CMFCPropertyGridProperty [MFC], IsExpanded", "CMFCPropertyGridProperty [MFC], IsGroup", "CMFCPropertyGridProperty [MFC], IsInPlaceEditing", "CMFCPropertyGridProperty [MFC], IsModified", "CMFCPropertyGridProperty [MFC], IsParentExpanded", "CMFCPropertyGridProperty [MFC], IsSelected", "CMFCPropertyGridProperty [MFC], IsVisible", "CMFCPropertyGridProperty [MFC], OnClickButton", "CMFCPropertyGridProperty [MFC], OnClickName", "CMFCPropertyGridProperty [MFC], OnClickValue", "CMFCPropertyGridProperty [MFC], OnCloseCombo", "CMFCPropertyGridProperty [MFC], OnDblClk", "CMFCPropertyGridProperty [MFC], OnDrawButton", "CMFCPropertyGridProperty [MFC], OnDrawDescription", "CMFCPropertyGridProperty [MFC], OnDrawExpandBox", "CMFCPropertyGridProperty [MFC], OnDrawName", "CMFCPropertyGridProperty [MFC], OnDrawValue", "CMFCPropertyGridProperty [MFC], OnEdit", "CMFCPropertyGridProperty [MFC], OnEndEdit", "CMFCPropertyGridProperty [MFC], OnKillSelection", "CMFCPropertyGridProperty [MFC], OnPosSizeChanged", "CMFCPropertyGridProperty [MFC], OnRClickName", "CMFCPropertyGridProperty [MFC], OnRClickValue", "CMFCPropertyGridProperty [MFC], OnSelectCombo", "CMFCPropertyGridProperty [MFC], OnSetCursor", "CMFCPropertyGridProperty [MFC], OnSetSelection", "CMFCPropertyGridProperty [MFC], OnUpdateValue", "CMFCPropertyGridProperty [MFC], PushChar", "CMFCPropertyGridProperty [MFC], Redraw", "CMFCPropertyGridProperty [MFC], RemoveAllOptions", "CMFCPropertyGridProperty [MFC], RemoveSubItem", "CMFCPropertyGridProperty [MFC], ResetOriginalValue", "CMFCPropertyGridProperty [MFC], SetData", "CMFCPropertyGridProperty [MFC], SetDescription", "CMFCPropertyGridProperty [MFC], SetName", "CMFCPropertyGridProperty [MFC], SetOriginalValue", "CMFCPropertyGridProperty [MFC], SetValue", "CMFCPropertyGridProperty [MFC], Show", "CMFCPropertyGridProperty [MFC], CreateCombo", "CMFCPropertyGridProperty [MFC], HasButton", "CMFCPropertyGridProperty [MFC], Init", "CMFCPropertyGridProperty [MFC], IsSubItem", "CMFCPropertyGridProperty [MFC], IsValueChanged", "CMFCPropertyGridProperty [MFC], OnCtlColor", "CMFCPropertyGridProperty [MFC], OnDestroyWindow", "CMFCPropertyGridProperty [MFC], OnKillFocus", "CMFCPropertyGridProperty [MFC], m_strFormatDouble", "CMFCPropertyGridProperty [MFC], m_strFormatFloat", "CMFCPropertyGridProperty [MFC], m_strFormatLong", "CMFCPropertyGridProperty [MFC], m_strFormatShort"]
 ---
@@ -1169,7 +1169,7 @@ virtual void OnKillSelection(CMFCPropertyGridProperty*);
 
 ### Parameters
 
-[in] *`CMFCPropertyGridProperty*`*\
+[in] *`CMFCPropertyGridProperty*`*
 
 ### Remarks
 
@@ -1183,7 +1183,7 @@ virtual void OnPosSizeChanged(CRect);
 
 ### Parameters
 
-[in] *`CRect`*\
+[in] *`CRect`*
 
 ### Remarks
 
@@ -1259,12 +1259,12 @@ This method supports the following variant types: `VT_INT`, `VT_I2`, `VT_I4`, `V
 ## <a name="onsetselection"></a> `CMFCPropertyGridProperty::OnSetSelection`
 
 ```cpp
-virtual void OnSetSelection CMFCPropertyGridProperty*);
+virtual void OnSetSelection(CMFCPropertyGridProperty*);
 ```
 
 ### Parameters
 
-[in] *`CMFCPropertyGridProperty*`*\
+[in] *`CMFCPropertyGridProperty*`*
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cmfcribbonbar-class.md b/docs/mfc/reference/cmfcribbonbar-class.md
index a0eb85dd1a..b3ec1757ee 100644
--- a/docs/mfc/reference/cmfcribbonbar-class.md
+++ b/docs/mfc/reference/cmfcribbonbar-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCRibbonBar Class"
 title: "CMFCRibbonBar Class"
+description: "Learn more about: CMFCRibbonBar Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CMFCRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar::ActivateContextCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddContextCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddMainCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddPrintPreviewCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddQATOnlyCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddToTabs", "AFXRIBBONBAR/CMFCRibbonBar::CreateEx", "AFXRIBBONBAR/CMFCRibbonBar::Create", "AFXRIBBONBAR/CMFCRibbonBar::DeactivateKeyboardFocus", "AFXRIBBONBAR/CMFCRibbonBar::DrawMenuImage", "AFXRIBBONBAR/CMFCRibbonBar::DWMCompositionChanged", "AFXRIBBONBAR/CMFCRibbonBar::EnableKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::EnablePrintPreview", "AFXRIBBONBAR/CMFCRibbonBar::EnableToolTips", "AFXRIBBONBAR/CMFCRibbonBar::FindByData", "AFXRIBBONBAR/CMFCRibbonBar::FindByID", "AFXRIBBONBAR/CMFCRibbonBar::FindCategoryIndexByData", "AFXRIBBONBAR/CMFCRibbonBar::ForceRecalcLayout", "AFXRIBBONBAR/CMFCRibbonBar::GetActiveCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetCaptionHeight", "AFXRIBBONBAR/CMFCRibbonBar::GetCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryCount", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryHeight", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryIndex", "AFXRIBBONBAR/CMFCRibbonBar::GetContextName", "AFXRIBBONBAR/CMFCRibbonBar::GetDroppedDown", "AFXRIBBONBAR/CMFCRibbonBar::GetElementsByID", "AFXRIBBONBAR/CMFCRibbonBar::GetApplicationButton", "AFXRIBBONBAR/CMFCRibbonBar::GetFocused", "AFXRIBBONBAR/CMFCRibbonBar::GetHideFlags", "AFXRIBBONBAR/CMFCRibbonBar::GetItemIDsList", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavigationLevel", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavLevelCurrent", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavLevelParent", "AFXRIBBONBAR/CMFCRibbonBar::GetMainCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetQATCommandsLocation", "AFXRIBBONBAR/CMFCRibbonBar::GetQATDroppedDown", "AFXRIBBONBAR/CMFCRibbonBar::GetQuickAccessCommands", "AFXRIBBONBAR/CMFCRibbonBar::GetQuickAccessToolbarLocation", "AFXRIBBONBAR/CMFCRibbonBar::GetTabTrancateRatio", "AFXRIBBONBAR/CMFCRibbonBar::GetTooltipFixedWidthLargeImage", "AFXRIBBONBAR/CMFCRibbonBar::GetTooltipFixedWidthRegular", "AFXRIBBONBAR/CMFCRibbonBar::GetVisibleCategoryCount", "AFXRIBBONBAR/CMFCRibbonBar::HideAllContextCategories", "AFXRIBBONBAR/CMFCRibbonBar::HideKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::HitTest", "AFXRIBBONBAR/CMFCRibbonBar::IsKeyTipEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsMainRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar::IsPrintPreviewEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsQATEmpty", "AFXRIBBONBAR/CMFCRibbonBar::IsQuickAccessToolbarOnTop", "AFXRIBBONBAR/CMFCRibbonBar::IsReplaceFrameCaption", "AFXRIBBONBAR/CMFCRibbonBar::IsShowGroupBorder", "AFXRIBBONBAR/CMFCRibbonBar::IsToolTipDescrEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsToolTipEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsTransparentCaption", "AFXRIBBONBAR/CMFCRibbonBar::IsWindows7Look", "AFXRIBBONBAR/CMFCRibbonBar::LoadFromResource", "AFXRIBBONBAR/CMFCRibbonBar::OnClickButton", "AFXRIBBONBAR/CMFCRibbonBar::OnEditContextMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnRTLChanged", "AFXRIBBONBAR/CMFCRibbonBar::OnSetAccData", "AFXRIBBONBAR/CMFCRibbonBar::OnShowRibbonContextMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnShowRibbonQATMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnSysKeyDown", "AFXRIBBONBAR/CMFCRibbonBar::OnSysKeyUp", "AFXRIBBONBAR/CMFCRibbonBar::PopTooltip", "AFXRIBBONBAR/CMFCRibbonBar::PreTranslateMessage", "AFXRIBBONBAR/CMFCRibbonBar::RecalcLayout", "AFXRIBBONBAR/CMFCRibbonBar::RemoveAllCategories", "AFXRIBBONBAR/CMFCRibbonBar::RemoveAllFromTabs", "AFXRIBBONBAR/CMFCRibbonBar::RemoveCategory", "AFXRIBBONBAR/CMFCRibbonBar::SaveToXMLBuffer", "AFXRIBBONBAR/CMFCRibbonBar::SaveToXMLFile", "AFXRIBBONBAR/CMFCRibbonBar::SetActiveCategory", "AFXRIBBONBAR/CMFCRibbonBar::SetActiveMDIChild", "AFXRIBBONBAR/CMFCRibbonBar::SetElementKeys", "AFXRIBBONBAR/CMFCRibbonBar::SetApplicationButton", "AFXRIBBONBAR/CMFCRibbonBar::SetKeyboardNavigationLevel", "AFXRIBBONBAR/CMFCRibbonBar::SetMaximizeMode", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessCommands", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessDefaultState", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessToolbarOnTop", "AFXRIBBONBAR/CMFCRibbonBar::SetTooltipFixedWidth", "AFXRIBBONBAR/CMFCRibbonBar::SetWindows7Look", "AFXRIBBONBAR/CMFCRibbonBar::ShowCategory", "AFXRIBBONBAR/CMFCRibbonBar::ShowContextCategories", "AFXRIBBONBAR/CMFCRibbonBar::ShowKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::ToggleMimimizeState", "AFXRIBBONBAR/CMFCRibbonBar::TranslateChar"]
 helpviewer_keywords: ["CMFCRibbonBar [MFC], ActivateContextCategory", "CMFCRibbonBar [MFC], AddCategory", "CMFCRibbonBar [MFC], AddContextCategory", "CMFCRibbonBar [MFC], AddMainCategory", "CMFCRibbonBar [MFC], AddPrintPreviewCategory", "CMFCRibbonBar [MFC], AddQATOnlyCategory", "CMFCRibbonBar [MFC], AddToTabs", "CMFCRibbonBar [MFC], CreateEx", "CMFCRibbonBar [MFC], Create", "CMFCRibbonBar [MFC], DeactivateKeyboardFocus", "CMFCRibbonBar [MFC], DrawMenuImage", "CMFCRibbonBar [MFC], DWMCompositionChanged", "CMFCRibbonBar [MFC], EnableKeyTips", "CMFCRibbonBar [MFC], EnablePrintPreview", "CMFCRibbonBar [MFC], EnableToolTips", "CMFCRibbonBar [MFC], FindByData", "CMFCRibbonBar [MFC], FindByID", "CMFCRibbonBar [MFC], FindCategoryIndexByData", "CMFCRibbonBar [MFC], ForceRecalcLayout", "CMFCRibbonBar [MFC], GetActiveCategory", "CMFCRibbonBar [MFC], GetCaptionHeight", "CMFCRibbonBar [MFC], GetCategory", "CMFCRibbonBar [MFC], GetCategoryCount", "CMFCRibbonBar [MFC], GetCategoryHeight", "CMFCRibbonBar [MFC], GetCategoryIndex", "CMFCRibbonBar [MFC], GetContextName", "CMFCRibbonBar [MFC], GetDroppedDown", "CMFCRibbonBar [MFC], GetElementsByID", "CMFCRibbonBar [MFC], GetApplicationButton", "CMFCRibbonBar [MFC], GetFocused", "CMFCRibbonBar [MFC], GetHideFlags", "CMFCRibbonBar [MFC], GetItemIDsList", "CMFCRibbonBar [MFC], GetKeyboardNavigationLevel", "CMFCRibbonBar [MFC], GetKeyboardNavLevelCurrent", "CMFCRibbonBar [MFC], GetKeyboardNavLevelParent", "CMFCRibbonBar [MFC], GetMainCategory", "CMFCRibbonBar [MFC], GetQATCommandsLocation", "CMFCRibbonBar [MFC], GetQATDroppedDown", "CMFCRibbonBar [MFC], GetQuickAccessCommands", "CMFCRibbonBar [MFC], GetQuickAccessToolbarLocation", "CMFCRibbonBar [MFC], GetTabTrancateRatio", "CMFCRibbonBar [MFC], GetTooltipFixedWidthLargeImage", "CMFCRibbonBar [MFC], GetTooltipFixedWidthRegular", "CMFCRibbonBar [MFC], GetVisibleCategoryCount", "CMFCRibbonBar [MFC], HideAllContextCategories", "CMFCRibbonBar [MFC], HideKeyTips", "CMFCRibbonBar [MFC], HitTest", "CMFCRibbonBar [MFC], IsKeyTipEnabled", "CMFCRibbonBar [MFC], IsMainRibbonBar", "CMFCRibbonBar [MFC], IsPrintPreviewEnabled", "CMFCRibbonBar [MFC], IsQATEmpty", "CMFCRibbonBar [MFC], IsQuickAccessToolbarOnTop", "CMFCRibbonBar [MFC], IsReplaceFrameCaption", "CMFCRibbonBar [MFC], IsShowGroupBorder", "CMFCRibbonBar [MFC], IsToolTipDescrEnabled", "CMFCRibbonBar [MFC], IsToolTipEnabled", "CMFCRibbonBar [MFC], IsTransparentCaption", "CMFCRibbonBar [MFC], IsWindows7Look", "CMFCRibbonBar [MFC], LoadFromResource", "CMFCRibbonBar [MFC], OnClickButton", "CMFCRibbonBar [MFC], OnEditContextMenu", "CMFCRibbonBar [MFC], OnRTLChanged", "CMFCRibbonBar [MFC], OnSetAccData", "CMFCRibbonBar [MFC], OnShowRibbonContextMenu", "CMFCRibbonBar [MFC], OnShowRibbonQATMenu", "CMFCRibbonBar [MFC], OnSysKeyDown", "CMFCRibbonBar [MFC], OnSysKeyUp", "CMFCRibbonBar [MFC], PopTooltip", "CMFCRibbonBar [MFC], PreTranslateMessage", "CMFCRibbonBar [MFC], RecalcLayout", "CMFCRibbonBar [MFC], RemoveAllCategories", "CMFCRibbonBar [MFC], RemoveAllFromTabs", "CMFCRibbonBar [MFC], RemoveCategory", "CMFCRibbonBar [MFC], SaveToXMLBuffer", "CMFCRibbonBar [MFC], SaveToXMLFile", "CMFCRibbonBar [MFC], SetActiveCategory", "CMFCRibbonBar [MFC], SetActiveMDIChild", "CMFCRibbonBar [MFC], SetElementKeys", "CMFCRibbonBar [MFC], SetApplicationButton", "CMFCRibbonBar [MFC], SetKeyboardNavigationLevel", "CMFCRibbonBar [MFC], SetMaximizeMode", "CMFCRibbonBar [MFC], SetQuickAccessCommands", "CMFCRibbonBar [MFC], SetQuickAccessDefaultState", "CMFCRibbonBar [MFC], SetQuickAccessToolbarOnTop", "CMFCRibbonBar [MFC], SetTooltipFixedWidth", "CMFCRibbonBar [MFC], SetWindows7Look", "CMFCRibbonBar [MFC], ShowCategory", "CMFCRibbonBar [MFC], ShowContextCategories", "CMFCRibbonBar [MFC], ShowKeyTips", "CMFCRibbonBar [MFC], ToggleMimimizeState", "CMFCRibbonBar [MFC], TranslateChar"]
-ms.assetid: a65d06fa-1a28-4cc0-8971-bc9d7c9198fe
 ---
 # `CMFCRibbonBar` Class
 
@@ -119,7 +118,7 @@ class CMFCRibbonBar : public CPane
 |[`CMFCRibbonBar::ShowCategory`](#showcategory)|Shows or hides the specified ribbon category.|
 |[`CMFCRibbonBar::ShowContextCategories`](#showcontextcategories)|Shows or hides the context categories that have the specified ID.|
 |[`CMFCRibbonBar::ShowKeyTips`](#showkeytips)||
-|[`CMFCRibbonBar::ToggleMimimizeState`](#togglemimimizestate)|Toggles the ribbon bar between the minimized and maximized states..|
+|[`CMFCRibbonBar::ToggleMimimizeState`](#togglemimimizestate)|Toggles the ribbon bar between the minimized and maximized states.|
 |[`CMFCRibbonBar::TranslateChar`](#translatechar)||
 
 ## Remarks
@@ -1305,7 +1304,7 @@ virtual void OnEditContextMenu(
 ### Parameters
 
 [in] *`pEdit`*\
-[in] *`point`*\
+[in] *`point`*
 
 ### Remarks
 
@@ -1360,7 +1359,7 @@ virtual BOOL OnShowRibbonContextMenu(
 [in] *`pWnd`*\
 [in] *`x`*\
 [in] *`y`*\
-[in] *`pHit`*\
+[in] *`pHit`*
 
 ### Return Value
 
@@ -1381,7 +1380,7 @@ virtual BOOL OnShowRibbonQATMenu(
 [in] *`pWnd`*\
 [in] *`x`*\
 [in] *`y`*\
-[in] *`pHit`*\
+[in] *`pHit`*
 
 ### Return Value
 
diff --git a/docs/mfc/reference/cmfcribbonbaseelement-class.md b/docs/mfc/reference/cmfcribbonbaseelement-class.md
index 27c7ee698a..7f320909b9 100644
--- a/docs/mfc/reference/cmfcribbonbaseelement-class.md
+++ b/docs/mfc/reference/cmfcribbonbaseelement-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCRibbonBaseElement Class"
 title: "CMFCRibbonBaseElement Class"
+description: "Learn more about: CMFCRibbonBaseElement Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CMFCRibbonBaseElement", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::AddToKeyList", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::AddToListBox", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeAddedToQuickAccessToolBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeCompacted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeStretched", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeStretchedHorizontally", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CleanUpSizes", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::ClosePopupMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CopyFrom", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::DestroyCtrl", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::DrawImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::Find", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetCompactSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetDescription", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetDroppedDown", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetElements", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetElementsByID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetHighlighted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetImageSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetIntermediateSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeyTipRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeyTipSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetLocationInGroup", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetMenuKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetNotifyID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentCategory", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentPanel", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentWnd", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetPressed", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetQuickAccessToolBarID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetRegularSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetToolTipText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetTopLevelRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasFocus", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasIntermediateMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasLargeMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HitTest", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAlignByColumn", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAlwaysLargeImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAutoRepeatMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsChecked", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDefaultMenuLook", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDisabled", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDroppedDown", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsFocused", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsGalleryIcon", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsHighlighted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsIntermediateMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsLargeMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsMenuMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsPressed", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsQATMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsShowGroupBorder", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsShowTooltipOnBottom", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsTabStop", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsTextAlwaysOnRight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsVisible", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsWholeRowHeight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::NotifyCommand", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::NotifyHighlightListItem", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAddToQAToolbar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAfterChangeRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAutoRepeat", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnCalcTextSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnChangeMenuHighlight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDraw", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawKeyTip", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawMenuImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawOnList", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnMenuKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnRTLChanged", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnShow", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnShowPopupMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::PostMenuCommand", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::Redraw", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetACCData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetDefaultMenuLook", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetDescription", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetInitialMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentCategory", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetTextAlwaysOnRight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetToolTipText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetVisible", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::StretchHorizontally", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::StretchToWholeRow", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::UpdateTooltipInfo", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnProcessKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnSetFocus"]
 helpviewer_keywords: ["CMFCRibbonBaseElement [MFC], AddToKeyList", "CMFCRibbonBaseElement [MFC], AddToListBox", "CMFCRibbonBaseElement [MFC], CanBeAddedToQuickAccessToolBar", "CMFCRibbonBaseElement [MFC], CanBeCompacted", "CMFCRibbonBaseElement [MFC], CanBeStretched", "CMFCRibbonBaseElement [MFC], CanBeStretchedHorizontally", "CMFCRibbonBaseElement [MFC], CleanUpSizes", "CMFCRibbonBaseElement [MFC], ClosePopupMenu", "CMFCRibbonBaseElement [MFC], CopyFrom", "CMFCRibbonBaseElement [MFC], DestroyCtrl", "CMFCRibbonBaseElement [MFC], DrawImage", "CMFCRibbonBaseElement [MFC], Find", "CMFCRibbonBaseElement [MFC], FindByData", "CMFCRibbonBaseElement [MFC], FindByID", "CMFCRibbonBaseElement [MFC], FindByOriginal", "CMFCRibbonBaseElement [MFC], GetCompactSize", "CMFCRibbonBaseElement [MFC], GetData", "CMFCRibbonBaseElement [MFC], GetDescription", "CMFCRibbonBaseElement [MFC], GetDroppedDown", "CMFCRibbonBaseElement [MFC], GetElements", "CMFCRibbonBaseElement [MFC], GetElementsByID", "CMFCRibbonBaseElement [MFC], GetHighlighted", "CMFCRibbonBaseElement [MFC], GetID", "CMFCRibbonBaseElement [MFC], GetImageSize", "CMFCRibbonBaseElement [MFC], GetIntermediateSize", "CMFCRibbonBaseElement [MFC], GetKeys", "CMFCRibbonBaseElement [MFC], GetKeyTipRect", "CMFCRibbonBaseElement [MFC], GetKeyTipSize", "CMFCRibbonBaseElement [MFC], GetLocationInGroup", "CMFCRibbonBaseElement [MFC], GetMenuKeys", "CMFCRibbonBaseElement [MFC], GetNotifyID", "CMFCRibbonBaseElement [MFC], GetOriginal", "CMFCRibbonBaseElement [MFC], GetParentCategory", "CMFCRibbonBaseElement [MFC], GetParentPanel", "CMFCRibbonBaseElement [MFC], GetParentRibbonBar", "CMFCRibbonBaseElement [MFC], GetParentWnd", "CMFCRibbonBaseElement [MFC], GetPressed", "CMFCRibbonBaseElement [MFC], GetQuickAccessToolBarID", "CMFCRibbonBaseElement [MFC], GetRect", "CMFCRibbonBaseElement [MFC], GetRegularSize", "CMFCRibbonBaseElement [MFC], GetSize", "CMFCRibbonBaseElement [MFC], GetText", "CMFCRibbonBaseElement [MFC], GetToolTipText", "CMFCRibbonBaseElement [MFC], GetTopLevelRibbonBar", "CMFCRibbonBaseElement [MFC], HasCompactMode", "CMFCRibbonBaseElement [MFC], HasFocus", "CMFCRibbonBaseElement [MFC], HasIntermediateMode", "CMFCRibbonBaseElement [MFC], HasLargeMode", "CMFCRibbonBaseElement [MFC], HasMenu", "CMFCRibbonBaseElement [MFC], HitTest", "CMFCRibbonBaseElement [MFC], IsAlignByColumn", "CMFCRibbonBaseElement [MFC], IsAlwaysLargeImage", "CMFCRibbonBaseElement [MFC], IsAutoRepeatMode", "CMFCRibbonBaseElement [MFC], IsChecked", "CMFCRibbonBaseElement [MFC], IsCompactMode", "CMFCRibbonBaseElement [MFC], IsDefaultMenuLook", "CMFCRibbonBaseElement [MFC], IsDisabled", "CMFCRibbonBaseElement [MFC], IsDroppedDown", "CMFCRibbonBaseElement [MFC], IsFocused", "CMFCRibbonBaseElement [MFC], IsGalleryIcon", "CMFCRibbonBaseElement [MFC], IsHighlighted", "CMFCRibbonBaseElement [MFC], IsIntermediateMode", "CMFCRibbonBaseElement [MFC], IsLargeMode", "CMFCRibbonBaseElement [MFC], IsMenuMode", "CMFCRibbonBaseElement [MFC], IsPressed", "CMFCRibbonBaseElement [MFC], IsQATMode", "CMFCRibbonBaseElement [MFC], IsSeparator", "CMFCRibbonBaseElement [MFC], IsShowGroupBorder", "CMFCRibbonBaseElement [MFC], IsShowTooltipOnBottom", "CMFCRibbonBaseElement [MFC], IsTabStop", "CMFCRibbonBaseElement [MFC], IsTextAlwaysOnRight", "CMFCRibbonBaseElement [MFC], IsVisible", "CMFCRibbonBaseElement [MFC], IsWholeRowHeight", "CMFCRibbonBaseElement [MFC], NotifyCommand", "CMFCRibbonBaseElement [MFC], NotifyHighlightListItem", "CMFCRibbonBaseElement [MFC], OnAddToQAToolbar", "CMFCRibbonBaseElement [MFC], OnAfterChangeRect", "CMFCRibbonBaseElement [MFC], OnAutoRepeat", "CMFCRibbonBaseElement [MFC], OnCalcTextSize", "CMFCRibbonBaseElement [MFC], OnChangeMenuHighlight", "CMFCRibbonBaseElement [MFC], OnDraw", "CMFCRibbonBaseElement [MFC], OnDrawKeyTip", "CMFCRibbonBaseElement [MFC], OnDrawMenuImage", "CMFCRibbonBaseElement [MFC], OnDrawOnList", "CMFCRibbonBaseElement [MFC], OnKey", "CMFCRibbonBaseElement [MFC], OnMenuKey", "CMFCRibbonBaseElement [MFC], OnRTLChanged", "CMFCRibbonBaseElement [MFC], OnShow", "CMFCRibbonBaseElement [MFC], OnShowPopupMenu", "CMFCRibbonBaseElement [MFC], PostMenuCommand", "CMFCRibbonBaseElement [MFC], Redraw", "CMFCRibbonBaseElement [MFC], SetACCData", "CMFCRibbonBaseElement [MFC], SetCompactMode", "CMFCRibbonBaseElement [MFC], SetData", "CMFCRibbonBaseElement [MFC], SetDefaultMenuLook", "CMFCRibbonBaseElement [MFC], SetDescription", "CMFCRibbonBaseElement [MFC], SetID", "CMFCRibbonBaseElement [MFC], SetInitialMode", "CMFCRibbonBaseElement [MFC], SetKeys", "CMFCRibbonBaseElement [MFC], SetOriginal", "CMFCRibbonBaseElement [MFC], SetParentCategory", "CMFCRibbonBaseElement [MFC], SetParentMenu", "CMFCRibbonBaseElement [MFC], SetParentRibbonBar", "CMFCRibbonBaseElement [MFC], SetRect", "CMFCRibbonBaseElement [MFC], SetText", "CMFCRibbonBaseElement [MFC], SetTextAlwaysOnRight", "CMFCRibbonBaseElement [MFC], SetToolTipText", "CMFCRibbonBaseElement [MFC], SetVisible", "CMFCRibbonBaseElement [MFC], StretchHorizontally", "CMFCRibbonBaseElement [MFC], StretchToWholeRow", "CMFCRibbonBaseElement [MFC], UpdateTooltipInfo", "CMFCRibbonBaseElement [MFC], OnProcessKey", "CMFCRibbonBaseElement [MFC], OnSetFocus"]
-ms.assetid: 419ea91b-5062-44cc-b0a3-f87d29566f62
 ---
 # CMFCRibbonBaseElement Class
 
@@ -131,7 +130,7 @@ class CMFCRibbonBaseElement : public CObject
 |[CMFCRibbonBaseElement::SetParentCategory](#setparentcategory)|Sets the parent category for the ribbon element.|
 |[CMFCRibbonBaseElement::SetParentMenu](#setparentmenu)|Sets the parent menu container for the ribbon element.|
 |[CMFCRibbonBaseElement::SetParentRibbonBar](#setparentribbonbar)|Sets the parent ribbon bar for the ribbon element.|
-|[CMFCRibbonBaseElement::SetRect](#setrect)|Sets the dimensions fot he display rectangle for the ribbon element.|
+|[CMFCRibbonBaseElement::SetRect](#setrect)|Sets the dimensions of the display rectangle for the ribbon element.|
 |[CMFCRibbonBaseElement::SetText](#settext)|Sets the text for the ribbon element.|
 |[CMFCRibbonBaseElement::SetTextAlwaysOnRight](#settextalwaysonright)|Sets the text for the ribbon element to display on the right.|
 |[CMFCRibbonBaseElement::SetToolTipText](#settooltiptext)|Sets the tooltip text for the ribbon element.|
@@ -2042,5 +2041,5 @@ TRUE if the ribbon element is focused; otherwise FALSE.
 
 ## See also
 
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
 [Classes](../../mfc/reference/mfc-classes.md)
diff --git a/docs/mfc/reference/cmfcribboncategory-class.md b/docs/mfc/reference/cmfcribboncategory-class.md
index 74d7ee56cb..c63b58d2c5 100644
--- a/docs/mfc/reference/cmfcribboncategory-class.md
+++ b/docs/mfc/reference/cmfcribboncategory-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCRibbonCategory Class"
 title: "CMFCRibbonCategory Class"
-ms.date: "11/19/2018"
+description: "Learn more about: CMFCRibbonCategory Class"
+ms.date: 11/19/2018
 f1_keywords: ["CMFCRibbonCategory", "AFXRIBBONCATEGORY/CMFCRibbonCategory", "AFXRIBBONCATEGORY/CMFCRibbonCategory::CMFCRibbonCategory", "AFXRIBBONCATEGORY/CMFCRibbonCategory::AddHidden", "AFXRIBBONCATEGORY/CMFCRibbonCategory::AddPanel", "AFXRIBBONCATEGORY/CMFCRibbonCategory::CopyFrom", "AFXRIBBONCATEGORY/CMFCRibbonCategory::FindByData", "AFXRIBBONCATEGORY/CMFCRibbonCategory::FindByID", "AFXRIBBONCATEGORY/CMFCRibbonCategory::FindPanelWithElem", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetContextID", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetData", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetDroppedDown", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetElements", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetElementsByID", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetFirstVisibleElement", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetFocused", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetHighlighted", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetImageCount", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetImageSize", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetItemIDsList", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetLastVisibleElement", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetLargeImages", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetMaxHeight", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetName", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetPanel", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetPanelCount", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetPanelFromPoint", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetPanelIndex", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetParentButton", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetParentMenuBar", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetParentRibbonBar", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetRect", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetSmallImages", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetTabColor", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetTabRect", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetTextTopLine", "AFXRIBBONCATEGORY/CMFCRibbonCategory::GetVisibleElements", "AFXRIBBONCATEGORY/CMFCRibbonCategory::HighlightPanel", "AFXRIBBONCATEGORY/CMFCRibbonCategory::HitTest", "AFXRIBBONCATEGORY/CMFCRibbonCategory::HitTestEx", "AFXRIBBONCATEGORY/CMFCRibbonCategory::HitTestScrollButtons", "AFXRIBBONCATEGORY/CMFCRibbonCategory::IsActive", "AFXRIBBONCATEGORY/CMFCRibbonCategory::IsVisible", "AFXRIBBONCATEGORY/CMFCRibbonCategory::IsWindows7Look", "AFXRIBBONCATEGORY/CMFCRibbonCategory::NotifyControlCommand", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnCancelMode", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnDraw", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnDrawImage", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnDrawMenuBorder", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnKey", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnLButtonDown", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnLButtonUp", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnMouseMove", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnRTLChanged", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnScrollHorz", "AFXRIBBONCATEGORY/CMFCRibbonCategory::OnUpdateCmdUI", "AFXRIBBONCATEGORY/CMFCRibbonCategory::RecalcLayout", "AFXRIBBONCATEGORY/CMFCRibbonCategory::RemovePanel", "AFXRIBBONCATEGORY/CMFCRibbonCategory::ReposPanels", "AFXRIBBONCATEGORY/CMFCRibbonCategory::SetCollapseOrder", "AFXRIBBONCATEGORY/CMFCRibbonCategory::SetData", "AFXRIBBONCATEGORY/CMFCRibbonCategory::SetKeys", "AFXRIBBONCATEGORY/CMFCRibbonCategory::SetName", "AFXRIBBONCATEGORY/CMFCRibbonCategory::SetTabColor"]
 helpviewer_keywords: ["CMFCRibbonCategory [MFC], CMFCRibbonCategory", "CMFCRibbonCategory [MFC], AddHidden", "CMFCRibbonCategory [MFC], AddPanel", "CMFCRibbonCategory [MFC], CopyFrom", "CMFCRibbonCategory [MFC], FindByData", "CMFCRibbonCategory [MFC], FindByID", "CMFCRibbonCategory [MFC], FindPanelWithElem", "CMFCRibbonCategory [MFC], GetContextID", "CMFCRibbonCategory [MFC], GetData", "CMFCRibbonCategory [MFC], GetDroppedDown", "CMFCRibbonCategory [MFC], GetElements", "CMFCRibbonCategory [MFC], GetElementsByID", "CMFCRibbonCategory [MFC], GetFirstVisibleElement", "CMFCRibbonCategory [MFC], GetFocused", "CMFCRibbonCategory [MFC], GetHighlighted", "CMFCRibbonCategory [MFC], GetImageCount", "CMFCRibbonCategory [MFC], GetImageSize", "CMFCRibbonCategory [MFC], GetItemIDsList", "CMFCRibbonCategory [MFC], GetLastVisibleElement", "CMFCRibbonCategory [MFC], GetLargeImages", "CMFCRibbonCategory [MFC], GetMaxHeight", "CMFCRibbonCategory [MFC], GetName", "CMFCRibbonCategory [MFC], GetPanel", "CMFCRibbonCategory [MFC], GetPanelCount", "CMFCRibbonCategory [MFC], GetPanelFromPoint", "CMFCRibbonCategory [MFC], GetPanelIndex", "CMFCRibbonCategory [MFC], GetParentButton", "CMFCRibbonCategory [MFC], GetParentMenuBar", "CMFCRibbonCategory [MFC], GetParentRibbonBar", "CMFCRibbonCategory [MFC], GetRect", "CMFCRibbonCategory [MFC], GetSmallImages", "CMFCRibbonCategory [MFC], GetTabColor", "CMFCRibbonCategory [MFC], GetTabRect", "CMFCRibbonCategory [MFC], GetTextTopLine", "CMFCRibbonCategory [MFC], GetVisibleElements", "CMFCRibbonCategory [MFC], HighlightPanel", "CMFCRibbonCategory [MFC], HitTest", "CMFCRibbonCategory [MFC], HitTestEx", "CMFCRibbonCategory [MFC], HitTestScrollButtons", "CMFCRibbonCategory [MFC], IsActive", "CMFCRibbonCategory [MFC], IsVisible", "CMFCRibbonCategory [MFC], IsWindows7Look", "CMFCRibbonCategory [MFC], NotifyControlCommand", "CMFCRibbonCategory [MFC], OnCancelMode", "CMFCRibbonCategory [MFC], OnDraw", "CMFCRibbonCategory [MFC], OnDrawImage", "CMFCRibbonCategory [MFC], OnDrawMenuBorder", "CMFCRibbonCategory [MFC], OnKey", "CMFCRibbonCategory [MFC], OnLButtonDown", "CMFCRibbonCategory [MFC], OnLButtonUp", "CMFCRibbonCategory [MFC], OnMouseMove", "CMFCRibbonCategory [MFC], OnRTLChanged", "CMFCRibbonCategory [MFC], OnScrollHorz", "CMFCRibbonCategory [MFC], OnUpdateCmdUI", "CMFCRibbonCategory [MFC], RecalcLayout", "CMFCRibbonCategory [MFC], RemovePanel", "CMFCRibbonCategory [MFC], ReposPanels", "CMFCRibbonCategory [MFC], SetCollapseOrder", "CMFCRibbonCategory [MFC], SetData", "CMFCRibbonCategory [MFC], SetKeys", "CMFCRibbonCategory [MFC], SetName", "CMFCRibbonCategory [MFC], SetTabColor"]
-ms.assetid: 99ba25b6-d060-4fdd-bfab-3c46c22981bb
 ---
 # CMFCRibbonCategory Class
 
@@ -99,7 +98,7 @@ The `CMFCRibbonTab` class draws ribbon categories. It is derived from [CMFCRibbo
 This following example demonstrates how to create a ribbon category and add a panel to it.
 
 ```cpp
-// Create a new ribbon category and get a pointer to it`
+// Create a new ribbon category and get a pointer to it
 CMFCRibbonCategory* pCategory = m_wndRibbonBar.AddCategory
     (_T("&Write"),           // Category name
     IDB_WRITE,               // Category small images (16 x 16)
diff --git a/docs/mfc/reference/cmfcribboncheckbox-class.md b/docs/mfc/reference/cmfcribboncheckbox-class.md
index 57ce564c55..dd35d63440 100644
--- a/docs/mfc/reference/cmfcribboncheckbox-class.md
+++ b/docs/mfc/reference/cmfcribboncheckbox-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCRibbonCheckBox Class"
 title: "CMFCRibbonCheckBox Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMFCRibbonCheckBox Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMFCRibbonCheckBox", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::CMFCRibbonCheckBox", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::GetCompactSize", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::GetIntermediateSize", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::GetRegularSize", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::IsDrawTooltipImage", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::OnDraw", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::OnDrawMenuImage", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::OnDrawOnList", "AFXRIBBONCHECKBOX/CMFCRibbonCheckBox::SetACCData"]
 helpviewer_keywords: ["CMFCRibbonCheckBox [MFC], CMFCRibbonCheckBox", "CMFCRibbonCheckBox [MFC], GetCompactSize", "CMFCRibbonCheckBox [MFC], GetIntermediateSize", "CMFCRibbonCheckBox [MFC], GetRegularSize", "CMFCRibbonCheckBox [MFC], IsDrawTooltipImage", "CMFCRibbonCheckBox [MFC], OnDraw", "CMFCRibbonCheckBox [MFC], OnDrawMenuImage", "CMFCRibbonCheckBox [MFC], OnDrawOnList", "CMFCRibbonCheckBox [MFC], SetACCData"]
-ms.assetid: 3a6c3891-c8d1-4af0-b954-7b9ab048782a
 ---
 # CMFCRibbonCheckBox Class
 
@@ -131,7 +130,7 @@ A `CSize` object containing the intermediate size of the check box.
 
 ### Remarks
 
-If not overridden, calculates the intermediate size as the default check box size ( `AFX_CHECK_BOX_DEFAULT_SIZE`) plus the text size, plus margins.
+If not overridden, calculates the intermediate size as the default check box size (`AFX_CHECK_BOX_DEFAULT_SIZE`) plus the text size, plus margins.
 
 ## <a name="getregularsize"></a> CMFCRibbonCheckBox::GetRegularSize
 
diff --git a/docs/mfc/reference/cmfcribbonfontcombobox-class.md b/docs/mfc/reference/cmfcribbonfontcombobox-class.md
index 3582dbb7f9..e37df6dfc0 100644
--- a/docs/mfc/reference/cmfcribbonfontcombobox-class.md
+++ b/docs/mfc/reference/cmfcribbonfontcombobox-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCRibbonFontComboBox Class"
 title: "CMFCRibbonFontComboBox Class"
+description: "Learn more about: CMFCRibbonFontComboBox Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::BuildFonts", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetCharSet", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetFontDesc", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetFontType", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetPitchAndFamily", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::RebuildFonts", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::SetFont"]
 helpviewer_keywords: ["CMFCRibbonFontComboBox [MFC], CMFCRibbonFontComboBox", "CMFCRibbonFontComboBox [MFC], BuildFonts", "CMFCRibbonFontComboBox [MFC], GetCharSet", "CMFCRibbonFontComboBox [MFC], GetFontDesc", "CMFCRibbonFontComboBox [MFC], GetFontType", "CMFCRibbonFontComboBox [MFC], GetPitchAndFamily", "CMFCRibbonFontComboBox [MFC], RebuildFonts", "CMFCRibbonFontComboBox [MFC], SetFont"]
-ms.assetid: 33b4db50-df4f-45fa-8f05-2e6e73c31435
 ---
 # CMFCRibbonFontComboBox Class
 
@@ -110,7 +109,7 @@ CMFCRibbonFontComboBox(
 [in] Specifies which font types to display in the combo box. Valid options are DEVICE_FONTTYPE, RASTER_FONTTYPE, and TRUETYPE_FONTTYPE, or any bitwise combination thereof.
 
 *nCharSet*<br/>
-[in] Filters the fonts in the combo box to those that belong to the specified character set..
+[in] Filters the fonts in the combo box to those that belong to the specified character set.
 
 *nPitchAndFamily*<br/>
 [in] Specifies the pitch and the family of the fonts that are displayed in the combo box.
@@ -224,6 +223,6 @@ Pitch and the family (see LOGFONT in the Windows SDK documentation).
 
 ## See also
 
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
-[Classes](../../mfc/reference/mfc-classes.md)<br/>
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
+[Classes](../../mfc/reference/mfc-classes.md)\
 [CMFCRibbonComboBox Class](../../mfc/reference/cmfcribboncombobox-class.md)
diff --git a/docs/mfc/reference/cmfctaskspane-class.md b/docs/mfc/reference/cmfctaskspane-class.md
index 82935354ac..3f76674307 100644
--- a/docs/mfc/reference/cmfctaskspane-class.md
+++ b/docs/mfc/reference/cmfctaskspane-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCTasksPane Class"
 title: "CMFCTasksPane Class"
-ms.date: "07/02/2019"
+description: "Learn more about: CMFCTasksPane Class"
+ms.date: 07/02/2019
 f1_keywords: ["CMFCTasksPane", "AFXTASKSPANE/CMFCTasksPane", "AFXTASKSPANE/CMFCTasksPane::CMFCTasksPane", "AFXTASKSPANE/CMFCTasksPane::AddGroup", "AFXTASKSPANE/CMFCTasksPane::AddLabel", "AFXTASKSPANE/CMFCTasksPane::AddMRUFilesList", "AFXTASKSPANE/CMFCTasksPane::AddPage", "AFXTASKSPANE/CMFCTasksPane::AddSeparator", "AFXTASKSPANE/CMFCTasksPane::AddTask", "AFXTASKSPANE/CMFCTasksPane::AddWindow", "AFXTASKSPANE/CMFCTasksPane::CollapseAllGroups", "AFXTASKSPANE/CMFCTasksPane::CollapseGroup", "AFXTASKSPANE/CMFCTasksPane::CreateDefaultMiniframe", "AFXTASKSPANE/CMFCTasksPane::CreateMenu", "AFXTASKSPANE/CMFCTasksPane::EnableAnimation", "AFXTASKSPANE/CMFCTasksPane::EnableGroupCollapse", "AFXTASKSPANE/CMFCTasksPane::EnableHistoryMenuButtons", "AFXTASKSPANE/CMFCTasksPane::EnableNavigationToolbar", "AFXTASKSPANE/CMFCTasksPane::EnableOffsetCustomControls", "AFXTASKSPANE/CMFCTasksPane::EnableScrollButtons", "AFXTASKSPANE/CMFCTasksPane::EnableWrapLabels", "AFXTASKSPANE/CMFCTasksPane::EnableWrapTasks", "AFXTASKSPANE/CMFCTasksPane::GetActivePage", "AFXTASKSPANE/CMFCTasksPane::GetGroupCaptionHeight", "AFXTASKSPANE/CMFCTasksPane::GetGroupCaptionHorzOffset", "AFXTASKSPANE/CMFCTasksPane::GetGroupCaptionVertOffset", "AFXTASKSPANE/CMFCTasksPane::GetGroupCount", "AFXTASKSPANE/CMFCTasksPane::GetGroupLocation", "AFXTASKSPANE/CMFCTasksPane::GetGroupVertOffset", "AFXTASKSPANE/CMFCTasksPane::GetHorzMargin", "AFXTASKSPANE/CMFCTasksPane::GetNextPages", "AFXTASKSPANE/CMFCTasksPane::GetPageByGroup", "AFXTASKSPANE/CMFCTasksPane::GetPagesCount", "AFXTASKSPANE/CMFCTasksPane::GetPreviousPages", "AFXTASKSPANE/CMFCTasksPane::GetScrollBarCtrl", "AFXTASKSPANE/CMFCTasksPane::GetTask", "AFXTASKSPANE/CMFCTasksPane::GetTaskCount", "AFXTASKSPANE/CMFCTasksPane::GetTaskGroup", "AFXTASKSPANE/CMFCTasksPane::GetTaskLocation", "AFXTASKSPANE/CMFCTasksPane::GetTasksHorzOffset", "AFXTASKSPANE/CMFCTasksPane::GetTasksIconHorzOffset", "AFXTASKSPANE/CMFCTasksPane::GetTasksIconVertOffset", "AFXTASKSPANE/CMFCTasksPane::GetVertMargin", "AFXTASKSPANE/CMFCTasksPane::IsAccessibilityCompatible", "AFXTASKSPANE/CMFCTasksPane::IsAnimationEnabled", "AFXTASKSPANE/CMFCTasksPane::IsBackButtonEnabled", "AFXTASKSPANE/CMFCTasksPane::IsForwardButtonEnabled", "AFXTASKSPANE/CMFCTasksPane::IsGroupCollapseEnabled", "AFXTASKSPANE/CMFCTasksPane::IsHistoryMenuButtonsEnabled", "AFXTASKSPANE/CMFCTasksPane::IsNavigationToolbarEnabled", "AFXTASKSPANE/CMFCTasksPane::IsToolBox", "AFXTASKSPANE/CMFCTasksPane::IsWrapLabelsEnabled", "AFXTASKSPANE/CMFCTasksPane::IsWrapTasksEnabled", "AFXTASKSPANE/CMFCTasksPane::LoadState", "AFXTASKSPANE/CMFCTasksPane::OnCancel", "AFXTASKSPANE/CMFCTasksPane::OnClickTask", "AFXTASKSPANE/CMFCTasksPane::OnOK", "AFXTASKSPANE/CMFCTasksPane::OnPressBackButton", "AFXTASKSPANE/CMFCTasksPane::OnPressForwardButton", "AFXTASKSPANE/CMFCTasksPane::OnPressHomeButton", "AFXTASKSPANE/CMFCTasksPane::OnPressOtherButton", "AFXTASKSPANE/CMFCTasksPane::OnSetAccData", "AFXTASKSPANE/CMFCTasksPane::OnUpdateCmdUI", "AFXTASKSPANE/CMFCTasksPane::PreTranslateMessage", "AFXTASKSPANE/CMFCTasksPane::RecalcLayout", "AFXTASKSPANE/CMFCTasksPane::RemoveAllGroups", "AFXTASKSPANE/CMFCTasksPane::RemoveAllPages", "AFXTASKSPANE/CMFCTasksPane::RemoveAllTasks", "AFXTASKSPANE/CMFCTasksPane::RemoveGroup", "AFXTASKSPANE/CMFCTasksPane::RemovePage", "AFXTASKSPANE/CMFCTasksPane::RemoveTask", "AFXTASKSPANE/CMFCTasksPane::SaveState", "AFXTASKSPANE/CMFCTasksPane::Serialize", "AFXTASKSPANE/CMFCTasksPane::SetActivePage", "AFXTASKSPANE/CMFCTasksPane::SetCaption", "AFXTASKSPANE/CMFCTasksPane::SetGroupCaptionHeight", "AFXTASKSPANE/CMFCTasksPane::SetGroupCaptionHorzOffset", "AFXTASKSPANE/CMFCTasksPane::SetGroupCaptionVertOffset", "AFXTASKSPANE/CMFCTasksPane::SetGroupName", "AFXTASKSPANE/CMFCTasksPane::SetGroupTextColor", "AFXTASKSPANE/CMFCTasksPane::SetGroupVertOffset", "AFXTASKSPANE/CMFCTasksPane::SetHorzMargin", "AFXTASKSPANE/CMFCTasksPane::SetIconsList", "AFXTASKSPANE/CMFCTasksPane::SetPageCaption", "AFXTASKSPANE/CMFCTasksPane::SetTaskName", "AFXTASKSPANE/CMFCTasksPane::SetTasksIconHorzOffset", "AFXTASKSPANE/CMFCTasksPane::SetTasksIconVertOffset", "AFXTASKSPANE/CMFCTasksPane::SetTaskTextColor", "AFXTASKSPANE/CMFCTasksPane::SetTasksHorzOffset", "AFXTASKSPANE/CMFCTasksPane::SetVertMargin", "AFXTASKSPANE/CMFCTasksPane::SetWindowHeight", "AFXTASKSPANE/CMFCTasksPane::ShowCommandMessageString", "AFXTASKSPANE/CMFCTasksPane::ShowTask", "AFXTASKSPANE/CMFCTasksPane::ShowTaskByCmdId", "AFXTASKSPANE/CMFCTasksPane::Update", "AFXTASKSPANE/CMFCTasksPane::OnActivateTasksPanePage"]
 helpviewer_keywords: ["CMFCTasksPane [MFC], CMFCTasksPane", "CMFCTasksPane [MFC], AddGroup", "CMFCTasksPane [MFC], AddLabel", "CMFCTasksPane [MFC], AddMRUFilesList", "CMFCTasksPane [MFC], AddPage", "CMFCTasksPane [MFC], AddSeparator", "CMFCTasksPane [MFC], AddTask", "CMFCTasksPane [MFC], AddWindow", "CMFCTasksPane [MFC], CollapseAllGroups", "CMFCTasksPane [MFC], CollapseGroup", "CMFCTasksPane [MFC], CreateDefaultMiniframe", "CMFCTasksPane [MFC], CreateMenu", "CMFCTasksPane [MFC], EnableAnimation", "CMFCTasksPane [MFC], EnableGroupCollapse", "CMFCTasksPane [MFC], EnableHistoryMenuButtons", "CMFCTasksPane [MFC], EnableNavigationToolbar", "CMFCTasksPane [MFC], EnableOffsetCustomControls", "CMFCTasksPane [MFC], EnableScrollButtons", "CMFCTasksPane [MFC], EnableWrapLabels", "CMFCTasksPane [MFC], EnableWrapTasks", "CMFCTasksPane [MFC], GetActivePage", "CMFCTasksPane [MFC], GetGroupCaptionHeight", "CMFCTasksPane [MFC], GetGroupCaptionHorzOffset", "CMFCTasksPane [MFC], GetGroupCaptionVertOffset", "CMFCTasksPane [MFC], GetGroupCount", "CMFCTasksPane [MFC], GetGroupLocation", "CMFCTasksPane [MFC], GetGroupVertOffset", "CMFCTasksPane [MFC], GetHorzMargin", "CMFCTasksPane [MFC], GetNextPages", "CMFCTasksPane [MFC], GetPageByGroup", "CMFCTasksPane [MFC], GetPagesCount", "CMFCTasksPane [MFC], GetPreviousPages", "CMFCTasksPane [MFC], GetScrollBarCtrl", "CMFCTasksPane [MFC], GetTask", "CMFCTasksPane [MFC], GetTaskCount", "CMFCTasksPane [MFC], GetTaskGroup", "CMFCTasksPane [MFC], GetTaskLocation", "CMFCTasksPane [MFC], GetTasksHorzOffset", "CMFCTasksPane [MFC], GetTasksIconHorzOffset", "CMFCTasksPane [MFC], GetTasksIconVertOffset", "CMFCTasksPane [MFC], GetVertMargin", "CMFCTasksPane [MFC], IsAccessibilityCompatible", "CMFCTasksPane [MFC], IsAnimationEnabled", "CMFCTasksPane [MFC], IsBackButtonEnabled", "CMFCTasksPane [MFC], IsForwardButtonEnabled", "CMFCTasksPane [MFC], IsGroupCollapseEnabled", "CMFCTasksPane [MFC], IsHistoryMenuButtonsEnabled", "CMFCTasksPane [MFC], IsNavigationToolbarEnabled", "CMFCTasksPane [MFC], IsToolBox", "CMFCTasksPane [MFC], IsWrapLabelsEnabled", "CMFCTasksPane [MFC], IsWrapTasksEnabled", "CMFCTasksPane [MFC], LoadState", "CMFCTasksPane [MFC], OnCancel", "CMFCTasksPane [MFC], OnClickTask", "CMFCTasksPane [MFC], OnOK", "CMFCTasksPane [MFC], OnPressBackButton", "CMFCTasksPane [MFC], OnPressForwardButton", "CMFCTasksPane [MFC], OnPressHomeButton", "CMFCTasksPane [MFC], OnPressOtherButton", "CMFCTasksPane [MFC], OnSetAccData", "CMFCTasksPane [MFC], OnUpdateCmdUI", "CMFCTasksPane [MFC], PreTranslateMessage", "CMFCTasksPane [MFC], RecalcLayout", "CMFCTasksPane [MFC], RemoveAllGroups", "CMFCTasksPane [MFC], RemoveAllPages", "CMFCTasksPane [MFC], RemoveAllTasks", "CMFCTasksPane [MFC], RemoveGroup", "CMFCTasksPane [MFC], RemovePage", "CMFCTasksPane [MFC], RemoveTask", "CMFCTasksPane [MFC], SaveState", "CMFCTasksPane [MFC], Serialize", "CMFCTasksPane [MFC], SetActivePage", "CMFCTasksPane [MFC], SetCaption", "CMFCTasksPane [MFC], SetGroupCaptionHeight", "CMFCTasksPane [MFC], SetGroupCaptionHorzOffset", "CMFCTasksPane [MFC], SetGroupCaptionVertOffset", "CMFCTasksPane [MFC], SetGroupName", "CMFCTasksPane [MFC], SetGroupTextColor", "CMFCTasksPane [MFC], SetGroupVertOffset", "CMFCTasksPane [MFC], SetHorzMargin", "CMFCTasksPane [MFC], SetIconsList", "CMFCTasksPane [MFC], SetPageCaption", "CMFCTasksPane [MFC], SetTaskName", "CMFCTasksPane [MFC], SetTasksIconHorzOffset", "CMFCTasksPane [MFC], SetTasksIconVertOffset", "CMFCTasksPane [MFC], SetTaskTextColor", "CMFCTasksPane [MFC], SetTasksHorzOffset", "CMFCTasksPane [MFC], SetVertMargin", "CMFCTasksPane [MFC], SetWindowHeight", "CMFCTasksPane [MFC], ShowCommandMessageString", "CMFCTasksPane [MFC], ShowTask", "CMFCTasksPane [MFC], ShowTaskByCmdId", "CMFCTasksPane [MFC], Update", "CMFCTasksPane [MFC], OnActivateTasksPanePage"]
-ms.assetid: b456328e-2525-4642-b78b-9edd1a1a7d3f
 ---
 # CMFCTasksPane Class
 
@@ -1461,7 +1460,7 @@ void SetGroupCaptionHeight(int n = -1);
 
 Call this method to customize the margins of the task pane elements.
 
-If *n* is -1, the framework determines the margin value by using the visual manager ( `CMFCVisualManager::GetTasksPaneGroupCaptionHeight`). The default caption height is 25 pixels.
+If *n* is -1, the framework determines the margin value by using the visual manager (`CMFCVisualManager::GetTasksPaneGroupCaptionHeight`). The default caption height is 25 pixels.
 
 ## <a name="setgroupcaptionhorzoffset"></a> CMFCTasksPane::SetGroupCaptionHorzOffset
 
diff --git a/docs/mfc/reference/cmfctoolbar-class.md b/docs/mfc/reference/cmfctoolbar-class.md
index 236254137a..e71eb71307 100644
--- a/docs/mfc/reference/cmfctoolbar-class.md
+++ b/docs/mfc/reference/cmfctoolbar-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CMFCToolBar Class"
 title: "CMFCToolBar Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMFCToolBar Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMFCToolBar", "AFXTOOLBAR/CMFCToolBar", "AFXTOOLBAR/CMFCToolBar::AddBasicCommand", "AFXTOOLBAR/CMFCToolBar::AddCommandUsage", "AFXTOOLBAR/CMFCToolBar::AddToolBarForImageCollection", "AFXTOOLBAR/CMFCToolBar::AdjustLayout", "AFXTOOLBAR/CMFCToolBar::AdjustSize", "AFXTOOLBAR/CMFCToolBar::AllowChangeTextLabels", "AFXTOOLBAR/CMFCToolBar::AreTextLabels", "AFXTOOLBAR/CMFCToolBar::AutoGrayInactiveImages", "AFXTOOLBAR/CMFCToolBar::ButtonToIndex", "AFXTOOLBAR/CMFCToolBar::CalcFixedLayout", "AFXTOOLBAR/CMFCToolBar::CalcSize", "AFXTOOLBAR/CMFCToolBar::CanHandleSiblings", "AFXTOOLBAR/CMFCToolBar::CleanUpImages", "AFXTOOLBAR/CMFCToolBar::CleanUpLockedImages", "AFXTOOLBAR/CMFCToolBar::CanBeClosed", "AFXTOOLBAR/CMFCToolBar::CanBeRestored", "AFXTOOLBAR/CMFCToolBar::CanFocus", "AFXTOOLBAR/CMFCToolBar::CommandToIndex", "AFXTOOLBAR/CMFCToolBar::Create", "AFXTOOLBAR/CMFCToolBar::CreateEx", "AFXTOOLBAR/CMFCToolBar::Deactivate", "AFXTOOLBAR/CMFCToolBar::EnableCustomizeButton", "AFXTOOLBAR/CMFCToolBar::EnableDocking", "AFXTOOLBAR/CMFCToolBar::EnableLargeIcons", "AFXTOOLBAR/CMFCToolBar::EnableQuickCustomization", "AFXTOOLBAR/CMFCToolBar::EnableReflections", "AFXTOOLBAR/CMFCToolBar::EnableTextLabels", "AFXTOOLBAR/CMFCToolBar::FromHandlePermanent", "AFXTOOLBAR/CMFCToolBar::GetAllButtons", "AFXTOOLBAR/CMFCToolBar::GetAllToolbars", "AFXTOOLBAR/CMFCToolBar::GetBasicCommands", "AFXTOOLBAR/CMFCToolBar::GetButton", "AFXTOOLBAR/CMFCToolBar::GetButtonInfo", "AFXTOOLBAR/CMFCToolBar::GetButtonSize", "AFXTOOLBAR/CMFCToolBar::GetButtonStyle", "AFXTOOLBAR/CMFCToolBar::GetButtonText", "AFXTOOLBAR/CMFCToolBar::GetColdImages", "AFXTOOLBAR/CMFCToolBar::GetColumnWidth", "AFXTOOLBAR/CMFCToolBar::GetCommandButtons", "AFXTOOLBAR/CMFCToolBar::GetCount", "AFXTOOLBAR/CMFCToolBar::GetCustomizeButton", "AFXTOOLBAR/CMFCToolBar::GetDefaultImage", "AFXTOOLBAR/CMFCToolBar::GetDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetDisabledMenuImages", "AFXTOOLBAR/CMFCToolBar::GetDroppedDownMenu", "AFXTOOLBAR/CMFCToolBar::GetGrayDisabledButtons", "AFXTOOLBAR/CMFCToolBar::GetHighlightedButton", "AFXTOOLBAR/CMFCToolBar::GetHotBorder", "AFXTOOLBAR/CMFCToolBar::GetHotTextColor", "AFXTOOLBAR/CMFCToolBar::GetHwndLastFocus", "AFXTOOLBAR/CMFCToolBar::GetOVERWRITESetText", "AFXTOOLBAR/CMFCToolBar::GetImageSize", "AFXTOOLBAR/CMFCToolBar::GetImages", "AFXTOOLBAR/CMFCToolBar::GetImagesOffset", "AFXTOOLBAR/CMFCToolBar::GetInvalidateItemRect", "AFXTOOLBAR/CMFCToolBar::GetItemID", "AFXTOOLBAR/CMFCToolBar::GetItemRect", "AFXTOOLBAR/CMFCToolBar::GetLargeColdImages", "AFXTOOLBAR/CMFCToolBar::GetLargeDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetLargeImages", "AFXTOOLBAR/CMFCToolBar::GetLockedColdImages", "AFXTOOLBAR/CMFCToolBar::GetLockedDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetLockedImages", "AFXTOOLBAR/CMFCToolBar::GetLockedImageSize", "AFXTOOLBAR/CMFCToolBar::GetLockedMenuImages", "AFXTOOLBAR/CMFCToolBar::GetMenuButtonSize", "AFXTOOLBAR/CMFCToolBar::GetMenuImageSize", "AFXTOOLBAR/CMFCToolBar::GetMenuImages", "AFXTOOLBAR/CMFCToolBar::GetOrigButtons", "AFXTOOLBAR/CMFCToolBar::GetOrigResetButtons", "AFXTOOLBAR/CMFCToolBar::GetResourceID", "AFXTOOLBAR/CMFCToolBar::GetRouteCommandsViaFrame", "AFXTOOLBAR/CMFCToolBar::GetRowHeight", "AFXTOOLBAR/CMFCToolBar::GetShowTooltips", "AFXTOOLBAR/CMFCToolBar::GetSiblingToolBar", "AFXTOOLBAR/CMFCToolBar::GetUserImages", "AFXTOOLBAR/CMFCToolBar::HitTest", "AFXTOOLBAR/CMFCToolBar::InsertButton", "AFXTOOLBAR/CMFCToolBar::InsertSeparator", "AFXTOOLBAR/CMFCToolBar::InvalidateButton", "AFXTOOLBAR/CMFCToolBar::IsAddRemoveQuickCustomize", "AFXTOOLBAR/CMFCToolBar::IsAltCustomizeMode", "AFXTOOLBAR/CMFCToolBar::IsAutoGrayInactiveImages", "AFXTOOLBAR/CMFCToolBar::IsBasicCommand", "AFXTOOLBAR/CMFCToolBar::IsButtonExtraSizeAvailable", "AFXTOOLBAR/CMFCToolBar::IsButtonHighlighted", "AFXTOOLBAR/CMFCToolBar::IsCommandPermitted", "AFXTOOLBAR/CMFCToolBar::IsCommandRarelyUsed", "AFXTOOLBAR/CMFCToolBar::IsCustomizeMode", "AFXTOOLBAR/CMFCToolBar::IsDragButton", "AFXTOOLBAR/CMFCToolBar::IsExistCustomizeButton", "AFXTOOLBAR/CMFCToolBar::IsFloating", "AFXTOOLBAR/CMFCToolBar::IsLargeIcons", "AFXTOOLBAR/CMFCToolBar::IsLastCommandFromButton", "AFXTOOLBAR/CMFCToolBar::IsLocked", "AFXTOOLBAR/CMFCToolBar::IsOneRowWithSibling", "AFXTOOLBAR/CMFCToolBar::IsUserDefined", "AFXTOOLBAR/CMFCToolBar::LoadBitmap", "AFXTOOLBAR/CMFCToolBar::LoadBitmapEx", "AFXTOOLBAR/CMFCToolBar::LoadParameters", "AFXTOOLBAR/CMFCToolBar::LoadState", "AFXTOOLBAR/CMFCToolBar::LoadToolBar", "AFXTOOLBAR/CMFCToolBar::LoadToolBarEx", "AFXTOOLBAR/CMFCToolBar::OnChangeHot", "AFXTOOLBAR/CMFCToolBar::OnFillBackground", "AFXTOOLBAR/CMFCToolBar::OnReset", "AFXTOOLBAR/CMFCToolBar::OnSetAccData", "AFXTOOLBAR/CMFCToolBar::OnSetDefaultButtonText", "AFXTOOLBAR/CMFCToolBar::RemoveAllButtons", "AFXTOOLBAR/CMFCToolBar::RemoveButton", "AFXTOOLBAR/CMFCToolBar::RemoveStateFromRegistry", "AFXTOOLBAR/CMFCToolBar::ReplaceButton", "AFXTOOLBAR/CMFCToolBar::ResetAll", "AFXTOOLBAR/CMFCToolBar::ResetAllImages", "AFXTOOLBAR/CMFCToolBar::RestoreOriginalState", "AFXTOOLBAR/CMFCToolBar::SaveState", "AFXTOOLBAR/CMFCToolBar::SetBasicCommands", "AFXTOOLBAR/CMFCToolBar::SetButtonInfo", "AFXTOOLBAR/CMFCToolBar::SetButtonStyle", "AFXTOOLBAR/CMFCToolBar::SetButtonText", "AFXTOOLBAR/CMFCToolBar::SetButtons", "AFXTOOLBAR/CMFCToolBar::SetCommandUsageOptions", "AFXTOOLBAR/CMFCToolBar::SetCustomizeMode", "AFXTOOLBAR/CMFCToolBar::SetGrayDisabledButtons", "AFXTOOLBAR/CMFCToolBar::SetHeight", "AFXTOOLBAR/CMFCToolBar::SetHotBorder", "AFXTOOLBAR/CMFCToolBar::SetHotTextColor", "AFXTOOLBAR/CMFCToolBar::SetLargeIcons", "AFXTOOLBAR/CMFCToolBar::SetLockedSizes", "AFXTOOLBAR/CMFCToolBar::SetMenuSizes", "AFXTOOLBAR/CMFCToolBar::SetNonPermittedCommands", "AFXTOOLBAR/CMFCToolBar::SetOneRowWithSibling", "AFXTOOLBAR/CMFCToolBar::SetPermament", "AFXTOOLBAR/CMFCToolBar::SetRouteCommandsViaFrame", "AFXTOOLBAR/CMFCToolBar::SetShowTooltips", "AFXTOOLBAR/CMFCToolBar::SetSiblingToolBar", "AFXTOOLBAR/CMFCToolBar::SetSizes", "AFXTOOLBAR/CMFCToolBar::SetToolBarBtnText", "AFXTOOLBAR/CMFCToolBar::SetTwoRowsWithSibling", "AFXTOOLBAR/CMFCToolBar::SetUserImages", "AFXTOOLBAR/CMFCToolBar::StretchPane", "AFXTOOLBAR/CMFCToolBar::TranslateChar", "AFXTOOLBAR/CMFCToolBar::UpdateButton", "AFXTOOLBAR/CMFCToolBar::WrapToolBar", "AFXTOOLBAR/CMFCToolBar::AllowShowOnList", "AFXTOOLBAR/CMFCToolBar::CalcMaxButtonHeight", "AFXTOOLBAR/CMFCToolBar::DoPaint", "AFXTOOLBAR/CMFCToolBar::DrawButton", "AFXTOOLBAR/CMFCToolBar::DrawSeparator", "AFXTOOLBAR/CMFCToolBar::OnUserToolTip", "AFXTOOLBAR/CMFCToolBar::m_bDontScaleImages", "AFXTOOLBAR/CMFCToolBar::m_dblLargeImageRatio"]
 helpviewer_keywords: ["CMFCToolBar [MFC], AddBasicCommand", "CMFCToolBar [MFC], AddCommandUsage", "CMFCToolBar [MFC], AddToolBarForImageCollection", "CMFCToolBar [MFC], AdjustLayout", "CMFCToolBar [MFC], AdjustSize", "CMFCToolBar [MFC], AllowChangeTextLabels", "CMFCToolBar [MFC], AreTextLabels", "CMFCToolBar [MFC], AutoGrayInactiveImages", "CMFCToolBar [MFC], ButtonToIndex", "CMFCToolBar [MFC], CalcFixedLayout", "CMFCToolBar [MFC], CalcSize", "CMFCToolBar [MFC], CanHandleSiblings", "CMFCToolBar [MFC], CleanUpImages", "CMFCToolBar [MFC], CleanUpLockedImages", "CMFCToolBar [MFC], CanBeClosed", "CMFCToolBar [MFC], CanBeRestored", "CMFCToolBar [MFC], CanFocus", "CMFCToolBar [MFC], CanHandleSiblings", "CMFCToolBar [MFC], CommandToIndex", "CMFCToolBar [MFC], Create", "CMFCToolBar [MFC], CreateEx", "CMFCToolBar [MFC], Deactivate", "CMFCToolBar [MFC], EnableCustomizeButton", "CMFCToolBar [MFC], EnableDocking", "CMFCToolBar [MFC], EnableLargeIcons", "CMFCToolBar [MFC], EnableQuickCustomization", "CMFCToolBar [MFC], EnableReflections", "CMFCToolBar [MFC], EnableTextLabels", "CMFCToolBar [MFC], FromHandlePermanent", "CMFCToolBar [MFC], GetAllButtons", "CMFCToolBar [MFC], GetAllToolbars", "CMFCToolBar [MFC], GetBasicCommands", "CMFCToolBar [MFC], GetButton", "CMFCToolBar [MFC], GetButtonInfo", "CMFCToolBar [MFC], GetButtonSize", "CMFCToolBar [MFC], GetButtonStyle", "CMFCToolBar [MFC], GetButtonText", "CMFCToolBar [MFC], GetColdImages", "CMFCToolBar [MFC], GetColumnWidth", "CMFCToolBar [MFC], GetCommandButtons", "CMFCToolBar [MFC], GetCount", "CMFCToolBar [MFC], GetCustomizeButton", "CMFCToolBar [MFC], GetDefaultImage", "CMFCToolBar [MFC], GetDisabledImages", "CMFCToolBar [MFC], GetDisabledMenuImages", "CMFCToolBar [MFC], GetDroppedDownMenu", "CMFCToolBar [MFC], GetGrayDisabledButtons", "CMFCToolBar [MFC], GetHighlightedButton", "CMFCToolBar [MFC], GetHotBorder", "CMFCToolBar [MFC], GetHotTextColor", "CMFCToolBar [MFC], GetHwndLastFocus", "CMFCToolBar [MFC], GetIgnoreSetText", "CMFCToolBar [MFC], GetImageSize", "CMFCToolBar [MFC], GetImages", "CMFCToolBar [MFC], GetImagesOffset", "CMFCToolBar [MFC], GetInvalidateItemRect", "CMFCToolBar [MFC], GetItemID", "CMFCToolBar [MFC], GetItemRect", "CMFCToolBar [MFC], GetLargeColdImages", "CMFCToolBar [MFC], GetLargeDisabledImages", "CMFCToolBar [MFC], GetLargeImages", "CMFCToolBar [MFC], GetLockedColdImages", "CMFCToolBar [MFC], GetLockedDisabledImages", "CMFCToolBar [MFC], GetLockedImages", "CMFCToolBar [MFC], GetLockedImageSize", "CMFCToolBar [MFC], GetLockedMenuImages", "CMFCToolBar [MFC], GetMenuButtonSize", "CMFCToolBar [MFC], GetMenuImageSize", "CMFCToolBar [MFC], GetMenuImages", "CMFCToolBar [MFC], GetOrigButtons", "CMFCToolBar [MFC], GetOrigResetButtons", "CMFCToolBar [MFC], GetResourceID", "CMFCToolBar [MFC], GetRouteCommandsViaFrame", "CMFCToolBar [MFC], GetRowHeight", "CMFCToolBar [MFC], GetShowTooltips", "CMFCToolBar [MFC], GetSiblingToolBar", "CMFCToolBar [MFC], GetUserImages", "CMFCToolBar [MFC], HitTest", "CMFCToolBar [MFC], InsertButton", "CMFCToolBar [MFC], InsertSeparator", "CMFCToolBar [MFC], InvalidateButton", "CMFCToolBar [MFC], IsAddRemoveQuickCustomize", "CMFCToolBar [MFC], IsAltCustomizeMode", "CMFCToolBar [MFC], IsAutoGrayInactiveImages", "CMFCToolBar [MFC], IsBasicCommand", "CMFCToolBar [MFC], IsButtonExtraSizeAvailable", "CMFCToolBar [MFC], IsButtonHighlighted", "CMFCToolBar [MFC], IsCommandPermitted", "CMFCToolBar [MFC], IsCommandRarelyUsed", "CMFCToolBar [MFC], IsCustomizeMode", "CMFCToolBar [MFC], IsDragButton", "CMFCToolBar [MFC], IsExistCustomizeButton", "CMFCToolBar [MFC], IsFloating", "CMFCToolBar [MFC], IsLargeIcons", "CMFCToolBar [MFC], IsLastCommandFromButton", "CMFCToolBar [MFC], IsLocked", "CMFCToolBar [MFC], IsOneRowWithSibling", "CMFCToolBar [MFC], IsUserDefined", "CMFCToolBar [MFC], LoadBitmap", "CMFCToolBar [MFC], LoadBitmapEx", "CMFCToolBar [MFC], LoadParameters", "CMFCToolBar [MFC], LoadState", "CMFCToolBar [MFC], LoadToolBar", "CMFCToolBar [MFC], LoadToolBarEx", "CMFCToolBar [MFC], OnChangeHot", "CMFCToolBar [MFC], OnFillBackground", "CMFCToolBar [MFC], OnReset", "CMFCToolBar [MFC], OnSetAccData", "CMFCToolBar [MFC], OnSetDefaultButtonText", "CMFCToolBar [MFC], RemoveAllButtons", "CMFCToolBar [MFC], RemoveButton", "CMFCToolBar [MFC], RemoveStateFromRegistry", "CMFCToolBar [MFC], ReplaceButton", "CMFCToolBar [MFC], ResetAll", "CMFCToolBar [MFC], ResetAllImages", "CMFCToolBar [MFC], RestoreOriginalState", "CMFCToolBar [MFC], SaveState", "CMFCToolBar [MFC], SetBasicCommands", "CMFCToolBar [MFC], SetButtonInfo", "CMFCToolBar [MFC], SetButtonStyle", "CMFCToolBar [MFC], SetButtonText", "CMFCToolBar [MFC], SetButtons", "CMFCToolBar [MFC], SetCommandUsageOptions", "CMFCToolBar [MFC], SetCustomizeMode", "CMFCToolBar [MFC], SetGrayDisabledButtons", "CMFCToolBar [MFC], SetHeight", "CMFCToolBar [MFC], SetHotBorder", "CMFCToolBar [MFC], SetHotTextColor", "CMFCToolBar [MFC], SetLargeIcons", "CMFCToolBar [MFC], SetLockedSizes", "CMFCToolBar [MFC], SetMenuSizes", "CMFCToolBar [MFC], SetNonPermittedCommands", "CMFCToolBar [MFC], SetOneRowWithSibling", "CMFCToolBar [MFC], SetPermament", "CMFCToolBar [MFC], SetRouteCommandsViaFrame", "CMFCToolBar [MFC], SetShowTooltips", "CMFCToolBar [MFC], SetSiblingToolBar", "CMFCToolBar [MFC], SetSizes", "CMFCToolBar [MFC], SetToolBarBtnText", "CMFCToolBar [MFC], SetTwoRowsWithSibling", "CMFCToolBar [MFC], SetUserImages", "CMFCToolBar [MFC], StretchPane", "CMFCToolBar [MFC], TranslateChar", "CMFCToolBar [MFC], UpdateButton", "CMFCToolBar [MFC], WrapToolBar", "CMFCToolBar [MFC], AllowShowOnList", "CMFCToolBar [MFC], CalcMaxButtonHeight", "CMFCToolBar [MFC], DoPaint", "CMFCToolBar [MFC], DrawButton", "CMFCToolBar [MFC], DrawSeparator", "CMFCToolBar [MFC], OnUserToolTip", "CMFCToolBar [MFC], m_bDontScaleImages", "CMFCToolBar [MFC], m_dblLargeImageRatio"]
 ---
@@ -2303,7 +2303,7 @@ virtual BOOL LoadBitmapEx(
 ### Parameters
 
 [in] *`params`*\
-[in] *`bLocked`*\
+[in] *`bLocked`*
 
 ### Return Value
 
@@ -2317,7 +2317,7 @@ static BOOL __stdcall LoadLargeIconsState(LPCTSTR lpszProfileName = NULL);
 
 ### Parameters
 
-[in] *`lpszProfileName`*\
+[in] *`lpszProfileName`*
 
 ### Return Value
 
@@ -2577,7 +2577,7 @@ virtual BOOL OnSetAccData(long lVal);
 
 ### Parameters
 
-[in] *`lVal`*\
+[in] *`lVal`*
 
 ### Return Value
 
@@ -2837,7 +2837,7 @@ static BOOL __stdcall SaveParameters(LPCTSTR lpszProfileName = NULL);
 
 ### Parameters
 
-[in] *`lpszProfileName`*\
+[in] *`lpszProfileName`*
 
 ### Return Value
 
@@ -3099,7 +3099,7 @@ static void __stdcall SetHelpMode(BOOL bOn = TRUE);
 
 ### Parameters
 
-[in] *`bOn`*\
+[in] *`bOn`*
 
 ### Remarks
 
@@ -3111,7 +3111,7 @@ BOOL SetHot(CMFCToolBarButton* pMenuButton);
 
 ### Parameters
 
-[in] *`pMenuButton`*\
+[in] *`pMenuButton`*
 
 ### Return Value
 
@@ -3161,7 +3161,7 @@ void SetIgnoreSetText(BOOL bValue);
 
 ### Parameters
 
-[in] *`bValue`*\
+[in] *`bValue`*
 
 ### Remarks
 
@@ -3222,7 +3222,7 @@ void SetMaskMode(BOOL bMasked);
 
 ### Parameters
 
-[in] *`bMasked`*\
+[in] *`bMasked`*
 
 ### Remarks
 
@@ -3295,7 +3295,7 @@ void SetOrigButtons(const CObList& lstOrigButtons);
 
 ### Parameters
 
-[in] *`lstOrigButtons`*\
+[in] *`lstOrigButtons`*
 
 ### Remarks
 
@@ -3472,7 +3472,7 @@ This method generates an assertion failure in Debug builds if the specified `CMF
 
 The OutlookDemo, ToolTipDemo, and VisualStudioDemo samples use this method to set the global collection of user-defined images. They load the file that is named UserImages.bmp, which is located in the working directory of the application.
 
-Call the [`CMFCToolBar::GetUserImages](#getuserimages) method to retrieve the collection of user-defined images in the application.
+Call the [`CMFCToolBar::GetUserImages`](#getuserimages) method to retrieve the collection of user-defined images in the application.
 
 ## <a name="stretchpane"></a> `CMFCToolBar::StretchPane`
 
diff --git a/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md b/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md
index a2ca2ffc89..b7e77059dc 100644
--- a/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md
+++ b/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMFCVisualManagerOffice2003 Class"
 title: "CMFCVisualManagerOffice2003 Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMFCVisualManagerOffice2003 Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMFCVisualManagerOffice2003", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::DrawComboBorderWinXP", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::DrawComboDropButtonWinXP", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::DrawCustomizeButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::DrawPushButtonWinXP", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetBaseThemeColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetHighlightMenuItemColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetPropertyGridGroupColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetPropertyGridGroupTextColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetShowAllMenuItemsHeight", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetSmartDockingBaseGuideColors", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetSmartDockingHighlightToneColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetTabFrameColors", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetToolBarCustomizeButtonMargin", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetToolbarDisabledColor", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::GetToolTipInfo", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsDefaultWinXPColorsEnabled", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsDockingTabHasBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsHighlightOneNoteTabs", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsOffsetPressedButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsStatusBarOfficeXPLook", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsToolbarRoundShape", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsUseGlobalTheme", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::IsWindowsThemingSupported", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawAutoHideButtonBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawBarGripper", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawBrowseButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawButtonBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawCaptionBarBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawCheckBoxEx", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawComboBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawComboDropButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawControlBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawExpandingBox", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawHeaderCtrlBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawMenuBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawOutlookBarSplitter", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawOutlookPageButtonBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawPaneBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawPaneCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawPopupWindowBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawPopupWindowButtonBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawPopupWindowCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonButtonsGroup", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonCategoryCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonCategoryTab", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonProgressBar", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonQuickAccessToolBarSeparator", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonSliderChannel", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonSliderThumb", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonSliderZoomButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawRibbonStatusBarPane", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawScrollButtons", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawSeparator", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawShowAllMenuItems", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawStatusBarPaneBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawStatusBarProgress", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawStatusBarSizeBox", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTab", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTabsButtonBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTask", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTasksGroupAreaBorder", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTasksGroupCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnDrawTearOffCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnErasePopupWindowButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnEraseTabsArea", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnEraseTabsButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnEraseTabsFrame", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillAutoHideButtonBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillBarBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillButtonInterior", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillCommandsListBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillHeaderCtrlBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillHighlightedArea", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillOutlookBarCaption", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillOutlookPageButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillPopupWindowBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillTab", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillTasksGroupInterior", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnFillTasksPaneBackground", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnHighlightQuickCustomizeMenuButton", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnHighlightRarelyUsedMenuItems", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::OnUpdateSystemColors", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::SetDefaultWinXPColors", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::SetStatusBarOfficeXPLook", "AFXVISUALMANAGEROFFICE2003/CMFCVisualManagerOffice2003::SetUseGlobalTheme"]
 helpviewer_keywords: ["CMFCVisualManagerOffice2003 Class [MFC]"]
-ms.assetid: 115482cd-e349-450a-8dc4-c6023d092aab
 ---
 # CMFCVisualManagerOffice2003 Class
 
@@ -1265,7 +1264,7 @@ Override this method in a derived visual manager to customize the appearance of
 
 ## <a name="ondrawribbonprogressbar"></a> CMFCVisualManagerOffice2003::OnDrawRibbonProgressBar
 
-The framework calls this method when it draws a [CMFCRibbonProgressBar Class](../../mfc/reference/cmfcribbonprogressbar-class.md)object.
+The framework calls this method when it draws a [CMFCRibbonProgressBar Class](../../mfc/reference/cmfcribbonprogressbar-class.md) object.
 
 ```
 virtual void OnDrawRibbonProgressBar(
diff --git a/docs/mfc/reference/cmonthcalctrl-class.md b/docs/mfc/reference/cmonthcalctrl-class.md
index 75cfdbbb96..8b9469c32a 100644
--- a/docs/mfc/reference/cmonthcalctrl-class.md
+++ b/docs/mfc/reference/cmonthcalctrl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMonthCalCtrl Class"
 title: "CMonthCalCtrl Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CMonthCalCtrl Class"
+ms.date: 11/04/2016
 f1_keywords: ["CMonthCalCtrl", "AFXDTCTL/CMonthCalCtrl", "AFXDTCTL/CMonthCalCtrl::CMonthCalCtrl", "AFXDTCTL/CMonthCalCtrl::Create", "AFXDTCTL/CMonthCalCtrl::GetCalendarBorder", "AFXDTCTL/CMonthCalCtrl::GetCalendarCount", "AFXDTCTL/CMonthCalCtrl::GetCalendarGridInfo", "AFXDTCTL/CMonthCalCtrl::GetCalID", "AFXDTCTL/CMonthCalCtrl::GetColor", "AFXDTCTL/CMonthCalCtrl::GetCurrentView", "AFXDTCTL/CMonthCalCtrl::GetCurSel", "AFXDTCTL/CMonthCalCtrl::GetFirstDayOfWeek", "AFXDTCTL/CMonthCalCtrl::GetMaxSelCount", "AFXDTCTL/CMonthCalCtrl::GetMaxTodayWidth", "AFXDTCTL/CMonthCalCtrl::GetMinReqRect", "AFXDTCTL/CMonthCalCtrl::GetMonthDelta", "AFXDTCTL/CMonthCalCtrl::GetMonthRange", "AFXDTCTL/CMonthCalCtrl::GetRange", "AFXDTCTL/CMonthCalCtrl::GetSelRange", "AFXDTCTL/CMonthCalCtrl::GetToday", "AFXDTCTL/CMonthCalCtrl::HitTest", "AFXDTCTL/CMonthCalCtrl::IsCenturyView", "AFXDTCTL/CMonthCalCtrl::IsDecadeView", "AFXDTCTL/CMonthCalCtrl::IsMonthView", "AFXDTCTL/CMonthCalCtrl::IsYearView", "AFXDTCTL/CMonthCalCtrl::SetCalendarBorder", "AFXDTCTL/CMonthCalCtrl::SetCalendarBorderDefault", "AFXDTCTL/CMonthCalCtrl::SetCalID", "AFXDTCTL/CMonthCalCtrl::SetCenturyView", "AFXDTCTL/CMonthCalCtrl::SetColor", "AFXDTCTL/CMonthCalCtrl::SetCurrentView", "AFXDTCTL/CMonthCalCtrl::SetCurSel", "AFXDTCTL/CMonthCalCtrl::SetDayState", "AFXDTCTL/CMonthCalCtrl::SetDecadeView", "AFXDTCTL/CMonthCalCtrl::SetFirstDayOfWeek", "AFXDTCTL/CMonthCalCtrl::SetMaxSelCount", "AFXDTCTL/CMonthCalCtrl::SetMonthDelta", "AFXDTCTL/CMonthCalCtrl::SetMonthView", "AFXDTCTL/CMonthCalCtrl::SetRange", "AFXDTCTL/CMonthCalCtrl::SetSelRange", "AFXDTCTL/CMonthCalCtrl::SetToday", "AFXDTCTL/CMonthCalCtrl::SetYearView", "AFXDTCTL/CMonthCalCtrl::SizeMinReq", "AFXDTCTL/CMonthCalCtrl::SizeRectToMin"]
 helpviewer_keywords: ["CMonthCalCtrl [MFC], CMonthCalCtrl", "CMonthCalCtrl [MFC], Create", "CMonthCalCtrl [MFC], GetCalendarBorder", "CMonthCalCtrl [MFC], GetCalendarCount", "CMonthCalCtrl [MFC], GetCalendarGridInfo", "CMonthCalCtrl [MFC], GetCalID", "CMonthCalCtrl [MFC], GetColor", "CMonthCalCtrl [MFC], GetCurrentView", "CMonthCalCtrl [MFC], GetCurSel", "CMonthCalCtrl [MFC], GetFirstDayOfWeek", "CMonthCalCtrl [MFC], GetMaxSelCount", "CMonthCalCtrl [MFC], GetMaxTodayWidth", "CMonthCalCtrl [MFC], GetMinReqRect", "CMonthCalCtrl [MFC], GetMonthDelta", "CMonthCalCtrl [MFC], GetMonthRange", "CMonthCalCtrl [MFC], GetRange", "CMonthCalCtrl [MFC], GetSelRange", "CMonthCalCtrl [MFC], GetToday", "CMonthCalCtrl [MFC], HitTest", "CMonthCalCtrl [MFC], IsCenturyView", "CMonthCalCtrl [MFC], IsDecadeView", "CMonthCalCtrl [MFC], IsMonthView", "CMonthCalCtrl [MFC], IsYearView", "CMonthCalCtrl [MFC], SetCalendarBorder", "CMonthCalCtrl [MFC], SetCalendarBorderDefault", "CMonthCalCtrl [MFC], SetCalID", "CMonthCalCtrl [MFC], SetCenturyView", "CMonthCalCtrl [MFC], SetColor", "CMonthCalCtrl [MFC], SetCurrentView", "CMonthCalCtrl [MFC], SetCurSel", "CMonthCalCtrl [MFC], SetDayState", "CMonthCalCtrl [MFC], SetDecadeView", "CMonthCalCtrl [MFC], SetFirstDayOfWeek", "CMonthCalCtrl [MFC], SetMaxSelCount", "CMonthCalCtrl [MFC], SetMonthDelta", "CMonthCalCtrl [MFC], SetMonthView", "CMonthCalCtrl [MFC], SetRange", "CMonthCalCtrl [MFC], SetSelRange", "CMonthCalCtrl [MFC], SetToday", "CMonthCalCtrl [MFC], SetYearView", "CMonthCalCtrl [MFC], SizeMinReq", "CMonthCalCtrl [MFC], SizeRectToMin"]
-ms.assetid: a42f6bd6-ab5c-4335-82f8-839982fc64a2
 ---
 # CMonthCalCtrl Class
 
@@ -320,7 +319,7 @@ A pointer to a [SYSTEMTIME](/windows/win32/api/minwinbase/ns-minwinbase-systemti
 
 ### Return Value
 
-Nonzero if successful; otherwize 0.
+Nonzero if successful; otherwise 0.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/cmousemanager-class.md b/docs/mfc/reference/cmousemanager-class.md
index 10ca342ab2..92e14a9af3 100644
--- a/docs/mfc/reference/cmousemanager-class.md
+++ b/docs/mfc/reference/cmousemanager-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CMouseManager Class"
 title: "CMouseManager Class"
+description: "Learn more about: CMouseManager Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CMouseManager", "AFXMOUSEMANAGER/CMouseManager", "AFXMOUSEMANAGER/CMouseManager::AddView", "AFXMOUSEMANAGER/CMouseManager::GetViewDblClickCommand", "AFXMOUSEMANAGER/CMouseManager::GetViewIconId", "AFXMOUSEMANAGER/CMouseManager::GetViewIdByName", "AFXMOUSEMANAGER/CMouseManager::GetViewNames", "AFXMOUSEMANAGER/CMouseManager::LoadState", "AFXMOUSEMANAGER/CMouseManager::SaveState", "AFXMOUSEMANAGER/CMouseManager::SetCommandForDblClk"]
 helpviewer_keywords: ["CMouseManager [MFC], AddView", "CMouseManager [MFC], GetViewDblClickCommand", "CMouseManager [MFC], GetViewIconId", "CMouseManager [MFC], GetViewIdByName", "CMouseManager [MFC], GetViewNames", "CMouseManager [MFC], LoadState", "CMouseManager [MFC], SaveState", "CMouseManager [MFC], SetCommandForDblClk"]
-ms.assetid: a4d05017-4e44-4a40-8b57-4ece0de20481
 ---
 # CMouseManager Class
 
@@ -33,7 +32,7 @@ class CMouseManager : public CObject
 
 ## Remarks
 
-The `CMouseManager` class maintains a collection of `CView` objects. Each view is identified by a name and by an ID. These views are shown in the **Customization** dialog box. The user can change the command that is associated with any view through the **Customization** dialog box. The associated command is executed when the user double-clicks in that view. To support this from a coding perspective, you must process the WM_LBUTTONDBLCLK message and call the [CWinAppEx::OnViewDoubleClick](../../mfc/reference/cwinappex-class.md#onviewdoubleclick) function in the code for that `CView` object..
+The `CMouseManager` class maintains a collection of `CView` objects. Each view is identified by a name and by an ID. These views are shown in the **Customization** dialog box. The user can change the command that is associated with any view through the **Customization** dialog box. The associated command is executed when the user double-clicks in that view. To support this from a coding perspective, you must process the WM_LBUTTONDBLCLK message and call the [CWinAppEx::OnViewDoubleClick](../../mfc/reference/cwinappex-class.md#onviewdoubleclick) function in the code for that `CView` object.
 
 You should not create a `CMouseManager` object manually. It will be created by the framework of your application. It will also be destroyed automatically when the user exits the application. To get a pointer to the mouse manager for your application, call [CWinAppEx::GetMouseManager](../../mfc/reference/cwinappex-class.md#getmousemanager).
 
@@ -246,7 +245,7 @@ If *uiCmd* is set to 0, the specified view is no longer associated with a comman
 
 ## See also
 
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
-[Classes](../../mfc/reference/mfc-classes.md)<br/>
-[CWinAppEx Class](../../mfc/reference/cwinappex-class.md)<br/>
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
+[Classes](../../mfc/reference/mfc-classes.md)\
+[CWinAppEx Class](../../mfc/reference/cwinappex-class.md)\
 [Keyboard and Mouse Customization](../../mfc/keyboard-and-mouse-customization.md)
diff --git a/docs/mfc/reference/cobarray-class.md b/docs/mfc/reference/cobarray-class.md
index 40abda7c8d..8dd735c1f0 100644
--- a/docs/mfc/reference/cobarray-class.md
+++ b/docs/mfc/reference/cobarray-class.md
@@ -1,7 +1,7 @@
 ---
 title: "CObArray Class"
-description: "API reference for the `CObArray` `MFC` class which stores `CObject` pointers in an array."
-ms.date: "08/27/2020"
+description: "API reference for the `CObArray` MFC class which stores `CObject` pointers in an array."
+ms.date: 08/27/2020
 f1_keywords: ["CObArray", "AFXCOLL/CObArray", "AFXCOLL/CObArray::CObArray", "AFXCOLL/CObArray::Add", "AFXCOLL/CObArray::Append", "AFXCOLL/CObArray::Copy", "AFXCOLL/CObArray::ElementAt", "AFXCOLL/CObArray::FreeExtra", "AFXCOLL/CObArray::GetAt", "AFXCOLL/CObArray::GetCount", "AFXCOLL/CObArray::GetData", "AFXCOLL/CObArray::GetSize", "AFXCOLL/CObArray::GetUpperBound", "AFXCOLL/CObArray::InsertAt", "AFXCOLL/CObArray::IsEmpty", "AFXCOLL/CObArray::RemoveAll", "AFXCOLL/CObArray::RemoveAt", "AFXCOLL/CObArray::SetAt", "AFXCOLL/CObArray::SetAtGrow", "AFXCOLL/CObArray::SetSize"]
 helpviewer_keywords: ["CObArray [MFC], CObArray", "CObArray [MFC], Add", "CObArray [MFC], Append", "CObArray [MFC], Copy", "CObArray [MFC], ElementAt", "CObArray [MFC], FreeExtra", "CObArray [MFC], GetAt", "CObArray [MFC], GetCount", "CObArray [MFC], GetData", "CObArray [MFC], GetSize", "CObArray [MFC], GetUpperBound", "CObArray [MFC], InsertAt", "CObArray [MFC], IsEmpty", "CObArray [MFC], RemoveAll", "CObArray [MFC], RemoveAt", "CObArray [MFC], SetAt", "CObArray [MFC], SetAtGrow", "CObArray [MFC], SetSize"]
 ---
diff --git a/docs/mfc/reference/codesnippet/CPP/cbutton-class_10.h b/docs/mfc/reference/codesnippet/CPP/cbutton-class_10.h
index e34c0f5e23..c428acdc93 100644
--- a/docs/mfc/reference/codesnippet/CPP/cbutton-class_10.h
+++ b/docs/mfc/reference/codesnippet/CPP/cbutton-class_10.h
@@ -1,5 +1,5 @@
 public:
-// Variable to access programatically defined command link control.
+// Variable to access programmatically defined command link control.
 CButton m_cmdLink;
-// Variable to access programatically defined split button control.
+// Variable to access programmatically defined split button control.
 CButton m_splitButton;
\ No newline at end of file
diff --git a/docs/mfc/reference/codesnippet/CPP/cmfcrebar-class_2.cpp b/docs/mfc/reference/codesnippet/CPP/cmfcrebar-class_2.cpp
index bd1a7ee432..8827522e7c 100644
--- a/docs/mfc/reference/codesnippet/CPP/cmfcrebar-class_2.cpp
+++ b/docs/mfc/reference/codesnippet/CPP/cmfcrebar-class_2.cpp
@@ -1,4 +1,4 @@
-// Each rebar pane will ocupy its own row:
+// Each rebar pane will occupy its own row:
 DWORD dwStyle = RBBS_GRIPPERALWAYS | RBBS_FIXEDBMP | RBBS_BREAK;
 // CMFCMenuBar m_wndMenuBar
 // CMFCToolBar m_wndToolBar
diff --git a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_2.cpp b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_2.cpp
index b6138fdf94..170c9fff5e 100644
--- a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_2.cpp
+++ b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_2.cpp
@@ -1,5 +1,5 @@
 CMFCToolBarsCustomizeDialog *pDlgCust = new CMFCToolBarsCustomizeDialog(this,
-                                                                        TRUE /* Automatic menus scaning */);
+                                                                        TRUE /* Automatic menus scanning */);
 
 CSliderButton btnSlider(ID_SLIDER);
 btnSlider.SetRange(0, 100);
diff --git a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_3.cpp b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_3.cpp
index bed3f47541..88446128e8 100644
--- a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_3.cpp
+++ b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_3.cpp
@@ -1,5 +1,5 @@
 CMFCToolBarsCustomizeDialog *pDlgCust = new CMFCToolBarsCustomizeDialog(this,
-                                                                        TRUE /* Automatic menus scaning */,
+                                                                        TRUE /* Automatic menus scanning */,
                                                                         AFX_CUSTOMIZE_MENU_SHADOWS | AFX_CUSTOMIZE_TEXT_LABELS |
                                                                             AFX_CUSTOMIZE_MENU_ANIMATIONS);
 
diff --git a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_4.cpp b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_4.cpp
index 78fa084d09..e01076e8ae 100644
--- a/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_4.cpp
+++ b/docs/mfc/reference/codesnippet/CPP/cmfctoolbarscustomizedialog-class_4.cpp
@@ -1,5 +1,5 @@
 CMFCToolBarsCustomizeDialog *pDlgCust = new CMFCToolBarsCustomizeDialog(this,
-                                                                        TRUE /* Automatic menus scaning */,
+                                                                        TRUE /* Automatic menus scanning */,
                                                                         AFX_CUSTOMIZE_MENU_SHADOWS | AFX_CUSTOMIZE_TEXT_LABELS |
                                                                             AFX_CUSTOMIZE_MENU_ANIMATIONS, // default parameters
                                                                         &lstCustomPages);                  // pointer to the list of runtime classes of the custom property pages
\ No newline at end of file
diff --git a/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp b/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp
index 8d26f62201..faf40bf858 100644
--- a/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp
+++ b/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp
@@ -1,4 +1,3 @@
-
 void CCSplitButton_s2Dlg::OnXIsbuttoninvisible()
 {
    BOOL bLeft = m_pager.IsButtonInvisible(PGB_TOPORLEFT);
diff --git a/docs/mfc/reference/coleclientitem-class.md b/docs/mfc/reference/coleclientitem-class.md
index 6bbc2c72fc..356cf6cdba 100644
--- a/docs/mfc/reference/coleclientitem-class.md
+++ b/docs/mfc/reference/coleclientitem-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleClientItem Class"
 title: "COleClientItem Class"
-ms.date: "07/02/2019"
+description: "Learn more about: COleClientItem Class"
+ms.date: 07/02/2019
 f1_keywords: ["COleClientItem", "AFXOLE/COleClientItem", "AFXOLE/COleClientItem::COleClientItem", "AFXOLE/COleClientItem::Activate", "AFXOLE/COleClientItem::ActivateAs", "AFXOLE/COleClientItem::AttachDataObject", "AFXOLE/COleClientItem::CanCreateFromData", "AFXOLE/COleClientItem::CanCreateLinkFromData", "AFXOLE/COleClientItem::CanPaste", "AFXOLE/COleClientItem::CanPasteLink", "AFXOLE/COleClientItem::Close", "AFXOLE/COleClientItem::ConvertTo", "AFXOLE/COleClientItem::CopyToClipboard", "AFXOLE/COleClientItem::CreateCloneFrom", "AFXOLE/COleClientItem::CreateFromClipboard", "AFXOLE/COleClientItem::CreateFromData", "AFXOLE/COleClientItem::CreateFromFile", "AFXOLE/COleClientItem::CreateLinkFromClipboard", "AFXOLE/COleClientItem::CreateLinkFromData", "AFXOLE/COleClientItem::CreateLinkFromFile", "AFXOLE/COleClientItem::CreateNewItem", "AFXOLE/COleClientItem::CreateStaticFromClipboard", "AFXOLE/COleClientItem::CreateStaticFromData", "AFXOLE/COleClientItem::Deactivate", "AFXOLE/COleClientItem::DeactivateUI", "AFXOLE/COleClientItem::Delete", "AFXOLE/COleClientItem::DoDragDrop", "AFXOLE/COleClientItem::DoVerb", "AFXOLE/COleClientItem::Draw", "AFXOLE/COleClientItem::GetActiveView", "AFXOLE/COleClientItem::GetCachedExtent", "AFXOLE/COleClientItem::GetClassID", "AFXOLE/COleClientItem::GetClipboardData", "AFXOLE/COleClientItem::GetDocument", "AFXOLE/COleClientItem::GetDrawAspect", "AFXOLE/COleClientItem::GetExtent", "AFXOLE/COleClientItem::GetIconFromRegistry", "AFXOLE/COleClientItem::GetIconicMetafile", "AFXOLE/COleClientItem::GetInPlaceWindow", "AFXOLE/COleClientItem::GetItemState", "AFXOLE/COleClientItem::GetLastStatus", "AFXOLE/COleClientItem::GetLinkUpdateOptions", "AFXOLE/COleClientItem::GetType", "AFXOLE/COleClientItem::GetUserType", "AFXOLE/COleClientItem::IsInPlaceActive", "AFXOLE/COleClientItem::IsLinkUpToDate", "AFXOLE/COleClientItem::IsModified", "AFXOLE/COleClientItem::IsOpen", "AFXOLE/COleClientItem::IsRunning", "AFXOLE/COleClientItem::OnActivate", "AFXOLE/COleClientItem::OnActivateUI", "AFXOLE/COleClientItem::OnChange", "AFXOLE/COleClientItem::OnDeactivate", "AFXOLE/COleClientItem::OnDeactivateUI", "AFXOLE/COleClientItem::OnGetClipboardData", "AFXOLE/COleClientItem::OnInsertMenus", "AFXOLE/COleClientItem::OnRemoveMenus", "AFXOLE/COleClientItem::OnSetMenu", "AFXOLE/COleClientItem::OnShowControlBars", "AFXOLE/COleClientItem::OnUpdateFrameTitle", "AFXOLE/COleClientItem::ReactivateAndUndo", "AFXOLE/COleClientItem::Release", "AFXOLE/COleClientItem::Reload", "AFXOLE/COleClientItem::Run", "AFXOLE/COleClientItem::SetDrawAspect", "AFXOLE/COleClientItem::SetExtent", "AFXOLE/COleClientItem::SetHostNames", "AFXOLE/COleClientItem::SetIconicMetafile", "AFXOLE/COleClientItem::SetItemRects", "AFXOLE/COleClientItem::SetLinkUpdateOptions", "AFXOLE/COleClientItem::SetPrintDevice", "AFXOLE/COleClientItem::UpdateLink", "AFXOLE/COleClientItem::CanActivate", "AFXOLE/COleClientItem::OnChangeItemPosition", "AFXOLE/COleClientItem::OnDeactivateAndUndo", "AFXOLE/COleClientItem::OnDiscardUndoState", "AFXOLE/COleClientItem::OnGetClipRect", "AFXOLE/COleClientItem::OnGetItemPosition", "AFXOLE/COleClientItem::OnGetWindowContext", "AFXOLE/COleClientItem::OnScrollBy", "AFXOLE/COleClientItem::OnShowItem"]
 helpviewer_keywords: ["COleClientItem [MFC], COleClientItem", "COleClientItem [MFC], Activate", "COleClientItem [MFC], ActivateAs", "COleClientItem [MFC], AttachDataObject", "COleClientItem [MFC], CanCreateFromData", "COleClientItem [MFC], CanCreateLinkFromData", "COleClientItem [MFC], CanPaste", "COleClientItem [MFC], CanPasteLink", "COleClientItem [MFC], Close", "COleClientItem [MFC], ConvertTo", "COleClientItem [MFC], CopyToClipboard", "COleClientItem [MFC], CreateCloneFrom", "COleClientItem [MFC], CreateFromClipboard", "COleClientItem [MFC], CreateFromData", "COleClientItem [MFC], CreateFromFile", "COleClientItem [MFC], CreateLinkFromClipboard", "COleClientItem [MFC], CreateLinkFromData", "COleClientItem [MFC], CreateLinkFromFile", "COleClientItem [MFC], CreateNewItem", "COleClientItem [MFC], CreateStaticFromClipboard", "COleClientItem [MFC], CreateStaticFromData", "COleClientItem [MFC], Deactivate", "COleClientItem [MFC], DeactivateUI", "COleClientItem [MFC], Delete", "COleClientItem [MFC], DoDragDrop", "COleClientItem [MFC], DoVerb", "COleClientItem [MFC], Draw", "COleClientItem [MFC], GetActiveView", "COleClientItem [MFC], GetCachedExtent", "COleClientItem [MFC], GetClassID", "COleClientItem [MFC], GetClipboardData", "COleClientItem [MFC], GetDocument", "COleClientItem [MFC], GetDrawAspect", "COleClientItem [MFC], GetExtent", "COleClientItem [MFC], GetIconFromRegistry", "COleClientItem [MFC], GetIconicMetafile", "COleClientItem [MFC], GetInPlaceWindow", "COleClientItem [MFC], GetItemState", "COleClientItem [MFC], GetLastStatus", "COleClientItem [MFC], GetLinkUpdateOptions", "COleClientItem [MFC], GetType", "COleClientItem [MFC], GetUserType", "COleClientItem [MFC], IsInPlaceActive", "COleClientItem [MFC], IsLinkUpToDate", "COleClientItem [MFC], IsModified", "COleClientItem [MFC], IsOpen", "COleClientItem [MFC], IsRunning", "COleClientItem [MFC], OnActivate", "COleClientItem [MFC], OnActivateUI", "COleClientItem [MFC], OnChange", "COleClientItem [MFC], OnDeactivate", "COleClientItem [MFC], OnDeactivateUI", "COleClientItem [MFC], OnGetClipboardData", "COleClientItem [MFC], OnInsertMenus", "COleClientItem [MFC], OnRemoveMenus", "COleClientItem [MFC], OnSetMenu", "COleClientItem [MFC], OnShowControlBars", "COleClientItem [MFC], OnUpdateFrameTitle", "COleClientItem [MFC], ReactivateAndUndo", "COleClientItem [MFC], Release", "COleClientItem [MFC], Reload", "COleClientItem [MFC], Run", "COleClientItem [MFC], SetDrawAspect", "COleClientItem [MFC], SetExtent", "COleClientItem [MFC], SetHostNames", "COleClientItem [MFC], SetIconicMetafile", "COleClientItem [MFC], SetItemRects", "COleClientItem [MFC], SetLinkUpdateOptions", "COleClientItem [MFC], SetPrintDevice", "COleClientItem [MFC], UpdateLink", "COleClientItem [MFC], CanActivate", "COleClientItem [MFC], OnChangeItemPosition", "COleClientItem [MFC], OnDeactivateAndUndo", "COleClientItem [MFC], OnDiscardUndoState", "COleClientItem [MFC], OnGetClipRect", "COleClientItem [MFC], OnGetItemPosition", "COleClientItem [MFC], OnGetWindowContext", "COleClientItem [MFC], OnScrollBy", "COleClientItem [MFC], OnShowItem"]
-ms.assetid: 7f571b7c-2758-4839-847a-0cf1ef643128
 ---
 # COleClientItem Class
 
@@ -1434,7 +1433,7 @@ Override this function to apply special rules to the resize/move operation. If t
 
 ## <a name="ondeactivate"></a> COleClientItem::OnDeactivate
 
-Called by the framework when the OLE item transitions from the in-place active state ( `activeState`) to the loaded state, meaning that it is deactivated after an in-place activation.
+Called by the framework when the OLE item transitions from the in-place active state (`activeState`) to the loaded state, meaning that it is deactivated after an in-place activation.
 
 ```
 virtual void OnDeactivate();
diff --git a/docs/mfc/reference/colecontrolsite-class.md b/docs/mfc/reference/colecontrolsite-class.md
index 8b58ebd584..1e7c3602a6 100644
--- a/docs/mfc/reference/colecontrolsite-class.md
+++ b/docs/mfc/reference/colecontrolsite-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleControlSite Class"
 title: "COleControlSite Class"
-ms.date: "11/04/2016"
+description: "Learn more about: COleControlSite Class"
+ms.date: 11/04/2016
 f1_keywords: ["COleControlSite", "AFXOCC/COleControlSite", "AFXOCC/COleControlSite::COleControlSite", "AFXOCC/COleControlSite::BindDefaultProperty", "AFXOCC/COleControlSite::BindProperty", "AFXOCC/COleControlSite::CreateControl", "AFXOCC/COleControlSite::DestroyControl", "AFXOCC/COleControlSite::DoVerb", "AFXOCC/COleControlSite::EnableDSC", "AFXOCC/COleControlSite::EnableWindow", "AFXOCC/COleControlSite::FreezeEvents", "AFXOCC/COleControlSite::GetDefBtnCode", "AFXOCC/COleControlSite::GetDlgCtrlID", "AFXOCC/COleControlSite::GetEventIID", "AFXOCC/COleControlSite::GetExStyle", "AFXOCC/COleControlSite::GetProperty", "AFXOCC/COleControlSite::GetStyle", "AFXOCC/COleControlSite::GetWindowText", "AFXOCC/COleControlSite::InvokeHelper", "AFXOCC/COleControlSite::InvokeHelperV", "AFXOCC/COleControlSite::IsDefaultButton", "AFXOCC/COleControlSite::IsWindowEnabled", "AFXOCC/COleControlSite::ModifyStyle", "AFXOCC/COleControlSite::ModifyStyleEx", "AFXOCC/COleControlSite::MoveWindow", "AFXOCC/COleControlSite::QuickActivate", "AFXOCC/COleControlSite::SafeSetProperty", "AFXOCC/COleControlSite::SetDefaultButton", "AFXOCC/COleControlSite::SetDlgCtrlID", "AFXOCC/COleControlSite::SetFocus", "AFXOCC/COleControlSite::SetProperty", "AFXOCC/COleControlSite::SetPropertyV", "AFXOCC/COleControlSite::SetWindowPos", "AFXOCC/COleControlSite::SetWindowText", "AFXOCC/COleControlSite::ShowWindow", "AFXOCC/COleControlSite::GetControlInfo", "AFXOCC/COleControlSite::m_bIsWindowless", "AFXOCC/COleControlSite::m_ctlInfo", "AFXOCC/COleControlSite::m_dwEventSink", "AFXOCC/COleControlSite::m_dwMiscStatus", "AFXOCC/COleControlSite::m_dwPropNotifySink", "AFXOCC/COleControlSite::m_dwStyle", "AFXOCC/COleControlSite::m_hWnd", "AFXOCC/COleControlSite::m_iidEvents", "AFXOCC/COleControlSite::m_nID", "AFXOCC/COleControlSite::m_pActiveObject", "AFXOCC/COleControlSite::m_pCtrlCont", "AFXOCC/COleControlSite::m_pInPlaceObject", "AFXOCC/COleControlSite::m_pObject", "AFXOCC/COleControlSite::m_pWindowlessObject", "AFXOCC/COleControlSite::m_pWndCtrl", "AFXOCC/COleControlSite::m_rect"]
 helpviewer_keywords: ["COleControlSite [MFC], COleControlSite", "COleControlSite [MFC], BindDefaultProperty", "COleControlSite [MFC], BindProperty", "COleControlSite [MFC], CreateControl", "COleControlSite [MFC], DestroyControl", "COleControlSite [MFC], DoVerb", "COleControlSite [MFC], EnableDSC", "COleControlSite [MFC], EnableWindow", "COleControlSite [MFC], FreezeEvents", "COleControlSite [MFC], GetDefBtnCode", "COleControlSite [MFC], GetDlgCtrlID", "COleControlSite [MFC], GetEventIID", "COleControlSite [MFC], GetExStyle", "COleControlSite [MFC], GetProperty", "COleControlSite [MFC], GetStyle", "COleControlSite [MFC], GetWindowText", "COleControlSite [MFC], InvokeHelper", "COleControlSite [MFC], InvokeHelperV", "COleControlSite [MFC], IsDefaultButton", "COleControlSite [MFC], IsWindowEnabled", "COleControlSite [MFC], ModifyStyle", "COleControlSite [MFC], ModifyStyleEx", "COleControlSite [MFC], MoveWindow", "COleControlSite [MFC], QuickActivate", "COleControlSite [MFC], SafeSetProperty", "COleControlSite [MFC], SetDefaultButton", "COleControlSite [MFC], SetDlgCtrlID", "COleControlSite [MFC], SetFocus", "COleControlSite [MFC], SetProperty", "COleControlSite [MFC], SetPropertyV", "COleControlSite [MFC], SetWindowPos", "COleControlSite [MFC], SetWindowText", "COleControlSite [MFC], ShowWindow", "COleControlSite [MFC], GetControlInfo", "COleControlSite [MFC], m_bIsWindowless", "COleControlSite [MFC], m_ctlInfo", "COleControlSite [MFC], m_dwEventSink", "COleControlSite [MFC], m_dwMiscStatus", "COleControlSite [MFC], m_dwPropNotifySink", "COleControlSite [MFC], m_dwStyle", "COleControlSite [MFC], m_hWnd", "COleControlSite [MFC], m_iidEvents", "COleControlSite [MFC], m_nID", "COleControlSite [MFC], m_pActiveObject", "COleControlSite [MFC], m_pCtrlCont", "COleControlSite [MFC], m_pInPlaceObject", "COleControlSite [MFC], m_pObject", "COleControlSite [MFC], m_pWindowlessObject", "COleControlSite [MFC], m_pWndCtrl", "COleControlSite [MFC], m_rect"]
-ms.assetid: 43970644-5eab-434a-8ba6-56d144ff1e3f
 ---
 # COleControlSite Class
 
@@ -646,7 +645,7 @@ DWORD m_dwMiscStatus;
 
 ### Remarks
 
-For more information, see [OLEMISC](/windows/win32/api/oleidl/ne-oleidl-olemisc)in the Windows SDK.
+For more information, see [OLEMISC](/windows/win32/api/oleidl/ne-oleidl-olemisc) in the Windows SDK.
 
 ## <a name="m_dwpropnotifysink"></a> COleControlSite::m_dwPropNotifySink
 
@@ -722,7 +721,7 @@ LPOLEOBJECT m_pObject;
 
 ## <a name="m_pwindowlessobject"></a> COleControlSite::m_pWindowlessObject
 
-Contains the `IOleInPlaceObjectWindowless`[IOleInPlaceObjectWindowless](/windows/win32/api/ocidl/nn-ocidl-ioleinplaceobjectwindowless) interface of the control.
+Contains the [`IOleInPlaceObjectWindowless`](/windows/win32/api/ocidl/nn-ocidl-ioleinplaceobjectwindowless) interface of the control.
 
 ```
 IOleInPlaceObjectWindowless* m_pWindowlessObject;
diff --git a/docs/mfc/reference/colecurrency-class.md b/docs/mfc/reference/colecurrency-class.md
index d208b9739d..76b2741245 100644
--- a/docs/mfc/reference/colecurrency-class.md
+++ b/docs/mfc/reference/colecurrency-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleCurrency Class"
 title: "COleCurrency Class"
-ms.date: "08/29/2019"
+description: "Learn more about: COleCurrency Class"
+ms.date: 08/29/2019
 f1_keywords: ["COleCurrency", "AFXDISP/COleCurrency", "AFXDISP/COleCurrency::COleCurrency", "AFXDISP/COleCurrency::Format", "AFXDISP/COleCurrency::GetStatus", "AFXDISP/COleCurrency::ParseCurrency", "AFXDISP/COleCurrency::SetCurrency", "AFXDISP/COleCurrency::SetStatus", "AFXDISP/COleCurrency::m_cur", "AFXDISP/COleCurrency::m_status"]
 helpviewer_keywords: ["COleCurrency [MFC], COleCurrency", "COleCurrency [MFC], Format", "COleCurrency [MFC], GetStatus", "COleCurrency [MFC], ParseCurrency", "COleCurrency [MFC], SetCurrency", "COleCurrency [MFC], SetStatus", "COleCurrency [MFC], m_cur", "COleCurrency [MFC], m_status"]
-ms.assetid: 3a36e345-303f-46fb-a57c-858274378a8d
 ---
 # COleCurrency Class
 
@@ -290,7 +289,7 @@ A brief description of each operator follows:
 
 - **operator =(** `curSrc` **)** The value and status of the operand, an existing `COleCurrency` object are copied into this `COleCurrency` object.
 
-- **operator =(** *varSrc* **)** If the conversion of the `VARIANT` value (or [COleVariant](../../mfc/reference/colevariant-class.md) object) to a currency ( `VT_CY`) is successful, the converted value is copied into this `COleCurrency` object and its status is set to valid. If the conversion is not successful, the value of the `COleCurrency` object is set to 0 and its status to invalid.
+- **operator =(** *varSrc* **)** If the conversion of the `VARIANT` value (or [COleVariant](../../mfc/reference/colevariant-class.md) object) to a currency (`VT_CY`) is successful, the converted value is copied into this `COleCurrency` object and its status is set to valid. If the conversion is not successful, the value of the `COleCurrency` object is set to 0 and its status to invalid.
 
 For more information, see the [CURRENCY](/windows/win32/api/wtypes/ns-wtypes-cy-r1) and [VARIANT](/windows/win32/api/oaidl/ns-oaidl-variant) entries in the Windows SDK.
 
@@ -486,7 +485,7 @@ BOOL operator>=(const COleCurrency& cur) const;
 ### Remarks
 
 > [!NOTE]
-> The return value of the ordering operations ( **<**, **\<=**, **>**, **>=**) is undefined if the status of either operand is null or invalid. The equality operators ( `==`, `!=`) consider the status of the operands.
+> The return value of the ordering operations ( **<**, **\<=**, **>**, **>=**) is undefined if the status of either operand is null or invalid. The equality operators (`==`, `!=`) consider the status of the operands.
 
 ### Example
 
diff --git a/docs/mfc/reference/coledocument-class.md b/docs/mfc/reference/coledocument-class.md
index c8ad83bdfb..fe1959bf1a 100644
--- a/docs/mfc/reference/coledocument-class.md
+++ b/docs/mfc/reference/coledocument-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleDocument Class"
 title: "COleDocument Class"
+description: "Learn more about: COleDocument Class"
 ms.date: "11/04/2016"
 f1_keywords: ["COleDocument", "AFXOLE/COleDocument", "AFXOLE/COleDocument::COleDocument", "AFXOLE/COleDocument::AddItem", "AFXOLE/COleDocument::ApplyPrintDevice", "AFXOLE/COleDocument::EnableCompoundFile", "AFXOLE/COleDocument::GetInPlaceActiveItem", "AFXOLE/COleDocument::GetNextClientItem", "AFXOLE/COleDocument::GetNextItem", "AFXOLE/COleDocument::GetNextServerItem", "AFXOLE/COleDocument::GetPrimarySelectedItem", "AFXOLE/COleDocument::GetStartPosition", "AFXOLE/COleDocument::HasBlankItems", "AFXOLE/COleDocument::OnShowViews", "AFXOLE/COleDocument::RemoveItem", "AFXOLE/COleDocument::UpdateModifiedFlag", "AFXOLE/COleDocument::OnEditChangeIcon", "AFXOLE/COleDocument::OnEditConvert", "AFXOLE/COleDocument::OnEditLinks", "AFXOLE/COleDocument::OnFileSendMail", "AFXOLE/COleDocument::OnUpdateEditChangeIcon", "AFXOLE/COleDocument::OnUpdateEditLinksMenu", "AFXOLE/COleDocument::OnUpdateObjectVerbMenu", "AFXOLE/COleDocument::OnUpdatePasteLinkMenu", "AFXOLE/COleDocument::OnUpdatePasteMenu"]
 helpviewer_keywords: ["COleDocument [MFC], COleDocument", "COleDocument [MFC], AddItem", "COleDocument [MFC], ApplyPrintDevice", "COleDocument [MFC], EnableCompoundFile", "COleDocument [MFC], GetInPlaceActiveItem", "COleDocument [MFC], GetNextClientItem", "COleDocument [MFC], GetNextItem", "COleDocument [MFC], GetNextServerItem", "COleDocument [MFC], GetPrimarySelectedItem", "COleDocument [MFC], GetStartPosition", "COleDocument [MFC], HasBlankItems", "COleDocument [MFC], OnShowViews", "COleDocument [MFC], RemoveItem", "COleDocument [MFC], UpdateModifiedFlag", "COleDocument [MFC], OnEditChangeIcon", "COleDocument [MFC], OnEditConvert", "COleDocument [MFC], OnEditLinks", "COleDocument [MFC], OnFileSendMail", "COleDocument [MFC], OnUpdateEditChangeIcon", "COleDocument [MFC], OnUpdateEditLinksMenu", "COleDocument [MFC], OnUpdateObjectVerbMenu", "COleDocument [MFC], OnUpdatePasteLinkMenu", "COleDocument [MFC], OnUpdatePasteMenu"]
-ms.assetid: dc2ecb99-03e1-44c7-bb69-48056dd1b672
 ---
 # COleDocument Class
 
@@ -64,9 +63,9 @@ class COleDocument : public CDocument
 
 If you are writing a simple container application, derive your document class from `COleDocument`. If you are writing a container application that supports linking to the embedded items contained by its documents, derive your document class from [COleLinkingDoc](../../mfc/reference/colelinkingdoc-class.md). If you are writing a server application or combination container/server, derive your document class from [COleServerDoc](../../mfc/reference/coleserverdoc-class.md). `COleLinkingDoc` and `COleServerDoc` are derived from `COleDocument`, so these classes inherit all the services available in `COleDocument` and `CDocument`.
 
-To use `COleDocument`, derive a class from it and add functionality to manage the application's non-OLE data as well as embedded or linked items. If you define `CDocItem`-derived classes to store the application's native data, you can use the default implementation defined by `COleDocument` to store both your OLE and non-OLE data. You can also design your own data structures for storing your non-OLE data separately from the OLE items. For more information, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md)..
+To use `COleDocument`, derive a class from it and add functionality to manage the application's non-OLE data as well as embedded or linked items. If you define `CDocItem`-derived classes to store the application's native data, you can use the default implementation defined by `COleDocument` to store both your OLE and non-OLE data. You can also design your own data structures for storing your non-OLE data separately from the OLE items. For more information, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).
 
-`CDocument` supports sending your document via mail if mail support (MAPI) is present. `COleDocument` has updated [OnFileSendMail](#onfilesendmail) to handle compound documents correctly. For more information, see the articles [MAPI](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md)..
+`CDocument` supports sending your document via mail if mail support (MAPI) is present. `COleDocument` has updated [OnFileSendMail](#onfilesendmail) to handle compound documents correctly. For more information, see the articles [MAPI](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md).
 
 ## Inheritance Hierarchy
 
@@ -153,7 +152,7 @@ Specifies whether compound file support is enabled or disabled.
 
 ### Remarks
 
-This is also called structured storage. You typically call this function from the constructor of your `COleDocument`-derived class. For more information about compound documents, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md)..
+This is also called structured storage. You typically call this function from the constructor of your `COleDocument`-derived class. For more information about compound documents, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).
 
 If you do not call this member function, documents will be stored in a nonstructured ("flat") file format.
 
@@ -356,7 +355,7 @@ afx_msg void OnFileSendMail();
 
 Unlike the implementation of `OnFileSendMail` for `CDocument`, this function handles compound files correctly.
 
-For more information, see the [MAPI Topics](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md) articles..
+For more information, see the [MAPI Topics](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md) articles.
 
 ## <a name="onshowviews"></a> COleDocument::OnShowViews
 
@@ -491,7 +490,7 @@ This allows the framework to prompt the user to save the document before closing
 
 ## See also
 
-[MFC Sample CONTAINER](../../overview/visual-cpp-samples.md)<br/>
-[MFC Sample MFCBIND](../../overview/visual-cpp-samples.md)<br/>
-[CDocument Class](../../mfc/reference/cdocument-class.md)<br/>
+[MFC Sample CONTAINER](../../overview/visual-cpp-samples.md)\
+[MFC Sample MFCBIND](../../overview/visual-cpp-samples.md)\
+[CDocument Class](../../mfc/reference/cdocument-class.md)\
 [Hierarchy Chart](../../mfc/hierarchy-chart.md)
diff --git a/docs/mfc/reference/coleipframewndex-class.md b/docs/mfc/reference/coleipframewndex-class.md
index 69d2da9c47..51faf2f152 100644
--- a/docs/mfc/reference/coleipframewndex-class.md
+++ b/docs/mfc/reference/coleipframewndex-class.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: COleIPFrameWndEx Class"
 title: "COleIPFrameWndEx Class"
-ms.date: "11/04/2016"
+description: "Learn more about: COleIPFrameWndEx Class"
+ms.date: 11/04/2016
 f1_keywords: ["COleIPFrameWndEx", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::AddDockSite", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::AddPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::AdjustDockingLayout", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::DockPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::DockPaneLeftOf", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::EnableAutoHidePanes", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::EnableDocking", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::EnablePaneMenu", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetActivePopup", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetContainerFrameWindow", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetDefaultResId", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetDockFrame", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetDockingManager", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetMainFrame", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetMenuBar", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetTearOffBars", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::GetToolbarButtonToolTipText", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::InsertPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::IsMenuBarAvailable", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::IsPointNearDockSite", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::LoadFrame", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnCloseDockingPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnCloseMiniFrame", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnClosePopupMenu", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnCmdMsg", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnDrawMenuImage", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnDrawMenuLogo", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnMenuButtonToolHitTest", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnMoveMiniFrame", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnSetPreviewMode", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnShowCustomizePane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnShowPanes", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnShowPopupMenu", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::OnTearOffMenu", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::PaneFromPoint", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::PreTranslateMessage", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::RecalcLayout", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::RemovePaneFromDockManager", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::SetDockState", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::SetupToolbarMenu", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::ShowPane", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::WinHelpA", "AFXOLEIPFRAMEWNDEX/COleIPFrameWndEx::InitUserToobars"]
 helpviewer_keywords: ["COleIPFrameWndEx [MFC], AddDockSite", "COleIPFrameWndEx [MFC], AddPane", "COleIPFrameWndEx [MFC], AdjustDockingLayout", "COleIPFrameWndEx [MFC], DockPane", "COleIPFrameWndEx [MFC], DockPaneLeftOf", "COleIPFrameWndEx [MFC], EnableAutoHidePanes", "COleIPFrameWndEx [MFC], EnableDocking", "COleIPFrameWndEx [MFC], EnablePaneMenu", "COleIPFrameWndEx [MFC], GetActivePopup", "COleIPFrameWndEx [MFC], GetContainerFrameWindow", "COleIPFrameWndEx [MFC], GetDefaultResId", "COleIPFrameWndEx [MFC], GetDockFrame", "COleIPFrameWndEx [MFC], GetDockingManager", "COleIPFrameWndEx [MFC], GetMainFrame", "COleIPFrameWndEx [MFC], GetMenuBar", "COleIPFrameWndEx [MFC], GetPane", "COleIPFrameWndEx [MFC], GetTearOffBars", "COleIPFrameWndEx [MFC], GetToolbarButtonToolTipText", "COleIPFrameWndEx [MFC], InsertPane", "COleIPFrameWndEx [MFC], IsMenuBarAvailable", "COleIPFrameWndEx [MFC], IsPointNearDockSite", "COleIPFrameWndEx [MFC], LoadFrame", "COleIPFrameWndEx [MFC], OnCloseDockingPane", "COleIPFrameWndEx [MFC], OnCloseMiniFrame", "COleIPFrameWndEx [MFC], OnClosePopupMenu", "COleIPFrameWndEx [MFC], OnCmdMsg", "COleIPFrameWndEx [MFC], OnDrawMenuImage", "COleIPFrameWndEx [MFC], OnDrawMenuLogo", "COleIPFrameWndEx [MFC], OnMenuButtonToolHitTest", "COleIPFrameWndEx [MFC], OnMoveMiniFrame", "COleIPFrameWndEx [MFC], OnSetPreviewMode", "COleIPFrameWndEx [MFC], OnShowCustomizePane", "COleIPFrameWndEx [MFC], OnShowPanes", "COleIPFrameWndEx [MFC], OnShowPopupMenu", "COleIPFrameWndEx [MFC], OnTearOffMenu", "COleIPFrameWndEx [MFC], PaneFromPoint", "COleIPFrameWndEx [MFC], PreTranslateMessage", "COleIPFrameWndEx [MFC], RecalcLayout", "COleIPFrameWndEx [MFC], RemovePaneFromDockManager", "COleIPFrameWndEx [MFC], SetDockState", "COleIPFrameWndEx [MFC], SetupToolbarMenu", "COleIPFrameWndEx [MFC], ShowPane", "COleIPFrameWndEx [MFC], WinHelpA", "COleIPFrameWndEx [MFC], InitUserToobars"]
-ms.assetid: ebff1560-a1eb-4854-af00-95d4a192bd55
 ---
 # COleIPFrameWndEx Class
 
-The `COleIPFrameWndEx` class implements an OLE container that supports MFC. You must derive the in-place frame window class for your application from the `COleIPFrameWndEx` class, instead of deriving it from the [COleIPFrameWnd](../../mfc/reference/coleipframewnd-class.md)class.
+The `COleIPFrameWndEx` class implements an OLE container that supports MFC. You must derive the in-place frame window class for your application from the `COleIPFrameWndEx` class, instead of deriving it from the [COleIPFrameWnd](../../mfc/reference/coleipframewnd-class.md) class.
 For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation.
 
 ## Syntax
@@ -50,8 +49,8 @@ class COleIPFrameWndEx : public COleIPFrameWnd
 |[COleIPFrameWndEx::OnClosePopupMenu](#onclosepopupmenu)|Called by the framework when an active pop-up menu processes a WM_DESTROY message.|
 |[COleIPFrameWndEx::OnCmdMsg](#oncmdmsg)|(Overrides `CFrameWnd::OnCmdMsg`.)|
 |[COleIPFrameWndEx::OnDrawMenuImage](#ondrawmenuimage)|Called by the framework when the image associated with a menu item is drawn.|
-|[COleIPFrameWndEx::OnDrawMenuLogo](#ondrawmenulogo)|Called by the framework when a [CMFCPopupMenu](../../mfc/reference/cmfcpopupmenu-class.md)object processes a WM_PAINT message.|
-|[COleIPFrameWndEx::OnMenuButtonToolHitTest](#onmenubuttontoolhittest)|Called by the framework when a [CMFCToolBarButton](../../mfc/reference/cmfctoolbarbutton-class.md)object processes WM_NCHITTEST message.|
+|[COleIPFrameWndEx::OnDrawMenuLogo](#ondrawmenulogo)|Called by the framework when a [CMFCPopupMenu](../../mfc/reference/cmfcpopupmenu-class.md) object processes a WM_PAINT message.|
+|[COleIPFrameWndEx::OnMenuButtonToolHitTest](#onmenubuttontoolhittest)|Called by the framework when a [CMFCToolBarButton](../../mfc/reference/cmfctoolbarbutton-class.md) object processes WM_NCHITTEST message.|
 |[COleIPFrameWndEx::OnMoveMiniFrame](#onmoveminiframe)||
 |[COleIPFrameWndEx::OnSetPreviewMode](#onsetpreviewmode)|Call this member function to set the application's main frame window into and out of print-preview mode. (Overrides [CFrameWnd::OnSetPreviewMode](../../mfc/reference/cframewnd-class.md#onsetpreviewmode).)|
 |[COleIPFrameWndEx::OnShowCustomizePane](#onshowcustomizepane)||
@@ -571,7 +570,7 @@ Override this method if you want to customize image drawing for the menu items t
 
 ## <a name="ondrawmenulogo"></a> COleIPFrameWndEx::OnDrawMenuLogo
 
-Called by the framework when a [CMFCPopupMenu](../../mfc/reference/cmfcpopupmenu-class.md)object processes a WM_PAINT message.
+Called by the framework when a [CMFCPopupMenu](../../mfc/reference/cmfcpopupmenu-class.md) object processes a WM_PAINT message.
 
 ```
 virtual void OnDrawMenuLogo(
@@ -597,7 +596,7 @@ Override this method to display a logo on the pop-up menu associated with the me
 
 ## <a name="onmenubuttontoolhittest"></a> COleIPFrameWndEx::OnMenuButtonToolHitTest
 
-Called by the framework when a [CMFCToolBarButton](../../mfc/reference/cmfctoolbarbutton-class.md)object processes a WM_NCHITTEST message.
+Called by the framework when a [CMFCToolBarButton](../../mfc/reference/cmfctoolbarbutton-class.md) object processes a WM_NCHITTEST message.
 
 ```
 virtual BOOL OnMenuButtonToolHitTest(
diff --git a/docs/mfc/reference/coleserverdoc-class.md b/docs/mfc/reference/coleserverdoc-class.md
index 59f7a9c34b..b81a4ff6fd 100644
--- a/docs/mfc/reference/coleserverdoc-class.md
+++ b/docs/mfc/reference/coleserverdoc-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleServerDoc Class"
 title: "COleServerDoc Class"
+description: "Learn more about: COleServerDoc Class"
 ms.date: "11/04/2016"
 f1_keywords: ["COleServerDoc", "AFXOLE/COleServerDoc", "AFXOLE/COleServerDoc::COleServerDoc", "AFXOLE/COleServerDoc::ActivateDocObject", "AFXOLE/COleServerDoc::ActivateInPlace", "AFXOLE/COleServerDoc::DeactivateAndUndo", "AFXOLE/COleServerDoc::DiscardUndoState", "AFXOLE/COleServerDoc::GetClientSite", "AFXOLE/COleServerDoc::GetEmbeddedItem", "AFXOLE/COleServerDoc::GetItemClipRect", "AFXOLE/COleServerDoc::GetItemPosition", "AFXOLE/COleServerDoc::GetZoomFactor", "AFXOLE/COleServerDoc::IsDocObject", "AFXOLE/COleServerDoc::IsEmbedded", "AFXOLE/COleServerDoc::IsInPlaceActive", "AFXOLE/COleServerDoc::NotifyChanged", "AFXOLE/COleServerDoc::NotifyClosed", "AFXOLE/COleServerDoc::NotifyRename", "AFXOLE/COleServerDoc::NotifySaved", "AFXOLE/COleServerDoc::OnDeactivate", "AFXOLE/COleServerDoc::OnDeactivateUI", "AFXOLE/COleServerDoc::OnDocWindowActivate", "AFXOLE/COleServerDoc::OnResizeBorder", "AFXOLE/COleServerDoc::OnShowControlBars", "AFXOLE/COleServerDoc::OnUpdateDocument", "AFXOLE/COleServerDoc::RequestPositionChange", "AFXOLE/COleServerDoc::SaveEmbedding", "AFXOLE/COleServerDoc::ScrollContainerBy", "AFXOLE/COleServerDoc::UpdateAllItems", "AFXOLE/COleServerDoc::CreateInPlaceFrame", "AFXOLE/COleServerDoc::DestroyInPlaceFrame", "AFXOLE/COleServerDoc::GetDocObjectServer", "AFXOLE/COleServerDoc::OnClose", "AFXOLE/COleServerDoc::OnExecOleCmd", "AFXOLE/COleServerDoc::OnFrameWindowActivate", "AFXOLE/COleServerDoc::OnGetEmbeddedItem", "AFXOLE/COleServerDoc::OnReactivateAndUndo", "AFXOLE/COleServerDoc::OnSetHostNames", "AFXOLE/COleServerDoc::OnSetItemRects", "AFXOLE/COleServerDoc::OnShowDocument"]
 helpviewer_keywords: ["COleServerDoc [MFC], COleServerDoc", "COleServerDoc [MFC], ActivateDocObject", "COleServerDoc [MFC], ActivateInPlace", "COleServerDoc [MFC], DeactivateAndUndo", "COleServerDoc [MFC], DiscardUndoState", "COleServerDoc [MFC], GetClientSite", "COleServerDoc [MFC], GetEmbeddedItem", "COleServerDoc [MFC], GetItemClipRect", "COleServerDoc [MFC], GetItemPosition", "COleServerDoc [MFC], GetZoomFactor", "COleServerDoc [MFC], IsDocObject", "COleServerDoc [MFC], IsEmbedded", "COleServerDoc [MFC], IsInPlaceActive", "COleServerDoc [MFC], NotifyChanged", "COleServerDoc [MFC], NotifyClosed", "COleServerDoc [MFC], NotifyRename", "COleServerDoc [MFC], NotifySaved", "COleServerDoc [MFC], OnDeactivate", "COleServerDoc [MFC], OnDeactivateUI", "COleServerDoc [MFC], OnDocWindowActivate", "COleServerDoc [MFC], OnResizeBorder", "COleServerDoc [MFC], OnShowControlBars", "COleServerDoc [MFC], OnUpdateDocument", "COleServerDoc [MFC], RequestPositionChange", "COleServerDoc [MFC], SaveEmbedding", "COleServerDoc [MFC], ScrollContainerBy", "COleServerDoc [MFC], UpdateAllItems", "COleServerDoc [MFC], CreateInPlaceFrame", "COleServerDoc [MFC], DestroyInPlaceFrame", "COleServerDoc [MFC], GetDocObjectServer", "COleServerDoc [MFC], OnClose", "COleServerDoc [MFC], OnExecOleCmd", "COleServerDoc [MFC], OnFrameWindowActivate", "COleServerDoc [MFC], OnGetEmbeddedItem", "COleServerDoc [MFC], OnReactivateAndUndo", "COleServerDoc [MFC], OnSetHostNames", "COleServerDoc [MFC], OnSetItemRects", "COleServerDoc [MFC], OnShowDocument"]
-ms.assetid: a9cdd96a-e0ac-43bb-9203-2c29237e965c
 ---
 # COleServerDoc Class
 
@@ -477,7 +476,7 @@ This function restores the container application's user interface to its origina
 
 The undo state information should be unconditionally released at this point.
 
-For more information, see the article [Activation](../../mfc/activation-cpp.md)..
+For more information, see the article [Activation](../../mfc/activation-cpp.md).
 
 ## <a name="ondeactivateui"></a> COleServerDoc::OnDeactivateUI
 
@@ -515,7 +514,7 @@ Specifies whether the document window is to be activated or deactivated.
 
 The default implementation removes or adds the frame-level user interface elements as appropriate. Override this function if you want to perform additional actions when the document containing your item is activated or deactivated.
 
-For more information, see the article [Activation](../../mfc/activation-cpp.md)..
+For more information, see the article [Activation](../../mfc/activation-cpp.md).
 
 ## <a name="onexecolecmd"></a> COleServerDoc::OnExecOleCmd
 
@@ -599,7 +598,7 @@ Specifies whether the frame window is to be activated or deactivated.
 
 The default implementation cancels any help modes the frame window might be in. Override this function if you want to perform special processing when the frame window is activated or deactivated.
 
-For more information, see the article [Activation](../../mfc/activation-cpp.md)..
+For more information, see the article [Activation](../../mfc/activation-cpp.md).
 
 ## <a name="ongetembeddeditem"></a> COleServerDoc::OnGetEmbeddedItem
 
@@ -860,9 +859,9 @@ This function calls the `OnUpdate` member function for each of the document's it
 
 ## See also
 
-[MFC Sample HIERSVR](../../overview/visual-cpp-samples.md)<br/>
-[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)<br/>
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
-[COleDocument Class](../../mfc/reference/coledocument-class.md)<br/>
-[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)<br/>
+[MFC Sample HIERSVR](../../overview/visual-cpp-samples.md)\
+[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)\
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
+[COleDocument Class](../../mfc/reference/coledocument-class.md)\
+[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)\
 [COleTemplateServer Class](../../mfc/reference/coletemplateserver-class.md)
diff --git a/docs/mfc/reference/colestreamfile-class.md b/docs/mfc/reference/colestreamfile-class.md
index 053820436c..964fe4e4dd 100644
--- a/docs/mfc/reference/colestreamfile-class.md
+++ b/docs/mfc/reference/colestreamfile-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleStreamFile Class"
 title: "COleStreamFile Class"
+description: "Learn more about: COleStreamFile Class"
 ms.date: "11/04/2016"
 f1_keywords: ["COleStreamFile", "AFXOLE/COleStreamFile", "AFXOLE/COleStreamFile::COleStreamFile", "AFXOLE/COleStreamFile::Attach", "AFXOLE/COleStreamFile::CreateMemoryStream", "AFXOLE/COleStreamFile::CreateStream", "AFXOLE/COleStreamFile::Detach", "AFXOLE/COleStreamFile::GetStream", "AFXOLE/COleStreamFile::OpenStream"]
 helpviewer_keywords: ["COleStreamFile [MFC], COleStreamFile", "COleStreamFile [MFC], Attach", "COleStreamFile [MFC], CreateMemoryStream", "COleStreamFile [MFC], CreateStream", "COleStreamFile [MFC], Detach", "COleStreamFile [MFC], GetStream", "COleStreamFile [MFC], OpenStream"]
-ms.assetid: e4f93698-e17c-4a18-a7c0-4b4df8eb4d93
 ---
 # COleStreamFile Class
 
@@ -41,7 +40,7 @@ An `IStorage` object must exist before the stream can be opened or created unles
 
 `COleStreamFile` objects are manipulated exactly like [CFile](../../mfc/reference/cfile-class.md) objects.
 
-For more information about manipulating streams and storages, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md)..
+For more information about manipulating streams and storages, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).
 
 For more information, see [IStream](/windows/win32/api/objidl/nn-objidl-istream) and [IStorage](/windows/win32/api/objidl/nn-objidl-istorage) in the Windows SDK.
 
@@ -222,5 +221,5 @@ For more information, see [IStorage::OpenStream](/windows/win32/api/objidl/nf-ob
 
 ## See also
 
-[CFile Class](../../mfc/reference/cfile-class.md)<br/>
+[CFile Class](../../mfc/reference/cfile-class.md)\
 [Hierarchy Chart](../../mfc/hierarchy-chart.md)
diff --git a/docs/mfc/reference/coletemplateserver-class.md b/docs/mfc/reference/coletemplateserver-class.md
index e497aa5a48..79a0b6e661 100644
--- a/docs/mfc/reference/coletemplateserver-class.md
+++ b/docs/mfc/reference/coletemplateserver-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleTemplateServer Class"
 title: "COleTemplateServer Class"
-ms.date: "11/04/2016"
+description: "Learn more about: COleTemplateServer Class"
+ms.date: 11/04/2016
 f1_keywords: ["COleTemplateServer", "AFXDISP/COleTemplateServer", "AFXDISP/COleTemplateServer::COleTemplateServer", "AFXDISP/COleTemplateServer::ConnectTemplate", "AFXDISP/COleTemplateServer::Unregister", "AFXDISP/COleTemplateServer::UpdateRegistry"]
 helpviewer_keywords: ["COleTemplateServer [MFC], COleTemplateServer", "COleTemplateServer [MFC], ConnectTemplate", "COleTemplateServer [MFC], Unregister", "COleTemplateServer [MFC], UpdateRegistry"]
-ms.assetid: 47a2887d-8162-4993-a842-a784177c7f5c
 ---
 # COleTemplateServer Class
 
@@ -104,10 +103,6 @@ BOOL Unregister();
 
 TRUE if successful; otherwise FALSE.
 
-### Remarks
-
-EnterRemarks
-
 ## <a name="updateregistry"></a> COleTemplateServer::UpdateRegistry
 
 Loads file-type information from the document-template string and places that information in the OLE system registry.
diff --git a/docs/mfc/reference/colevariant-class.md b/docs/mfc/reference/colevariant-class.md
index d3ac1cbba0..f3bc198514 100644
--- a/docs/mfc/reference/colevariant-class.md
+++ b/docs/mfc/reference/colevariant-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: COleVariant Class"
 title: "COleVariant Class"
-ms.date: "11/04/2016"
+description: "Learn more about: COleVariant Class"
+ms.date: 11/04/2016
 f1_keywords: ["COleVariant", "AFXDISP/COleVariant", "AFXDISP/COleVariant::COleVariant", "AFXDISP/COleVariant::Attach", "AFXDISP/COleVariant::ChangeType", "AFXDISP/COleVariant::Clear", "AFXDISP/COleVariant::Detach", "AFXDISP/COleVariant::GetByteArrayFromVariantArray", "AFXDISP/COleVariant::SetString"]
 helpviewer_keywords: ["COleVariant [MFC], COleVariant", "COleVariant [MFC], Attach", "COleVariant [MFC], ChangeType", "COleVariant [MFC], Clear", "COleVariant [MFC], Detach", "COleVariant [MFC], GetByteArrayFromVariantArray", "COleVariant [MFC], SetString"]
-ms.assetid: e1b5cd4a-b066-4b9b-b48b-6215ed52d998
 ---
 # COleVariant Class
 
@@ -52,7 +51,7 @@ This data type is used in OLE automation. Specifically, the [DISPPARAMS](/window
 > [!NOTE]
 > This class is derived from the `VARIANT` structure. This means you can pass a `COleVariant` in a parameter that calls for a `VARIANT` and that the data members of the `VARIANT` structure are accessible data members of `COleVariant`.
 
-The two related MFC classes [COleCurrency](../../mfc/reference/colecurrency-class.md) and [COleDateTime](../../atl-mfc-shared/reference/coledatetime-class.md) encapsulate the variant data types CURRENCY ( `VT_CY`) and DATE ( `VT_DATE`). The `COleVariant` class is used extensively in the DAO classes; see these classes for typical usage of this class, for example [CDaoQueryDef](../../mfc/reference/cdaoquerydef-class.md) and [CDaoRecordset](../../mfc/reference/cdaorecordset-class.md).
+The two related MFC classes [COleCurrency](../../mfc/reference/colecurrency-class.md) and [COleDateTime](../../atl-mfc-shared/reference/coledatetime-class.md) encapsulate the variant data types CURRENCY (`VT_CY`) and DATE (`VT_DATE`). The `COleVariant` class is used extensively in the DAO classes; see these classes for typical usage of this class, for example [CDaoQueryDef](../../mfc/reference/cdaoquerydef-class.md) and [CDaoRecordset](../../mfc/reference/cdaorecordset-class.md).
 
 For more information, see the [VARIANT](/windows/win32/api/oaidl/ns-oaidl-variant), [CURRENCY](/windows/win32/api/wtypes/ns-wtypes-cy-r1), [DISPPARAMS](/windows/win32/api/oaidl/ns-oaidl-dispparams), and [IDispatch::Invoke](/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke) entries in the Windows SDK.
 
diff --git a/docs/mfc/reference/collection-class-helpers.md b/docs/mfc/reference/collection-class-helpers.md
index 4db4679689..ca02e0d281 100644
--- a/docs/mfc/reference/collection-class-helpers.md
+++ b/docs/mfc/reference/collection-class-helpers.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Collection Class Helpers"
 title: "Collection Class Helpers"
-ms.date: "11/04/2016"
+description: "Learn more about: Collection Class Helpers"
+ms.date: 11/04/2016
 helpviewer_keywords: ["DestructElements function", "ConstructElements function", "SerializeElements function", "collection classes [MFC], helper functions", "helper functions collection class [MFC]"]
-ms.assetid: bc3a2368-9edd-4748-9e6a-13cba79517ca
 ---
 # Collection Class Helpers
 
@@ -57,7 +56,7 @@ The `CMap` calls use the `CMap` template parameters *KEY* and *ARG_KEY*.
 
 The default implementation returns the result of the comparison of *\*pElement1* and *\*pElement2*. Override this function so that it compares the elements in a way that is appropriate for your application.
 
-The C++ language defines the comparison operator ( `==`) for simple types (**`char`**, **`int`**, **`float`**, and so on) but does not define a comparison operator for classes and structures. If you want to use `CompareElements` or to instantiate one of the collection classes that uses it, you must either define the comparison operator or overload `CompareElements` with a version that returns appropriate values.
+The C++ language defines the comparison operator (`==`) for simple types (**`char`**, **`int`**, **`float`**, and so on) but does not define a comparison operator for classes and structures. If you want to use `CompareElements` or to instantiate one of the collection classes that uses it, you must either define the comparison operator or overload `CompareElements` with a version that returns appropriate values.
 
 ### Requirements
 
diff --git a/docs/mfc/reference/connection-maps.md b/docs/mfc/reference/connection-maps.md
index cab71e3299..021a53eead 100644
--- a/docs/mfc/reference/connection-maps.md
+++ b/docs/mfc/reference/connection-maps.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Connection Maps"
 title: "Connection Maps"
-ms.date: "8/1/2023"
+description: "Learn more about: Connection Maps"
+ms.date: 8/1/2023
 helpviewer_keywords: ["connection maps"]
 ---
 
@@ -261,7 +261,7 @@ For in-process connections, `TRUE` indicates that creating the connection should
 **Warning**: In general, it can't be predicted which connections are in-process and which connections are out-of-process, so it is recommended to always set this parameter to `TRUE`.
 
 *`dwCookie`*\
-The connection identifier returned by ``AfxConnectionAdvise``.
+The connection identifier returned by `AfxConnectionAdvise`.
 
 ### Return value
 
diff --git a/docs/mfc/reference/crebarctrl-class.md b/docs/mfc/reference/crebarctrl-class.md
index 5dc690832f..7d66ed8b7f 100644
--- a/docs/mfc/reference/crebarctrl-class.md
+++ b/docs/mfc/reference/crebarctrl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CReBarCtrl Class"
 title: "CReBarCtrl Class"
-ms.date: "11/19/2018"
+description: "Learn more about: CReBarCtrl Class"
+ms.date: 11/19/2018
 f1_keywords: ["CReBarCtrl", "AFXCMN/CReBarCtrl", "AFXCMN/CReBarCtrl::CReBarCtrl", "AFXCMN/CReBarCtrl::BeginDrag", "AFXCMN/CReBarCtrl::Create", "AFXCMN/CReBarCtrl::CreateEx", "AFXCMN/CReBarCtrl::DeleteBand", "AFXCMN/CReBarCtrl::DragMove", "AFXCMN/CReBarCtrl::EndDrag", "AFXCMN/CReBarCtrl::GetBandBorders", "AFXCMN/CReBarCtrl::GetBandCount", "AFXCMN/CReBarCtrl::GetBandInfo", "AFXCMN/CReBarCtrl::GetBandMargins", "AFXCMN/CReBarCtrl::GetBarHeight", "AFXCMN/CReBarCtrl::GetBarInfo", "AFXCMN/CReBarCtrl::GetBkColor", "AFXCMN/CReBarCtrl::GetColorScheme", "AFXCMN/CReBarCtrl::GetDropTarget", "AFXCMN/CReBarCtrl::GetExtendedStyle", "AFXCMN/CReBarCtrl::GetImageList", "AFXCMN/CReBarCtrl::GetPalette", "AFXCMN/CReBarCtrl::GetRect", "AFXCMN/CReBarCtrl::GetRowCount", "AFXCMN/CReBarCtrl::GetRowHeight", "AFXCMN/CReBarCtrl::GetTextColor", "AFXCMN/CReBarCtrl::GetToolTips", "AFXCMN/CReBarCtrl::HitTest", "AFXCMN/CReBarCtrl::IDToIndex", "AFXCMN/CReBarCtrl::InsertBand", "AFXCMN/CReBarCtrl::MaximizeBand", "AFXCMN/CReBarCtrl::MinimizeBand", "AFXCMN/CReBarCtrl::MoveBand", "AFXCMN/CReBarCtrl::PushChevron", "AFXCMN/CReBarCtrl::RestoreBand", "AFXCMN/CReBarCtrl::SetBandInfo", "AFXCMN/CReBarCtrl::SetBandWidth", "AFXCMN/CReBarCtrl::SetBarInfo", "AFXCMN/CReBarCtrl::SetBkColor", "AFXCMN/CReBarCtrl::SetColorScheme", "AFXCMN/CReBarCtrl::SetExtendedStyle", "AFXCMN/CReBarCtrl::SetImageList", "AFXCMN/CReBarCtrl::SetOwner", "AFXCMN/CReBarCtrl::SetPalette", "AFXCMN/CReBarCtrl::SetTextColor", "AFXCMN/CReBarCtrl::SetToolTips", "AFXCMN/CReBarCtrl::SetWindowTheme", "AFXCMN/CReBarCtrl::ShowBand", "AFXCMN/CReBarCtrl::SizeToRect"]
 helpviewer_keywords: ["CReBarCtrl [MFC], CReBarCtrl", "CReBarCtrl [MFC], BeginDrag", "CReBarCtrl [MFC], Create", "CReBarCtrl [MFC], CreateEx", "CReBarCtrl [MFC], DeleteBand", "CReBarCtrl [MFC], DragMove", "CReBarCtrl [MFC], EndDrag", "CReBarCtrl [MFC], GetBandBorders", "CReBarCtrl [MFC], GetBandCount", "CReBarCtrl [MFC], GetBandInfo", "CReBarCtrl [MFC], GetBandMargins", "CReBarCtrl [MFC], GetBarHeight", "CReBarCtrl [MFC], GetBarInfo", "CReBarCtrl [MFC], GetBkColor", "CReBarCtrl [MFC], GetColorScheme", "CReBarCtrl [MFC], GetDropTarget", "CReBarCtrl [MFC], GetExtendedStyle", "CReBarCtrl [MFC], GetImageList", "CReBarCtrl [MFC], GetPalette", "CReBarCtrl [MFC], GetRect", "CReBarCtrl [MFC], GetRowCount", "CReBarCtrl [MFC], GetRowHeight", "CReBarCtrl [MFC], GetTextColor", "CReBarCtrl [MFC], GetToolTips", "CReBarCtrl [MFC], HitTest", "CReBarCtrl [MFC], IDToIndex", "CReBarCtrl [MFC], InsertBand", "CReBarCtrl [MFC], MaximizeBand", "CReBarCtrl [MFC], MinimizeBand", "CReBarCtrl [MFC], MoveBand", "CReBarCtrl [MFC], PushChevron", "CReBarCtrl [MFC], RestoreBand", "CReBarCtrl [MFC], SetBandInfo", "CReBarCtrl [MFC], SetBandWidth", "CReBarCtrl [MFC], SetBarInfo", "CReBarCtrl [MFC], SetBkColor", "CReBarCtrl [MFC], SetColorScheme", "CReBarCtrl [MFC], SetExtendedStyle", "CReBarCtrl [MFC], SetImageList", "CReBarCtrl [MFC], SetOwner", "CReBarCtrl [MFC], SetPalette", "CReBarCtrl [MFC], SetTextColor", "CReBarCtrl [MFC], SetToolTips", "CReBarCtrl [MFC], SetWindowTheme", "CReBarCtrl [MFC], ShowBand", "CReBarCtrl [MFC], SizeToRect"]
-ms.assetid: 154570d7-e48c-425d-8c7e-c64542bcb4cc
 ---
 # CReBarCtrl Class
 
@@ -337,7 +336,7 @@ void GetBandMargins(PMARGINS pMargins);
 ### Parameters
 
 *pMargins*<br/>
-A pointer to a [MARGINS](/windows/win32/api/uxtheme/ns-uxtheme-margins)structure that will receive the information.
+A pointer to a [MARGINS](/windows/win32/api/uxtheme/ns-uxtheme-margins) structure that will receive the information.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/crecordset-class.md b/docs/mfc/reference/crecordset-class.md
index 0f955069ad..4029567072 100644
--- a/docs/mfc/reference/crecordset-class.md
+++ b/docs/mfc/reference/crecordset-class.md
@@ -728,7 +728,7 @@ The number of records in the recordset; 0 if the recordset contains no records;
 ### Remarks
 
 > [!CAUTION]
-> The record count is maintained as a "high water mark," the highest-numbered record yet seen as the user moves through the records. The total number of records is only known after the user has moved beyond the last record. For performance reasons, the count isn't updated when you call `MoveLast`. To count the records yourself, call `MoveNext` repeatedly until `IsEOF` returns nonzero. Adding a record via `CRecordset:AddNew` and `Update` increases the count; deleting a record via `CRecordset::Delete` decreases the count.
+> The record count is maintained as a "high water mark," the highest-numbered record yet seen as the user moves through the records. The total number of records is only known after the user has moved beyond the last record. For performance reasons, the count isn't updated when you call `MoveLast`. To count the records yourself, call `MoveNext` repeatedly until `IsEOF` returns nonzero. Adding a record via `CRecordset::AddNew` and `Update` increases the count; deleting a record via `CRecordset::Delete` decreases the count.
 
 ## <a name="getrowsetsize"></a> `CRecordset::GetRowsetSize`
 
diff --git a/docs/mfc/reference/crgn-class.md b/docs/mfc/reference/crgn-class.md
index 3e1cf67d0b..6568c4df1c 100644
--- a/docs/mfc/reference/crgn-class.md
+++ b/docs/mfc/reference/crgn-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CRgn Class"
 title: "CRgn Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CRgn Class"
+ms.date: 11/04/2016
 f1_keywords: ["CRgn", "AFXWIN/CRgn", "AFXWIN/CRgn::CRgn", "AFXWIN/CRgn::CombineRgn", "AFXWIN/CRgn::CopyRgn", "AFXWIN/CRgn::CreateEllipticRgn", "AFXWIN/CRgn::CreateEllipticRgnIndirect", "AFXWIN/CRgn::CreateFromData", "AFXWIN/CRgn::CreateFromPath", "AFXWIN/CRgn::CreatePolygonRgn", "AFXWIN/CRgn::CreatePolyPolygonRgn", "AFXWIN/CRgn::CreateRectRgn", "AFXWIN/CRgn::CreateRectRgnIndirect", "AFXWIN/CRgn::CreateRoundRectRgn", "AFXWIN/CRgn::EqualRgn", "AFXWIN/CRgn::FromHandle", "AFXWIN/CRgn::GetRegionData", "AFXWIN/CRgn::GetRgnBox", "AFXWIN/CRgn::OffsetRgn", "AFXWIN/CRgn::PtInRegion", "AFXWIN/CRgn::RectInRegion", "AFXWIN/CRgn::SetRectRgn"]
 helpviewer_keywords: ["CRgn [MFC], CRgn", "CRgn [MFC], CombineRgn", "CRgn [MFC], CopyRgn", "CRgn [MFC], CreateEllipticRgn", "CRgn [MFC], CreateEllipticRgnIndirect", "CRgn [MFC], CreateFromData", "CRgn [MFC], CreateFromPath", "CRgn [MFC], CreatePolygonRgn", "CRgn [MFC], CreatePolyPolygonRgn", "CRgn [MFC], CreateRectRgn", "CRgn [MFC], CreateRectRgnIndirect", "CRgn [MFC], CreateRoundRectRgn", "CRgn [MFC], EqualRgn", "CRgn [MFC], FromHandle", "CRgn [MFC], GetRegionData", "CRgn [MFC], GetRgnBox", "CRgn [MFC], OffsetRgn", "CRgn [MFC], PtInRegion", "CRgn [MFC], RectInRegion", "CRgn [MFC], SetRectRgn"]
-ms.assetid: d904da84-76aa-481e-8780-b09485f49e64
 ---
 # CRgn Class
 
@@ -37,7 +36,7 @@ class CRgn : public CGdiObject
 |[CRgn::CreatePolygonRgn](#createpolygonrgn)|Initializes a `CRgn` object with a polygonal region. The system closes the polygon automatically, if necessary, by drawing a line from the last vertex to the first.|
 |[CRgn::CreatePolyPolygonRgn](#createpolypolygonrgn)|Initializes a `CRgn` object with a region consisting of a series of closed polygons. The polygons may be disjoint, or they may overlap.|
 |[CRgn::CreateRectRgn](#createrectrgn)|Initializes a `CRgn` object with a rectangular region.|
-|[CRgn::CreateRectRgnIndirect](#createrectrgnindirect)|Initializes a `CRgn` object with a rectangular region defined by a [RECT](/windows/win32/api/windef/ns-windef-rect)tructure.|
+|[CRgn::CreateRectRgnIndirect](#createrectrgnindirect)|Initializes a `CRgn` object with a rectangular region defined by a [RECT](/windows/win32/api/windef/ns-windef-rect) structure.|
 |[CRgn::CreateRoundRectRgn](#createroundrectrgn)|Initializes a `CRgn` object with a rectangular region with rounded corners.|
 |[CRgn::EqualRgn](#equalrgn)|Checks two `CRgn` objects to determine whether they are equivalent.|
 |[CRgn::FromHandle](#fromhandle)|Returns a pointer to a `CRgn` object when given a handle to a Windows region.|
@@ -250,7 +249,7 @@ BOOL CreateFromData(
 ### Parameters
 
 *lpXForm*<br/>
-Points to an [XFORM](/windows/win32/api/wingdi/ns-wingdi-xform)ata structure that defines the transformation to be performed on the region. If this pointer is NULL, the identity transformation is used.
+Points to an [XFORM](/windows/win32/api/wingdi/ns-wingdi-xform) data structure that defines the transformation to be performed on the region. If this pointer is NULL, the identity transformation is used.
 
 *nCount*<br/>
 Specifies the number of bytes pointed to by *pRgnData*.
@@ -610,17 +609,14 @@ int GetRgnBox(LPRECT lpRect) const;
 *lpRect*<br/>
 Points to a `RECT` structure or `CRect` object to receive the coordinates of the bounding rectangle. The `RECT` structure has the following form:
 
-`typedef struct tagRECT {`
-
-`int left;`
-
-`int top;`
-
-`int right;`
-
-`int bottom;`
-
-`} RECT;`
+```cpp
+typedef struct tagRECT {
+    int left;
+    int top;
+    int right;
+    int bottom;
+} RECT;
+```
 
 ### Return Value
 
diff --git a/docs/mfc/reference/csemaphore-class.md b/docs/mfc/reference/csemaphore-class.md
index fce78fae48..a31a4590ab 100644
--- a/docs/mfc/reference/csemaphore-class.md
+++ b/docs/mfc/reference/csemaphore-class.md
@@ -4,15 +4,14 @@ title: "CSemaphore Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CSemaphore", "AFXMT/CSemaphore", "AFXMT/CSemaphore::CSemaphore"]
 helpviewer_keywords: ["CSemaphore [MFC], CSemaphore"]
-ms.assetid: 385fc7e4-8f86-4be2-85e1-d23b38c12f7f
 ---
 # CSemaphore Class
 
-An object of class `CSemaphore` represents a "semaphore" — a synchronization object that allows a limited number of threads in one or more processes to access a Maintains a count of the number of threads currently accessing a specified resource.
+An object of class `CSemaphore` represents a "semaphore". A semaphore is a synchronization object that controls access to shared resources and prevents race conditions.
 
 ## Syntax
 
-```
+```cpp
 class CSemaphore : public CSyncObject
 ```
 
@@ -22,17 +21,17 @@ class CSemaphore : public CSyncObject
 
 |Name|Description|
 |----------|-----------------|
-|[CSemaphore::CSemaphore](#csemaphore)|Constructs a `CSemaphore` object.|
+|[`CSemaphore::CSemaphore`](#csemaphore)|Constructs a `CSemaphore` object.|
 
 ## Remarks
 
-Semaphores are useful in controlling access to a shared resource that can only support a limited number of users. The current count of the `CSemaphore` object is the number of additional users allowed. When the count reaches zero, all attempts to use the resource controlled by the `CSemaphore` object will be inserted into a system queue and wait until they either time out or the count rises above 0. The maximum number of users who can access the controlled resource at one time is specified during construction of the `CSemaphore` object.
+Semaphores are useful in controlling access to a shared resource that can only support a limited number of users. The current count of the `CSemaphore` object is the number of other users allowed. When the count reaches zero, all attempts to use the resource controlled by the `CSemaphore` object are inserted into a system queue and wait until they either time out, or the count rises above 0. The maximum number of users who can access the controlled resource at one time is specified during construction of the `CSemaphore` object.
 
-To use a `CSemaphore` object, construct the `CSemaphore` object when it is needed. Specify the name of the semaphore you wish to wait on, and that your application should initially own it. You can then access the semaphore when the constructor returns. Call [CSyncObject::Unlock](../../mfc/reference/csyncobject-class.md#unlock) when you are done accessing the controlled resource.
+To use a `CSemaphore` object, construct the `CSemaphore` object when it is needed. Specify the name of the semaphore you wish to wait on, and that your application should initially own it. You can then access the semaphore when the constructor returns. Call [`CSyncObject::Unlock`](../../mfc/reference/csyncobject-class.md#unlock) when you're done accessing the controlled resource.
 
-An alternative method for using `CSemaphore` objects is to add a variable of type `CSemaphore` as a data member to the class you wish to control. During construction of the controlled object, call the constructor of the `CSemaphore` data member specifying the initial access count, maximum access count, name of the semaphore (if it will be used across process boundaries), and desired security attributes.
+An alternative method for using `CSemaphore` objects is to add a variable of type `CSemaphore` as a data member to the class you wish to control. During construction of the controlled object, call the constructor of the `CSemaphore` data member specifying the initial access count, maximum access count, name of the semaphore (if it is used across process boundaries), and desired security attributes.
 
-To access resources controlled by `CSemaphore` objects in this manner, first create a variable of either type [CSingleLock](../../mfc/reference/csinglelock-class.md) or type [CMultiLock](../../mfc/reference/cmultilock-class.md) in your resource's access member function. Then call the lock object's `Lock` member function (for example, [CSingleLock::Lock](../../mfc/reference/csinglelock-class.md#lock)). At this point, your thread will either gain access to the resource, wait for the resource to be released and gain access, or wait for the resource to be released and time out, failing to gain access to the resource. In any case, your resource has been accessed in a thread-safe manner. To release the resource, use the lock object's `Unlock` member function (for example, [CSingleLock::Unlock](../../mfc/reference/csinglelock-class.md#unlock)), or allow the lock object to fall out of scope.
+To access resources controlled by `CSemaphore` objects in this manner, first create a variable of either type [CSingleLock](../../mfc/reference/csinglelock-class.md) or type [CMultiLock](../../mfc/reference/cmultilock-class.md) in your resource's access member function. Then call the lock object's `Lock` member function (for example, [CSingleLock::Lock](../../mfc/reference/csinglelock-class.md#lock)). At this point, your thread will either gain access to the resource, wait for the resource to be released and gain access, or wait for the resource to be released and time out, failing to gain access to the resource. In any case, your resource is accessed in a thread-safe manner. To release the resource, use the lock object's `Unlock` member function (for example, [CSingleLock::Unlock](../../mfc/reference/csinglelock-class.md#unlock)), or allow the lock object to fall out of scope.
 
 Alternatively, you can create a `CSemaphore` object stand-alone, and access it explicitly before attempting to access the controlled resource. This method, while clearer to someone reading your source code, is more prone to error.
 
@@ -54,7 +53,7 @@ For more information on how to use `CSemaphore` objects, see the article [Multit
 
 Constructs a named or unnamed `CSemaphore` object.
 
-```
+```cpp
 CSemaphore(
     LONG lInitialCount = 1,
     LONG lMaxCount = 1,
@@ -64,26 +63,26 @@ CSemaphore(
 
 ### Parameters
 
-*lInitialCount*<br/>
+*`lInitialCount`*\
 The initial usage count for the semaphore. Must be greater than or equal to 0, and less than or equal to *lMaxCount*.
 
-*lMaxCount*<br/>
+*`lMaxCount`*\
 The maximum usage count for the semaphore. Must be greater than 0.
 
-*pstrName*<br/>
-The name of the semaphore. Must be supplied if the semaphore will be accessed across process boundaries. If `NULL`, the object will be unnamed. If the name matches an existing semaphore, the constructor builds a new `CSemaphore` object which references the semaphore of that name. If the name matches an existing synchronization object that is not a semaphore, the construction will fail.
+*`pstrName`*\
+The name of the semaphore. Must be supplied if the semaphore is accessed across process boundaries. If `NULL`, the object will be unnamed. If the name matches an existing semaphore, the constructor builds a new `CSemaphore` object which references the semaphore of that name. If the name matches an existing synchronization object that isn't a semaphore, the construction fails.
 
-*lpsaAttributes*<br/>
+*`lpsaAttributes`*\
 Security attributes for the semaphore object. For a full description of this structure, see [SECURITY_ATTRIBUTES](/previous-versions/windows/desktop/legacy/aa379560\(v=vs.85\)) in the Windows SDK.
 
 ### Remarks
 
-To access or release a `CSemaphore` object, create a [CMultiLock](../../mfc/reference/cmultilock-class.md) or [CSingleLock](../../mfc/reference/csinglelock-class.md) object and call its [Lock](../../mfc/reference/csinglelock-class.md#lock) and [Unlock](../../mfc/reference/csinglelock-class.md#unlock) member functions.
+To access or release a `CSemaphore` object, create a [`CMultiLock`](../../mfc/reference/cmultilock-class.md) or [`CSingleLock`](../../mfc/reference/csinglelock-class.md) object and call its [`Lock`](../../mfc/reference/csinglelock-class.md#lock) and [Unlock](../../mfc/reference/csinglelock-class.md#unlock) member functions.
 
 > [!IMPORTANT]
-> After creating the `CSemaphore` object, use [GetLastError](/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror) to ensure that the mutex did not already exist. If the mutex did exist unexpectedly, it may indicate a rogue process is squatting and may be intending to use the mutex maliciously. In this case, the recommended security-conscious procedure is to close the handle and continue as if there was a failure in creating the object.
+> After creating the `CSemaphore` object, use [`GetLastError`](/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror) to ensure that the mutex didn't already exist. If the mutex did exist unexpectedly, it may indicate a rogue process is squatting and may be intending to use the mutex maliciously. In this case, the recommended security-conscious procedure is to close the handle and continue as if there was a failure in creating the object.
 
 ## See also
 
-[CSyncObject Class](../../mfc/reference/csyncobject-class.md)<br/>
+[`CSyncObject` Class](../../mfc/reference/csyncobject-class.md)\
 [Hierarchy Chart](../../mfc/hierarchy-chart.md)
diff --git a/docs/mfc/reference/cspinbuttonctrl-class.md b/docs/mfc/reference/cspinbuttonctrl-class.md
index b9e1628b64..ccd132b239 100644
--- a/docs/mfc/reference/cspinbuttonctrl-class.md
+++ b/docs/mfc/reference/cspinbuttonctrl-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CSpinButtonCtrl Class"
 title: "CSpinButtonCtrl Class"
+description: "Learn more about: CSpinButtonCtrl Class"
 ms.date: "11/04/2016"
 f1_keywords: ["CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::Create", "AFXCMN/CSpinButtonCtrl::CreateEx", "AFXCMN/CSpinButtonCtrl::GetAccel", "AFXCMN/CSpinButtonCtrl::GetBase", "AFXCMN/CSpinButtonCtrl::GetBuddy", "AFXCMN/CSpinButtonCtrl::GetPos", "AFXCMN/CSpinButtonCtrl::GetRange", "AFXCMN/CSpinButtonCtrl::SetAccel", "AFXCMN/CSpinButtonCtrl::SetBase", "AFXCMN/CSpinButtonCtrl::SetBuddy", "AFXCMN/CSpinButtonCtrl::SetPos", "AFXCMN/CSpinButtonCtrl::SetRange"]
 helpviewer_keywords: ["CSpinButtonCtrl [MFC], CSpinButtonCtrl", "CSpinButtonCtrl [MFC], Create", "CSpinButtonCtrl [MFC], CreateEx", "CSpinButtonCtrl [MFC], GetAccel", "CSpinButtonCtrl [MFC], GetBase", "CSpinButtonCtrl [MFC], GetBuddy", "CSpinButtonCtrl [MFC], GetPos", "CSpinButtonCtrl [MFC], GetRange", "CSpinButtonCtrl [MFC], SetAccel", "CSpinButtonCtrl [MFC], SetBase", "CSpinButtonCtrl [MFC], SetBuddy", "CSpinButtonCtrl [MFC], SetPos", "CSpinButtonCtrl [MFC], SetRange"]
-ms.assetid: 509bfd76-1c5a-4af6-973f-e133c0b87734
 ---
 # CSpinButtonCtrl Class
 
@@ -71,7 +70,7 @@ For more information on using `CSpinButtonCtrl`, see [Controls](../../mfc/contro
 
 ## <a name="create"></a> CSpinButtonCtrl::Create
 
-Creates a spin button control and attaches it to a `CSpinButtonCtrl` object..
+Creates a spin button control and attaches it to a `CSpinButtonCtrl` object.
 
 ```
 virtual BOOL Create(
@@ -366,7 +365,7 @@ The member function `SetRange32` sets the 32-bit range for the spin button contr
 
 ## See also
 
-[MFC Sample CMNCTRL2](../../overview/visual-cpp-samples.md)<br/>
-[CWnd Class](../../mfc/reference/cwnd-class.md)<br/>
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)<br/>
+[MFC Sample CMNCTRL2](../../overview/visual-cpp-samples.md)\
+[CWnd Class](../../mfc/reference/cwnd-class.md)\
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\
 [CSliderCtrl Class](../../mfc/reference/csliderctrl-class.md)
diff --git a/docs/mfc/reference/cstdiofile-class.md b/docs/mfc/reference/cstdiofile-class.md
index 3692c706a0..fd2ff46ab5 100644
--- a/docs/mfc/reference/cstdiofile-class.md
+++ b/docs/mfc/reference/cstdiofile-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CStdioFile Class"
 title: "CStdioFile Class"
-ms.date: "08/29/2019"
+description: "Learn more about: CStdioFile Class"
+ms.date: 08/29/2019
 f1_keywords: ["CStdioFile", "AFX/CStdioFile", "AFX/CStdioFile::CStdioFile", "AFX/CStdioFile::Open", "AFX/CStdioFile::ReadString", "AFX/CStdioFile::Seek", "AFX/CStdioFile::WriteString", "AFX/CStdioFile::m_pStream"]
 helpviewer_keywords: ["CStdioFile [MFC], CStdioFile", "CStdioFile [MFC], Open", "CStdioFile [MFC], ReadString", "CStdioFile [MFC], Seek", "CStdioFile [MFC], WriteString", "CStdioFile [MFC], m_pStream"]
-ms.assetid: 88c2274c-4f0e-4327-882a-557ba4b3ae15
 ---
 # `CStdioFile` Class
 
@@ -260,7 +259,7 @@ Specifies a pointer to a buffer that contains a null-terminated string.
 
 ### Remarks
 
-The terminating null character ( `\0`) is not written to the file. This method writes newline characters in *`lpsz`* to the file as a carriage return-line feed pair.
+The terminating null character (`\0`) is not written to the file. This method writes newline characters in *`lpsz`* to the file as a carriage return-line feed pair.
 
 If you want to write data that is not null-terminated to a file, use `CStdioFile::Write` or [`CFile::Write`](../../mfc/reference/cfile-class.md#write).
 
diff --git a/docs/mfc/reference/ctabctrl-class.md b/docs/mfc/reference/ctabctrl-class.md
index 8416886a1d..1a2461f10b 100644
--- a/docs/mfc/reference/ctabctrl-class.md
+++ b/docs/mfc/reference/ctabctrl-class.md
@@ -1,7 +1,7 @@
 ---
 title: "CTabCtrl Class"
 description: "Learn more about: CTabCtrl Class"
-ms.date: "1/29/2021"
+ms.date: 1/29/2021
 f1_keywords: ["CTabCtrl", "AFXCMN/CTabCtrl", "AFXCMN/CTabCtrl::CTabCtrl", "AFXCMN/CTabCtrl::AdjustRect", "AFXCMN/CTabCtrl::Create", "AFXCMN/CTabCtrl::CreateEx", "AFXCMN/CTabCtrl::DeleteAllItems", "AFXCMN/CTabCtrl::DeleteItem", "AFXCMN/CTabCtrl::DeselectAll", "AFXCMN/CTabCtrl::DrawItem", "AFXCMN/CTabCtrl::GetCurFocus", "AFXCMN/CTabCtrl::GetCurSel", "AFXCMN/CTabCtrl::GetExtendedStyle", "AFXCMN/CTabCtrl::GetImageList", "AFXCMN/CTabCtrl::GetItem", "AFXCMN/CTabCtrl::GetItemCount", "AFXCMN/CTabCtrl::GetItemRect", "AFXCMN/CTabCtrl::GetItemState", "AFXCMN/CTabCtrl::GetRowCount", "AFXCMN/CTabCtrl::GetToolTips", "AFXCMN/CTabCtrl::HighlightItem", "AFXCMN/CTabCtrl::HitTest", "AFXCMN/CTabCtrl::InsertItem", "AFXCMN/CTabCtrl::RemoveImage", "AFXCMN/CTabCtrl::SetCurFocus", "AFXCMN/CTabCtrl::SetCurSel", "AFXCMN/CTabCtrl::SetExtendedStyle", "AFXCMN/CTabCtrl::SetImageList", "AFXCMN/CTabCtrl::SetItem", "AFXCMN/CTabCtrl::SetItemExtra", "AFXCMN/CTabCtrl::SetItemSize", "AFXCMN/CTabCtrl::SetItemState", "AFXCMN/CTabCtrl::SetMinTabWidth", "AFXCMN/CTabCtrl::SetPadding", "AFXCMN/CTabCtrl::SetToolTips"]
 helpviewer_keywords: ["CTabCtrl [MFC], CTabCtrl", "CTabCtrl [MFC], AdjustRect", "CTabCtrl [MFC], Create", "CTabCtrl [MFC], CreateEx", "CTabCtrl [MFC], DeleteAllItems", "CTabCtrl [MFC], DeleteItem", "CTabCtrl [MFC], DeselectAll", "CTabCtrl [MFC], DrawItem", "CTabCtrl [MFC], GetCurFocus", "CTabCtrl [MFC], GetCurSel", "CTabCtrl [MFC], GetExtendedStyle", "CTabCtrl [MFC], GetImageList", "CTabCtrl [MFC], GetItem", "CTabCtrl [MFC], GetItemCount", "CTabCtrl [MFC], GetItemRect", "CTabCtrl [MFC], GetItemState", "CTabCtrl [MFC], GetRowCount", "CTabCtrl [MFC], GetToolTips", "CTabCtrl [MFC], HighlightItem", "CTabCtrl [MFC], HitTest", "CTabCtrl [MFC], InsertItem", "CTabCtrl [MFC], RemoveImage", "CTabCtrl [MFC], SetCurFocus", "CTabCtrl [MFC], SetCurSel", "CTabCtrl [MFC], SetExtendedStyle", "CTabCtrl [MFC], SetImageList", "CTabCtrl [MFC], SetItem", "CTabCtrl [MFC], SetItemExtra", "CTabCtrl [MFC], SetItemSize", "CTabCtrl [MFC], SetItemState", "CTabCtrl [MFC], SetMinTabWidth", "CTabCtrl [MFC], SetPadding", "CTabCtrl [MFC], SetToolTips"]
 ---
@@ -80,7 +80,7 @@ For more information about `CTabCtrl`, see [Controls](../../mfc/controls-mfc.md)
 
 **Header:** `afxcmn.h`
 
-## <a name="adjustrect"></a>`CTabCtrl::AdjustRect`
+## <a name="adjustrect"></a> `CTabCtrl::AdjustRect`
 
 Calculates a tab control's display area given a window rectangle, or calculates the window rectangle that would correspond to a given display area.
 
@@ -366,7 +366,7 @@ Index into the tab control's image list, or -1 if there is no image for the tab.
 
 - `lParam`
 
-   Application-defined data associated with the tab. If there are more than 4 bytes of application-defined data per tab, an application must define a structure and use it instead of the `TCITEM` structure. The first member of the application-defined structure must be a [`TCITEMHEADER`](/windows/win32/api/commctrl/ns-commctrl-tcitemheaderw)structure. The `TCITEMHEADER` structure is identical to the `TCITEM` structure, but without the `lParam` member. The difference between the size of your structure and the size of the `TCITEMHEADER` structure should equal the number of extra bytes per tab.
+   Application-defined data associated with the tab. If there are more than 4 bytes of application-defined data per tab, an application must define a structure and use it instead of the `TCITEM` structure. The first member of the application-defined structure must be a [`TCITEMHEADER`](/windows/win32/api/commctrl/ns-commctrl-tcitemheaderw) structure. The `TCITEMHEADER` structure is identical to the `TCITEM` structure, but without the `lParam` member. The difference between the size of your structure and the size of the `TCITEMHEADER` structure should equal the number of extra bytes per tab.
 
 ### Example
 
diff --git a/docs/mfc/reference/ctaskdialog-class.md b/docs/mfc/reference/ctaskdialog-class.md
index 9c685c3560..2f1d87a819 100644
--- a/docs/mfc/reference/ctaskdialog-class.md
+++ b/docs/mfc/reference/ctaskdialog-class.md
@@ -685,7 +685,7 @@ virtual HRESULT OnHelp();
 
 ### Return Value
 
-The default implementation returns S_OK.
+The default implementation returns S_FALSE.
 
 ### Remarks
 
diff --git a/docs/mfc/reference/ctypedptrarray-class.md b/docs/mfc/reference/ctypedptrarray-class.md
index 5bdf3ccd14..db37f7ca4a 100644
--- a/docs/mfc/reference/ctypedptrarray-class.md
+++ b/docs/mfc/reference/ctypedptrarray-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CTypedPtrArray Class"
 title: "CTypedPtrArray Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CTypedPtrArray Class"
+ms.date: 11/04/2016
 f1_keywords: ["CTypedPtrArray", "AFXTEMPL/CTypedPtrArray", "AFXTEMPL/CTypedPtrArray::Add", "AFXTEMPL/CTypedPtrArray::Append", "AFXTEMPL/CTypedPtrArray::Copy", "AFXTEMPL/CTypedPtrArray::ElementAt", "AFXTEMPL/CTypedPtrArray::GetAt", "AFXTEMPL/CTypedPtrArray::InsertAt", "AFXTEMPL/CTypedPtrArray::SetAt", "AFXTEMPL/CTypedPtrArray::SetAtGrow"]
 helpviewer_keywords: ["CTypedPtrArray [MFC], Add", "CTypedPtrArray [MFC], Append", "CTypedPtrArray [MFC], Copy", "CTypedPtrArray [MFC], ElementAt", "CTypedPtrArray [MFC], GetAt", "CTypedPtrArray [MFC], InsertAt", "CTypedPtrArray [MFC], SetAt", "CTypedPtrArray [MFC], SetAtGrow"]
-ms.assetid: e3ecdf1a-a889-4156-92dd-ddbd36ccd919
 ---
 # CTypedPtrArray Class
 
@@ -20,7 +19,7 @@ class CTypedPtrArray : public BASE_CLASS
 #### Parameters
 
 *BASE_CLASS*<br/>
-Base class of the typed pointer array class; must be an array class ( `CObArray` or `CPtrArray`).
+Base class of the typed pointer array class; must be an array class (`CObArray` or `CPtrArray`).
 
 *TYPE*<br/>
 Type of the elements stored in the base-class array.
diff --git a/docs/mfc/reference/ctypedptrlist-class.md b/docs/mfc/reference/ctypedptrlist-class.md
index dd4e551d00..d06daa00f4 100644
--- a/docs/mfc/reference/ctypedptrlist-class.md
+++ b/docs/mfc/reference/ctypedptrlist-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CTypedPtrList Class"
 title: "CTypedPtrList Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CTypedPtrList Class"
+ms.date: 11/04/2016
 f1_keywords: ["CTypedPtrList", "AFXTEMPL/CTypedPtrList", "AFXTEMPL/CTypedPtrList::AddHead", "AFXTEMPL/CTypedPtrList::AddTail", "AFXTEMPL/CTypedPtrList::GetAt", "AFXTEMPL/CTypedPtrList::GetHead", "AFXTEMPL/CTypedPtrList::GetNext", "AFXTEMPL/CTypedPtrList::GetPrev", "AFXTEMPL/CTypedPtrList::GetTail", "AFXTEMPL/CTypedPtrList::RemoveHead", "AFXTEMPL/CTypedPtrList::RemoveTail", "AFXTEMPL/CTypedPtrList::SetAt"]
 helpviewer_keywords: ["CTypedPtrList [MFC], AddHead", "CTypedPtrList [MFC], AddTail", "CTypedPtrList [MFC], GetAt", "CTypedPtrList [MFC], GetHead", "CTypedPtrList [MFC], GetNext", "CTypedPtrList [MFC], GetPrev", "CTypedPtrList [MFC], GetTail", "CTypedPtrList [MFC], RemoveHead", "CTypedPtrList [MFC], RemoveTail", "CTypedPtrList [MFC], SetAt"]
-ms.assetid: c273096e-1756-4340-864b-4a08b674a65e
 ---
 # CTypedPtrList Class
 
@@ -20,7 +19,7 @@ class CTypedPtrList : public BASE_CLASS
 #### Parameters
 
 *BASE_CLASS*<br/>
-Base class of the typed pointer list class; must be a pointer list class ( `CObList` or `CPtrList`).
+Base class of the typed pointer list class; must be a pointer list class (`CObList` or `CPtrList`).
 
 *TYPE*<br/>
 Type of the elements stored in the base-class list.
diff --git a/docs/mfc/reference/ctypedptrmap-class.md b/docs/mfc/reference/ctypedptrmap-class.md
index 03721557f8..1e8ac54c64 100644
--- a/docs/mfc/reference/ctypedptrmap-class.md
+++ b/docs/mfc/reference/ctypedptrmap-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CTypedPtrMap Class"
 title: "CTypedPtrMap Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CTypedPtrMap Class"
+ms.date: 11/04/2016
 f1_keywords: ["CTypedPtrMap", "AFXTEMPL/CTypedPtrMap", "AFXTEMPL/CTypedPtrMap::GetNextAssoc", "AFXTEMPL/CTypedPtrMap::Lookup", "AFXTEMPL/CTypedPtrMap::RemoveKey", "AFXTEMPL/CTypedPtrMap::SetAt"]
 helpviewer_keywords: ["CTypedPtrMap [MFC], GetNextAssoc", "CTypedPtrMap [MFC], Lookup", "CTypedPtrMap [MFC], RemoveKey", "CTypedPtrMap [MFC], SetAt"]
-ms.assetid: 9f377385-c6e9-4471-8b40-8fe220c50164
 ---
 # CTypedPtrMap Class
 
@@ -20,7 +19,7 @@ class CTypedPtrMap : public BASE_CLASS
 #### Parameters
 
 *BASE_CLASS*<br/>
-Base class of the typed pointer map class; must be a pointer map class ( `CMapPtrToPtr`, `CMapPtrToWord`, `CMapWordToPtr`, or `CMapStringToPtr`).
+Base class of the typed pointer map class; must be a pointer map class (`CMapPtrToPtr`, `CMapPtrToWord`, `CMapWordToPtr`, or `CMapStringToPtr`).
 
 *KEY*<br/>
 Class of the object used as the key to the map.
diff --git a/docs/mfc/reference/cwinapp-class.md b/docs/mfc/reference/cwinapp-class.md
index db9e83c08f..ac07d50b58 100644
--- a/docs/mfc/reference/cwinapp-class.md
+++ b/docs/mfc/reference/cwinapp-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CWinApp Class"
 title: "CWinApp Class"
-ms.date: "07/15/2019"
+description: "Learn more about: CWinApp Class"
+ms.date: 07/15/2019
 f1_keywords: ["CWinApp", "AFXWIN/CWinApp", "AFXWIN/CWinApp::CWinApp", "AFXWIN/CWinApp::AddDocTemplate", "AFXWIN/CWinApp::AddToRecentFileList", "AFXWIN/CWinApp::ApplicationRecoveryCallback", "AFXWIN/CWinApp::CloseAllDocuments", "AFXWIN/CWinApp::CreatePrinterDC", "AFXWIN/CWinApp::DelRegTree", "AFXWIN/CWinApp::DoMessageBox", "AFXWIN/CWinApp::DoWaitCursor", "AFXWIN/CWinApp::EnableD2DSupport", "AFXWIN/CWinApp::EnableHtmlHelp", "AFXWIN/CWinApp::EnableTaskbarInteraction", "AFXWIN/CWinApp::ExitInstance", "AFXWIN/CWinApp::GetApplicationRecoveryParameter", "AFXWIN/CWinApp::GetApplicationRecoveryPingInterval", "AFXWIN/CWinApp::GetApplicationRestartFlags", "AFXWIN/CWinApp::GetAppRegistryKey", "AFXWIN/CWinApp::GetDataRecoveryHandler", "AFXWIN/CWinApp::GetFirstDocTemplatePosition", "AFXWIN/CWinApp::GetHelpMode", "AFXWIN/CWinApp::GetNextDocTemplate", "AFXWIN/CWinApp::GetPrinterDeviceDefaults", "AFXWIN/CWinApp::GetProfileBinary", "AFXWIN/CWinApp::GetProfileInt", "AFXWIN/CWinApp::GetProfileString", "AFXWIN/CWinApp::GetSectionKey", "AFXWIN/CWinApp::HideApplication", "AFXWIN/CWinApp::HtmlHelp", "AFXWIN/CWinApp::InitInstance", "AFXWIN/CWinApp::IsTaskbarInteractionEnabled", "AFXWIN/CWinApp::LoadCursor", "AFXWIN/CWinApp::LoadIcon", "AFXWIN/CWinApp::LoadOEMCursor", "AFXWIN/CWinApp::LoadOEMIcon", "AFXWIN/CWinApp::LoadStandardCursor", "AFXWIN/CWinApp::LoadStandardIcon", "AFXWIN/CWinApp::OnDDECommand", "AFXWIN/CWinApp::OnIdle", "AFXWIN/CWinApp::OpenDocumentFile", "AFXWIN/CWinApp::ParseCommandLine", "AFXWIN/CWinApp::PreTranslateMessage", "AFXWIN/CWinApp::ProcessMessageFilter", "AFXWIN/CWinApp::ProcessShellCommand", "AFXWIN/CWinApp::ProcessWndProcException", "AFXWIN/CWinApp::Register", "AFXWIN/CWinApp::RegisterWithRestartManager", "AFXWIN/CWinApp::ReopenPreviousFilesAtRestart", "AFXWIN/CWinApp::RestartInstance", "AFXWIN/CWinApp::RestoreAutosavedFilesAtRestart", "AFXWIN/CWinApp::Run", "AFXWIN/CWinApp::RunAutomated", "AFXWIN/CWinApp::RunEmbedded", "AFXWIN/CWinApp::SaveAllModified", "AFXWIN/CWinApp::SelectPrinter", "AFXWIN/CWinApp::SetHelpMode", "AFXWIN/CWinApp::SupportsApplicationRecovery", "AFXWIN/CWinApp::SupportsAutosaveAtInterval", "AFXWIN/CWinApp::SupportsAutosaveAtRestart", "AFXWIN/CWinApp::SupportsRestartManager", "AFXWIN/CWinApp::Unregister", "AFXWIN/CWinApp::WinHelp", "AFXWIN/CWinApp::WriteProfileBinary", "AFXWIN/CWinApp::WriteProfileInt", "AFXWIN/CWinApp::WriteProfileString", "AFXWIN/CWinApp::EnableShellOpen", "AFXWIN/CWinApp::LoadStdProfileSettings", "AFXWIN/CWinApp::OnContextHelp", "AFXWIN/CWinApp::OnFileNew", "AFXWIN/CWinApp::OnFileOpen", "AFXWIN/CWinApp::OnFilePrintSetup", "AFXWIN/CWinApp::OnHelp", "AFXWIN/CWinApp::OnHelpFinder", "AFXWIN/CWinApp::OnHelpIndex", "AFXWIN/CWinApp::OnHelpUsing", "AFXWIN/CWinApp::RegisterShellFileTypes", "AFXWIN/CWinApp::SetAppID", "AFXWIN/CWinApp::SetRegistryKey", "AFXWIN/CWinApp::UnregisterShellFileTypes", "AFXWIN/CWinApp::m_bHelpMode", "AFXWIN/CWinApp::m_eHelpType", "AFXWIN/CWinApp::m_hInstance", "AFXWIN/CWinApp::m_lpCmdLine", "AFXWIN/CWinApp::m_nCmdShow", "AFXWIN/CWinApp::m_pActiveWnd", "AFXWIN/CWinApp::m_pszAppID", "AFXWIN/CWinApp::m_pszAppName", "AFXWIN/CWinApp::m_pszExeName", "AFXWIN/CWinApp::m_pszHelpFilePath", "AFXWIN/CWinApp::m_pszProfileName", "AFXWIN/CWinApp::m_pszRegistryKey", "AFXWIN/CWinApp::m_dwRestartManagerSupportFlags", "AFXWIN/CWinApp::m_nAutosaveInterval", "AFXWIN/CWinApp::m_pDataRecoveryHandler"]
 helpviewer_keywords: ["CWinApp [MFC], CWinApp", "CWinApp [MFC], AddDocTemplate", "CWinApp [MFC], AddToRecentFileList", "CWinApp [MFC], ApplicationRecoveryCallback", "CWinApp [MFC], CloseAllDocuments", "CWinApp [MFC], CreatePrinterDC", "CWinApp [MFC], DelRegTree", "CWinApp [MFC], DoMessageBox", "CWinApp [MFC], DoWaitCursor", "CWinApp [MFC], EnableD2DSupport", "CWinApp [MFC], EnableHtmlHelp", "CWinApp [MFC], EnableTaskbarInteraction", "CWinApp [MFC], ExitInstance", "CWinApp [MFC], GetApplicationRecoveryParameter", "CWinApp [MFC], GetApplicationRecoveryPingInterval", "CWinApp [MFC], GetApplicationRestartFlags", "CWinApp [MFC], GetAppRegistryKey", "CWinApp [MFC], GetDataRecoveryHandler", "CWinApp [MFC], GetFirstDocTemplatePosition", "CWinApp [MFC], GetHelpMode", "CWinApp [MFC], GetNextDocTemplate", "CWinApp [MFC], GetPrinterDeviceDefaults", "CWinApp [MFC], GetProfileBinary", "CWinApp [MFC], GetProfileInt", "CWinApp [MFC], GetProfileString", "CWinApp [MFC], GetSectionKey", "CWinApp [MFC], HideApplication", "CWinApp [MFC], HtmlHelp", "CWinApp [MFC], InitInstance", "CWinApp [MFC], IsTaskbarInteractionEnabled", "CWinApp [MFC], LoadCursor", "CWinApp [MFC], LoadIcon", "CWinApp [MFC], LoadOEMCursor", "CWinApp [MFC], LoadOEMIcon", "CWinApp [MFC], LoadStandardCursor", "CWinApp [MFC], LoadStandardIcon", "CWinApp [MFC], OnDDECommand", "CWinApp [MFC], OnIdle", "CWinApp [MFC], OpenDocumentFile", "CWinApp [MFC], ParseCommandLine", "CWinApp [MFC], PreTranslateMessage", "CWinApp [MFC], ProcessMessageFilter", "CWinApp [MFC], ProcessShellCommand", "CWinApp [MFC], ProcessWndProcException", "CWinApp [MFC], Register", "CWinApp [MFC], RegisterWithRestartManager", "CWinApp [MFC], ReopenPreviousFilesAtRestart", "CWinApp [MFC], RestartInstance", "CWinApp [MFC], RestoreAutosavedFilesAtRestart", "CWinApp [MFC], Run", "CWinApp [MFC], RunAutomated", "CWinApp [MFC], RunEmbedded", "CWinApp [MFC], SaveAllModified", "CWinApp [MFC], SelectPrinter", "CWinApp [MFC], SetHelpMode", "CWinApp [MFC], SupportsApplicationRecovery", "CWinApp [MFC], SupportsAutosaveAtInterval", "CWinApp [MFC], SupportsAutosaveAtRestart", "CWinApp [MFC], SupportsRestartManager", "CWinApp [MFC], Unregister", "CWinApp [MFC], WinHelp", "CWinApp [MFC], WriteProfileBinary", "CWinApp [MFC], WriteProfileInt", "CWinApp [MFC], WriteProfileString", "CWinApp [MFC], EnableShellOpen", "CWinApp [MFC], LoadStdProfileSettings", "CWinApp [MFC], OnContextHelp", "CWinApp [MFC], OnFileNew", "CWinApp [MFC], OnFileOpen", "CWinApp [MFC], OnFilePrintSetup", "CWinApp [MFC], OnHelp", "CWinApp [MFC], OnHelpFinder", "CWinApp [MFC], OnHelpIndex", "CWinApp [MFC], OnHelpUsing", "CWinApp [MFC], RegisterShellFileTypes", "CWinApp [MFC], SetAppID", "CWinApp [MFC], SetRegistryKey", "CWinApp [MFC], UnregisterShellFileTypes", "CWinApp [MFC], m_bHelpMode", "CWinApp [MFC], m_eHelpType", "CWinApp [MFC], m_hInstance", "CWinApp [MFC], m_lpCmdLine", "CWinApp [MFC], m_nCmdShow", "CWinApp [MFC], m_pActiveWnd", "CWinApp [MFC], m_pszAppID", "CWinApp [MFC], m_pszAppName", "CWinApp [MFC], m_pszExeName", "CWinApp [MFC], m_pszHelpFilePath", "CWinApp [MFC], m_pszProfileName", "CWinApp [MFC], m_pszRegistryKey", "CWinApp [MFC], m_dwRestartManagerSupportFlags", "CWinApp [MFC], m_nAutosaveInterval", "CWinApp [MFC], m_pDataRecoveryHandler"]
-ms.assetid: e426a3cd-0d15-40d6-bd55-beaa5feb2343
 ---
 # CWinApp Class
 
@@ -962,7 +961,7 @@ HCURSOR LoadOEMCursor(UINT nIDCursor) const;
 ### Parameters
 
 *nIDCursor*<br/>
-An **OCR_** manifest constant identifier that specifies a predefined Windows cursor. You must have `#define OEMRESOURCE` before `#include \<afxwin.h>` to gain access to the **OCR_** constants in WINDOWS.H.
+An **OCR_** manifest constant identifier that specifies a predefined Windows cursor. You must have `#define OEMRESOURCE` before `#include <afxwin.h>` to gain access to the **OCR_** constants in WINDOWS.H.
 
 ### Return Value
 
@@ -989,7 +988,7 @@ HICON LoadOEMIcon(UINT nIDIcon) const;
 ### Parameters
 
 *nIDIcon*<br/>
-An **OIC_** manifest constant identifier that specifies a predefined Windows icon. You must have `#define OEMRESOURCE` before `#include \<afxwin.h>` to access the **OIC_** constants in WINDOWS.H.
+An **OIC_** manifest constant identifier that specifies a predefined Windows icon. You must have `#define OEMRESOURCE` before `#include <afxwin.h>` to access the **OIC_** constants in WINDOWS.H.
 
 ### Return Value
 
@@ -1535,7 +1534,7 @@ The framework calls this method to open the named [CDocument](../../mfc/referenc
 
 ```
 virtual CDocument* OpenDocumentFile(
-    LPCTSTR lpszFileName
+    LPCTSTR lpszFileName,
     BOOL bAddToMRU = TRUE);
 ```
 
@@ -1621,7 +1620,7 @@ virtual BOOL ProcessMessageFilter(
 Specifies a hook code. This member function uses the code to determine how to process *lpMsg.*
 
 *lpMsg*<br/>
-A pointer to a Windows [MSG](/windows/win32/api/winuser/ns-winuser-msg)tructure.
+A pointer to a Windows [MSG](/windows/win32/api/winuser/ns-winuser-msg) structure.
 
 ### Return Value
 
@@ -1692,7 +1691,7 @@ virtual LRESULT ProcessWndProcException(
 A pointer to an uncaught exception.
 
 *pMsg*<br/>
-A [MSG](/windows/win32/api/winuser/ns-winuser-msg)tructure that contains information about the windows message that caused the framework to throw an exception.
+A [MSG](/windows/win32/api/winuser/ns-winuser-msg) structure that contains information about the windows message that caused the framework to throw an exception.
 
 ### Return Value
 
@@ -1936,7 +1935,7 @@ void SelectPrinter(
 ### Parameters
 
 *hDevNames*<br/>
-A handle to a [DEVNAMES](/windows/win32/api/commdlg/ns-commdlg-devnames)tructure that identifies the driver, device, and output port names of a specific printer.
+A handle to a [DEVNAMES](/windows/win32/api/commdlg/ns-commdlg-devnames) structure that identifies the driver, device, and output port names of a specific printer.
 
 *hDevMode*<br/>
 A handle to a [DEVMODE](/windows/win32/api/wingdi/ns-wingdi-devmodea) structure that specifies information about the device initialization and environment of a printer.
diff --git a/docs/mfc/reference/cwinappex-class.md b/docs/mfc/reference/cwinappex-class.md
index d9c7ac4fad..85b0987718 100644
--- a/docs/mfc/reference/cwinappex-class.md
+++ b/docs/mfc/reference/cwinappex-class.md
@@ -970,7 +970,7 @@ virtual BOOL OnWorkspaceIdle(CWnd*);
 
 ### Parameters
 
-[in] *`CWnd*`*\
+[in] *`CWnd*`*
 
 ### Return Value
 
diff --git a/docs/mfc/reference/cwindowdc-class.md b/docs/mfc/reference/cwindowdc-class.md
index 19f890b5ce..e27c7be752 100644
--- a/docs/mfc/reference/cwindowdc-class.md
+++ b/docs/mfc/reference/cwindowdc-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: CWindowDC Class"
 title: "CWindowDC Class"
-ms.date: "11/04/2016"
+description: "Learn more about: CWindowDC Class"
+ms.date: 11/04/2016
 f1_keywords: ["CWindowDC", "AFXWIN/CWindowDC", "AFXWIN/CWindowDC::CWindowDC", "AFXWIN/CWindowDC::m_hWnd"]
 helpviewer_keywords: ["CWindowDC [MFC], CWindowDC", "CWindowDC [MFC], m_hWnd"]
-ms.assetid: 876a3641-4cde-471c-b0d1-fe58b32af79c
 ---
 # CWindowDC Class
 
@@ -32,7 +31,7 @@ class CWindowDC : public CDC
 
 ## Remarks
 
-Calls the Windows function [GetWindowDC](/windows/win32/api/winuser/nf-winuser-getwindowdc)at construction time and [ReleaseDC](/windows/win32/api/winuser/nf-winuser-releasedc) at destruction time. This means that a `CWindowDC` object accesses the entire screen area of a [CWnd](../../mfc/reference/cwnd-class.md) (both client and nonclient areas).
+Calls the Windows function [GetWindowDC](/windows/win32/api/winuser/nf-winuser-getwindowdc) at construction time and [ReleaseDC](/windows/win32/api/winuser/nf-winuser-releasedc) at destruction time. This means that a `CWindowDC` object accesses the entire screen area of a [CWnd](../../mfc/reference/cwnd-class.md) (both client and nonclient areas).
 
 For more information on using `CWindowDC`, see [Device Contexts](../../mfc/device-contexts.md).
 
diff --git a/docs/mfc/reference/cwnd-class.md b/docs/mfc/reference/cwnd-class.md
index 7465c5223e..215c54a398 100644
--- a/docs/mfc/reference/cwnd-class.md
+++ b/docs/mfc/reference/cwnd-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: CWnd Class"
 title: "CWnd Class"
-ms.date: "8/25/2021"
+description: "Learn more about: CWnd Class"
+ms.date: 8/25/2021
 f1_keywords: ["CWnd", "AFXWIN/CWnd", "AFXWIN/CWnd::CWnd", "AFXWIN/CWnd::accDoDefaultAction", "AFXWIN/CWnd::accHitTest", "AFXWIN/CWnd::accLocation", "AFXWIN/CWnd::accNavigate", "AFXWIN/CWnd::accSelect", "AFXWIN/CWnd::AnimateWindow", "AFXWIN/CWnd::ArrangeIconicWindows", "AFXWIN/CWnd::Attach", "AFXWIN/CWnd::BeginModalState", "AFXWIN/CWnd::BeginPaint", "AFXWIN/CWnd::BindDefaultProperty", "AFXWIN/CWnd::BindProperty", "AFXWIN/CWnd::BringWindowToTop", "AFXWIN/CWnd::CalcWindowRect", "AFXWIN/CWnd::CancelToolTips", "AFXWIN/CWnd::CenterWindow", "AFXWIN/CWnd::ChangeClipboardChain", "AFXWIN/CWnd::CheckDlgButton", "AFXWIN/CWnd::CheckRadioButton", "AFXWIN/CWnd::ChildWindowFromPoint", "AFXWIN/CWnd::ClientToScreen", "AFXWIN/CWnd::CloseWindow", "AFXWIN/CWnd::ContinueModal", "AFXWIN/CWnd::Create", "AFXWIN/CWnd::CreateAccessibleProxy", "AFXWIN/CWnd::CreateCaret", "AFXWIN/CWnd::CreateControl", "AFXWIN/CWnd::CreateEx", "AFXWIN/CWnd::CreateGrayCaret", "AFXWIN/CWnd::CreateSolidCaret", "AFXWIN/CWnd::DeleteTempMap", "AFXWIN/CWnd::DestroyWindow", "AFXWIN/CWnd::Detach", "AFXWIN/CWnd::DlgDirList", "AFXWIN/CWnd::DlgDirListComboBox", "AFXWIN/CWnd::DlgDirSelect", "AFXWIN/CWnd::DlgDirSelectComboBox", "AFXWIN/CWnd::DragAcceptFiles", "AFXWIN/CWnd::DragDetect", "AFXWIN/CWnd::DrawAnimatedRects", "AFXWIN/CWnd::DrawCaption", "AFXWIN/CWnd::DrawMenuBar", "AFXWIN/CWnd::EnableActiveAccessibility", "AFXWIN/CWnd::EnableDynamicLayout", "AFXWIN/CWnd::EnableD2DSupport", "AFXWIN/CWnd::EnableScrollBar", "AFXWIN/CWnd::EnableScrollBarCtrl", "AFXWIN/CWnd::EnableToolTips", "AFXWIN/CWnd::EnableTrackingToolTips", "AFXWIN/CWnd::EnableWindow", "AFXWIN/CWnd::EndModalLoop", "AFXWIN/CWnd::EndModalState", "AFXWIN/CWnd::EndPaint", "AFXWIN/CWnd::ExecuteDlgInit", "AFXWIN/CWnd::FilterToolTipMessage", "AFXWIN/CWnd::FindWindow", "AFXWIN/CWnd::FindWindowEx", "AFXWIN/CWnd::FlashWindow", "AFXWIN/CWnd::FlashWindowEx", "AFXWIN/CWnd::FromHandle", "AFXWIN/CWnd::FromHandlePermanent", "AFXWIN/CWnd::get_accChild", "AFXWIN/CWnd::get_accChildCount", "AFXWIN/CWnd::get_accDefaultAction", "AFXWIN/CWnd::get_accDescription", "AFXWIN/CWnd::get_accFocus", "AFXWIN/CWnd::get_accHelp", "AFXWIN/CWnd::get_accHelpTopic", "AFXWIN/CWnd::get_accKeyboardShortcut", "AFXWIN/CWnd::get_accName", "AFXWIN/CWnd::get_accParent", "AFXWIN/CWnd::get_accRole", "AFXWIN/CWnd::get_accSelection", "AFXWIN/CWnd::get_accState", "AFXWIN/CWnd::get_accValue", "AFXWIN/CWnd::GetActiveWindow", "AFXWIN/CWnd::GetAncestor", "AFXWIN/CWnd::GetCapture", "AFXWIN/CWnd::GetCaretPos", "AFXWIN/CWnd::GetCheckedRadioButton", "AFXWIN/CWnd::GetClientRect", "AFXWIN/CWnd::GetClipboardOwner", "AFXWIN/CWnd::GetClipboardViewer", "AFXWIN/CWnd::GetControlUnknown", "AFXWIN/CWnd::GetDC", "AFXWIN/CWnd::GetDCEx", "AFXWIN/CWnd::GetDCRenderTarget", "AFXWIN/CWnd::GetDescendantWindow", "AFXWIN/CWnd::GetDesktopWindow", "AFXWIN/CWnd::GetDlgCtrlID", "AFXWIN/CWnd::GetDlgItem", "AFXWIN/CWnd::GetDlgItemInt", "AFXWIN/CWnd::GetDlgItemText", "AFXWIN/CWnd::GetDSCCursor", "AFXWIN/CWnd::GetDynamicLayout", "AFXWIN/CWnd::GetExStyle", "AFXWIN/CWnd::GetFocus", "AFXWIN/CWnd::GetFont", "AFXWIN/CWnd::GetForegroundWindow", "AFXWIN/CWnd::GetIcon", "AFXWIN/CWnd::GetLastActivePopup", "AFXWIN/CWnd::GetLayeredWindowAttributes", "AFXWIN/CWnd::GetMenu", "AFXWIN/CWnd::GetNextDlgGroupItem", "AFXWIN/CWnd::GetNextDlgTabItem", "AFXWIN/CWnd::GetNextWindow", "AFXWIN/CWnd::GetOleControlSite", "AFXWIN/CWnd::GetOpenClipboardWindow", "AFXWIN/CWnd::GetOwner", "AFXWIN/CWnd::GetParent", "AFXWIN/CWnd::GetParentFrame", "AFXWIN/CWnd::GetParentOwner", "AFXWIN/CWnd::GetProperty", "AFXWIN/CWnd::GetRenderTarget", "AFXWIN/CWnd::GetSafeHwnd", "AFXWIN/CWnd::GetSafeOwner", "AFXWIN/CWnd::GetScrollBarCtrl", "AFXWIN/CWnd::GetScrollBarInfo", "AFXWIN/CWnd::GetScrollInfo", "AFXWIN/CWnd::GetScrollLimit", "AFXWIN/CWnd::GetScrollPos", "AFXWIN/CWnd::GetScrollRange", "AFXWIN/CWnd::GetStyle", "AFXWIN/CWnd::GetSystemMenu", "AFXWIN/CWnd::GetTitleBarInfo", "AFXWIN/CWnd::GetTopLevelFrame", "AFXWIN/CWnd::GetTopLevelOwner", "AFXWIN/CWnd::GetTopLevelParent", "AFXWIN/CWnd::GetTopWindow", "AFXWIN/CWnd::GetUpdateRect", "AFXWIN/CWnd::GetUpdateRgn", "AFXWIN/CWnd::GetWindow", "AFXWIN/CWnd::GetWindowContextHelpId", "AFXWIN/CWnd::GetWindowDC", "AFXWIN/CWnd::GetWindowedChildCount", "AFXWIN/CWnd::GetWindowInfo", "AFXWIN/CWnd::GetWindowlessChildCount", "AFXWIN/CWnd::GetWindowPlacement", "AFXWIN/CWnd::GetWindowRect", "AFXWIN/CWnd::GetWindowRgn", "AFXWIN/CWnd::GetWindowText", "AFXWIN/CWnd::GetWindowTextLength", "AFXWIN/CWnd::HideCaret", "AFXWIN/CWnd::HiliteMenuItem", "AFXWIN/CWnd::HtmlHelp", "AFXWIN/CWnd::Invalidate", "AFXWIN/CWnd::InvalidateRect", "AFXWIN/CWnd::InvalidateRgn", "AFXWIN/CWnd::InvokeHelper", "AFXWIN/CWnd::IsChild", "AFXWIN/CWnd::IsD2DSupportEnabled", "AFXWIN/CWnd::IsDialogMessage", "AFXWIN/CWnd::IsDlgButtonChecked", "AFXWIN/CWnd::IsDynamicLayoutEnabled", "AFXWIN/CWnd::IsIconic", "AFXWIN/CWnd::IsTouchWindow", "AFXWIN/CWnd::IsWindowEnabled", "AFXWIN/CWnd::IsWindowVisible", "AFXWIN/CWnd::IsZoomed", "AFXWIN/CWnd::KillTimer", "AFXWIN/CWnd::LockWindowUpdate", "AFXWIN/CWnd::MapWindowPoints", "AFXWIN/CWnd::MessageBox", "AFXWIN/CWnd::ModifyStyle", "AFXWIN/CWnd::ModifyStyleEx", "AFXWIN/CWnd::MoveWindow", "AFXWIN/CWnd::NotifyWinEvent", "AFXWIN/CWnd::OnAmbientProperty", "AFXWIN/CWnd::OnDrawIconicThumbnailOrLivePreview", "AFXWIN/CWnd::OnHelp", "AFXWIN/CWnd::OnHelpFinder", "AFXWIN/CWnd::OnHelpIndex", "AFXWIN/CWnd::OnHelpUsing", "AFXWIN/CWnd::OnToolHitTest", "AFXWIN/CWnd::OpenClipboard", "AFXWIN/CWnd::PaintWindowlessControls", "AFXWIN/CWnd::PostMessage", "AFXWIN/CWnd::PreCreateWindow", "AFXWIN/CWnd::PreSubclassWindow", "AFXWIN/CWnd::PreTranslateMessage", "AFXWIN/CWnd::Print", "AFXWIN/CWnd::PrintClient", "AFXWIN/CWnd::PrintWindow", "AFXWIN/CWnd::RedrawWindow", "AFXWIN/CWnd::RegisterTouchWindow", "AFXWIN/CWnd::ReleaseDC", "AFXWIN/CWnd::RepositionBars", "AFXWIN/CWnd::RunModalLoop", "AFXWIN/CWnd::ScreenToClient", "AFXWIN/CWnd::ScrollWindow", "AFXWIN/CWnd::ScrollWindowEx", "AFXWIN/CWnd::SendChildNotifyLastMsg", "AFXWIN/CWnd::SendDlgItemMessage", "AFXWIN/CWnd::SendMessage", "AFXWIN/CWnd::SendMessageToDescendants", "AFXWIN/CWnd::SendNotifyMessage", "AFXWIN/CWnd::SetActiveWindow", "AFXWIN/CWnd::SetCapture", "AFXWIN/CWnd::SetCaretPos", "AFXWIN/CWnd::SetClipboardViewer", "AFXWIN/CWnd::SetDlgCtrlID", "AFXWIN/CWnd::SetDlgItemInt", "AFXWIN/CWnd::SetDlgItemText", "AFXWIN/CWnd::SetFocus", "AFXWIN/CWnd::SetFont", "AFXWIN/CWnd::SetForegroundWindow", "AFXWIN/CWnd::SetIcon", "AFXWIN/CWnd::SetLayeredWindowAttributes", "AFXWIN/CWnd::SetMenu", "AFXWIN/CWnd::SetOwner", "AFXWIN/CWnd::SetParent", "AFXWIN/CWnd::SetProperty", "AFXWIN/CWnd::SetRedraw", "AFXWIN/CWnd::SetScrollInfo", "AFXWIN/CWnd::SetScrollPos", "AFXWIN/CWnd::SetScrollRange", "AFXWIN/CWnd::SetTimer", "AFXWIN/CWnd::SetWindowContextHelpId", "AFXWIN/CWnd::SetWindowPlacement", "AFXWIN/CWnd::SetWindowPos", "AFXWIN/CWnd::SetWindowRgn", "AFXWIN/CWnd::SetWindowText", "AFXWIN/CWnd::ShowCaret", "AFXWIN/CWnd::ShowOwnedPopups", "AFXWIN/CWnd::ShowScrollBar", "AFXWIN/CWnd::ShowWindow", "AFXWIN/CWnd::SubclassDlgItem", "AFXWIN/CWnd::SubclassWindow", "AFXWIN/CWnd::UnlockWindowUpdate", "AFXWIN/CWnd::UnsubclassWindow", "AFXWIN/CWnd::UpdateData", "AFXWIN/CWnd::UpdateDialogControls", "AFXWIN/CWnd::UpdateLayeredWindow", "AFXWIN/CWnd::UpdateWindow", "AFXWIN/CWnd::ValidateRect", "AFXWIN/CWnd::ValidateRgn", "AFXWIN/CWnd::WindowFromPoint", "AFXWIN/CWnd::WinHelp", "AFXWIN/CWnd::Default", "AFXWIN/CWnd::DefWindowProc", "AFXWIN/CWnd::DoDataExchange", "AFXWIN/CWnd::GetCurrentMessage", "AFXWIN/CWnd::InitDynamicLayout", "AFXWIN/CWnd::LoadDynamicLayoutResource", "AFXWIN/CWnd::OnActivate", "AFXWIN/CWnd::OnActivateApp", "AFXWIN/CWnd::OnAppCommand", "AFXWIN/CWnd::OnAskCbFormatName", "AFXWIN/CWnd::OnCancelMode", "AFXWIN/CWnd::OnCaptureChanged", "AFXWIN/CWnd::OnChangeCbChain", "AFXWIN/CWnd::OnChangeUIState", "AFXWIN/CWnd::OnChar", "AFXWIN/CWnd::OnCharToItem", "AFXWIN/CWnd::OnChildActivate", "AFXWIN/CWnd::OnChildNotify", "AFXWIN/CWnd::OnClipboardUpdate", "AFXWIN/CWnd::OnClose", "AFXWIN/CWnd::OnColorizationColorChanged", "AFXWIN/CWnd::OnCommand", "AFXWIN/CWnd::OnCompacting", "AFXWIN/CWnd::OnCompareItem", "AFXWIN/CWnd::OnCompositionChanged", "AFXWIN/CWnd::OnContextMenu", "AFXWIN/CWnd::OnCopyData", "AFXWIN/CWnd::OnCreate", "AFXWIN/CWnd::OnCtlColor", "AFXWIN/CWnd::OnDeadChar", "AFXWIN/CWnd::OnDeleteItem", "AFXWIN/CWnd::OnDestroy", "AFXWIN/CWnd::OnDestroyClipboard", "AFXWIN/CWnd::OnDeviceChange", "AFXWIN/CWnd::OnDevModeChange", "AFXWIN/CWnd::OnDrawClipboard", "AFXWIN/CWnd::OnDrawItem", "AFXWIN/CWnd::OnDropFiles", "AFXWIN/CWnd::OnEnable", "AFXWIN/CWnd::OnEndSession", "AFXWIN/CWnd::OnEnterIdle", "AFXWIN/CWnd::OnEnterMenuLoop", "AFXWIN/CWnd::OnEnterSizeMove", "AFXWIN/CWnd::OnEraseBkgnd", "AFXWIN/CWnd::OnExitMenuLoop", "AFXWIN/CWnd::OnExitSizeMove", "AFXWIN/CWnd::OnFontChange", "AFXWIN/CWnd::OnGetDlgCode", "AFXWIN/CWnd::OnGetMinMaxInfo", "AFXWIN/CWnd::OnHelpInfo", "AFXWIN/CWnd::OnHotKey", "AFXWIN/CWnd::OnHScroll", "AFXWIN/CWnd::OnHScrollClipboard", "AFXWIN/CWnd::OnIconEraseBkgnd", "AFXWIN/CWnd::OnInitMenu", "AFXWIN/CWnd::OnInitMenuPopup", "AFXWIN/CWnd::OnInputDeviceChange", "AFXWIN/CWnd::OnInputLangChange", "AFXWIN/CWnd::OnInputLangChangeRequest", "AFXWIN/CWnd::OnKeyDown", "AFXWIN/CWnd::OnKeyUp", "AFXWIN/CWnd::OnKillFocus", "AFXWIN/CWnd::OnLButtonDblClk", "AFXWIN/CWnd::OnLButtonDown", "AFXWIN/CWnd::OnLButtonUp", "AFXWIN/CWnd::OnMButtonDblClk", "AFXWIN/CWnd::OnMButtonDown", "AFXWIN/CWnd::OnMButtonUp", "AFXWIN/CWnd::OnMDIActivate", "AFXWIN/CWnd::OnMeasureItem", "AFXWIN/CWnd::OnMenuChar", "AFXWIN/CWnd::OnMenuDrag", "AFXWIN/CWnd::OnMenuGetObject", "AFXWIN/CWnd::OnMenuRButtonUp", "AFXWIN/CWnd::OnMenuSelect", "AFXWIN/CWnd::OnMouseActivate", "AFXWIN/CWnd::OnMouseHover", "AFXWIN/CWnd::OnMouseHWheel", "AFXWIN/CWnd::OnMouseLeave", "AFXWIN/CWnd::OnMouseMove", "AFXWIN/CWnd::OnMouseWheel", "AFXWIN/CWnd::OnMove", "AFXWIN/CWnd::OnMoving", "AFXWIN/CWnd::OnNcActivate", "AFXWIN/CWnd::OnNcCalcSize", "AFXWIN/CWnd::OnNcCreate", "AFXWIN/CWnd::OnNcDestroy", "AFXWIN/CWnd::OnNcHitTest", "AFXWIN/CWnd::OnNcLButtonDblClk", "AFXWIN/CWnd::OnNcLButtonDown", "AFXWIN/CWnd::OnNcLButtonUp", "AFXWIN/CWnd::OnNcMButtonDblClk", "AFXWIN/CWnd::OnNcMButtonDown", "AFXWIN/CWnd::OnNcMButtonUp", "AFXWIN/CWnd::OnNcMouseHover", "AFXWIN/CWnd::OnNcMouseLeave", "AFXWIN/CWnd::OnNcMouseMove", "AFXWIN/CWnd::OnNcPaint", "AFXWIN/CWnd::OnNcRButtonDblClk", "AFXWIN/CWnd::OnNcRButtonDown", "AFXWIN/CWnd::OnNcRButtonUp", "AFXWIN/CWnd::OnNcRenderingChanged", "AFXWIN/CWnd::OnNcXButtonDblClk", "AFXWIN/CWnd::OnNcXButtonDown", "AFXWIN/CWnd::OnNcXButtonUp", "AFXWIN/CWnd::OnNextMenu", "AFXWIN/CWnd::OnNotify", "AFXWIN/CWnd::OnNotifyFormat", "AFXWIN/CWnd::OnPaint", "AFXWIN/CWnd::OnPaintClipboard", "AFXWIN/CWnd::OnPaletteChanged", "AFXWIN/CWnd::OnPaletteIsChanging", "AFXWIN/CWnd::OnParentNotify", "AFXWIN/CWnd::OnPowerBroadcast", "AFXWIN/CWnd::OnQueryDragIcon", "AFXWIN/CWnd::OnQueryEndSession", "AFXWIN/CWnd::OnQueryNewPalette", "AFXWIN/CWnd::OnQueryOpen", "AFXWIN/CWnd::OnQueryUIState", "AFXWIN/CWnd::OnRawInput", "AFXWIN/CWnd::OnRButtonDblClk", "AFXWIN/CWnd::OnRButtonDown", "AFXWIN/CWnd::OnRButtonUp", "AFXWIN/CWnd::OnRenderAllFormats", "AFXWIN/CWnd::OnRenderFormat", "AFXWIN/CWnd::OnSessionChange", "AFXWIN/CWnd::OnSetCursor", "AFXWIN/CWnd::OnSetFocus", "AFXWIN/CWnd::OnSettingChange", "AFXWIN/CWnd::OnShowWindow", "AFXWIN/CWnd::OnSize", "AFXWIN/CWnd::OnSizeClipboard", "AFXWIN/CWnd::OnSizing", "AFXWIN/CWnd::OnSpoolerStatus", "AFXWIN/CWnd::OnStyleChanged", "AFXWIN/CWnd::OnStyleChanging", "AFXWIN/CWnd::OnSysChar", "AFXWIN/CWnd::OnSysColorChange", "AFXWIN/CWnd::OnSysCommand", "AFXWIN/CWnd::OnSysDeadChar", "AFXWIN/CWnd::OnSysKeyDown", "AFXWIN/CWnd::OnSysKeyUp", "AFXWIN/CWnd::OnTCard", "AFXWIN/CWnd::OnTimeChange", "AFXWIN/CWnd::OnTimer", "AFXWIN/CWnd::OnTouchInput", "AFXWIN/CWnd::OnTouchInputs", "AFXWIN/CWnd::OnUniChar", "AFXWIN/CWnd::OnUnInitMenuPopup", "AFXWIN/CWnd::OnUpdateUIState", "AFXWIN/CWnd::OnUserChanged", "AFXWIN/CWnd::OnVKeyToItem", "AFXWIN/CWnd::OnVScroll", "AFXWIN/CWnd::OnVScrollClipboard", "AFXWIN/CWnd::OnWindowPosChanged", "AFXWIN/CWnd::OnWindowPosChanging", "AFXWIN/CWnd::OnWinIniChange", "AFXWIN/CWnd::OnWndMsg", "AFXWIN/CWnd::OnXButtonDblClk", "AFXWIN/CWnd::OnXButtonDown", "AFXWIN/CWnd::OnXButtonUp", "AFXWIN/CWnd::PostNcDestroy", "AFXWIN/CWnd::ReflectChildNotify", "AFXWIN/CWnd::ReflectLastMsg", "AFXWIN/CWnd::ResizeDynamicLayout", "AFXWIN/CWnd::WindowProc", "AFXWIN/CWnd::m_hWnd"]
 helpviewer_keywords: ["CWnd [MFC], CWnd", "CWnd [MFC], accDoDefaultAction", "CWnd [MFC], accHitTest", "CWnd [MFC], accLocation", "CWnd [MFC], accNavigate", "CWnd [MFC], accSelect", "CWnd [MFC], AnimateWindow", "CWnd [MFC], ArrangeIconicWindows", "CWnd [MFC], Attach", "CWnd [MFC], BeginModalState", "CWnd [MFC], BeginPaint", "CWnd [MFC], BindDefaultProperty", "CWnd [MFC], BindProperty", "CWnd [MFC], BringWindowToTop", "CWnd [MFC], CalcWindowRect", "CWnd [MFC], CancelToolTips", "CWnd [MFC], CenterWindow", "CWnd [MFC], ChangeClipboardChain", "CWnd [MFC], CheckDlgButton", "CWnd [MFC], CheckRadioButton", "CWnd [MFC], ChildWindowFromPoint", "CWnd [MFC], ClientToScreen", "CWnd [MFC], CloseWindow", "CWnd [MFC], ContinueModal", "CWnd [MFC], Create", "CWnd [MFC], CreateAccessibleProxy", "CWnd [MFC], CreateCaret", "CWnd [MFC], CreateControl", "CWnd [MFC], CreateEx", "CWnd [MFC], CreateGrayCaret", "CWnd [MFC], CreateSolidCaret", "CWnd [MFC], DeleteTempMap", "CWnd [MFC], DestroyWindow", "CWnd [MFC], Detach", "CWnd [MFC], DlgDirList", "CWnd [MFC], DlgDirListComboBox", "CWnd [MFC], DlgDirSelect", "CWnd [MFC], DlgDirSelectComboBox", "CWnd [MFC], DragAcceptFiles", "CWnd [MFC], DragDetect", "CWnd [MFC], DrawAnimatedRects", "CWnd [MFC], DrawCaption", "CWnd [MFC], DrawMenuBar", "CWnd [MFC], EnableActiveAccessibility", "CWnd [MFC], EnableDynamicLayout", "CWnd [MFC], EnableD2DSupport", "CWnd [MFC], EnableScrollBar", "CWnd [MFC], EnableScrollBarCtrl", "CWnd [MFC], EnableToolTips", "CWnd [MFC], EnableTrackingToolTips", "CWnd [MFC], EnableWindow", "CWnd [MFC], EndModalLoop", "CWnd [MFC], EndModalState", "CWnd [MFC], EndPaint", "CWnd [MFC], ExecuteDlgInit", "CWnd [MFC], FilterToolTipMessage", "CWnd [MFC], FindWindow", "CWnd [MFC], FindWindowEx", "CWnd [MFC], FlashWindow", "CWnd [MFC], FlashWindowEx", "CWnd [MFC], FromHandle", "CWnd [MFC], FromHandlePermanent", "CWnd [MFC], get_accChild", "CWnd [MFC], get_accChildCount", "CWnd [MFC], get_accDefaultAction", "CWnd [MFC], get_accDescription", "CWnd [MFC], get_accFocus", "CWnd [MFC], get_accHelp", "CWnd [MFC], get_accHelpTopic", "CWnd [MFC], get_accKeyboardShortcut", "CWnd [MFC], get_accName", "CWnd [MFC], get_accParent", "CWnd [MFC], get_accRole", "CWnd [MFC], get_accSelection", "CWnd [MFC], get_accState", "CWnd [MFC], get_accValue", "CWnd [MFC], GetActiveWindow", "CWnd [MFC], GetAncestor", "CWnd [MFC], GetCapture", "CWnd [MFC], GetCaretPos", "CWnd [MFC], GetCheckedRadioButton", "CWnd [MFC], GetClientRect", "CWnd [MFC], GetClipboardOwner", "CWnd [MFC], GetClipboardViewer", "CWnd [MFC], GetControlUnknown", "CWnd [MFC], GetDC", "CWnd [MFC], GetDCEx", "CWnd [MFC], GetDCRenderTarget", "CWnd [MFC], GetDescendantWindow", "CWnd [MFC], GetDesktopWindow", "CWnd [MFC], GetDlgCtrlID", "CWnd [MFC], GetDlgItem", "CWnd [MFC], GetDlgItemInt", "CWnd [MFC], GetDlgItemText", "CWnd [MFC], GetDSCCursor", "CWnd [MFC], GetDynamicLayout", "CWnd [MFC], GetExStyle", "CWnd [MFC], GetFocus", "CWnd [MFC], GetFont", "CWnd [MFC], GetForegroundWindow", "CWnd [MFC], GetIcon", "CWnd [MFC], GetLastActivePopup", "CWnd [MFC], GetLayeredWindowAttributes", "CWnd [MFC], GetMenu", "CWnd [MFC], GetNextDlgGroupItem", "CWnd [MFC], GetNextDlgTabItem", "CWnd [MFC], GetNextWindow", "CWnd [MFC], GetOleControlSite", "CWnd [MFC], GetOpenClipboardWindow", "CWnd [MFC], GetOwner", "CWnd [MFC], GetParent", "CWnd [MFC], GetParentFrame", "CWnd [MFC], GetParentOwner", "CWnd [MFC], GetProperty", "CWnd [MFC], GetRenderTarget", "CWnd [MFC], GetSafeHwnd", "CWnd [MFC], GetSafeOwner", "CWnd [MFC], GetScrollBarCtrl", "CWnd [MFC], GetScrollBarInfo", "CWnd [MFC], GetScrollInfo", "CWnd [MFC], GetScrollLimit", "CWnd [MFC], GetScrollPos", "CWnd [MFC], GetScrollRange", "CWnd [MFC], GetStyle", "CWnd [MFC], GetSystemMenu", "CWnd [MFC], GetTitleBarInfo", "CWnd [MFC], GetTopLevelFrame", "CWnd [MFC], GetTopLevelOwner", "CWnd [MFC], GetTopLevelParent", "CWnd [MFC], GetTopWindow", "CWnd [MFC], GetUpdateRect", "CWnd [MFC], GetUpdateRgn", "CWnd [MFC], GetWindow", "CWnd [MFC], GetWindowContextHelpId", "CWnd [MFC], GetWindowDC", "CWnd [MFC], GetWindowedChildCount", "CWnd [MFC], GetWindowInfo", "CWnd [MFC], GetWindowlessChildCount", "CWnd [MFC], GetWindowPlacement", "CWnd [MFC], GetWindowRect", "CWnd [MFC], GetWindowRgn", "CWnd [MFC], GetWindowText", "CWnd [MFC], GetWindowTextLength", "CWnd [MFC], HideCaret", "CWnd [MFC], HiliteMenuItem", "CWnd [MFC], HtmlHelp", "CWnd [MFC], Invalidate", "CWnd [MFC], InvalidateRect", "CWnd [MFC], InvalidateRgn", "CWnd [MFC], InvokeHelper", "CWnd [MFC], IsChild", "CWnd [MFC], IsD2DSupportEnabled", "CWnd [MFC], IsDialogMessage", "CWnd [MFC], IsDlgButtonChecked", "CWnd [MFC], IsDynamicLayoutEnabled", "CWnd [MFC], IsIconic", "CWnd [MFC], IsTouchWindow", "CWnd [MFC], IsWindowEnabled", "CWnd [MFC], IsWindowVisible", "CWnd [MFC], IsZoomed", "CWnd [MFC], KillTimer", "CWnd [MFC], LockWindowUpdate", "CWnd [MFC], MapWindowPoints", "CWnd [MFC], MessageBox", "CWnd [MFC], ModifyStyle", "CWnd [MFC], ModifyStyleEx", "CWnd [MFC], MoveWindow", "CWnd [MFC], NotifyWinEvent", "CWnd [MFC], OnAmbientProperty", "CWnd [MFC], OnDrawIconicThumbnailOrLivePreview", "CWnd [MFC], OnHelp", "CWnd [MFC], OnHelpFinder", "CWnd [MFC], OnHelpIndex", "CWnd [MFC], OnHelpUsing", "CWnd [MFC], OnToolHitTest", "CWnd [MFC], OpenClipboard", "CWnd [MFC], PaintWindowlessControls", "CWnd [MFC], PostMessage", "CWnd [MFC], PreCreateWindow", "CWnd [MFC], PreSubclassWindow", "CWnd [MFC], PreTranslateMessage", "CWnd [MFC], Print", "CWnd [MFC], PrintClient", "CWnd [MFC], PrintWindow", "CWnd [MFC], RedrawWindow", "CWnd [MFC], RegisterTouchWindow", "CWnd [MFC], ReleaseDC", "CWnd [MFC], RepositionBars", "CWnd [MFC], RunModalLoop", "CWnd [MFC], ScreenToClient", "CWnd [MFC], ScrollWindow", "CWnd [MFC], ScrollWindowEx", "CWnd [MFC], SendChildNotifyLastMsg", "CWnd [MFC], SendDlgItemMessage", "CWnd [MFC], SendMessage", "CWnd [MFC], SendMessageToDescendants", "CWnd [MFC], SendNotifyMessage", "CWnd [MFC], SetActiveWindow", "CWnd [MFC], SetCapture", "CWnd [MFC], SetCaretPos", "CWnd [MFC], SetClipboardViewer", "CWnd [MFC], SetDlgCtrlID", "CWnd [MFC], SetDlgItemInt", "CWnd [MFC], SetDlgItemText", "CWnd [MFC], SetFocus", "CWnd [MFC], SetFont", "CWnd [MFC], SetForegroundWindow", "CWnd [MFC], SetIcon", "CWnd [MFC], SetLayeredWindowAttributes", "CWnd [MFC], SetMenu", "CWnd [MFC], SetOwner", "CWnd [MFC], SetParent", "CWnd [MFC], SetProperty", "CWnd [MFC], SetRedraw", "CWnd [MFC], SetScrollInfo", "CWnd [MFC], SetScrollPos", "CWnd [MFC], SetScrollRange", "CWnd [MFC], SetTimer", "CWnd [MFC], SetWindowContextHelpId", "CWnd [MFC], SetWindowPlacement", "CWnd [MFC], SetWindowPos", "CWnd [MFC], SetWindowRgn", "CWnd [MFC], SetWindowText", "CWnd [MFC], ShowCaret", "CWnd [MFC], ShowOwnedPopups", "CWnd [MFC], ShowScrollBar", "CWnd [MFC], ShowWindow", "CWnd [MFC], SubclassDlgItem", "CWnd [MFC], SubclassWindow", "CWnd [MFC], UnlockWindowUpdate", "CWnd [MFC], UnsubclassWindow", "CWnd [MFC], UpdateData", "CWnd [MFC], UpdateDialogControls", "CWnd [MFC], UpdateLayeredWindow", "CWnd [MFC], UpdateWindow", "CWnd [MFC], ValidateRect", "CWnd [MFC], ValidateRgn", "CWnd [MFC], WindowFromPoint", "CWnd [MFC], WinHelp", "CWnd [MFC], Default", "CWnd [MFC], DefWindowProc", "CWnd [MFC], DoDataExchange", "CWnd [MFC], GetCurrentMessage", "CWnd [MFC], InitDynamicLayout", "CWnd [MFC], LoadDynamicLayoutResource", "CWnd [MFC], OnActivate", "CWnd [MFC], OnActivateApp", "CWnd [MFC], OnAppCommand", "CWnd [MFC], OnAskCbFormatName", "CWnd [MFC], OnCancelMode", "CWnd [MFC], OnCaptureChanged", "CWnd [MFC], OnChangeCbChain", "CWnd [MFC], OnChangeUIState", "CWnd [MFC], OnChar", "CWnd [MFC], OnCharToItem", "CWnd [MFC], OnChildActivate", "CWnd [MFC], OnChildNotify", "CWnd [MFC], OnClipboardUpdate", "CWnd [MFC], OnClose", "CWnd [MFC], OnColorizationColorChanged", "CWnd [MFC], OnCommand", "CWnd [MFC], OnCompacting", "CWnd [MFC], OnCompareItem", "CWnd [MFC], OnCompositionChanged", "CWnd [MFC], OnContextMenu", "CWnd [MFC], OnCopyData", "CWnd [MFC], OnCreate", "CWnd [MFC], OnCtlColor", "CWnd [MFC], OnDeadChar", "CWnd [MFC], OnDeleteItem", "CWnd [MFC], OnDestroy", "CWnd [MFC], OnDestroyClipboard", "CWnd [MFC], OnDeviceChange", "CWnd [MFC], OnDevModeChange", "CWnd [MFC], OnDrawClipboard", "CWnd [MFC], OnDrawItem", "CWnd [MFC], OnDropFiles", "CWnd [MFC], OnEnable", "CWnd [MFC], OnEndSession", "CWnd [MFC], OnEnterIdle", "CWnd [MFC], OnEnterMenuLoop", "CWnd [MFC], OnEnterSizeMove", "CWnd [MFC], OnEraseBkgnd", "CWnd [MFC], OnExitMenuLoop", "CWnd [MFC], OnExitSizeMove", "CWnd [MFC], OnFontChange", "CWnd [MFC], OnGetDlgCode", "CWnd [MFC], OnGetMinMaxInfo", "CWnd [MFC], OnHelpInfo", "CWnd [MFC], OnHotKey", "CWnd [MFC], OnHScroll", "CWnd [MFC], OnHScrollClipboard", "CWnd [MFC], OnIconEraseBkgnd", "CWnd [MFC], OnInitMenu", "CWnd [MFC], OnInitMenuPopup", "CWnd [MFC], OnInputDeviceChange", "CWnd [MFC], OnInputLangChange", "CWnd [MFC], OnInputLangChangeRequest", "CWnd [MFC], OnKeyDown", "CWnd [MFC], OnKeyUp", "CWnd [MFC], OnKillFocus", "CWnd [MFC], OnLButtonDblClk", "CWnd [MFC], OnLButtonDown", "CWnd [MFC], OnLButtonUp", "CWnd [MFC], OnMButtonDblClk", "CWnd [MFC], OnMButtonDown", "CWnd [MFC], OnMButtonUp", "CWnd [MFC], OnMDIActivate", "CWnd [MFC], OnMeasureItem", "CWnd [MFC], OnMenuChar", "CWnd [MFC], OnMenuDrag", "CWnd [MFC], OnMenuGetObject", "CWnd [MFC], OnMenuRButtonUp", "CWnd [MFC], OnMenuSelect", "CWnd [MFC], OnMouseActivate", "CWnd [MFC], OnMouseHover", "CWnd [MFC], OnMouseHWheel", "CWnd [MFC], OnMouseLeave", "CWnd [MFC], OnMouseMove", "CWnd [MFC], OnMouseWheel", "CWnd [MFC], OnMove", "CWnd [MFC], OnMoving", "CWnd [MFC], OnNcActivate", "CWnd [MFC], OnNcCalcSize", "CWnd [MFC], OnNcCreate", "CWnd [MFC], OnNcDestroy", "CWnd [MFC], OnNcHitTest", "CWnd [MFC], OnNcLButtonDblClk", "CWnd [MFC], OnNcLButtonDown", "CWnd [MFC], OnNcLButtonUp", "CWnd [MFC], OnNcMButtonDblClk", "CWnd [MFC], OnNcMButtonDown", "CWnd [MFC], OnNcMButtonUp", "CWnd [MFC], OnNcMouseHover", "CWnd [MFC], OnNcMouseLeave", "CWnd [MFC], OnNcMouseMove", "CWnd [MFC], OnNcPaint", "CWnd [MFC], OnNcRButtonDblClk", "CWnd [MFC], OnNcRButtonDown", "CWnd [MFC], OnNcRButtonUp", "CWnd [MFC], OnNcRenderingChanged", "CWnd [MFC], OnNcXButtonDblClk", "CWnd [MFC], OnNcXButtonDown", "CWnd [MFC], OnNcXButtonUp", "CWnd [MFC], OnNextMenu", "CWnd [MFC], OnNotify", "CWnd [MFC], OnNotifyFormat", "CWnd [MFC], OnPaint", "CWnd [MFC], OnPaintClipboard", "CWnd [MFC], OnPaletteChanged", "CWnd [MFC], OnPaletteIsChanging", "CWnd [MFC], OnParentNotify", "CWnd [MFC], OnPowerBroadcast", "CWnd [MFC], OnQueryDragIcon", "CWnd [MFC], OnQueryEndSession", "CWnd [MFC], OnQueryNewPalette", "CWnd [MFC], OnQueryOpen", "CWnd [MFC], OnQueryUIState", "CWnd [MFC], OnRawInput", "CWnd [MFC], OnRButtonDblClk", "CWnd [MFC], OnRButtonDown", "CWnd [MFC], OnRButtonUp", "CWnd [MFC], OnRenderAllFormats", "CWnd [MFC], OnRenderFormat", "CWnd [MFC], OnSessionChange", "CWnd [MFC], OnSetCursor", "CWnd [MFC], OnSetFocus", "CWnd [MFC], OnSettingChange", "CWnd [MFC], OnShowWindow", "CWnd [MFC], OnSize", "CWnd [MFC], OnSizeClipboard", "CWnd [MFC], OnSizing", "CWnd [MFC], OnSpoolerStatus", "CWnd [MFC], OnStyleChanged", "CWnd [MFC], OnStyleChanging", "CWnd [MFC], OnSysChar", "CWnd [MFC], OnSysColorChange", "CWnd [MFC], OnSysCommand", "CWnd [MFC], OnSysDeadChar", "CWnd [MFC], OnSysKeyDown", "CWnd [MFC], OnSysKeyUp", "CWnd [MFC], OnTCard", "CWnd [MFC], OnTimeChange", "CWnd [MFC], OnTimer", "CWnd [MFC], OnTouchInput", "CWnd [MFC], OnTouchInputs", "CWnd [MFC], OnUniChar", "CWnd [MFC], OnUnInitMenuPopup", "CWnd [MFC], OnUpdateUIState", "CWnd [MFC], OnUserChanged", "CWnd [MFC], OnVKeyToItem", "CWnd [MFC], OnVScroll", "CWnd [MFC], OnVScrollClipboard", "CWnd [MFC], OnWindowPosChanged", "CWnd [MFC], OnWindowPosChanging", "CWnd [MFC], OnWinIniChange", "CWnd [MFC], OnWndMsg", "CWnd [MFC], OnXButtonDblClk", "CWnd [MFC], OnXButtonDown", "CWnd [MFC], OnXButtonUp", "CWnd [MFC], PostNcDestroy", "CWnd [MFC], ReflectChildNotify", "CWnd [MFC], ReflectLastMsg", "CWnd [MFC], ResizeDynamicLayout", "CWnd [MFC], WindowProc", "CWnd [MFC], m_hWnd"]
 ---
@@ -1245,7 +1245,7 @@ Points to a [`POINT` structure](/windows/win32/api/windef/ns-windef-point) or `C
 *`pSize`*<br/>
 Points to a [`SIZE`](/windows/win32/api/windef/ns-windef-size) structure or `CSize` object that contains the control's size
 
-*`pParentWnd*`<br/>
+*`pParentWnd`*<br/>
 Specifies the control's parent window. It must not be `NULL`.
 
 *`nID`*<br/>
@@ -2319,7 +2319,7 @@ BOOL FlashWindowEx(
 
 ### Parameters
 
-*`dwFlags*`<br/>
+*`dwFlags`*<br/>
 Specifies the flash status. For a complete list of values, see the [`FLASHWINFO`](/windows/win32/api/winuser/ns-winuser-flashwinfo) structure.
 
 *`uCount`*<br/>
@@ -4107,7 +4107,7 @@ CWnd* GetWindow(UINT nCmd) const;
 
 ### Parameters
 
-*`nCmd*`<br/>
+*`nCmd`*<br/>
 Specifies the relationship between `CWnd` and the returned window. It can take one of the following values:
 
 - `GW_CHILD` Identifies the `CWnd` first child window.
diff --git a/docs/mfc/reference/data-types-mfc.md b/docs/mfc/reference/data-types-mfc.md
index d1790212f1..9893062dab 100644
--- a/docs/mfc/reference/data-types-mfc.md
+++ b/docs/mfc/reference/data-types-mfc.md
@@ -1,24 +1,22 @@
 ---
-description: "Learn more about: Data Types (MFC)"
 title: "Data Types (MFC)"
-ms.date: "11/04/2016"
+description: "Learn more about: Data Types (MFC)"
+ms.date: 11/04/2016
 f1_keywords: ["LPCRECT", "POSITION"]
 helpviewer_keywords: ["LPCRECT data type [MFC]", "WPARAM data type [MFC]", "data types [MFC], MFC", "LRESULT [MFC]", "POSITION data type [MFC]", "UINT [MFC]", "LPVOID data type [MFC]", "COLORREF [MFC]", "LPCTSTR [MFC]", "LPSTR [MFC]", "DWORD operator [MFC]", "WORD data type [MFC]", "LPTSTR [MFC]", "BYTE data type (Windows)", "Long data type [MFC], Windows types", "Boolean data type [MFC], supported data types", "LPARAM data type [MFC]", "LPCSTR [MFC]"]
-ms.assetid: 8954848b-2c01-4a4f-abf5-ee55f6a05eeb
 ---
 # Data Types (MFC)
 
-This topic lists the data types most commonly used in the Microsoft Foundation Class Library. Most of the data types are the same as those in the Platform Software Development Kit (SDK), while others are unique to MFC.
-
-For information about the data types used in both the             Windows SDK and MFC, see             [Windows Data Types](/windows/win32/WinProg/windows-data-types).
+This topic lists the data types most commonly used in the Microsoft Foundation Class (MFC) Library. Most of the data types are the same as those in the Platform Software Development Kit (SDK), while others are unique to MFC.
 
-Data types unique to the Microsoft Foundation Class Library include the following:
+For information about the data types used in both the Windows SDK and MFC, see [Windows Data Types](/windows/win32/WinProg/windows-data-types).
 
-- POSITION A value used to denote the position of an element in a collection; used by MFC collection classes.
+Data types unique to MFC include the following:
 
-- LPCRECT A 32-bit pointer to a constant (nonmodifiable)                     `RECT` structure.
+- `POSITION` - A value used to denote the position of an element in a collection; used by MFC collection classes.
+- `LPCRECT` - A 32-bit pointer to a constant (nonmodifiable) [`RECT`](/windows/win32/api/windef/ns-windef-rect) structure.
 
 ## See also
 
-[Class Overview](../../mfc/class-library-overview.md)<br/>
-[Macros and Globals](../../mfc/reference/mfc-macros-and-globals.md)
+[Class Overview](../class-library-overview.md)\
+[Macros and Globals](mfc-macros-and-globals.md)
diff --git a/docs/mfc/reference/delegate-and-interface-maps.md b/docs/mfc/reference/delegate-and-interface-maps.md
index f190e37f4e..518e659915 100644
--- a/docs/mfc/reference/delegate-and-interface-maps.md
+++ b/docs/mfc/reference/delegate-and-interface-maps.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Delegate and interface map macros"
 title: "Delegate and Interface Map Macros (MFC)"
-ms.date: "03/30/2017"
+description: "Learn more about: Delegate and interface map macros"
+ms.date: 03/30/2017
 helpviewer_keywords: ["delegate map macros [MFC]", "event map macros [MFC]", "interface map macros [MFC]"]
-ms.assetid: 3840e642-ff7d-4bdc-998b-c7d8fc50890e
 ---
 # Delegate and interface map macros
 
@@ -215,8 +214,10 @@ INTERFACE_PART( theClass, iid, localClass)
 
 *theClass*<br/>
 The name of the class that contains the interface map.
+
 *iid*<br/>
 The IID that is to be mapped to the embedded class.
+
 *localClass*<br/>
 The name of the local class.
 
diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md
index 7bd4aab539..18c273ec9e 100644
--- a/docs/mfc/reference/diagnostic-services.md
+++ b/docs/mfc/reference/diagnostic-services.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Diagnostic Services"
 title: "Diagnostic Services"
+description: "Learn more about: Diagnostic Services"
 ms.date: 06/29/2022
 helpviewer_keywords: ["diagnosi [MFC]s, diagnostic services", "diagnostic macros [MFC], list of general MFC", "services [MFC], diagnostic", "MFC, diagnostic services", "general diagnostic functions and variables [MFC]", "diagnostics [MFC], diagnostic functions and variables", "diagnostics [MFC], list of general MFC", "diagnosis [MFC], diagnostic functions and variables", "diagnosis [MFC], list of general MFC", "general diagnostic macros in MFC", "diagnostic macros [MFC]", "diagnostic services [MFC]", "object diagnostic functions in MFC", "diagnostics [MFC], diagnostic services", "diagnostic functions and variables [MFC]"]
-ms.assetid: 8d78454f-9fae-49c2-88c9-d3fabd5393e8
 ---
 # Diagnostic Services
 
@@ -77,7 +76,7 @@ Suppresses compiler warnings for the use of deprecated MFC functions.
 
 ### Syntax
 
-```
+```cpp
 _AFX_SECURE_NO_WARNINGS
 ```
 
@@ -105,7 +104,7 @@ Call this function to cause a break (at the location of the call to `AfxDebugBre
 ### Syntax
 
 ```cpp
-void AfxDebugBreak( );
+void AfxDebugBreak();
 ```
 
 ### Remarks
@@ -120,13 +119,13 @@ void AfxDebugBreak( );
 
 Evaluates its argument.
 
-```
+```cpp
 ASSERT(booleanExpression)
 ```
 
 ### Parameters
 
-*booleanExpression*<br/>
+*booleanExpression*\
 Specifies an expression (including pointer values) that evaluates to nonzero or 0.
 
 ### Remarks
@@ -156,16 +155,16 @@ In the Release version of MFC, ASSERT does not evaluate the expression and thus
 
 This macro asserts that the object pointed to is an object of the specified class, or is an object of a class derived from the specified class.
 
-```
+```cpp
 ASSERT_KINDOF(classname, pobject)
 ```
 
 ### Parameters
 
-*classname*<br/>
+*classname*\
 The name of a `CObject`-derived class.
 
-*pobject*<br/>
+*pobject*\
 A pointer to a class object.
 
 ### Remarks
@@ -178,7 +177,7 @@ Using the `ASSERT_KINDOF` macro is exactly the same as coding:
 
 [!code-cpp[NVC_MFCDocView#195](../../mfc/codesnippet/cpp/diagnostic-services_4.cpp)]
 
-This function works only for classes declared with the [DECLARE_DYNAMIC](run-time-object-model-services.md#declare_dynamic or [DECLARE_SERIAL](run-time-object-model-services.md#declare_serial) macro.
+This function works only for classes declared with the [DECLARE_DYNAMIC](run-time-object-model-services.md#declare_dynamic) or [DECLARE_SERIAL](run-time-object-model-services.md#declare_serial) macro.
 
 > [!NOTE]
 > This function is available only in the Debug version of MFC.
@@ -191,13 +190,13 @@ This function works only for classes declared with the [DECLARE_DYNAMIC](run-tim
 
 Use to test your assumptions about the validity of an object's internal state.
 
-```
+```cpp
 ASSERT_VALID(pObject)
 ```
 
 ### Parameters
 
-*pObject*<br/>
+*pObject*\
 Specifies an object of a class derived from `CObject` that has an overriding version of the `AssertValid` member function.
 
 ### Remarks
@@ -223,8 +222,8 @@ For more information and examples, see [Debugging MFC Applications](/visualstudi
 
 Assists in finding memory leaks.
 
-```
-#define  new DEBUG_NEW
+```cpp
+#define new DEBUG_NEW
 ```
 
 ### Remarks
@@ -250,7 +249,7 @@ Once you insert this directive, the preprocessor will insert DEBUG_NEW wherever
 
 In debug mode (when the **_DEBUG** symbol is defined), DEBUG_ONLY evaluates its argument.
 
-```
+```cpp
 DEBUG_ONLY(expression)
 ```
 
@@ -274,14 +273,14 @@ Use to validate data correctness.
 
 ### Syntax
 
-```
-ENSURE(  booleanExpression )
-ENSURE_VALID( booleanExpression  )
+```cpp
+ENSURE(booleanExpression)
+ENSURE_VALID(booleanExpression)
 ```
 
 ### Parameters
 
-*booleanExpression*<br/>
+*booleanExpression*\
 Specifies a boolean expression to be tested.
 
 ### Remarks
@@ -306,7 +305,7 @@ Expands to the name of the file that is being compiled.
 
 ### Syntax
 
-```
+```cpp
 THIS_FILE
 ```
 
@@ -334,9 +333,9 @@ static char THIS_FILE[] = __FILE__;
 
 Sends the specified string to the debugger of the current application.
 
-```
+```cpp
 TRACE(exp)
-TRACE(DWORD  category,  UINT  level, LPCSTR lpszFormat, ...)
+TRACE(DWORD category, UINT level, LPCSTR lpszFormat, ...)
 ```
 
 ### Remarks
@@ -355,13 +354,13 @@ For more information, see [Debugging MFC Applications](/visualstudio/debugger/mf
 
 In the Debug version of MFC, evaluates its argument.
 
-```
+```cpp
 VERIFY(booleanExpression)
 ```
 
 ### Parameters
 
-*booleanExpression*<br/>
+*booleanExpression*\
 Specifies an expression (including pointer values) that evaluates to nonzero or 0.
 
 ### Remarks
@@ -388,8 +387,8 @@ In the Release version of MFC, VERIFY evaluates the expression but does not prin
 
 Provides basic object-dumping capability in your application.
 
-```
-CDumpContext  afxDump;
+```cpp
+CDumpContext afxDump;
 ```
 
 ### Remarks
@@ -420,7 +419,7 @@ void AfxDump(const CObject* pOb);
 
 ### Parameters
 
-*pOb*<br/>
+*pOb*\
 A pointer to an object of a class derived from `CObject`.
 
 ### Remarks
@@ -437,8 +436,8 @@ Your program code should not call `AfxDump`, but should instead call the `Dump`
 
 This variable is accessible from a debugger or your program and allows you to tune allocation diagnostics.
 
-```
-int  afxMemDF;
+```cpp
+int afxMemDF;
 ```
 
 ### Remarks
@@ -490,8 +489,8 @@ This function can be used to check the return values of calls to OLE functions i
 
 This function validates the free memory pool and prints error messages as required.
 
-```
-BOOL  AfxCheckMemory();
+```cpp
+BOOL AfxCheckMemory();
 ```
 
 ### Return Value
@@ -533,7 +532,7 @@ void AfxDump(const CObject* pOb);
 
 ### Parameters
 
-*pOb*<br/>
+*pOb*\
 A pointer to an object of a class derived from `CObject`.
 
 ### Remarks
@@ -556,7 +555,7 @@ void AFXAPI AfxDumpStack(DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT);
 
 ### Parameters
 
-*dwTarget*<br/>
+*dwTarget*\
 Indicates the target of the dump output. Possible values, which can be combined using the bitwise-OR (**`|`**) operator, are as follows:
 
 - AFX_STACK_DUMP_TARGET_TRACE Sends output by means of the [TRACE](#trace) macro. The TRACE macro generates output in debug builds only; it generates no output in release builds. Also, TRACE can be redirected to other targets besides the debugger.
@@ -626,13 +625,13 @@ To use this function successfully:
 
 Enables and disables the memory leak dump in the AFX_DEBUG_STATE destructor.
 
-```
+```cpp
 BOOL AFXAPI AfxEnableMemoryLeakDump(BOOL bDump);
 ```
 
 ### Parameters
 
-*bDump*<br/>
+*bDump*\
 [in] TRUE indicates the memory leak dump is enabled; FALSE indicates the memory leak dump is disabled.
 
 ### Return Value
@@ -656,13 +655,13 @@ If your application loads another library before the MFC library, some memory al
 
 Diagnostic memory tracking is normally enabled in the Debug version of MFC.
 
-```
+```cpp
 BOOL AfxEnableMemoryTracking(BOOL bTrack);
 ```
 
 ### Parameters
 
-*bTrack*<br/>
+*bTrack*\
 Setting this value to TRUE turns on memory tracking; FALSE turns it off.
 
 ### Return Value
@@ -690,7 +689,7 @@ For more information on `AfxEnableMemoryTracking`, see [Debugging MFC Applicatio
 
 Tests a memory address to make sure it represents a currently active memory block that was allocated by the diagnostic version of **`new`**.
 
-```
+```cpp
 BOOL AfxIsMemoryBlock(
     const void* p,
     UINT nBytes,
@@ -699,13 +698,13 @@ BOOL AfxIsMemoryBlock(
 
 ### Parameters
 
-*p*<br/>
+*p*\
 Points to the block of memory to be tested.
 
-*nBytes*<br/>
+*nBytes*\
 Contains the length of the memory block in bytes.
 
-*plRequestNumber*<br/>
+*plRequestNumber*\
 Points to a **`long`** integer that will be filled in with the memory block's allocation sequence number, or zero if it does not represent a currently active memory block.
 
 ### Return Value
@@ -728,7 +727,7 @@ It also checks the specified size against the original allocated size. If the fu
 
 Tests any memory address to ensure that it is contained entirely within the program's memory space.
 
-```
+```cpp
 BOOL AfxIsValidAddress(
     const void* lp,
     UINT nBytes,
@@ -737,13 +736,13 @@ BOOL AfxIsValidAddress(
 
 ### Parameters
 
-*lp*<br/>
+*lp*\
 Points to the memory address to be tested.
 
-*nBytes*<br/>
+*nBytes*\
 Contains the number of bytes of memory to be tested.
 
-*bReadWrite*<br/>
+*bReadWrite*\
 Specifies whether the memory is both for reading and writing (TRUE) or just reading (FALSE).
 
 ### Return Value
@@ -768,18 +767,18 @@ The address is not restricted to blocks allocated by **`new`**.
 
 Use this function to determine whether a pointer to a string is valid.
 
-```
-BOOL  AfxIsValidString(
+```cpp
+BOOL AfxIsValidString(
     LPCSTR lpsz,
     int nLength = -1);
 ```
 
 ### Parameters
 
-*lpsz*<br/>
+*lpsz*\
 The pointer to test.
 
-*nLength*<br/>
+*nLength*\
 Specifies the length of the string to be tested, in bytes. A value of -1 indicates that the string will be null-terminated.
 
 ### Return Value
@@ -800,13 +799,13 @@ In non-debug builds, nonzero if *lpsz* is not NULL; otherwise 0.
 
 Sets a hook that enables calling of the specified function before each memory block is allocated.
 
-```
+```cpp
 AFX_ALLOC_HOOK AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
 ```
 
 ### Parameters
 
-*pfnAllocHook*<br/>
+*pfnAllocHook*\
 Specifies the name of the function to call. See the Remarks for the prototype of an allocation function.
 
 ### Return Value
@@ -819,13 +818,13 @@ The Microsoft Foundation Class Library debug-memory allocator can call a user-de
 
 **BOOL AFXAPI AllocHook( size_t** `nSize`**, BOOL** `bObject`**, LONG** `lRequestNumber` **);**
 
-*nSize*<br/>
+*nSize*\
 The size of the proposed memory allocation.
 
-*bObject*<br/>
+*bObject*\
 TRUE if the allocation is for a `CObject`-derived object; otherwise FALSE.
 
-*lRequestNumber*<br/>
+*lRequestNumber*\
 The memory allocation's sequence number.
 
 Note that the AFXAPI calling convention implies that the callee must remove the parameters from the stack.
@@ -847,10 +846,10 @@ AFXAPI AfxDoForAllClasses(
 
 ### Parameters
 
-*pfn*<br/>
+*pfn*\
 Points to an iteration function to be called for each class. The function arguments are a pointer to a `CRuntimeClass` object and a void pointer to extra data that the caller supplies to the function.
 
-*pContext*<br/>
+*pContext*\
 Points to optional data that the caller can supply to the iteration function. This pointer can be NULL.
 
 ### Remarks
@@ -882,10 +881,10 @@ void AfxDoForAllObjects(
 
 ### Parameters
 
-*pfn*<br/>
+*pfn*\
 Points to an iteration function to execute for each object. The function arguments are a pointer to a `CObject` and a void pointer to extra data that the caller supplies to the function.
 
-*pContext*<br/>
+*pContext*\
 Points to optional data that the caller can supply to the iteration function. This pointer can be NULL.
 
 ### Remarks
@@ -903,5 +902,5 @@ Stack, global, or embedded objects are not enumerated. The pointer passed to `Af
 
 ## See also
 
-[Macros and Globals](mfc-macros-and-globals.md)<br/>
+[Macros and Globals](mfc-macros-and-globals.md)\
 [CObject::Dump](cobject-class.md#dump)
diff --git a/docs/mfc/reference/event-sink-maps.md b/docs/mfc/reference/event-sink-maps.md
index bfaaba81ce..e1475a88c7 100644
--- a/docs/mfc/reference/event-sink-maps.md
+++ b/docs/mfc/reference/event-sink-maps.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Event Sink Maps"
 title: "Event Sink Maps"
-ms.date: "11/04/2016"
+description: "Learn more about: Event Sink Maps"
+ms.date: 11/04/2016
 helpviewer_keywords: ["event sink maps [MFC]"]
-ms.assetid: a9757eb2-5f4a-45ec-a2cd-ce5eec85b16f
 ---
 # Event Sink Maps
 
@@ -158,7 +157,7 @@ For a list of the **VTS_** constants, see [EVENT_CUSTOM](event-maps.md#event_cus
 
 ### Example
 
-The following example demonstrates an event handler, for the MouseDown event, implemented for three controls ( IDC_MYCTRL1 through IDC_MYCTRL3). The event handler function, `OnRangeMouseDown`, is declared in the header file of the dialog class ( `CMyDlg`) as:
+The following example demonstrates an event handler, for the MouseDown event, implemented for three controls ( IDC_MYCTRL1 through IDC_MYCTRL3). The event handler function, `OnRangeMouseDown`, is declared in the header file of the dialog class (`CMyDlg`) as:
 
 [!code-cpp[NVC_MFCAutomation#12](../../mfc/codesnippet/cpp/event-sink-maps_2.h)]
 
diff --git a/docs/mfc/reference/icommandsource-interface.md b/docs/mfc/reference/icommandsource-interface.md
index b75c703c39..80fd339188 100644
--- a/docs/mfc/reference/icommandsource-interface.md
+++ b/docs/mfc/reference/icommandsource-interface.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: ICommandSource Interface"
 title: "ICommandSource Interface"
-ms.date: "03/27/2019"
+description: "Learn more about: ICommandSource Interface"
+ms.date: 03/27/2019
 f1_keywords: ["ICommandSource", "AFXWINFORMS/ICommandSource", "AFXWINFORMS/ICommandSource::AddCommandHandler", "AFXWINFORMS/ICommandSource::AddCommandRangeHandler", "AFXWINFORMS/ICommandSource::AddCommandRangeUIHandler", "AFXWINFORMS/ICommandSource::AddCommandUIHandler", "AFXWINFORMS/ICommandSource::PostCommand", "AFXWINFORMS/ICommandSource::RemoveCommandHandler", "AFXWINFORMS/ICommandSource::RemoveCommandRangeHandler", "AFXWINFORMS/ICommandSource::RemoveCommandRangeUIHandler", "AFXWINFORMS/ICommandSource::RemoveCommandUIHandler", "AFXWINFORMS/ICommandSource::SendCommand"]
 helpviewer_keywords: ["ICommandSource interface [MFC]"]
-ms.assetid: a4b1f698-c09f-4ba8-9b13-0e74a0a4967e
 ---
 # ICommandSource Interface
 
@@ -59,6 +58,7 @@ void AddCommandHandler(
 
 *cmdID*<br/>
 The command ID.
+
 *cmdHandler*<br/>
 A handle to the command handler method.
 
@@ -82,8 +82,10 @@ void AddCommandRangeHandler(
 
 *cmdIDMin*<br/>
 The beginning index of the command ID range.
+
 *cmdIDMax*<br/>
 The ending index of the command ID range.
+
 *cmdHandler*<br/>
 A handle to the message handler method to which the commands are mapped.
 
@@ -106,8 +108,10 @@ void AddCommandRangeUIHandler(
 
 *cmdIDMin*<br/>
 The beginning index of the command ID range.
+
 *cmdIDMax*<br/>
 The ending index of the command ID range.
+
 *cmdHandler*<br/>
 A handle to the message handler method to which the commands are mapped.
 
@@ -129,6 +133,7 @@ void AddCommandUIHandler(
 
 *cmdID*<br/>
 The command ID.
+
 *cmdUIHandler*<br/>
 A handle to the user interface command message handler method.
 
@@ -184,6 +189,7 @@ void RemoveCommandRangeUIHandler(
 
 *cmdIDMin*<br/>
 The beginning index of the command ID range.
+
 *cmdIDMax*<br/>
 The ending index of the command ID range.
 
@@ -205,6 +211,7 @@ void RemoveCommandRangeUIHandler(
 
 *cmdIDMin*<br/>
 The beginning index of the command ID range.
+
 *cmdIDMax*<br/>
 The ending index of the command ID range.
 
diff --git a/docs/mfc/reference/mfc-classes.md b/docs/mfc/reference/mfc-classes.md
index 4989897e48..8389dcd7e5 100644
--- a/docs/mfc/reference/mfc-classes.md
+++ b/docs/mfc/reference/mfc-classes.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: MFC` Classes"
-title: "MFC` Classes"
-ms.date: "11/04/2016"
+title: "MFC Classes"
+description: "Learn more about: MFC Classes"
+ms.date: 11/04/2016
 helpviewer_keywords: ["MFC, classes", "classes [MFC], MFC"]
-ms.assetid: 7b6db805-a572-43fd-9046-0fa6e3663e63
 ---
 # MFC Classes
 
@@ -17,1285 +16,1285 @@ The classes in the following list are included in the Microsoft Foundation Class
 
 ## In This Section
 
-[`CAccelerateDecelerateTransition` Class](../../mfc/reference/cacceleratedeceleratetransition-class.md)<br/>
+[`CAccelerateDecelerateTransition` Class](cacceleratedeceleratetransition-class.md)\
 Implements an accelerate-decelerate transition.
 
-[`CAnimateCtrl` Class](../../mfc/reference/canimatectrl-class.md)<br/>
+[`CAnimateCtrl` Class](canimatectrl-class.md)\
 Provides the functionality of the Windows common animation control.
 
-[`CAnimationBaseObject` Class](../../mfc/reference/canimationbaseobject-class.md)<br/>
+[`CAnimationBaseObject` Class](canimationbaseobject-class.md)\
 The base class for all animation objects.
 
-[`CAnimationColor` Class](../../mfc/reference/canimationcolor-class.md)<br/>
+[`CAnimationColor` Class](canimationcolor-class.md)\
 Implements the functionality of a color whose red, green, and blue components can be animated.
 
-[`CAnimationController` Class](../../mfc/reference/canimationcontroller-class.md)<br/>
+[`CAnimationController` Class](canimationcontroller-class.md)\
 Implements the animation controller, which provides a central interface for creating and managing animations.
 
-[`CAnimationGroup` Class](../../mfc/reference/canimationgroup-class.md)<br/>
+[`CAnimationGroup` Class](canimationgroup-class.md)\
 Implements the animation controller, which provides a central interface for creating and managing animations.
 
-[`CAnimationManagerEventHandler` Class](../../mfc/reference/canimationmanagereventhandler-class.md)<br/>
+[`CAnimationManagerEventHandler` Class](canimationmanagereventhandler-class.md)\
 Implements a callback, which is called by the Animation API when a status of an animation manager is changed.
 
-[`CAnimationPoint` Class](../../mfc/reference/canimationpoint-class.md)<br/>
+[`CAnimationPoint` Class](canimationpoint-class.md)\
 Implements the functionality of a point whose coordinates can be animated.
 
-[`CAnimationRect` Class](../../mfc/reference/canimationrect-class.md)<br/>
+[`CAnimationRect` Class](canimationrect-class.md)\
 Implements the functionality of a rectangle whose sides can be animated.
 
-[`CAnimationSize` Class](../../mfc/reference/canimationsize-class.md)<br/>
+[`CAnimationSize` Class](canimationsize-class.md)\
 Implements the functionality of a size object whose dimensions can be animated.
 
-[`CAnimationStoryboardEventHandler` Class](../../mfc/reference/canimationstoryboardeventhandler-class.md)<br/>
+[`CAnimationStoryboardEventHandler` Class](canimationstoryboardeventhandler-class.md)\
 Implements a callback, which is called by the Animation API when the status of a storyboard is changed or a storyboard is updated.
 
-[`CAnimationTimerEventHandler` Class](../../mfc/reference/canimationtimereventhandler-class.md)<br/>
+[`CAnimationTimerEventHandler` Class](canimationtimereventhandler-class.md)\
 Implements a callback, which is called by the Animation API when timing events occur.
 
-[`CAnimationValue` Class](../../mfc/reference/canimationvalue-class.md)<br/>
+[`CAnimationValue` Class](canimationvalue-class.md)\
 Implements the functionality of animation object that has one value.
 
-[`CAnimationVariable` Class](../../mfc/reference/canimationvariable-class.md)<br/>
+[`CAnimationVariable` Class](canimationvariable-class.md)\
 Represents an animation variable.
 
-[`CAnimationVariableChangeHandler` Class](../../mfc/reference/canimationvariablechangehandler-class.md)<br/>
+[`CAnimationVariableChangeHandler` Class](canimationvariablechangehandler-class.md)\
 Implements a callback, which is called by the Animation API when the value of an animation variable changes.
 
-[`CAnimationVariableIntegerChangeHandler` Class](../../mfc/reference/canimationvariableintegerchangehandler-class.md)<br/>
+[`CAnimationVariableIntegerChangeHandler` Class](canimationvariableintegerchangehandler-class.md)\
 Implements a callback, which is called by the Animation API when the value of an animation variable changes.
 
-[`CArchive` Class](../../mfc/reference/carchive-class.md)<br/>
+[`CArchive` Class](carchive-class.md)\
 Lets you save a complex network of objects in a permanent binary form (usually disk storage) that persists after those objects are deleted.
 
-[`CArchiveException` Class](../../mfc/reference/carchiveexception-class.md)<br/>
+[`CArchiveException` Class](carchiveexception-class.md)\
 Represents a serialization exception condition.
 
-[`CArray` Class](../../mfc/reference/carray-class.md)<br/>
-Supports arrays that resemble` C arrays, but can dynamically reduce and grow as necessary.
+[`CArray` Class](carray-class.md)\
+Supports arrays that resemble C arrays, but can dynamically reduce and grow as necessary.
 
-[`CAsyncMonikerFile` Class](../../mfc/reference/casyncmonikerfile-class.md)<br/>
+[`CAsyncMonikerFile` Class](casyncmonikerfile-class.md)\
 Provides functionality for the use of asynchronous monikers in ActiveX controls (formerly OLE controls).
 
-[`CAsyncSocket` Class](../../mfc/reference/casyncsocket-class.md)<br/>
+[`CAsyncSocket` Class](casyncsocket-class.md)\
 Represents a Windows Socket, which is an endpoint of network communication.
 
-[`CAutoHideDockSite` Class](../../mfc/reference/cautohidedocksite-class.md)<br/>
-Extends the [`CDockSite` Class](../../mfc/reference/cdocksite-class.md) to implement auto-hide dock panes.
+[`CAutoHideDockSite` Class](cautohidedocksite-class.md)\
+Extends the [`CDockSite` Class](cdocksite-class.md) to implement auto-hide dock panes.
 
-[`CBaseKeyFrame` Class](../../mfc/reference/cbasekeyframe-class.md)<br/>
+[`CBaseKeyFrame` Class](cbasekeyframe-class.md)\
 Implements the basic functionality of a keyframe.
 
-[`CBasePane` Class](../../mfc/reference/cbasepane-class.md)<br/>
+[`CBasePane` Class](cbasepane-class.md)\
 Base class for all panes.
 
-[`CBaseTabbedPane` Class](../../mfc/reference/cbasetabbedpane-class.md)<br/>
-Extends the functionality of the [`CDockablePane` Class](../../mfc/reference/cdockablepane-class.md) to support the creation of tabbed windows.
+[`CBaseTabbedPane` Class](cbasetabbedpane-class.md)\
+Extends the functionality of the [`CDockablePane` Class](cdockablepane-class.md) to support the creation of tabbed windows.
 
-[`CBaseTransition` Class](../../mfc/reference/cbasetransition-class.md)<br/>
+[`CBaseTransition` Class](cbasetransition-class.md)\
 Represents a basic transition.
 
-[`CBitmap` Class](../../mfc/reference/cbitmap-class.md)<br/>
+[`CBitmap` Class](cbitmap-class.md)\
 Encapsulates a Windows graphics device interface (GDI) bitmap and provides member functions to manipulate the bitmap.
 
-[`CBitmapButton` Class](../../mfc/reference/cbitmapbutton-class.md)<br/>
+[`CBitmapButton` Class](cbitmapbutton-class.md)\
 Creates pushbutton controls labeled with bitmapped images instead of text.
 
-[`CBitmapRenderTarget` Class](../../mfc/reference/cbitmaprendertarget-class.md)<br/>
+[`CBitmapRenderTarget` Class](cbitmaprendertarget-class.md)\
 A wrapper for `ID2D1BitmapRenderTarget`.
 
-[`CBrush` Class](../../mfc/reference/cbrush-class.md)<br/>
+[`CBrush` Class](cbrush-class.md)\
 Encapsulates a Windows graphics device interface (GDI) brush.
 
-[`CButton` Class](../../mfc/reference/cbutton-class.md)<br/>
+[`CButton` Class](cbutton-class.md)\
 Provides the functionality of Windows button controls.
 
-[`CByteArray` Class](../../mfc/reference/cbytearray-class.md)<br/>
+[`CByteArray` Class](cbytearray-class.md)\
 Supports dynamic arrays of bytes.
 
-[`CCachedDataPathProperty` Class](../../mfc/reference/ccacheddatapathproperty-class.md)<br/>
+[`CCachedDataPathProperty` Class](ccacheddatapathproperty-class.md)\
 Implements an OLE control property transferred asynchronously and cached in a memory file.
 
-[`CCheckListBox` Class](../../mfc/reference/cchecklistbox-class.md)<br/>
+[`CCheckListBox` Class](cchecklistbox-class.md)\
 Provides the functionality of a Windows checklist box.
 
-[`CClientDC` Class](../../mfc/reference/cclientdc-class.md)<br/>
+[`CClientDC` Class](cclientdc-class.md)\
 Handles the calling of the Windows functions [`GetDC`](/windows/win32/api/winuser/nf-winuser-getdc) at construction time and [`ReleaseDC`](/windows/win32/api/winuser/nf-winuser-releasedc) at destruction time.
 
-[`CCmdTarget` Class](../../mfc/reference/ccmdtarget-class.md)<br/>
+[`CCmdTarget` Class](ccmdtarget-class.md)\
 Base class for the Microsoft Foundation Class Library message-map architecture.
 
-[`CCmdUI` Class](../../mfc/reference/ccmdui-class.md)<br/>
+[`CCmdUI` Class](ccmdui-class.md)\
 Used only within an `ON_UPDATE_COMMAND_UI` handler in a `CCmdTarget`-derived class.
 
-[`CColorDialog` Class](../../mfc/reference/ccolordialog-class.md)<br/>
+[`CColorDialog` Class](ccolordialog-class.md)\
 Lets you incorporate a color-selection dialog box into your application.
 
-[`CComboBox` Class](../../mfc/reference/ccombobox-class.md)<br/>
+[`CComboBox` Class](ccombobox-class.md)\
 Provides the functionality of a Windows combo box.
 
-[`CComboBoxEx` Class](../../mfc/reference/ccomboboxex-class.md)<br/>
+[`CComboBoxEx` Class](ccomboboxex-class.md)\
 Extends the combo box control by providing support for image lists.
 
-[`CCommandLineInfo` Class](../../mfc/reference/ccommandlineinfo-class.md)<br/>
+[`CCommandLineInfo` Class](ccommandlineinfo-class.md)\
 Aids in parsing the command line at application startup.
 
-[`CCommonDialog` Class](../../mfc/reference/ccommondialog-class.md)<br/>
+[`CCommonDialog` Class](ccommondialog-class.md)\
 The base class for classes that encapsulate functionality of the Windows common dialogs.
 
-[`CConnectionPoint` Class](../../mfc/reference/cconnectionpoint-class.md)<br/>
+[`CConnectionPoint` Class](cconnectionpoint-class.md)\
 Defines a special type of interface used to communicate with other OLE objects, called a "connection point."
 
-[`CConstantTransition` Class](../../mfc/reference/cconstanttransition-class.md)<br/>
+[`CConstantTransition` Class](cconstanttransition-class.md)\
 Encapsulates a constant transition.
 
-[`CContextMenuManager` Class](../../mfc/reference/ccontextmenumanager-class.md)<br/>
+[`CContextMenuManager` Class](ccontextmenumanager-class.md)\
 Manages shortcut menus, also known as context menus.
 
-[`CControlBar` Class](../../mfc/reference/ccontrolbar-class.md)<br/>
-Base class for the control-bar classes [`CStatusBar` Class](../../mfc/reference/cstatusbar-class.md), [`CToolBar` Class](../../mfc/reference/ctoolbar-class.md), [`CDialogBar` Class](../../mfc/reference/cdialogbar-class.md), [`CReBar` Class](../../mfc/reference/crebar-class.md), and [`COleResizeBar` Class](../../mfc/reference/coleresizebar-class.md).
+[`CControlBar` Class](ccontrolbar-class.md)\
+Base class for the control-bar classes [`CStatusBar` Class](cstatusbar-class.md), [`CToolBar` Class](ctoolbar-class.md), [`CDialogBar` Class](cdialogbar-class.md), [`CReBar` Class](crebar-class.md), and [`COleResizeBar` Class](coleresizebar-class.md).
 
-[`CCriticalSection` Class](../../mfc/reference/ccriticalsection-class.md)<br/>
+[`CCriticalSection` Class](ccriticalsection-class.md)\
 Represents a "critical section", which is a synchronization object that enables one thread at a time to access a resource or section of code.
 
-[`CCtrlView` Class](../../mfc/reference/cctrlview-class.md)<br/>
+[`CCtrlView` Class](cctrlview-class.md)\
 Adapts the document-view architecture to the common controls supported by Windows 98 and Windows NT versions 3.51 and later.
 
-[`CCubicTransition` Class](../../mfc/reference/ccubictransition-class.md)<br/>
+[`CCubicTransition` Class](ccubictransition-class.md)\
 Encapsulates a cubic transition.
 
-[`CCustomInterpolator` Class](../../mfc/reference/ccustominterpolator-class.md)<br/>
+[`CCustomInterpolator` Class](ccustominterpolator-class.md)\
 Implements a basic interpolator.
 
-[`CCustomTransition` Class](../../mfc/reference/ccustomtransition-class.md)<br/>
+[`CCustomTransition` Class](ccustomtransition-class.md)\
 Implements a custom transition.
 
-[`CD2DBitmap` Class](../../mfc/reference/cd2dbitmap-class.md)<br/>
+[`CD2DBitmap` Class](cd2dbitmap-class.md)\
 A wrapper for `ID2D1Bitmap`.
 
-[`CD2DBitmapBrush` Class](../../mfc/reference/cd2dbitmapbrush-class.md)<br/>
+[`CD2DBitmapBrush` Class](cd2dbitmapbrush-class.md)\
 A wrapper for `ID2D1BitmapBrush`.
 
-[`CD2DBrush` Class](../../mfc/reference/cd2dbrush-class.md)<br/>
+[`CD2DBrush` Class](cd2dbrush-class.md)\
 A wrapper for `ID2D1Brush`.
 
-[`CD2DBrushProperties` Class](../../mfc/reference/cd2dbrushproperties-class.md)<br/>
+[`CD2DBrushProperties` Class](cd2dbrushproperties-class.md)\
 A wrapper for `D2D1_BRUSH_PROPERTIES`.
 
-[`CD2DEllipse` Class](../../mfc/reference/cd2dellipse-class.md)<br/>
+[`CD2DEllipse` Class](cd2dellipse-class.md)\
 A wrapper for `D2D1_BRUSH_PROPERTIES`.
 
-[`CD2DGeometry` Class](../../mfc/reference/cd2dgeometry-class.md)<br/>
+[`CD2DGeometry` Class](cd2dgeometry-class.md)\
 A wrapper for `ID2D1Geometry`.
 
-[`CD2DGeometrySink` Class](../../mfc/reference/cd2dgeometrysink-class.md)<br/>
+[`CD2DGeometrySink` Class](cd2dgeometrysink-class.md)\
 A wrapper for `ID2D1GeometrySink`.
 
-[`CD2DGradientBrush` Class](../../mfc/reference/cd2dgradientbrush-class.md)<br/>
+[`CD2DGradientBrush` Class](cd2dgradientbrush-class.md)\
 The base class of the `CD2DLinearGradientBrush` and the `CD2DRadialGradientBrush` classes.
 
-[`CD2DLayer` Class](../../mfc/reference/cd2dlayer-class.md)<br/>
+[`CD2DLayer` Class](cd2dlayer-class.md)\
 A wrapper for `ID2D1Layer`.
 
-[`CD2DLinearGradientBrush` Class](../../mfc/reference/cd2dlineargradientbrush-class.md)<br/>
+[`CD2DLinearGradientBrush` Class](cd2dlineargradientbrush-class.md)\
 A wrapper for `ID2D1LinearGradientBrush`.
 
-[`CD2DMesh` Class](../../mfc/reference/cd2dmesh-class.md)<br/>
+[`CD2DMesh` Class](cd2dmesh-class.md)\
 A wrapper for `ID2D1Mesh`.
 
-[`CD2DPathGeometry` Class](../../mfc/reference/cd2dpathgeometry-class.md)<br/>
+[`CD2DPathGeometry` Class](cd2dpathgeometry-class.md)\
 A wrapper for `ID2D1PathGeometry`.
 
-[`CD2DPointF` Class](../../mfc/reference/cd2dpointf-class.md)<br/>
+[`CD2DPointF` Class](cd2dpointf-class.md)\
 A wrapper for `D2D1_POINT_2F`.
 
-[`CD2DPointU` Class](../../mfc/reference/cd2dpointu-class.md)<br/>
+[`CD2DPointU` Class](cd2dpointu-class.md)\
 A wrapper for `D2D1_POINT_2U`.
 
-[`CD2DRadialGradientBrush` Class](../../mfc/reference/cd2dradialgradientbrush-class.md)<br/>
+[`CD2DRadialGradientBrush` Class](cd2dradialgradientbrush-class.md)\
 A wrapper for `ID2D1RadialGradientBrush`.
 
-[`CD2DRectF` Class](../../mfc/reference/cd2drectf-class.md)<br/>
+[`CD2DRectF` Class](cd2drectf-class.md)\
 A wrapper for `D2D1_RECT_F`.
 
-[`CD2DRectU` Class](../../mfc/reference/cd2drectu-class.md)<br/>
+[`CD2DRectU` Class](cd2drectu-class.md)\
 A wrapper for `D2D1_RECT_U`.
 
-[`CD2DResource` Class](../../mfc/reference/cd2dresource-class.md)<br/>
+[`CD2DResource` Class](cd2dresource-class.md)\
 An abstract class that provides an interface for creating and managing `D2D` resources such as brushes, layers, and texts.
 
-[`CD2DRoundedRect` Class](../../mfc/reference/cd2droundedrect-class.md)<br/>
+[`CD2DRoundedRect` Class](cd2droundedrect-class.md)\
 A wrapper for `D2D1_ROUNDED_RECT`.
 
-[`CD2DSizeF` Class](../../mfc/reference/cd2dsizef-class.md)<br/>
+[`CD2DSizeF` Class](cd2dsizef-class.md)\
 A wrapper for `D2D1_SIZE_F`.
 
-[`CD2DSizeU` Class](../../mfc/reference/cd2dsizeu-class.md)<br/>
+[`CD2DSizeU` Class](cd2dsizeu-class.md)\
 A wrapper for `D2D1_SIZE_U`.
 
-[`CD2DSolidColorBrush` Class](../../mfc/reference/cd2dsolidcolorbrush-class.md)<br/>
+[`CD2DSolidColorBrush` Class](cd2dsolidcolorbrush-class.md)\
 A wrapper for `ID2D1SolidColorBrush`.
 
-[`CD2DTextFormat` Class](../../mfc/reference/cd2dtextformat-class.md)<br/>
+[`CD2DTextFormat` Class](cd2dtextformat-class.md)\
 A wrapper for `IDWriteTextFormat`.
 
-[`CD2DTextLayout` Class](../../mfc/reference/cd2dtextlayout-class.md)<br/>
+[`CD2DTextLayout` Class](cd2dtextlayout-class.md)\
 A wrapper for `IDWriteTextLayout`.
 
-[`CDaoDatabase` Class](../../mfc/reference/cdaodatabase-class.md)<br/>
+[`CDaoDatabase` Class](cdaodatabase-class.md)\
 Represents a connection to a database through which you can operate on the data.
 
-[`CDaoException` Class](../../mfc/reference/cdaoexception-class.md)<br/>
+[`CDaoException` Class](cdaoexception-class.md)\
 Represents an exception condition arising from the MFC database classes based on data access objects (DAO).
 
-[`CDaoFieldExchange` Class](../../mfc/reference/cdaofieldexchange-class.md)<br/>
+[`CDaoFieldExchange` Class](cdaofieldexchange-class.md)\
 Supports the DAO record field exchange (DFX) routines used by the DAO database classes.
 
-[`CDaoQueryDef` Class](../../mfc/reference/cdaoquerydef-class.md)<br/>
+[`CDaoQueryDef` Class](cdaoquerydef-class.md)\
 Represents a query definition, or "querydef," usually one saved in a database.
 
-[`CDaoRecordset` Class](../../mfc/reference/cdaorecordset-class.md)<br/>
+[`CDaoRecordset` Class](cdaorecordset-class.md)\
 Represents a set of records selected from a data source.
 
-[`CDaoRecordView` Class](../../mfc/reference/cdaorecordview-class.md)<br/>
+[`CDaoRecordView` Class](cdaorecordview-class.md)\
 A view that displays database records in controls.
 
-[`CDaoTableDef` Class](../../mfc/reference/cdaotabledef-class.md)<br/>
+[`CDaoTableDef` Class](cdaotabledef-class.md)\
 Represents the stored definition of a base table or an attached table.
 
-[`CDaoWorkspace` Class](../../mfc/reference/cdaoworkspace-class.md)<br/>
+[`CDaoWorkspace` Class](cdaoworkspace-class.md)\
 Manages a named, password-protected database session from login to logoff, by a single user.
 
-[`CDatabase` Class](../../mfc/reference/cdatabase-class.md)<br/>
+[`CDatabase` Class](cdatabase-class.md)\
 Represents a connection to a data source, through which you can operate on the data source.
 
-[`CDataExchange` Class](../../mfc/reference/cdataexchange-class.md)<br/>
+[`CDataExchange` Class](cdataexchange-class.md)\
 Supports the dialog data exchange (DDX) and dialog data validation (DDV) routines used by the Microsoft Foundation classes.
 
-[`CDataPathProperty` Class](../../mfc/reference/cdatapathproperty-class.md)<br/>
+[`CDataPathProperty` Class](cdatapathproperty-class.md)\
 Implements an OLE control property that can be loaded asynchronously.
 
-[`CDataRecoveryHandler` Class](../../mfc/reference/cdatarecoveryhandler-class.md)<br/>
+[`CDataRecoveryHandler` Class](cdatarecoveryhandler-class.md)\
 Autosaves documents and restores them if an application unexpectedly exits.
 
-[`CDateTimeCtrl` Class](../../mfc/reference/cdatetimectrl-class.md)<br/>
+[`CDateTimeCtrl` Class](cdatetimectrl-class.md)\
 Encapsulates the functionality of a date and time picker control.
 
-[`CDBException` Class](../../mfc/reference/cdbexception-class.md)<br/>
+[`CDBException` Class](cdbexception-class.md)\
 Represents an exception condition arising from the database classes.
 
-[`CDBVariant` Class](../../mfc/reference/cdbvariant-class.md)<br/>
+[`CDBVariant` Class](cdbvariant-class.md)\
 Represents a variant data type for the MFC ODBC classes.
 
-[`CDC` Class](../../mfc/reference/cdc-class.md)<br/>
+[`CDC` Class](cdc-class.md)\
 Defines a class of device-context objects.
 
-[`CDCRenderTarget` Class](../../mfc/reference/cdcrendertarget-class.md)<br/>
+[`CDCRenderTarget` Class](cdcrendertarget-class.md)\
 A wrapper for `ID2D1DCRenderTarget`.
 
-[`CDHtmlDialog` Class](../../mfc/reference/cdhtmldialog-class.md)<br/>
+[`CDHtmlDialog` Class](cdhtmldialog-class.md)\
 Used to create dialog boxes that use HTML rather than dialog resources to implement their user interface.
 
-[`CDialog` Class](../../mfc/reference/cdialog-class.md)<br/>
+[`CDialog` Class](cdialog-class.md)\
 Base class used for displaying dialog boxes on the screen.
 
-[`CDialogBar` Class](../../mfc/reference/cdialogbar-class.md)<br/>
+[`CDialogBar` Class](cdialogbar-class.md)\
 Provides the functionality of a Windows modeless dialog box in a control bar.
 
-[`CDialogEx` Class](../../mfc/reference/cdialogex-class.md)<br/>
+[`CDialogEx` Class](cdialogex-class.md)\
 Specifies the background color and background image of a dialog box.
 
-[`CDiscreteTransition` Class](../../mfc/reference/cdiscretetransition-class.md)<br/>
+[`CDiscreteTransition` Class](cdiscretetransition-class.md)\
 Encapsulates a discrete transition.
 
-[`CDocItem` Class](../../mfc/reference/cdocitem-class.md)<br/>
+[`CDocItem` Class](cdocitem-class.md)\
 The base class for document items, which are components of a document's data.
 
-[`CDockablePane` Class](../../mfc/reference/cdockablepane-class.md)<br/>
+[`CDockablePane` Class](cdockablepane-class.md)\
 Implements a pane that can either be docked in a dock site or included in a tabbed pane.
 
-[`CDockablePaneAdapter` Class](../../mfc/reference/cdockablepaneadapter-class.md)<br/>
+[`CDockablePaneAdapter` Class](cdockablepaneadapter-class.md)\
 Provides docking support for `CWnd`-derived panes.
 
-[`CDockingManager` Class](../../mfc/reference/cdockingmanager-class.md)<br/>
+[`CDockingManager` Class](cdockingmanager-class.md)\
 Implements the core functionality that controls docking layout in a main frame window.
 
-[`CDockingPanesRow` Class](../../mfc/reference/cdockingpanesrow-class.md)<br/>
+[`CDockingPanesRow` Class](cdockingpanesrow-class.md)\
 Manages a list of panes that are located in the same horizontal or vertical row (column) of a dock site.
 
-[`CDockSite` Class](../../mfc/reference/cdocksite-class.md)<br/>
-Provides functionality for arranging panes that are derived from the [`CPane` Class](../../mfc/reference/cpane-class.md) into sets of rows.
+[`CDockSite` Class](cdocksite-class.md)\
+Provides functionality for arranging panes that are derived from the [`CPane` Class](cpane-class.md) into sets of rows.
 
-[`CDockState` Class](../../mfc/reference/cdockstate-class.md)<br/>
+[`CDockState` Class](cdockstate-class.md)\
 A serialized `CObject` class that loads, unloads, or clears the state of one or more docking control bars in persistent memory (a file).
 
-[`CDocObjectServer` Class](../../mfc/reference/cdocobjectserver-class.md)<br/>
+[`CDocObjectServer` Class](cdocobjectserver-class.md)\
 Implements the additional OLE interfaces needed to make a normal `COleDocument` server into a full DocObject server: `IOleDocument`, `IOleDocumentView`, `IOleCommandTarget`, and `IPrint`.
 
-[`CDocObjectServerItem` Class](../../mfc/reference/cdocobjectserveritem-class.md)<br/>
+[`CDocObjectServerItem` Class](cdocobjectserveritem-class.md)\
 Implements OLE server verbs specifically for DocObject servers.
 
-[`CDocTemplate` Class](../../mfc/reference/cdoctemplate-class.md)<br/>
+[`CDocTemplate` Class](cdoctemplate-class.md)\
 An abstract base class that defines the basic functionality for document templates.
 
-[`CDocument` Class](../../mfc/reference/cdocument-class.md)<br/>
+[`CDocument` Class](cdocument-class.md)\
 Provides the basic functionality for user-defined document classes.
 
-[`CDragListBox` Class](../../mfc/reference/cdraglistbox-class.md)<br/>
+[`CDragListBox` Class](cdraglistbox-class.md)\
 In addition to providing the functionality of a Windows list box, the `CDragListBox` class lets the user move list box items, such as filenames, within the list box.
 
-[`CDrawingManager` Class](../../mfc/reference/cdrawingmanager-class.md)<br/>
+[`CDrawingManager` Class](cdrawingmanager-class.md)\
 Implements complex drawing algorithms.
 
-[`CDumpContext` Class](../../mfc/reference/cdumpcontext-class.md)<br/>
+[`CDumpContext` Class](cdumpcontext-class.md)\
 Supports stream-oriented diagnostic output in the form of human-readable text.
 
-[`CDWordArray` Class](../../mfc/reference/cdwordarray-class.md)<br/>
+[`CDWordArray` Class](cdwordarray-class.md)\
 Supports arrays of 32-bit doublewords.
 
-[`CEdit` Class](../../mfc/reference/cedit-class.md)<br/>
+[`CEdit` Class](cedit-class.md)\
 Provides the functionality of a Windows edit control.
 
-[`CEditView` Class](../../mfc/reference/ceditview-class.md)<br/>
+[`CEditView` Class](ceditview-class.md)\
 A type of view class that provides the functionality of a Windows edit control and can be used to implement simple text-editor functionality.
 
-[`CEvent` Class](../../mfc/reference/cevent-class.md)<br/>
+[`CEvent` Class](cevent-class.md)\
 Represents an "event", which is a synchronization object that enables one thread to notify another that an event has occurred.
 
-[`CException` Class](../../mfc/reference/cexception-class.md)<br/>
+[`CException` Class](cexception-class.md)\
 The base class for all exceptions in the Microsoft Foundation Class Library.
 
-[`CFieldExchange` Class](../../mfc/reference/cfieldexchange-class.md)<br/>
+[`CFieldExchange` Class](cfieldexchange-class.md)\
 Supports the record field exchange (RFX) and bulk record field exchange (Bulk RFX) routines used by the database classes.
 
-[`CFile` Class](../../mfc/reference/cfile-class.md)<br/>
+[`CFile` Class](cfile-class.md)\
 The base class for Microsoft Foundation Class file classes.
 
-[`CFileDialog` Class](../../mfc/reference/cfiledialog-class.md)<br/>
+[`CFileDialog` Class](cfiledialog-class.md)\
 Encapsulates the common file dialog box for Windows.
 
-[`CFileException` Class](../../mfc/reference/cfileexception-class.md)<br/>
+[`CFileException` Class](cfileexception-class.md)\
 Represents a file-related exception condition.
 
-[`CFileFind` Class](../../mfc/reference/cfilefind-class.md)<br/>
-Performs local file searches and is the base class for [`CGopherFileFind` Class](../../mfc/reference/cgopherfilefind-class.md) and [`CFtpFileFind` Class](../../mfc/reference/cftpfilefind-class.md), which perform Internet file searches.
+[`CFileFind` Class](cfilefind-class.md)\
+Performs local file searches and is the base class for [`CGopherFileFind` Class](cgopherfilefind-class.md) and [`CFtpFileFind` Class](cftpfilefind-class.md), which perform Internet file searches.
 
-[`CFindReplaceDialog` Class](../../mfc/reference/cfindreplacedialog-class.md)<br/>
+[`CFindReplaceDialog` Class](cfindreplacedialog-class.md)\
 Lets you implement standard string Find/Replace dialog boxes in your application.
 
-[`CFolderPickerDialog` Class](../../mfc/reference/cfolderpickerdialog-class.md)<br/>
+[`CFolderPickerDialog` Class](cfolderpickerdialog-class.md)\
 Implements `CFileDialog` in the folder picker mode.
 
-[`CFont` Class](../../mfc/reference/cfont-class.md)<br/>
+[`CFont` Class](cfont-class.md)\
 Encapsulates a Windows graphics device interface (GDI) font and provides member functions for manipulating the font.
 
-[`CFontDialog` Class](../../mfc/reference/cfontdialog-class.md)<br/>
+[`CFontDialog` Class](cfontdialog-class.md)\
 Lets you incorporate a font-selection dialog box into your application.
 
-[`CFontHolder` Class](../../mfc/reference/cfontholder-class.md)<br/>
+[`CFontHolder` Class](cfontholder-class.md)\
 Implements the stock Font property and encapsulates the functionality of a Windows font object and the `IFont` interface.
 
-[`CFormView` Class](../../mfc/reference/cformview-class.md)<br/>
+[`CFormView` Class](cformview-class.md)\
 The base class used for form views.
 
-[`CFrameWnd` Class](../../mfc/reference/cframewnd-class.md)<br/>
+[`CFrameWnd` Class](cframewnd-class.md)\
 Provides the functionality of a Windows single document interface (SDI) overlapped or pop-up frame window, along with members for managing the window.
 
-[`CFrameWndEx` Class](../../mfc/reference/cframewndex-class.md)<br/>
-Implements the functionality of a Windows single document interface (SDI) overlapped or popup frame window, and provides members for managing the window. It extends the [`CFrameWnd` Class](../../mfc/reference/cframewnd-class.md) class.
+[`CFrameWndEx` Class](cframewndex-class.md)\
+Implements the functionality of a Windows single document interface (SDI) overlapped or popup frame window, and provides members for managing the window. It extends the [`CFrameWnd` Class](cframewnd-class.md) class.
 
-[`CFtpConnection` Class](../../mfc/reference/cftpconnection-class.md)<br/>
+[`CFtpConnection` Class](cftpconnection-class.md)\
 Manages your FTP connection to an Internet server and enables direct manipulation of directories and files on that server.
 
-[`CFtpFileFind` Class](../../mfc/reference/cftpfilefind-class.md)<br/>
+[`CFtpFileFind` Class](cftpfilefind-class.md)\
 Aids in Internet file searches of FTP servers.
 
-[`CGdiObject` Class](../../mfc/reference/cgdiobject-class.md)<br/>
+[`CGdiObject` Class](cgdiobject-class.md)\
 Provides a base class for various kinds of Windows graphics device interface (GDI) objects such as bitmaps, regions, brushes, pens, palettes, and fonts.
 
-[`CGopherConnection` Class](../../mfc/reference/cgopherconnection-class.md)<br/>
+[`CGopherConnection` Class](cgopherconnection-class.md)\
 Manages your connection to a gopher Internet server.
 
-[`CGopherFile` Class](../../mfc/reference/cgopherfile-class.md)<br/>
+[`CGopherFile` Class](cgopherfile-class.md)\
 Provides the functionality to find and read files on a gopher server.
 
-[`CGopherFileFind` Class](../../mfc/reference/cgopherfilefind-class.md)<br/>
+[`CGopherFileFind` Class](cgopherfilefind-class.md)\
 Aids in Internet file searches of gopher servers.
 
-[`CGopherLocator` Class](../../mfc/reference/cgopherlocator-class.md)<br/>
-Gets a gopher "locator" from a gopher server, determines the locator's type, and makes the locator available to [`CGopherFileFind` Class](../../mfc/reference/cgopherfilefind-class.md).
+[`CGopherLocator` Class](cgopherlocator-class.md)\
+Gets a gopher "locator" from a gopher server, determines the locator's type, and makes the locator available to [`CGopherFileFind` Class](cgopherfilefind-class.md).
 
-[`CHeaderCtrl` Class](../../mfc/reference/cheaderctrl-class.md)<br/>
+[`CHeaderCtrl` Class](cheaderctrl-class.md)\
 Provides the functionality of the Windows common header control.
 
-[`CHotKeyCtrl` Class](../../mfc/reference/chotkeyctrl-class.md)<br/>
+[`CHotKeyCtrl` Class](chotkeyctrl-class.md)\
 Provides the functionality of the Windows common hot key control.
 
-[`CHtmlEditCtrl` Class](../../mfc/reference/chtmleditctrl-class.md)<br/>
+[`CHtmlEditCtrl` Class](chtmleditctrl-class.md)\
 Provides the functionality of the `WebBrowser` ActiveX control in an MFC window.
 
-[`CHtmlEditCtrlBase` Class](../../mfc/reference/chtmleditctrlbase-class.md)<br/>
+[`CHtmlEditCtrlBase` Class](chtmleditctrlbase-class.md)\
 Represents an HTML editing component.
 
-[`CHtmlEditDoc` Class](../../mfc/reference/chtmleditdoc-class.md)<br/>
-With [`CHtmlEditView` Class](../../mfc/reference/chtmleditview-class.md), provides the functionality of the WebBrowser editing platform within the context of the MFC document-view architecture.
+[`CHtmlEditDoc` Class](chtmleditdoc-class.md)\
+With [`CHtmlEditView` Class](chtmleditview-class.md), provides the functionality of the WebBrowser editing platform within the context of the MFC document-view architecture.
 
-[`CHtmlEditView` Class](../../mfc/reference/chtmleditview-class.md)<br/>
+[`CHtmlEditView` Class](chtmleditview-class.md)\
 Provides the functionality of the WebBrowser editing platform within the context of MFC's document/view architecture.
 
-[`CHtmlView` Class](../../mfc/reference/chtmlview-class.md)<br/>
+[`CHtmlView` Class](chtmlview-class.md)\
 Provides the functionality of the WebBrowser control within the context of MFC's document/view architecture.
 
-[`CHttpConnection` Class](../../mfc/reference/chttpconnection-class.md)<br/>
+[`CHttpConnection` Class](chttpconnection-class.md)\
 Manages your connection to an HTTP server.
 
-[`CHttpFile` Class](../../mfc/reference/chttpfile-class.md)<br/>
+[`CHttpFile` Class](chttpfile-class.md)\
 Provides the functionality to request and read files on an HTTP server.
 
-[`CHwndRenderTarget` Class](../../mfc/reference/chwndrendertarget-class.md)<br/>
+[`CHwndRenderTarget` Class](chwndrendertarget-class.md)\
 A wrapper for `ID2D1HwndRenderTarget`.
 
-[`CImageList` Class](../../mfc/reference/cimagelist-class.md)<br/>
+[`CImageList` Class](cimagelist-class.md)\
 Provides the functionality of the Windows common image list control.
 
-[`CInstantaneousTransition` Class](../../mfc/reference/cinstantaneoustransition-class.md)<br/>
+[`CInstantaneousTransition` Class](cinstantaneoustransition-class.md)\
 Encapsulates an instantaneous transition.
 
-[`CInternetConnection` Class](../../mfc/reference/cinternetconnection-class.md)<br/>
+[`CInternetConnection` Class](cinternetconnection-class.md)\
 Manages your connection to an Internet server.
 
-[`CInternetException` Class](../../mfc/reference/cinternetexception-class.md)<br/>
+[`CInternetException` Class](cinternetexception-class.md)\
 Represents an exception condition related to an Internet operation.
 
-[`CInternetFile` Class](../../mfc/reference/cinternetfile-class.md)<br/>
+[`CInternetFile` Class](cinternetfile-class.md)\
 Enables access to files on remote systems that use Internet protocols.
 
-[`CInternetSession` Class](../../mfc/reference/cinternetsession-class.md)<br/>
+[`CInternetSession` Class](cinternetsession-class.md)\
 Creates and initializes a single or several simultaneous Internet sessions and, if necessary, describes your connection to a proxy server.
 
-[`CInterpolatorBase` Class](../../mfc/reference/cinterpolatorbase-class.md)<br/>
+[`CInterpolatorBase` Class](cinterpolatorbase-class.md)\
 Implements a callback, which is called by the Animation API when it has to calculate a new value of an animation variable.
 
-[`CInvalidArgException` Class](../../mfc/reference/cinvalidargexception-class.md)<br/>
+[`CInvalidArgException` Class](cinvalidargexception-class.md)\
 This class represents an invalid argument exception condition.
 
-[`CIPAddressCtrl` Class](../../mfc/reference/cipaddressctrl-class.md)<br/>
+[`CIPAddressCtrl` Class](cipaddressctrl-class.md)\
 Provides the functionality of the Windows common IP Address control.
 
-[`CJumpList` Class](../../mfc/reference/cjumplist-class.md)<br/>
+[`CJumpList` Class](cjumplist-class.md)\
 The list of shortcuts revealed when you right click on an icon in the task bar.
 
-[`CKeyboardManager` Class](../../mfc/reference/ckeyboardmanager-class.md)<br/>
+[`CKeyboardManager` Class](ckeyboardmanager-class.md)\
 Manages shortcut key tables for the main frame window and child frame windows.
 
-[`CKeyFrame` Class](../../mfc/reference/ckeyframe-class.md)<br/>
+[`CKeyFrame` Class](ckeyframe-class.md)\
 Represents an animation keyframe.
 
-[`CLinearTransition` Class](../../mfc/reference/clineartransition-class.md)<br/>
+[`CLinearTransition` Class](clineartransition-class.md)\
 Encapsulates a linear transition.
 
-[`CLinearTransitionFromSpeed` Class](../../mfc/reference/clineartransitionfromspeed-class.md)<br/>
+[`CLinearTransitionFromSpeed` Class](clineartransitionfromspeed-class.md)\
 Encapsulates a linear-speed transition.
 
-[`CLinkCtrl` Class](../../mfc/reference/clinkctrl-class.md)<br/>
+[`CLinkCtrl` Class](clinkctrl-class.md)\
 Provides the functionality of the Windows common SysLink control.
 
-[`CList` Class](../../mfc/reference/clist-class.md)<br/>
+[`CList` Class](clist-class.md)\
 Supports ordered lists of nonunique objects accessible sequentially or by value.
 
-[`CListBox` Class](../../mfc/reference/clistbox-class.md)<br/>
+[`CListBox` Class](clistbox-class.md)\
 Provides the functionality of a Windows list box.
 
-[`CListCtrl` Class](../../mfc/reference/clistctrl-class.md)<br/>
+[`CListCtrl` Class](clistctrl-class.md)\
 Encapsulates the functionality of a "list view control," which displays a collection of items each consisting of an icon (from an image list) and a label.
 
-[`CListView` Class](../../mfc/reference/clistview-class.md)<br/>
-Simplifies use of the list control and of [`CListCtrl` Class](../../mfc/reference/clistctrl-class.md), the class that encapsulates list-control functionality, with MFC's document-view architecture.
+[`CListView` Class](clistview-class.md)\
+Simplifies use of the list control and of [`CListCtrl` Class](clistctrl-class.md), the class that encapsulates list-control functionality, with MFC's document-view architecture.
 
-[`CLongBinary` Class](../../mfc/reference/clongbinary-class.md)<br/>
+[`CLongBinary` Class](clongbinary-class.md)\
 Simplifies working with very large binary data objects (often called BLOBs, or "binary large objects") in a database.
 
-[`CMap` Class](../../mfc/reference/cmap-class.md)<br/>
+[`CMap` Class](cmap-class.md)\
 A dictionary collection class that maps unique keys to values.
 
-[`CMapPtrToPtr` Class](../../mfc/reference/cmapptrtoptr-class.md)<br/>
+[`CMapPtrToPtr` Class](cmapptrtoptr-class.md)\
 Supports maps of void pointers keyed by void pointers.
 
-[`CMapPtrToWord` Class](../../mfc/reference/cmapptrtoword-class.md)<br/>
+[`CMapPtrToWord` Class](cmapptrtoword-class.md)\
 Supports maps of 16-bit words keyed by void pointers.
 
-[`CMapStringToOb` Class](../../mfc/reference/cmapstringtoob-class.md)<br/>
+[`CMapStringToOb` Class](cmapstringtoob-class.md)\
 A dictionary collection class that maps unique `CString` objects to `CObject` pointers.
 
-[`CMapStringToPtr` Class](../../mfc/reference/cmapstringtoptr-class.md)<br/>
+[`CMapStringToPtr` Class](cmapstringtoptr-class.md)\
 Supports maps of void pointers keyed by `CString` objects.
 
-[`CMapStringToString` Class](../../mfc/reference/cmapstringtostring-class.md)<br/>
+[`CMapStringToString` Class](cmapstringtostring-class.md)\
 Supports maps of `CString` objects keyed by `CString` objects.
 
-[`CMapWordToOb` Class](../../mfc/reference/cmapwordtoob-class.md)<br/>
+[`CMapWordToOb` Class](cmapwordtoob-class.md)\
 Supports maps of `CObject` pointers keyed by 16-bit words.
 
-[`CMapWordToPtr` Class](../../mfc/reference/cmapwordtoptr-class.md)<br/>
+[`CMapWordToPtr` Class](cmapwordtoptr-class.md)\
 Supports maps of void pointers keyed by 16-bit words.
 
-[`CMDIChildWnd` Class](../../mfc/reference/cmdichildwnd-class.md)<br/>
+[`CMDIChildWnd` Class](cmdichildwnd-class.md)\
 Provides the functionality of a Windows multiple document interface (MDI) child window, along with members for managing the window.
 
-[`CMDIChildWndEx` Class](../../mfc/reference/cmdichildwndex-class.md)<br/>
-Provides the functionality of a Windows multiple document interface (MDI) child window. It extends the functionality of [`CMDIChildWnd` Class](../../mfc/reference/cmdichildwnd-class.md). The framework requires this class when an MDI application uses certain MFC classes.
+[`CMDIChildWndEx` Class](cmdichildwndex-class.md)\
+Provides the functionality of a Windows multiple document interface (MDI) child window. It extends the functionality of [`CMDIChildWnd` Class](cmdichildwnd-class.md). The framework requires this class when an MDI application uses certain MFC classes.
 
-[`CMDIFrameWnd` Class](../../mfc/reference/cmdiframewnd-class.md)<br/>
+[`CMDIFrameWnd` Class](cmdiframewnd-class.md)\
 Provides the functionality of a Windows multiple document interface (MDI) frame window, along with members for managing the window.
 
-[`CMDIFrameWndEx` Class](../../mfc/reference/cmdiframewndex-class.md)<br/>
-Extends the functionality of [`CFrameWnd` Class](../../mfc/reference/cframewnd-class.md), a Windows Multiple Document Interface (MDI) frame window.
+[`CMDIFrameWndEx` Class](cmdiframewndex-class.md)\
+Extends the functionality of [`CFrameWnd` Class](cframewnd-class.md), a Windows Multiple Document Interface (MDI) frame window.
 
-[`CMDITabInfo` Class](../../mfc/reference/cmditabinfo-class.md)<br/>
-Used to pass parameters to [`CMDIFrameWndEx::EnableMDITabbedGroups`](../../mfc/reference/cmdiframewndex-class.md#enablemditabbedgroups) method. Set members of this class to control the behavior of MDI tabbed groups.
+[`CMDITabInfo` Class](cmditabinfo-class.md)\
+Used to pass parameters to [`CMDIFrameWndEx::EnableMDITabbedGroups`](cmdiframewndex-class.md#enablemditabbedgroups) method. Set members of this class to control the behavior of MDI tabbed groups.
 
-[`CMemFile` Class](../../mfc/reference/cmemfile-class.md)<br/>
-The [`CFile` Class](../../mfc/reference/cfile-class.md)-derived class that supports memory files.
+[`CMemFile` Class](cmemfile-class.md)\
+The [`CFile` Class](cfile-class.md)-derived class that supports memory files.
 
-[`CMemoryException` Class](../../mfc/reference/cmemoryexception-class.md)<br/>
+[`CMemoryException` Class](cmemoryexception-class.md)\
 Represents an out-of-memory exception condition.
 
-[`CMenu` Class](../../mfc/reference/cmenu-class.md)<br/>
+[`CMenu` Class](cmenu-class.md)\
 An encapsulation of the Windows `HMENU`.
 
-[`CMenuTearOffManager` Class](../../mfc/reference/cmenutearoffmanager-class.md)<br/>
+[`CMenuTearOffManager` Class](cmenutearoffmanager-class.md)\
 Manages tear-off menus. A tear-off menu is a menu on the menu bar. The user can remove a tear-off menu from the menu bar, causing the tear-off menu to float.
 
-[`CMetaFileDC` Class](../../mfc/reference/cmetafiledc-class.md)<br/>
+[`CMetaFileDC` Class](cmetafiledc-class.md)\
 Implements a Windows metafile, which contains a sequence of graphics device interface (GDI) commands that you can replay to create a desired image or text.
 
-[`CMFCAcceleratorKey` Class](../../mfc/reference/cmfcacceleratorkey-class.md)<br/>
+[`CMFCAcceleratorKey` Class](cmfcacceleratorkey-class.md)\
 Helper class that implements virtual key mapping and formatting.
 
-[`CMFCAcceleratorKeyAssignCtrl` Class](../../mfc/reference/cmfcacceleratorkeyassignctrl-class.md)<br/>
-Extends the [`CEdit` Class](../../mfc/reference/cedit-class.md) to support extra system buttons such as ALT, CONTROL, and SHIFT.
+[`CMFCAcceleratorKeyAssignCtrl` Class](cmfcacceleratorkeyassignctrl-class.md)\
+Extends the [`CEdit` Class](cedit-class.md) to support extra system buttons such as ALT, CONTROL, and SHIFT.
 
-[`CMFCAutoHideButton` Class](../../mfc/reference/cmfcautohidebutton-class.md)<br/>
-A button that displays or hides a [`CDockablePane` Class](../../mfc/reference/cdockablepane-class.md) that is configured to hide.
+[`CMFCAutoHideButton` Class](cmfcautohidebutton-class.md)\
+A button that displays or hides a [`CDockablePane` Class](cdockablepane-class.md) that is configured to hide.
 
-[`CMFCBaseTabCtrl` Class](../../mfc/reference/cmfcbasetabctrl-class.md)<br/>
+[`CMFCBaseTabCtrl` Class](cmfcbasetabctrl-class.md)\
 Implements the base functionality for tabbed windows.
 
-[`CMFCButton` Class](../../mfc/reference/cmfcbutton-class.md)<br/>
-Adds functionality to the [`CButton` Class](../../mfc/reference/cbutton-class.md) class such as aligning button text, combining button text and an image, selecting a cursor, and specifying a tool tip.
+[`CMFCButton` Class](cmfcbutton-class.md)\
+Adds functionality to the [`CButton` Class](cbutton-class.md) class such as aligning button text, combining button text and an image, selecting a cursor, and specifying a tool tip.
 
-[`CMFCCaptionBar` Class](../../mfc/reference/cmfccaptionbar-class.md)<br/>
+[`CMFCCaptionBar` Class](cmfccaptionbar-class.md)\
 Control bar that can display three elements: a button, a text label, and a bitmap. It can only display one element of each type at a time. You can align each element to the left or right edges of the control or to the center. You can also apply a flat or 3D style to the top and bottom borders of the caption bar.
 
-[`CMFCCaptionButton` Class](../../mfc/reference/cmfccaptionbutton-class.md)<br/>
+[`CMFCCaptionButton` Class](cmfccaptionbutton-class.md)\
 Implements a button that is displayed on the caption bar for a docking pane or a mini-frame window. Typically, the framework creates caption buttons automatically.
 
-[`CMFCColorBar` Class](../../mfc/reference/cmfccolorbar-class.md)<br/>
+[`CMFCColorBar` Class](cmfccolorbar-class.md)\
 Represents a docking control bar that can select colors in a document or application.
 
-[`CMFCColorButton` Class](../../mfc/reference/cmfccolorbutton-class.md)<br/>
-The `CMFCColorButton` and [`CMFCColorBar` Class](../../mfc/reference/cmfccolorbar-class.md) classes are used together to implement a color picker control.
+[`CMFCColorButton` Class](cmfccolorbutton-class.md)\
+The `CMFCColorButton` and [`CMFCColorBar` Class](cmfccolorbar-class.md) classes are used together to implement a color picker control.
 
-[`CMFCColorDialog` Class](../../mfc/reference/cmfccolordialog-class.md)<br/>
+[`CMFCColorDialog` Class](cmfccolordialog-class.md)\
 Represents a color selection dialog box.
 
-[`CMFCColorMenuButton` Class](../../mfc/reference/cmfccolormenubutton-class.md)<br/>
+[`CMFCColorMenuButton` Class](cmfccolormenubutton-class.md)\
 Supports a menu command or a toolbar button that starts a color picker dialog box.
 
-[`CMFCColorPickerCtrl` Class](../../mfc/reference/cmfccolorpickerctrl-class.md)<br/>
+[`CMFCColorPickerCtrl` Class](cmfccolorpickerctrl-class.md)\
 Provides functionality for a control that is used to select colors.
 
-[`CMFCDesktopAlertDialog` Class](../../mfc/reference/cmfcdesktopalertdialog-class.md)<br/>
-Used together with the [`CMFCDesktopAlertWnd` Class](../../mfc/reference/cmfcdesktopalertwnd-class.md) to display a custom dialog in a popup window.
+[`CMFCDesktopAlertDialog` Class](cmfcdesktopalertdialog-class.md)\
+Used together with the [`CMFCDesktopAlertWnd` Class](cmfcdesktopalertwnd-class.md) to display a custom dialog in a popup window.
 
-[`CMFCDesktopAlertWnd` Class](../../mfc/reference/cmfcdesktopalertwnd-class.md)<br/>
+[`CMFCDesktopAlertWnd` Class](cmfcdesktopalertwnd-class.md)\
 Implements the functionality of a modeless dialog box which appears on the screen to inform the user about an event.
 
-[`CMFCDesktopAlertWndInfo` Class](../../mfc/reference/cmfcdesktopalertwndinfo-class.md)<br/>
-Used with the [`CMFCDesktopAlertWnd` Class](../../mfc/reference/cmfcdesktopalertwnd-class.md). It specifies the controls that are displayed if the desktop alert window pops up.
+[`CMFCDesktopAlertWndInfo` Class](cmfcdesktopalertwndinfo-class.md)\
+Used with the [`CMFCDesktopAlertWnd` Class](cmfcdesktopalertwnd-class.md). It specifies the controls that are displayed if the desktop alert window pops up.
 
-[`CMFCDragFrameImpl` Class](../../mfc/reference/cmfcdragframeimpl-class.md)<br/>
+[`CMFCDragFrameImpl` Class](cmfcdragframeimpl-class.md)\
 Draws the drag rectangle that appears when the user drags a pane in the standard dock mode.
 
-[`CMFCDropDownToolBar` Class](../../mfc/reference/cmfcdropdowntoolbar-class.md)<br/>
+[`CMFCDropDownToolBar` Class](cmfcdropdowntoolbar-class.md)\
 A toolbar that appears when the user presses and holds a top-level toolbar button.
 
-[`CMFCDropDownToolbarButton` Class](../../mfc/reference/cmfcdropdowntoolbarbutton-class.md)<br/>
-A type of toolbar button that behaves like a regular button when it is clicked. However, it opens a drop-down toolbar ([`CMFCDropDownToolBar` Class](../../mfc/reference/cmfcdropdowntoolbar-class.md) if the user presses and holds the toolbar button down.
+[`CMFCDropDownToolbarButton` Class](cmfcdropdowntoolbarbutton-class.md)\
+A type of toolbar button that behaves like a regular button when it is clicked. However, it opens a drop-down toolbar ([`CMFCDropDownToolBar` Class](cmfcdropdowntoolbar-class.md)) if the user presses and holds the toolbar button down.
 
-[`CMFCDynamicLayout` Class](../../mfc/reference/cmfcdynamiclayout-class.md)<br/>
+[`CMFCDynamicLayout` Class](cmfcdynamiclayout-class.md)\
 Specifies how controls in a window are moved and resized as the user resizes the window.
 
-[`CMFCEditBrowseCtrl` Class](../../mfc/reference/cmfceditbrowsectrl-class.md)<br/>
+[`CMFCEditBrowseCtrl` Class](cmfceditbrowsectrl-class.md)\
 Supports the edit browse control, which is an editable text box that optionally contains a browse button. When the user clicks the browse button, the control performs a custom action or displays a standard dialog box that contains a file browser or a folder browser.
 
-[`CMFCFilterChunkValueImpl` Class](../../mfc/reference/cmfcfilterchunkvalueimpl-class.md)<br/>
+[`CMFCFilterChunkValueImpl` Class](cmfcfilterchunkvalueimpl-class.md)\
 Simplifies both chunk and property value pair logic.
 
-[`CMFCFontComboBox` Class](../../mfc/reference/cmfcfontcombobox-class.md)<br/>
+[`CMFCFontComboBox` Class](cmfcfontcombobox-class.md)\
 Creates a combo box control that contains a list of fonts.
 
-[`CMFCFontInfo` Class](../../mfc/reference/cmfcfontinfo-class.md)<br/>
+[`CMFCFontInfo` Class](cmfcfontinfo-class.md)\
 Describes the name and other attributes of a font.
 
-[`CMFCHeaderCtrl` Class](../../mfc/reference/cmfcheaderctrl-class.md)<br/>
+[`CMFCHeaderCtrl` Class](cmfcheaderctrl-class.md)\
 Supports sorting multiple columns in a header control.
 
-[`CMFCImageEditorDialog` Class](../../mfc/reference/cmfcimageeditordialog-class.md)<br/>
+[`CMFCImageEditorDialog` Class](cmfcimageeditordialog-class.md)\
 Supports an image editor dialog box.
 
-[`CMFCKeyMapDialog` Class](../../mfc/reference/cmfckeymapdialog-class.md)<br/>
+[`CMFCKeyMapDialog` Class](cmfckeymapdialog-class.md)\
 Supports a control that maps commands to keys on the keyboard.
 
-[`CMFCLinkCtrl` Class](../../mfc/reference/cmfclinkctrl-class.md)<br/>
+[`CMFCLinkCtrl` Class](cmfclinkctrl-class.md)\
 Displays a button as a hyperlink and invokes the link's target when the button is clicked.
 
-[`CMFCListCtrl` Class](../../mfc/reference/cmfclistctrl-class.md)<br/>
-Extends the functionality of [`CListCtrl` Class](../../mfc/reference/clistctrl-class.md) class by supporting the advanced header control functionality of the [`CMFCHeaderCtrl` Class](../../mfc/reference/cmfcheaderctrl-class.md).
+[`CMFCListCtrl` Class](cmfclistctrl-class.md)\
+Extends the functionality of [`CListCtrl` Class](clistctrl-class.md) class by supporting the advanced header control functionality of the [`CMFCHeaderCtrl` Class](cmfcheaderctrl-class.md).
 
-[`CMFCMaskedEdit` Class](../../mfc/reference/cmfcmaskededit-class.md)<br/>
+[`CMFCMaskedEdit` Class](cmfcmaskededit-class.md)\
 Supports a masked edit control, which validates user input against a mask and displays the validated results according to a template.
 
-[`CMFCMenuBar` Class](../../mfc/reference/cmfcmenubar-class.md)<br/>
+[`CMFCMenuBar` Class](cmfcmenubar-class.md)\
 A menu bar that implements docking.
 
-[`CMFCMenuButton` Class](../../mfc/reference/cmfcmenubutton-class.md)<br/>
+[`CMFCMenuButton` Class](cmfcmenubutton-class.md)\
 A button that displays a pop-up menu and reports on the user's menu selections.
 
-[`CMFCOutlookBar` Class](../../mfc/reference/cmfcoutlookbar-class.md)<br/>
-A tabbed pane with the visual appearance of the **Navigation Pane** in Microsoft Outlook 2000 or Outlook 2003. The `CMFCOutlookBar` object contains a [`CMFCOutlookBarTabCtrl` Class](../../mfc/reference/cmfcoutlookbartabctrl-class.md) object and a series of tabs. The tabs can be either [`CMFCOutlookBarPane` Class](../../mfc/reference/cmfcoutlookbarpane-class.md) objects or `CWnd`-derived objects. To the user, the Outlook bar appears as a series of buttons and a display area. When the user clicks a button, the corresponding control or button pane is displayed.
+[`CMFCOutlookBar` Class](cmfcoutlookbar-class.md)\
+A tabbed pane with the visual appearance of the **Navigation Pane** in Microsoft Outlook 2000 or Outlook 2003. The `CMFCOutlookBar` object contains a [`CMFCOutlookBarTabCtrl` Class](cmfcoutlookbartabctrl-class.md) object and a series of tabs. The tabs can be either [`CMFCOutlookBarPane` Class](cmfcoutlookbarpane-class.md) objects or `CWnd`-derived objects. To the user, the Outlook bar appears as a series of buttons and a display area. When the user clicks a button, the corresponding control or button pane is displayed.
 
-[`CMFCOutlookBarPane` Class](../../mfc/reference/cmfcoutlookbarpane-class.md)<br/>
-A control derived from [`CMFCToolBar` Class](../../mfc/reference/cmfctoolbar-class.md) that can be inserted into an Outlook bar ([`CMFCOutlookBar` Class](../../mfc/reference/cmfcoutlookbar-class.md)). The Outlook bar pane contains a column of large buttons. The user can scroll up and down the list of buttons if it is larger than the pane. When the user detaches an Outlook bar pane from the Outlook bar, it can float or dock in the main frame window.
+[`CMFCOutlookBarPane` Class](cmfcoutlookbarpane-class.md)\
+A control derived from [`CMFCToolBar` Class](cmfctoolbar-class.md) that can be inserted into an Outlook bar ([`CMFCOutlookBar` Class](cmfcoutlookbar-class.md)). The Outlook bar pane contains a column of large buttons. The user can scroll up and down the list of buttons if it is larger than the pane. When the user detaches an Outlook bar pane from the Outlook bar, it can float or dock in the main frame window.
 
-[`CMFCOutlookBarTabCtrl` Class](../../mfc/reference/cmfcoutlookbartabctrl-class.md)<br/>
+[`CMFCOutlookBarTabCtrl` Class](cmfcoutlookbartabctrl-class.md)\
 A tab control that has the visual appearance of the **Navigation Pane** in Microsoft Outlook.
 
-[`CMFCPopupMenu` Class](../../mfc/reference/cmfcpopupmenu-class.md)<br/>
+[`CMFCPopupMenu` Class](cmfcpopupmenu-class.md)\
 Implements Windows pop-up menu functionality and extends it by adding features such as tear-off menus and tooltips.
 
-[`CMFCPopupMenuBar` Class](../../mfc/reference/cmfcpopupmenubar-class.md)<br/>
+[`CMFCPopupMenuBar` Class](cmfcpopupmenubar-class.md)\
 A menu bar embedded into a pop-up menu.
 
-[`CMFCPreviewCtrlImpl` Class](../../mfc/reference/cmfcpreviewctrlimpl-class.md)<br/>
+[`CMFCPreviewCtrlImpl` Class](cmfcpreviewctrlimpl-class.md)\
 Implements a window that is placed on a host window provided by the Shell for Rich Preview.
 
-[`CMFCPropertyGridColorProperty` Class](../../mfc/reference/cmfcpropertygridcolorproperty-class.md)<br/>
+[`CMFCPropertyGridColorProperty` Class](cmfcpropertygridcolorproperty-class.md)\
 Supports a property list control item that opens a color selection dialog box.
 
-[`CMFCPropertyGridCtrl` Class](../../mfc/reference/cmfcpropertygridctrl-class.md)<br/>
+[`CMFCPropertyGridCtrl` Class](cmfcpropertygridctrl-class.md)\
 Supports an editable property grid control that can display properties in alphabetical or hierarchical order.
 
-[`CMFCPropertyGridFileProperty` Class](../../mfc/reference/cmfcpropertygridfileproperty-class.md)<br/>
+[`CMFCPropertyGridFileProperty` Class](cmfcpropertygridfileproperty-class.md)\
 Supports a property list control item that opens a file selection dialog box.
 
-[`CMFCPropertyGridFontProperty` Class](../../mfc/reference/cmfcpropertygridfontproperty-class.md)<br/>
+[`CMFCPropertyGridFontProperty` Class](cmfcpropertygridfontproperty-class.md)\
 Supports a property list control item that opens a font selection dialog box.
 
-[`CMFCPropertyGridProperty` Class](../../mfc/reference/cmfcpropertygridproperty-class.md)<br/>
+[`CMFCPropertyGridProperty` Class](cmfcpropertygridproperty-class.md)\
 Represents a list item in a property list control.
 
-[`CMFCPropertyPage` Class](../../mfc/reference/cmfcpropertypage-class.md)<br/>
+[`CMFCPropertyPage` Class](cmfcpropertypage-class.md)\
 Supports the display of pop-up menus on a property page.
 
-[`CMFCPropertySheet` Class](../../mfc/reference/cmfcpropertysheet-class.md)<br/>
+[`CMFCPropertySheet` Class](cmfcpropertysheet-class.md)\
 Supports a property sheet where each property page is denoted by a page tab, a toolbar button, a tree control node, or a list item.
 
-[`CMFCReBar` Class](../../mfc/reference/cmfcrebar-class.md)<br/>
+[`CMFCReBar` Class](cmfcrebar-class.md)\
 Control bar that provides layout, persistence, and state information for rebar controls.
 
-[`CMFCRibbonApplicationButton` Class](../../mfc/reference/cmfcribbonapplicationbutton-class.md)<br/>
+[`CMFCRibbonApplicationButton` Class](cmfcribbonapplicationbutton-class.md)\
 Implements a special button located in the top-left corner of the application window. When clicked, the button opens a menu that usually contains common **File** commands like **Open**, **Save**, and **Exit**.
 
-[`CMFCRibbonBaseElement` Class](../../mfc/reference/cmfcribbonbaseelement-class.md)<br/>
-Base class for all elements that you can add to a [`CMFCRibbonBar` Class](../../mfc/reference/cmfcribbonbar-class.md). Examples of ribbon elements are ribbon buttons, ribbon check boxes, and ribbon combo boxes.
+[`CMFCRibbonBaseElement` Class](cmfcribbonbaseelement-class.md)\
+Base class for all elements that you can add to a [`CMFCRibbonBar` Class](cmfcribbonbar-class.md). Examples of ribbon elements are ribbon buttons, ribbon check boxes, and ribbon combo boxes.
 
-[`CMFCRibbonButton` Class](../../mfc/reference/cmfcribbonbutton-class.md)<br/>
+[`CMFCRibbonButton` Class](cmfcribbonbutton-class.md)\
 Implements buttons that you can position on ribbon bar elements such as panels, Quick Access Toolbars, and pop-up menus.
 
-[`CMFCRibbonButtonsGroup` Class](../../mfc/reference/cmfcribbonbuttonsgroup-class.md)<br/>
+[`CMFCRibbonButtonsGroup` Class](cmfcribbonbuttonsgroup-class.md)\
 Lets you organize a set of ribbon buttons into a group. All buttons in the group are directly adjacent to each other horizontally and enclosed in a border.
 
-[`CMFCRibbonCategory` Class](../../mfc/reference/cmfcribboncategory-class.md)<br/>
-Implements a ribbon tab that contains a group of [`CMFCRibbonPanel` Class](../../mfc/reference/cmfcribbonpanel-class.md).
+[`CMFCRibbonCategory` Class](cmfcribboncategory-class.md)\
+Implements a ribbon tab that contains a group of [`CMFCRibbonPanel` Class](cmfcribbonpanel-class.md).
 
-[`CMFCRibbonCheckBox` Class](../../mfc/reference/cmfcribboncheckbox-class.md)<br/>
+[`CMFCRibbonCheckBox` Class](cmfcribboncheckbox-class.md)\
 Implements a check box that you can add to a ribbon panel, Quick Access Toolbar, or popup menu.
 
-[`CMFCRibbonColorButton` Class](../../mfc/reference/cmfcribboncolorbutton-class.md)<br/>
+[`CMFCRibbonColorButton` Class](cmfcribboncolorbutton-class.md)\
 Implements a color button that you can add to a ribbon bar. The ribbon color button displays a drop-down menu that contains one or more color palettes.
 
-[`CMFCRibbonComboBox` Class](../../mfc/reference/cmfcribboncombobox-class.md)<br/>
+[`CMFCRibbonComboBox` Class](cmfcribboncombobox-class.md)\
 Implements a combo box control that you can add to a ribbon bar, a ribbon panel, or a ribbon popup menu.
 
-[`CMFCRibbonContextCaption` Class](../../mfc/reference/cmfcribboncontextcaption-class.md)<br/>
+[`CMFCRibbonContextCaption` Class](cmfcribboncontextcaption-class.md)\
 Implements a colored caption that appears at the top of a ribbon category or a context category.
 
-[`CMFCRibbonEdit` Class](../../mfc/reference/cmfcribbonedit-class.md)<br/>
+[`CMFCRibbonEdit` Class](cmfcribbonedit-class.md)\
 Implements an edit control that is positioned on a ribbon.
 
-[`CMFCRibbonFontComboBox` Class](../../mfc/reference/cmfcribbonfontcombobox-class.md)<br/>
+[`CMFCRibbonFontComboBox` Class](cmfcribbonfontcombobox-class.md)\
 Implements a combo box that contains a list of fonts. You place the combo box on a ribbon panel.
 
-[`CMFCRibbonGallery` Class](../../mfc/reference/cmfcribbongallery-class.md)<br/>
+[`CMFCRibbonGallery` Class](cmfcribbongallery-class.md)\
 Implements Office 2007-style ribbon galleries.
 
-[`CMFCRibbonGalleryMenuButton` Class](../../mfc/reference/cmfcribbongallerymenubutton-class.md)<br/>
+[`CMFCRibbonGalleryMenuButton` Class](cmfcribbongallerymenubutton-class.md)\
 Implements a ribbon menu button that contains ribbon galleries.
 
-[`CMFCRibbonLabel` Class](../../mfc/reference/cmfcribbonlabel-class.md)<br/>
+[`CMFCRibbonLabel` Class](cmfcribbonlabel-class.md)\
 Implements a non-clickable text label for a ribbon.
 
-[`CMFCRibbonLinkCtrl` Class](../../mfc/reference/cmfcribbonlinkctrl-class.md)<br/>
+[`CMFCRibbonLinkCtrl` Class](cmfcribbonlinkctrl-class.md)\
 Implements a hyperlink that is positioned on a ribbon. The hyperlink opens a Web page when you click it.
 
-[`CMFCRibbonMainPanel` Class](../../mfc/reference/cmfcribbonmainpanel-class.md)<br/>
-Implements a ribbon panel that displays when you click the [`CMFCRibbonApplicationButton` Class](../../mfc/reference/cmfcribbonapplicationbutton-class.md).
+[`CMFCRibbonMainPanel` Class](cmfcribbonmainpanel-class.md)\
+Implements a ribbon panel that displays when you click the [`CMFCRibbonApplicationButton` Class](cmfcribbonapplicationbutton-class.md).
 
-[`CMFCRibbonMiniToolBar` Class](../../mfc/reference/cmfcribbonminitoolbar-class.md)<br/>
+[`CMFCRibbonMiniToolBar` Class](cmfcribbonminitoolbar-class.md)\
 Implements a contextual popup toolbar.
 
-[`CMFCRibbonPanel` Class](../../mfc/reference/cmfcribbonpanel-class.md)<br/>
+[`CMFCRibbonPanel` Class](cmfcribbonpanel-class.md)\
 Implements a panel that contains a set of ribbon elements. When the panel is drawn, it displays as many elements as possible, given the size of the panel.
 
-[`CMFCRibbonProgressBar` Class](../../mfc/reference/cmfcribbonprogressbar-class.md)<br/>
+[`CMFCRibbonProgressBar` Class](cmfcribbonprogressbar-class.md)\
 Implements a control that visually indicates the progress of a lengthy operation.
 
-[`CMFCRibbonSlider` Class](../../mfc/reference/cmfcribbonslider-class.md)<br/>
+[`CMFCRibbonSlider` Class](cmfcribbonslider-class.md)\
 Implements a slider control that you can add to a ribbon bar or ribbon status bar. The ribbon slider control resembles the zoom sliders that appear in Office 2007 applications.
 
-[`CMFCRibbonStatusBar` Class](../../mfc/reference/cmfcribbonstatusbar-class.md)<br/>
+[`CMFCRibbonStatusBar` Class](cmfcribbonstatusbar-class.md)\
 Implements a status bar control that can display ribbon elements.
 
-[`CMFCRibbonStatusBarPane` Class](../../mfc/reference/cmfcribbonstatusbarpane-class.md)<br/>
+[`CMFCRibbonStatusBarPane` Class](cmfcribbonstatusbarpane-class.md)\
 Implements a ribbon element that you can add to a ribbon status bar.
 
-[`CMFCRibbonUndoButton` Class](../../mfc/reference/cmfcribbonundobutton-class.md)<br/>
+[`CMFCRibbonUndoButton` Class](cmfcribbonundobutton-class.md)\
 Implements a split button, a small button with a downward pointing triangle on the rightmost part of the main button. Users can click the triangle to display a drop-down list of their most recently performed actions. Users can then select one or more actions from the drop-down list. However, if the user clicks the button, only the last (the most recently added) action on the drop-down list is undone. You should populate the list with actions as the user performs them.
 
-[`CMFCShellListCtrl` Class](../../mfc/reference/cmfcshelllistctrl-class.md)<br/>
+[`CMFCShellListCtrl` Class](cmfcshelllistctrl-class.md)\
 Provides Windows list control functionality and expands it by including the ability to display a list of shell items.
 
-[`CMFCShellTreeCtrl` Class](../../mfc/reference/cmfcshelltreectrl-class.md)<br/>
-Extends [`CTreeCtrl` Class](../../mfc/reference/ctreectrl-class.md) functionality by displaying a hierarchy of Shell items.
+[`CMFCShellTreeCtrl` Class](cmfcshelltreectrl-class.md)\
+Extends [`CTreeCtrl` Class](ctreectrl-class.md) functionality by displaying a hierarchy of Shell items.
 
-[`CMFCSpinButtonCtrl` Class](../../mfc/reference/cmfcspinbuttonctrl-class.md)<br/>
+[`CMFCSpinButtonCtrl` Class](cmfcspinbuttonctrl-class.md)\
 Supports a visual manager that draws a spin button control.
 
-[`CMFCStatusBar` Class](../../mfc/reference/cmfcstatusbar-class.md)<br/>
+[`CMFCStatusBar` Class](cmfcstatusbar-class.md)\
 Implements a status bar similar to the `CStatusBar` class. However, the `CMFCStatusBar` class has features not offered by the `CStatusBar` class, such as the ability to display images, animations, and progress bars; and the ability to respond to mouse double-clicks.
 
-[`CMFCTabCtrl` Class](../../mfc/reference/cmfctabctrl-class.md)<br/>
+[`CMFCTabCtrl` Class](cmfctabctrl-class.md)\
 Provides functionality for a tab control. The tab control displays a dockable window with flat or three-dimensional tabs at its top or bottom. The tabs can display text and an image and can change color when active.
 
-[`CMFCTabToolTipInfo Structure](../../mfc/reference/cmfctabtooltipinfo-structure.md)<br/>
+[`CMFCTabToolTipInfo` Structure](cmfctabtooltipinfo-structure.md)\
 Provides information about the MDI tab that the user is hovering over.
 
-[`CMFCTasksPane` Class](../../mfc/reference/cmfctaskspane-class.md)<br/>
+[`CMFCTasksPane` Class](cmfctaskspane-class.md)\
 Implements a list of clickable items (tasks).
 
-[`CMFCTasksPaneTask` Class](../../mfc/reference/cmfctaskspanetask-class.md)<br/>
-Helper class that represents tasks for the task pane control ([`CMFCTasksPane` Class](../../mfc/reference/cmfctaskspane-class.md)). The task object represents an item in the task group ([`CMFCTasksPaneTaskGroup` Class](../../mfc/reference/cmfctaskspanetaskgroup-class.md)). Each task can have a command that the framework executes when a user clicks on the task and an icon that appears to the left of the task name.
+[`CMFCTasksPaneTask` Class](cmfctaskspanetask-class.md)\
+Helper class that represents tasks for the task pane control ([`CMFCTasksPane` Class](cmfctaskspane-class.md)). The task object represents an item in the task group ([`CMFCTasksPaneTaskGroup` Class](cmfctaskspanetaskgroup-class.md)). Each task can have a command that the framework executes when a user clicks on the task and an icon that appears to the left of the task name.
 
-[`CMFCTasksPaneTaskGroup` Class](../../mfc/reference/cmfctaskspanetaskgroup-class.md)<br/>
-Helper class used by the [`CMFCTasksPane` Class](../../mfc/reference/cmfctaskspane-class.md) control. Objects of type `CMFCTasksPaneTaskGroup` represent a *task group*. The task group is a list of items that the framework displays in a separate box that has a collapse button. The box can have an optional caption (group name). If a group is collapsed, the list of tasks is not visible.
+[`CMFCTasksPaneTaskGroup` Class](cmfctaskspanetaskgroup-class.md)\
+Helper class used by the [`CMFCTasksPane` Class](cmfctaskspane-class.md) control. Objects of type `CMFCTasksPaneTaskGroup` represent a *task group*. The task group is a list of items that the framework displays in a separate box that has a collapse button. The box can have an optional caption (group name). If a group is collapsed, the list of tasks is not visible.
 
-[`CMFCToolBar` Class](../../mfc/reference/cmfctoolbar-class.md)<br/>
-Resembles [`CToolBar` Class](../../mfc/reference/ctoolbar-class.md), but provides additional support for user interface features. These include flat toolbars, toolbars with hot images, large icons, pager buttons, locked toolbars, rebar controls, text under images, background images, and tabbed toolbars. The `CMFCToolBar` class also contains built-in support for user customization of toolbars and menus, drag-and-drop between toolbars and menus, combo box buttons, edit box buttons, color pickers, and roll-up buttons.
+[`CMFCToolBar` Class](cmfctoolbar-class.md)\
+Resembles [`CToolBar` Class](ctoolbar-class.md), but provides additional support for user interface features. These include flat toolbars, toolbars with hot images, large icons, pager buttons, locked toolbars, rebar controls, text under images, background images, and tabbed toolbars. The `CMFCToolBar` class also contains built-in support for user customization of toolbars and menus, drag-and-drop between toolbars and menus, combo box buttons, edit box buttons, color pickers, and roll-up buttons.
 
-[`CMFCToolBarImages` Class](../../mfc/reference/cmfctoolbarimages-class.md)<br/>
+[`CMFCToolBarImages` Class](cmfctoolbarimages-class.md)\
 Manages toolbar images loaded from application resources or from files.
 
-[`CMFCToolBarInfo` Class](../../mfc/reference/cmfctoolbarinfo-class.md)<br/>
-Contains the resource IDs of toolbar images in various states. `CMFCToolBarInfo` is a helper class that is used as a parameter of the [`CMFCToolBar::LoadToolBarEx`](../../mfc/reference/cmfctoolbar-class.md#loadtoolbarex) method.
+[`CMFCToolBarInfo` Class](cmfctoolbarinfo-class.md)\
+Contains the resource IDs of toolbar images in various states. `CMFCToolBarInfo` is a helper class that is used as a parameter of the [`CMFCToolBar::LoadToolBarEx`](cmfctoolbar-class.md#loadtoolbarex) method.
 
-[`CMFCToolBarMenuButton` Class](../../mfc/reference/cmfctoolbarmenubutton-class.md)<br/>
+[`CMFCToolBarMenuButton` Class](cmfctoolbarmenubutton-class.md)\
 A toolbar button that contains a pop-up menu.
 
-[`CMFCToolBarsCustomizeDialog` Class](../../mfc/reference/cmfctoolbarscustomizedialog-class.md)<br/>
-A modeless tab dialog box ([`CPropertySheet` Class](../../mfc/reference/cpropertysheet-class.md)) that enables the user to customize the toolbars, menus, keyboard shortcuts, user-defined tools, and visual style in an application. Typically, the user accesses this dialog box by selecting **Customize** from the **Tools** menu.
+[`CMFCToolBarsCustomizeDialog` Class](cmfctoolbarscustomizedialog-class.md)\
+A modeless tab dialog box ([`CPropertySheet` Class](cpropertysheet-class.md)) that enables the user to customize the toolbars, menus, keyboard shortcuts, user-defined tools, and visual style in an application. Typically, the user accesses this dialog box by selecting **Customize** from the **Tools** menu.
 
-[`CMFCToolTipCtrl` Class](../../mfc/reference/cmfctooltipctrl-class.md)<br/>
-An extended tooltip implementation based on the [`CToolTipCtrl` Class](../../mfc/reference/ctooltipctrl-class.md). A tooltip based on the `CMFCToolTipCtrl` class can display an icon, a label, and a description. You can customize its visual appearance by using a gradient fill, custom text and border colors, bold text, rounded corners, or a balloon style.
+[`CMFCToolTipCtrl` Class](cmfctooltipctrl-class.md)\
+An extended tooltip implementation based on the [`CToolTipCtrl` Class](ctooltipctrl-class.md). A tooltip based on the `CMFCToolTipCtrl` class can display an icon, a label, and a description. You can customize its visual appearance by using a gradient fill, custom text and border colors, bold text, rounded corners, or a balloon style.
 
-[`CMFCToolTipInfo` Class](../../mfc/reference/cmfctooltipinfo-class.md)<br/>
+[`CMFCToolTipInfo` Class](cmfctooltipinfo-class.md)\
 Stores information about the visual appearance of tooltips.
 
-[`CMFCVisualManager` Class](../../mfc/reference/cmfcvisualmanager-class.md)<br/>
+[`CMFCVisualManager` Class](cmfcvisualmanager-class.md)\
 Provides support for changing the appearance of your application at a global level. The `CMFCVisualManager` class works together with a class that provides instructions to draw the GUI controls of your application using a consistent style. These other classes are referred to as visual managers and they inherit from `CMFCBaseVisualManager`.
 
-[`CMFCVisualManagerOffice2003` Class](../../mfc/reference/cmfcvisualmanageroffice2003-class.md)<br/>
+[`CMFCVisualManagerOffice2003` Class](cmfcvisualmanageroffice2003-class.md)\
 Gives an application a Microsoft Office 2003 appearance.
 
-[`CMFCVisualManagerOffice2007` Class](../../mfc/reference/cmfcvisualmanageroffice2007-class.md)<br/>
+[`CMFCVisualManagerOffice2007` Class](cmfcvisualmanageroffice2007-class.md)\
 Gives an application a Microsoft Office 2007 appearance.
 
-[`CMFCVisualManagerVS2005` Class](../../mfc/reference/cmfcvisualmanagervs2005-class.md)<br/>
+[`CMFCVisualManagerVS2005` Class](cmfcvisualmanagervs2005-class.md)\
 Gives an application a Microsoft Visual Studio 2005 appearance.
 
-[`CMFCVisualManagerWindows` Class](../../mfc/reference/cmfcvisualmanagerwindows-class.md)<br/>
+[`CMFCVisualManagerWindows` Class](cmfcvisualmanagerwindows-class.md)\
 Mimics the appearance of Microsoft Windows XP or Microsoft Vista when the user selects a Windows XP or Vista theme.
 
-[`CMFCVisualManagerWindows7` Class](../../mfc/reference/cmfcvisualmanagerwindows7-class.md)<br/>
+[`CMFCVisualManagerWindows7` Class](cmfcvisualmanagerwindows7-class.md)\
 Gives an application the appearance of a Windows 7 application.
 
-[`CMFCWindowsManagerDialog` Class](../../mfc/reference/cmfcwindowsmanagerdialog-class.md)<br/>
+[`CMFCWindowsManagerDialog` Class](cmfcwindowsmanagerdialog-class.md)\
 Enables a user to manage MDI child windows in an MDI application.
 
-[`CMiniFrameWnd` Class](../../mfc/reference/cminiframewnd-class.md)<br/>
+[`CMiniFrameWnd` Class](cminiframewnd-class.md)\
 Represents a half-height frame window typically seen around floating toolbars.
 
-[`CMonikerFile` Class](../../mfc/reference/cmonikerfile-class.md)<br/>
+[`CMonikerFile` Class](cmonikerfile-class.md)\
 Represents a stream of data ([`IStream`](/windows/win32/api/objidl/nn-objidl-istream)) named by an [`IMoniker`](/windows/win32/api/objidl/nn-objidl-imoniker).
 
-[`CMonthCalCtrl` Class](../../mfc/reference/cmonthcalctrl-class.md)<br/>
+[`CMonthCalCtrl` Class](cmonthcalctrl-class.md)\
 Encapsulates the functionality of a month calendar control.
 
-[`CMouseManager` Class](../../mfc/reference/cmousemanager-class.md)<br/>
-Lets a user associate different commands with a particular [`CView` Class](../../mfc/reference/cview-class.md) object when the user double-clicks inside that view.
+[`CMouseManager` Class](cmousemanager-class.md)\
+Lets a user associate different commands with a particular [`CView` Class](cview-class.md) object when the user double-clicks inside that view.
 
-[`CMultiDocTemplate` Class](../../mfc/reference/cmultidoctemplate-class.md)<br/>
+[`CMultiDocTemplate` Class](cmultidoctemplate-class.md)\
 Defines a document template that implements the multiple document interface (MDI).
 
-[`CMultiLock` Class](../../mfc/reference/cmultilock-class.md)<br/>
+[`CMultiLock` Class](cmultilock-class.md)\
 Represents the access-control mechanism used in controlling access to resources in a multithreaded program.
 
-[`CMultiPageDHtmlDialog` Class](../../mfc/reference/cmultipagedhtmldialog-class.md)<br/>
+[`CMultiPageDHtmlDialog` Class](cmultipagedhtmldialog-class.md)\
 A multipage dialog displays multiple HTML pages sequentially and handles the events from each page.
 
-[`CMultiPaneFrameWnd` Class](../../mfc/reference/cmultipaneframewnd-class.md)<br/>
-Extends [`CPaneFrameWnd` Class](../../mfc/reference/cpaneframewnd-class.md). It can support multiple panes. Instead of a single embedded handle to a control bar, `CMultiPaneFrameWnd` contains a [`CPaneContainerManager` Class](../../mfc/reference/cpanecontainermanager-class.md) object that enables the user to dock one `CMultiPaneFrameWnd` to another and dynamically create multiple floating, tabbed windows.
+[`CMultiPaneFrameWnd` Class](cmultipaneframewnd-class.md)\
+Extends [`CPaneFrameWnd` Class](cpaneframewnd-class.md). It can support multiple panes. Instead of a single embedded handle to a control bar, `CMultiPaneFrameWnd` contains a [`CPaneContainerManager` Class](cpanecontainermanager-class.md) object that enables the user to dock one `CMultiPaneFrameWnd` to another and dynamically create multiple floating, tabbed windows.
 
-[`CMutex` Class](../../mfc/reference/cmutex-class.md)<br/>
+[`CMutex` Class](cmutex-class.md)\
 Represents a mutex, which is a synchronization object that allows one thread mutually exclusive access to a resource.
 
-[`CNetAddressCtrl` Class](../../mfc/reference/cnetaddressctrl-class.md)<br/>
+[`CNetAddressCtrl` Class](cnetaddressctrl-class.md)\
 The `CNetAddressCtrl` class represents the network address control, which you can use to input and validate the format of IPv4, IPv6, and named DNS addresses.
 
-[`CNotSupportedException` Class](../../mfc/reference/cnotsupportedexception-class.md)<br/>
+[`CNotSupportedException` Class](cnotsupportedexception-class.md)\
 Represents an exception that is the result of a request for an unsupported feature.
 
-[`CObArray` Class](../../mfc/reference/cobarray-class.md)<br/>
+[`CObArray` Class](cobarray-class.md)\
 Supports arrays of `CObject` pointers.
 
-[`CObject` Class](../../mfc/reference/cobject-class.md)<br/>
+[`CObject` Class](cobject-class.md)\
 The principal base class for the Microsoft Foundation Class Library.
 
-[`CObList` Class](../../mfc/reference/coblist-class.md)<br/>
+[`CObList` Class](coblist-class.md)\
 Supports ordered lists of non-unique `CObject` pointers accessible sequentially or by pointer value.
 
-[`COccManager` Class](../../mfc/reference/coccmanager-class.md)<br/>
+[`COccManager` Class](coccmanager-class.md)\
 Manages various custom control sites; implemented by `COleControlContainer` and `COleControlSite` objects.
 
-[`COleBusyDialog` Class](../../mfc/reference/colebusydialog-class.md)<br/>
+[`COleBusyDialog` Class](colebusydialog-class.md)\
 Used for the OLE Server Not Responding or Server Busy dialog boxes.
 
-[`COleChangeIconDialog` Class](../../mfc/reference/colechangeicondialog-class.md)<br/>
+[`COleChangeIconDialog` Class](colechangeicondialog-class.md)\
 Used for the OLE Change Icon dialog box.
 
-[`COleChangeSourceDialog` Class](../../mfc/reference/colechangesourcedialog-class.md)<br/>
+[`COleChangeSourceDialog` Class](colechangesourcedialog-class.md)\
 Used for the OLE Change Source dialog box.
 
-[`COleClientItem` Class](../../mfc/reference/coleclientitem-class.md)<br/>
+[`COleClientItem` Class](coleclientitem-class.md)\
 Defines the container interface to OLE items.
 
-[`COleCmdUI` Class](../../mfc/reference/colecmdui-class.md)<br/>
+[`COleCmdUI` Class](colecmdui-class.md)\
 Implements a method for MFC to update the state of user-interface objects related to the `IOleCommandTarget`-driven features of your application.
 
-[`COleControl` Class](../../mfc/reference/colecontrol-class.md)<br/>
+[`COleControl` Class](colecontrol-class.md)\
 A powerful base class for developing OLE controls.
 
-[`COleControlContainer` Class](../../mfc/reference/colecontrolcontainer-class.md)<br/>
+[`COleControlContainer` Class](colecontrolcontainer-class.md)\
 Acts as a control container for ActiveX controls.
 
-[`COleControlModule` Class](../../mfc/reference/colecontrolmodule-class.md)<br/>
+[`COleControlModule` Class](colecontrolmodule-class.md)\
 The base class from which you derive an OLE control module object.
 
-[`COleControlSite` Class](../../mfc/reference/colecontrolsite-class.md)<br/>
+[`COleControlSite` Class](colecontrolsite-class.md)\
 Provides support for custom client-side control interfaces.
 
-[`COleConvertDialog` Class](../../mfc/reference/coleconvertdialog-class.md)<br/>
+[`COleConvertDialog` Class](coleconvertdialog-class.md)\
 For more information, see the [`OLEUICONVERT`](/windows/win32/api/oledlg/ns-oledlg-oleuiconvertw) structure in the Windows SDK.
 
-[`COleCurrency` Class](../../mfc/reference/colecurrency-class.md)<br/>
+[`COleCurrency` Class](colecurrency-class.md)\
 Encapsulates the `CURRENCY` data type of OLE automation.
 
-[`COleDataObject` Class](../../mfc/reference/coledataobject-class.md)<br/>
+[`COleDataObject` Class](coledataobject-class.md)\
 Used in data transfers for retrieving data in various formats from the Clipboard, through drag and drop, or from an embedded OLE item.
 
-[`COleDataSource` Class](../../mfc/reference/coledatasource-class.md)<br/>
+[`COleDataSource` Class](coledatasource-class.md)\
 Acts as a cache into which an application places the data that it will offer during data transfer operations, such as Clipboard or drag-and-drop operations.
 
-[`COleDBRecordView` Class](../../mfc/reference/coledbrecordview-class.md)<br/>
+[`COleDBRecordView` Class](coledbrecordview-class.md)\
 A view that displays database records in controls.
 
-[`COleDialog` Class](../../mfc/reference/coledialog-class.md)<br/>
+[`COleDialog` Class](coledialog-class.md)\
 Provides functionality common to dialog boxes for OLE.
 
-[`COleDispatchDriver` Class](../../mfc/reference/coledispatchdriver-class.md)<br/>
+[`COleDispatchDriver` Class](coledispatchdriver-class.md)\
 Implements the client side of OLE automation.
 
-[`COleDispatchException` Class](../../mfc/reference/coledispatchexception-class.md)<br/>
+[`COleDispatchException` Class](coledispatchexception-class.md)\
 Handles exceptions specific to the OLE `IDispatch` interface, which is a key part of OLE automation.
 
-[`COleDocObjectItem` Class](../../mfc/reference/coledocobjectitem-class.md)<br/>
+[`COleDocObjectItem` Class](coledocobjectitem-class.md)\
 Implements Active document containment.
 
-[`COleDocument` Class](../../mfc/reference/coledocument-class.md)<br/>
+[`COleDocument` Class](coledocument-class.md)\
 The base class for OLE documents that support visual editing.
 
-[`COleDropSource` Class](../../mfc/reference/coledropsource-class.md)<br/>
+[`COleDropSource` Class](coledropsource-class.md)\
 Enables data to be dragged to a drop target.
 
-[`COleDropTarget` Class](../../mfc/reference/coledroptarget-class.md)<br/>
+[`COleDropTarget` Class](coledroptarget-class.md)\
 Provides the communication mechanism between a window and the OLE libraries.
 
-[`COleException` Class](../../mfc/reference/coleexception-class.md)<br/>
+[`COleException` Class](coleexception-class.md)\
 Represents an exception condition related to an OLE operation.
 
-[`COleInsertDialog` Class](../../mfc/reference/coleinsertdialog-class.md)<br/>
+[`COleInsertDialog` Class](coleinsertdialog-class.md)\
 Used for the OLE Insert Object dialog box.
 
-[`COleIPFrameWnd` Class](../../mfc/reference/coleipframewnd-class.md)<br/>
+[`COleIPFrameWnd` Class](coleipframewnd-class.md)\
 The base for your application's in-place editing window.
 
-[`COleIPFrameWndEx` Class](../../mfc/reference/coleipframewndex-class.md)<br/>
-Implements an OLE container that supports MFC. You must derive the in-place frame window class for your application from the `COleIPFrameWndEx` class, instead of deriving it from the [`COleIPFrameWnd`](../../mfc/reference/coleipframewnd-class.md) class.
+[`COleIPFrameWndEx` Class](coleipframewndex-class.md)\
+Implements an OLE container that supports MFC. You must derive the in-place frame window class for your application from the `COleIPFrameWndEx` class, instead of deriving it from the [`COleIPFrameWnd`](coleipframewnd-class.md) class.
 
-[`COleLinkingDoc` Class](../../mfc/reference/colelinkingdoc-class.md)<br/>
+[`COleLinkingDoc` Class](colelinkingdoc-class.md)\
 The base class for OLE container documents that support linking to the embedded items they contain.
 
-[`COleLinksDialog` Class](../../mfc/reference/colelinksdialog-class.md)<br/>
+[`COleLinksDialog` Class](colelinksdialog-class.md)\
 Used for the OLE Edit Links dialog box.
 
-[`COleMessageFilter` Class](../../mfc/reference/colemessagefilter-class.md)<br/>
+[`COleMessageFilter` Class](colemessagefilter-class.md)\
 Manages the concurrency required by the interaction of OLE applications.
 
-[`COleObjectFactory` Class](../../mfc/reference/coleobjectfactory-class.md)<br/>
+[`COleObjectFactory` Class](coleobjectfactory-class.md)\
 Implements the OLE class factory, which creates OLE objects such as servers, automation objects, and documents.
 
-[`COlePasteSpecialDialog` Class](../../mfc/reference/colepastespecialdialog-class.md)<br/>
+[`COlePasteSpecialDialog` Class](colepastespecialdialog-class.md)\
 Used for the OLE Paste Special dialog box.
 
-[`COlePropertiesDialog` Class](../../mfc/reference/colepropertiesdialog-class.md)<br/>
+[`COlePropertiesDialog` Class](colepropertiesdialog-class.md)\
 Encapsulates the Windows common OLE Object Properties dialog box.
 
-[`COlePropertyPage` Class](../../mfc/reference/colepropertypage-class.md)<br/>
+[`COlePropertyPage` Class](colepropertypage-class.md)\
 Used to display the properties of a custom control in a graphical interface, similar to a dialog box.
 
-[`COleResizeBar` Class](../../mfc/reference/coleresizebar-class.md)<br/>
+[`COleResizeBar` Class](coleresizebar-class.md)\
 A type of control bar that supports resizing of in-place OLE items.
 
-[`COleSafeArray` Class](../../mfc/reference/colesafearray-class.md)<br/>
+[`COleSafeArray` Class](colesafearray-class.md)\
 A class for working with arrays of arbitrary type and dimension.
 
-[`COleServerDoc` Class](../../mfc/reference/coleserverdoc-class.md)<br/>
+[`COleServerDoc` Class](coleserverdoc-class.md)\
 The base class for OLE server documents.
 
-[`COleServerItem` Class](../../mfc/reference/coleserveritem-class.md)<br/>
+[`COleServerItem` Class](coleserveritem-class.md)\
 Provides the server interface to OLE items.
 
-[`COleStreamFile` Class](../../mfc/reference/colestreamfile-class.md)<br/>
+[`COleStreamFile` Class](colestreamfile-class.md)\
 Represents a stream of data (`IStream`) in a compound file as part of OLE Structured Storage.
 
-[`COleTemplateServer` Class](../../mfc/reference/coletemplateserver-class.md)<br/>
+[`COleTemplateServer` Class](coletemplateserver-class.md)\
 Used for OLE visual editing servers, automation servers, and link containers (applications that support links to embeddings).
 
-[`COleUpdateDialog` Class](../../mfc/reference/coleupdatedialog-class.md)<br/>
+[`COleUpdateDialog` Class](coleupdatedialog-class.md)\
 Used for a special case of the OLE Edit Links dialog box, which should be used when you need to update only existing linked or embedded objects in a document.
 
-[`COleVariant` Class](../../mfc/reference/colevariant-class.md)<br/>
+[`COleVariant` Class](colevariant-class.md)\
 Encapsulates the [`VARIANT`](/windows/win32/api/oaidl/ns-oaidl-variant) data type.
 
-[`CPagerCtrl` Class](../../mfc/reference/cpagerctrl-class.md)<br/>
+[`CPagerCtrl` Class](cpagerctrl-class.md)\
 The `CPagerCtrl` class wraps the Windows pager control, which can scroll into view a contained window that does not fit the containing window.
 
-[`CPageSetupDialog` Class](../../mfc/reference/cpagesetupdialog-class.md)<br/>
+[`CPageSetupDialog` Class](cpagesetupdialog-class.md)\
 Encapsulates the services provided by the Windows common OLE Page Setup dialog box with additional support for setting and modifying print margins.
 
-[`CPaintDC` Class](../../mfc/reference/cpaintdc-class.md)<br/>
-A device-context class derived from [`CDC` Class](../../mfc/reference/cdc-class.md).
+[`CPaintDC` Class](cpaintdc-class.md)\
+A device-context class derived from [`CDC` Class](cdc-class.md).
 
-[`CPalette` Class](../../mfc/reference/cpalette-class.md)<br/>
+[`CPalette` Class](cpalette-class.md)\
 Encapsulates a Windows color palette.
 
-[`CPane` Class](../../mfc/reference/cpane-class.md)<br/>
-Enhancement of the [`CControlBar` Class](../../mfc/reference/ccontrolbar-class.md). If you are upgrading an existing MFC project, you need to replace all occurrences of `CControlBar` with `CPane`.
+[`CPane` Class](cpane-class.md)\
+Enhancement of the [`CControlBar` Class](ccontrolbar-class.md). If you are upgrading an existing MFC project, you need to replace all occurrences of `CControlBar` with `CPane`.
 
-[`CPaneContainer` Class](../../mfc/reference/cpanecontainer-class.md)<br/>
-Basic component of the docking model implemented by MFC. An object of this class stores pointers to two docking panes or to two instances of `CPaneContainer`. It also stores a pointer to the divider that separates the panes (or the containers). By nesting containers inside containers, the framework can build a binary tree that represents complex docking layouts. The root of the binary tree is stored in a [`CPaneContainerManager` Class](../../mfc/reference/cpanecontainermanager-class.md) object.
+[`CPaneContainer` Class](cpanecontainer-class.md)\
+Basic component of the docking model implemented by MFC. An object of this class stores pointers to two docking panes or to two instances of `CPaneContainer`. It also stores a pointer to the divider that separates the panes (or the containers). By nesting containers inside containers, the framework can build a binary tree that represents complex docking layouts. The root of the binary tree is stored in a [`CPaneContainerManager` Class](cpanecontainermanager-class.md) object.
 
-[`CPaneContainerManager` Class](../../mfc/reference/cpanecontainermanager-class.md)<br/>
+[`CPaneContainerManager` Class](cpanecontainermanager-class.md)\
 Manages the storage and display of the current docking layout.
 
-[`CPaneDialog` Class](../../mfc/reference/cpanedialog-class.md)<br/>
+[`CPaneDialog` Class](cpanedialog-class.md)\
 Supports a modeless, dockable dialog box.
 
-[`CPaneDivider` Class](../../mfc/reference/cpanedivider-class.md)<br/>
+[`CPaneDivider` Class](cpanedivider-class.md)\
 Divides two panes, divides two groups of panes, or separates a group of panes from the client area of the main frame window.
 
-[`CPaneFrameWnd` Class](../../mfc/reference/cpaneframewnd-class.md)<br/>
+[`CPaneFrameWnd` Class](cpaneframewnd-class.md)\
 Implements a mini-frame window that contains one pane. The pane fills the client area of the window.
 
-[`CParabolicTransitionFromAcceleration` Class](../../mfc/reference/cparabolictransitionfromacceleration-class.md)<br/>
+[`CParabolicTransitionFromAcceleration` Class](cparabolictransitionfromacceleration-class.md)\
 Encapsulates a parabolic-acceleration transition.
 
-[`CPen` Class](../../mfc/reference/cpen-class.md)<br/>
+[`CPen` Class](cpen-class.md)\
 Encapsulates a Windows graphics device interface (GDI) pen.
 
-[`CPictureHolder` Class](../../mfc/reference/cpictureholder-class.md)<br/>
+[`CPictureHolder` Class](cpictureholder-class.md)\
 Implements a Picture property, which lets the user display a picture in your control.
 
-[`CPoint` Class](../../atl-mfc-shared/reference/cpoint-class.md)<br/>
+[`CPoint` Class](../../atl-mfc-shared/reference/cpoint-class.md)\
 Similar to the Windows `POINT` structure.
 
-[`CPrintDialog` Class](../../mfc/reference/cprintdialog-class.md)<br/>
+[`CPrintDialog` Class](cprintdialog-class.md)\
 Encapsulates the services provided by the Windows common dialog box for printing.
 
-[`CPrintDialogEx` Class](../../mfc/reference/cprintdialogex-class.md)<br/>
+[`CPrintDialogEx` Class](cprintdialogex-class.md)\
 Encapsulates the services provided by the Windows Print property sheet.
 
-[`CProgressCtrl` Class](../../mfc/reference/cprogressctrl-class.md)<br/>
+[`CProgressCtrl` Class](cprogressctrl-class.md)\
 Provides the functionality of the Windows common progress bar control.
 
-[`CPropertyPage` Class](../../mfc/reference/cpropertypage-class.md)<br/>
+[`CPropertyPage` Class](cpropertypage-class.md)\
 Represents individual pages of a property sheet, otherwise known as a tab dialog box.
 
-[`CPropertySheet` Class](../../mfc/reference/cpropertysheet-class.md)<br/>
+[`CPropertySheet` Class](cpropertysheet-class.md)\
 Represents property sheets, also known as tab dialog boxes.
 
-[`CPropExchange` Class](../../mfc/reference/cpropexchange-class.md)<br/>
+[`CPropExchange` Class](cpropexchange-class.md)\
 Supports the implementation of persistence for your OLE controls.
 
-[`CPtrArray` Class](../../mfc/reference/cptrarray-class.md)<br/>
+[`CPtrArray` Class](cptrarray-class.md)\
 Supports arrays of void pointers.
 
-[`CPtrList` Class](../../mfc/reference/cptrlist-class.md)<br/>
+[`CPtrList` Class](cptrlist-class.md)\
 Supports lists of void pointers.
 
-[`CReBar` Class](../../mfc/reference/crebar-class.md)<br/>
+[`CReBar` Class](crebar-class.md)\
 A control bar that provides layout, persistence, and state information for rebar controls.
 
-[`CReBarCtrl` Class](../../mfc/reference/crebarctrl-class.md)<br/>
+[`CReBarCtrl` Class](crebarctrl-class.md)\
 Encapsulates the functionality of a rebar control, which is a container for a child window.
 
-[`CRecentDockSiteInfo` Class](../../mfc/reference/crecentdocksiteinfo-class.md)<br/>
-Helper class that stores recent state information for the [`CPane` Class](../../mfc/reference/cpane-class.md).
+[`CRecentDockSiteInfo` Class](crecentdocksiteinfo-class.md)\
+Helper class that stores recent state information for the [`CPane` Class](cpane-class.md).
 
-[`CRecentFileList` Class](../../mfc/reference/crecentfilelist-class.md)<br/>
+[`CRecentFileList` Class](crecentfilelist-class.md)\
 Supports control of the most recently used (MRU) file list.
 
-[`CRecordset` Class](../../mfc/reference/crecordset-class.md)<br/>
+[`CRecordset` Class](crecordset-class.md)\
 Represents a set of records selected from a data source.
 
-[`CRecordView` Class](../../mfc/reference/crecordview-class.md)<br/>
+[`CRecordView` Class](crecordview-class.md)\
 A view that displays database records in controls.
 
-[`CRect` Class](../../atl-mfc-shared/reference/crect-class.md)<br/>
+[`CRect` Class](../../atl-mfc-shared/reference/crect-class.md)\
 Similar to a Windows [`RECT` structure](/windows/win32/api/windef/ns-windef-rect).
 
-[`CRectTracker` Class](../../mfc/reference/crecttracker-class.md)<br/>
+[`CRectTracker` Class](crecttracker-class.md)\
 Enables an item to be displayed, moved, and resized in different fashions.
 
-[`CRenderTarget` Class](../../mfc/reference/crendertarget-class.md)<br/>
+[`CRenderTarget` Class](crendertarget-class.md)\
 A wrapper for `ID2D1RenderTarget`.
 
-[`CResourceException` Class](../../mfc/reference/cresourceexception-class.md)<br/>
+[`CResourceException` Class](cresourceexception-class.md)\
 Generated when Windows cannot find or allocate a requested resource.
 
-[`CReversalTransition` Class](../../mfc/reference/creversaltransition-class.md)<br/>
+[`CReversalTransition` Class](creversaltransition-class.md)\
 Encapsulates a reversal transition.
 
-[`CRgn` Class](../../mfc/reference/crgn-class.md)<br/>
+[`CRgn` Class](crgn-class.md)\
 Encapsulates a Windows graphics device interface (GDI) region.
 
-[`CRichEditCntrItem` Class](../../mfc/reference/cricheditcntritem-class.md)<br/>
-With [`CRichEditView` Class](../../mfc/reference/cricheditview-class.md) and [`CRichEditDoc` Class](../../mfc/reference/cricheditdoc-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
+[`CRichEditCntrItem` Class](cricheditcntritem-class.md)\
+With [`CRichEditView` Class](cricheditview-class.md) and [`CRichEditDoc` Class](cricheditdoc-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
 
-[`CRichEditCtrl` Class](../../mfc/reference/cricheditctrl-class.md)<br/>
+[`CRichEditCtrl` Class](cricheditctrl-class.md)\
 Provides the functionality of the rich edit control.
 
-[`CRichEditDoc` Class](../../mfc/reference/cricheditdoc-class.md)<br/>
-With [`CRichEditView` Class](../../mfc/reference/cricheditview-class.md) and [`CRichEditCntrItem` Class](../../mfc/reference/cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
+[`CRichEditDoc` Class](cricheditdoc-class.md)\
+With [`CRichEditView` Class](cricheditview-class.md) and [`CRichEditCntrItem` Class](cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
 
-[`CRichEditView` Class](../../mfc/reference/cricheditview-class.md)<br/>
-With [`CRichEditDoc` Class](../../mfc/reference/cricheditdoc-class.md) and [`CRichEditCntrItem` Class](../../mfc/reference/cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
+[`CRichEditView` Class](cricheditview-class.md)\
+With [`CRichEditDoc` Class](cricheditdoc-class.md) and [`CRichEditCntrItem` Class](cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture.
 
-[`CScrollBar` Class](../../mfc/reference/cscrollbar-class.md)<br/>
+[`CScrollBar` Class](cscrollbar-class.md)\
 Provides the functionality of a Windows scroll-bar control.
 
-[`CScrollView` Class](../../mfc/reference/cscrollview-class.md)<br/>
-A [`CView` Class](../../mfc/reference/cview-class.md) with scrolling capabilities.
+[`CScrollView` Class](cscrollview-class.md)\
+A [`CView` Class](cview-class.md) with scrolling capabilities.
 
-[`CSemaphore` Class](../../mfc/reference/csemaphore-class.md)<br/>
+[`CSemaphore` Class](csemaphore-class.md)\
 Represents a "semaphore", which is a synchronization object that allows a limited number of threads in one or more processes to access aMaintains a count of the number of threads currently accessing a specified resource.
 
-[`CSettingsStore` Class](../../mfc/reference/csettingsstore-class.md)<br/>
+[`CSettingsStore` Class](csettingsstore-class.md)\
 Wraps Windows API functions, providing an object-oriented interface that you use to access the registry.
 
-[`CSettingsStoreSP` Class](../../mfc/reference/csettingsstoresp-class.md)<br/>
-Helper class that you can use to create instances of the [`CSettingsStore` Class](../../mfc/reference/csettingsstore-class.md).
+[`CSettingsStoreSP` Class](csettingsstoresp-class.md)\
+Helper class that you can use to create instances of the [`CSettingsStore` Class](csettingsstore-class.md).
 
-[`CSharedFile` Class](../../mfc/reference/csharedfile-class.md)<br/>
-The [`CMemFile` Class](../../mfc/reference/cmemfile-class.md)-derived class that supports shared memory files.
+[`CSharedFile` Class](csharedfile-class.md)\
+The [`CMemFile` Class](cmemfile-class.md)-derived class that supports shared memory files.
 
-[`CShellManager` Class](../../mfc/reference/cshellmanager-class.md)<br/>
+[`CShellManager` Class](cshellmanager-class.md)\
 Implements several methods that enable you to work with pointers to identifier lists (PIDLs).
 
-[`CSimpleException` Class](../../mfc/reference/csimpleexception-class.md)<br/>
+[`CSimpleException` Class](csimpleexception-class.md)\
 This class is a base class for resource-critical MFC exceptions.
 
-[`CSingleDocTemplate` Class](../../mfc/reference/csingledoctemplate-class.md)<br/>
+[`CSingleDocTemplate` Class](csingledoctemplate-class.md)\
 Defines a document template that implements the single document interface (SDI).
 
-[`CSingleLock` Class](../../mfc/reference/csinglelock-class.md)<br/>
+[`CSingleLock` Class](csinglelock-class.md)\
 Represents the access-control mechanism used in controlling access to a resource in a multithreaded program.
 
-[`CSinusoidalTransitionFromRange` Class](../../mfc/reference/csinusoidaltransitionfromrange-class.md)<br/>
+[`CSinusoidalTransitionFromRange` Class](csinusoidaltransitionfromrange-class.md)\
 Encapsulates a sinusoidal-range transition that has a given range of oscillation.
 
-[`CSinusoidalTransitionFromVelocity` Class](../../mfc/reference/csinusoidaltransitionfromvelocity-class.md)<br/>
+[`CSinusoidalTransitionFromVelocity` Class](csinusoidaltransitionfromvelocity-class.md)\
 Encapsulates a sinusoidal-velocity transition that has an amplitude that is determined by the initial velocity of the animation variable.
 
-[`CSize` Class](../../atl-mfc-shared/reference/csize-class.md)<br/>
+[`CSize` Class](../../atl-mfc-shared/reference/csize-class.md)\
 Similar to the Windows [`SIZE`](/windows/win32/api/windef/ns-windef-size) structure, which implements a relative coordinate or position.
 
-[`CSliderCtrl` Class](../../mfc/reference/csliderctrl-class.md)<br/>
+[`CSliderCtrl` Class](csliderctrl-class.md)\
 Provides the functionality of the Windows common slider control.
 
-[`CSmartDockingInfo` Class](../../mfc/reference/csmartdockinginfo-class.md)<br/>
+[`CSmartDockingInfo` Class](csmartdockinginfo-class.md)\
 Defines the appearance of smart docking markers.
 
-[`CSmoothStopTransition` Class](../../mfc/reference/csmoothstoptransition-class.md)<br/>
+[`CSmoothStopTransition` Class](csmoothstoptransition-class.md)\
 Encapsulates a smooth-stop transition.
 
-[`CSocket` Class](../../mfc/reference/csocket-class.md)<br/>
+[`CSocket` Class](csocket-class.md)\
 Derives from `CAsyncSocket`, and represents a higher level of abstraction of the Windows Sockets API.
 
-[`CSocketFile` Class](../../mfc/reference/csocketfile-class.md)<br/>
+[`CSocketFile` Class](csocketfile-class.md)\
 A `CFile` object used for sending and receiving data across a network via Windows Sockets.
 
-[`CSpinButtonCtrl` Class](../../mfc/reference/cspinbuttonctrl-class.md)<br/>
+[`CSpinButtonCtrl` Class](cspinbuttonctrl-class.md)\
 Provides the functionality of the Windows common spin button control.
 
-[`CSplitButton` Class](../../mfc/reference/csplitbutton-class.md)<br/>
+[`CSplitButton` Class](csplitbutton-class.md)\
 Represents a split button control. The split button control performs a default behavior when a user clicks the main part of the button, and displays a drop-down menu when a user clicks the drop-down arrow of the button.
 
-[`CSplitterWnd` Class](../../mfc/reference/csplitterwnd-class.md)<br/>
+[`CSplitterWnd` Class](csplitterwnd-class.md)\
 Provides the functionality of a splitter window, which is a window that contains multiple panes.
 
-[`CSplitterWndEx` Class](csplitterwndex-class.md)<br/>
+[`CSplitterWndEx` Class](csplitterwndex-class.md)\
 Represents a customized splitter window.
 
-[`CStatic` Class](../../mfc/reference/cstatic-class.md)<br/>
+[`CStatic` Class](cstatic-class.md)\
 Provides the functionality of a Windows static control.
 
-[`CStatusBar` Class](../../mfc/reference/cstatusbar-class.md)<br/>
+[`CStatusBar` Class](cstatusbar-class.md)\
 A control bar with a row of text output panes, or "indicators".
 
-[`CStatusBarCtrl` Class](../../mfc/reference/cstatusbarctrl-class.md)<br/>
+[`CStatusBarCtrl` Class](cstatusbarctrl-class.md)\
 Provides the functionality of the Windows common status bar control.
 
-[`CStdioFile` Class](../../mfc/reference/cstdiofile-class.md)<br/>
+[`CStdioFile` Class](cstdiofile-class.md)\
 Represents a C run-time stream file as opened by the run-time function [`fopen`, `_wfopen`](../../c-runtime-library/reference/fopen-wfopen.md).
 
-[`CStringArray` Class](../../mfc/reference/cstringarray-class.md)<br/>
+[`CStringArray` Class](cstringarray-class.md)\
 Supports arrays of `CString` objects.
 
-[`CStringList` Class](../../mfc/reference/cstringlist-class.md)<br/>
+[`CStringList` Class](cstringlist-class.md)\
 Supports lists of `CString` objects.
 
-[`CSyncObject` Class](../../mfc/reference/csyncobject-class.md)<br/>
+[`CSyncObject` Class](csyncobject-class.md)\
 A pure virtual class that provides functionality common to the synchronization objects in Win32.
 
-[`CTabbedPane` Class](../../mfc/reference/ctabbedpane-class.md)<br/>
+[`CTabbedPane` Class](ctabbedpane-class.md)\
 Implements the functionality of a pane with detachable tabs.
 
-[`CTabCtrl` Class](../../mfc/reference/ctabctrl-class.md)<br/>
+[`CTabCtrl` Class](ctabctrl-class.md)\
 Provides the functionality of the Windows common tab control.
 
-[`CTabView` Class](../../mfc/reference/ctabview-class.md)<br/>
-Simplifies the use of the tab control class ([`CTabView` Class](../../mfc/reference/ctabview-class.md)) in applications that use MFC's document/view architecture.
+[`CTabView` Class](ctabview-class.md)\
+Simplifies the use of the tab control class ([`CTabView` Class](ctabview-class.md)) in applications that use MFC's document/view architecture.
 
-[`CTaskDialog` Class](../../mfc/reference/ctaskdialog-class.md)<br/>
+[`CTaskDialog` Class](ctaskdialog-class.md)\
 A pop-up dialog box that functions like a message box but can display additional information to the user. The `CTaskDialog` also includes functionality for gathering information from the user.
 
-[`CToolBar` Class](../../mfc/reference/ctoolbar-class.md)<br/>
+[`CToolBar` Class](ctoolbar-class.md)\
 Control bars that have a row of bitmapped buttons and optional separators.
 
-[`CToolBarCtrl` Class](../../mfc/reference/ctoolbarctrl-class.md)<br/>
+[`CToolBarCtrl` Class](ctoolbarctrl-class.md)\
 Provides the functionality of the Windows toolbar common control.
 
-[`CToolTipCtrl` Class](../../mfc/reference/ctooltipctrl-class.md)<br/>
+[`CToolTipCtrl` Class](ctooltipctrl-class.md)\
 Encapsulates the functionality of a "tool tip control", a small pop-up window that displays a single line of text describing the purpose of a tool in an application.
 
-[`CTooltipManager` Class](../../mfc/reference/ctooltipmanager-class.md)<br/>
+[`CTooltipManager` Class](ctooltipmanager-class.md)\
 Maintains runtime information about tooltips. The `CTooltipManager` class is instantiated one time per application.
 
-[`CTreeCtrl` Class](../../mfc/reference/ctreectrl-class.md)<br/>
+[`CTreeCtrl` Class](ctreectrl-class.md)\
 Provides the functionality of the Windows common tree view control.
 
-[`CTreeView` Class](../../mfc/reference/ctreeview-class.md)<br/>
-Simplifies use of the tree control and of [`CTreeCtrl` Class](../../mfc/reference/ctreectrl-class.md), the class that encapsulates tree-control functionality, with MFC's document-view architecture.
+[`CTreeView` Class](ctreeview-class.md)\
+Simplifies use of the tree control and of [`CTreeCtrl` Class](ctreectrl-class.md), the class that encapsulates tree-control functionality, with MFC's document-view architecture.
 
-[`CTypedPtrArray` Class](../../mfc/reference/ctypedptrarray-class.md)<br/>
+[`CTypedPtrArray` Class](ctypedptrarray-class.md)\
 Provides a type-safe "wrapper" for objects of class `CPtrArray` or `CObArray`.
 
-[`CTypedPtrList` Class](../../mfc/reference/ctypedptrlist-class.md)<br/>
+[`CTypedPtrList` Class](ctypedptrlist-class.md)\
 Provides a type-safe "wrapper" for objects of class `CPtrList`.
 
-[`CTypedPtrMap` Class](../../mfc/reference/ctypedptrmap-class.md)<br/>
+[`CTypedPtrMap` Class](ctypedptrmap-class.md)\
 Provides a type-safe "wrapper" for objects of the pointer-map classes `CMapPtrToPtr`, `CMapPtrToWord`, `CMapWordToPtr`, and `CMapStringToPtr`.
 
-[`CUIntArray` Class](../../mfc/reference/cuintarray-class.md)<br/>
+[`CUIntArray` Class](cuintarray-class.md)\
 Supports arrays of unsigned integers.
 
-[`CUserException` Class](../../mfc/reference/cuserexception-class.md)<br/>
+[`CUserException` Class](cuserexception-class.md)\
 Thrown to stop an end-user operation.
 
-[`CUserTool` Class](../../mfc/reference/cusertool-class.md)<br/>
-Menu item that runs an external application. The **Tools** tab of the **Customize** dialog box ([`CMFCToolBarsCustomizeDialog` Class](../../mfc/reference/cmfctoolbarscustomizedialog-class.md)) enables the user to add user tools, and to specify the name, command, arguments, and initial directory for each user tool.
+[`CUserTool` Class](cusertool-class.md)\
+Menu item that runs an external application. The **Tools** tab of the **Customize** dialog box ([`CMFCToolBarsCustomizeDialog` Class](cmfctoolbarscustomizedialog-class.md)) enables the user to add user tools, and to specify the name, command, arguments, and initial directory for each user tool.
 
-[`CUserToolsManager` Class](../../mfc/reference/cusertoolsmanager-class.md)<br/>
-Maintains the collection of [`CUserTool` Class](../../mfc/reference/cusertool-class.md) objects in an application. A user tool is a menu item that runs an external application. The `CUserToolsManager` object enables the user or developer to add new user tools to the application. It supports the execution of the commands associated with user tools, and it also saves information about user tools in the Windows registry.
+[`CUserToolsManager` Class](cusertoolsmanager-class.md)\
+Maintains the collection of [`CUserTool` Class](cusertool-class.md) objects in an application. A user tool is a menu item that runs an external application. The `CUserToolsManager` object enables the user or developer to add new user tools to the application. It supports the execution of the commands associated with user tools, and it also saves information about user tools in the Windows registry.
 
-[`CView` Class](../../mfc/reference/cview-class.md)<br/>
+[`CView` Class](cview-class.md)\
 Provides the basic functionality for user-defined view classes.
 
-[`CVSListBox` Class](../../mfc/reference/cvslistbox-class.md)<br/>
+[`CVSListBox` Class](cvslistbox-class.md)\
 Supports an editable list control.
 
-[`CWaitCursor` Class](../../mfc/reference/cwaitcursor-class.md)<br/>
+[`CWaitCursor` Class](cwaitcursor-class.md)\
 Provides a one-line way to show a wait cursor, which is usually displayed as an hourglass, while you're doing a lengthy operation.
 
-[`CWinApp` Class](../../mfc/reference/cwinapp-class.md)<br/>
+[`CWinApp` Class](cwinapp-class.md)\
 The base class from which you derive a Windows application object.
 
-[`CWinAppEx` Class](../../mfc/reference/cwinappex-class.md)<br/>
+[`CWinAppEx` Class](cwinappex-class.md)\
 Handles the application state, saves the state to the registry, loads the state from the registry, initializes application managers, and provides links to those same application managers.
 
-[`CWindowDC` Class](../../mfc/reference/cwindowdc-class.md)<br/>
+[`CWindowDC` Class](cwindowdc-class.md)\
 Derived from `CDC`.
 
-[`CWinFormsControl` Class](../../mfc/reference/cwinformscontrol-class.md)<br/>
+[`CWinFormsControl` Class](cwinformscontrol-class.md)\
 Provides the basic functionality for hosting of a Windows Forms control.
 
-[`CWinFormsDialog` Class](../../mfc/reference/cwinformsdialog-class.md)<br/>
+[`CWinFormsDialog` Class](cwinformsdialog-class.md)\
 A wrapper for an MFC dialog class that hosts a Windows Forms user control.
 
-[`CWinFormsView` Class](../../mfc/reference/cwinformsview-class.md)<br/>
+[`CWinFormsView` Class](cwinformsview-class.md)\
 Provides generic functionality for hosting of a Windows Forms control as an MFC view.
 
-[`CWinThread` Class](../../mfc/reference/cwinthread-class.md)<br/>
+[`CWinThread` Class](cwinthread-class.md)\
 Represents a thread of execution within an application.
 
-[`CWnd` Class](../../mfc/reference/cwnd-class.md)<br/>
+[`CWnd` Class](cwnd-class.md)\
 Provides the base functionality of all window classes in the Microsoft Foundation Class Library.
 
-[`CWordArray` Class](../../mfc/reference/cwordarray-class.md)<br/>
+[`CWordArray` Class](cwordarray-class.md)\
 Supports arrays of 16-bit words.
 
 ## Related Sections
 
-[MFC Desktop Applications](../../mfc/mfc-desktop-applications.md)<br/>
+[MFC Desktop Applications](../mfc-desktop-applications.md)\
 Contains links to topics about the classes, global functions, global variables, and macros that make up the MFC Library.
diff --git a/docs/mfc/reference/styles-used-by-mfc.md b/docs/mfc/reference/styles-used-by-mfc.md
index 3afec125db..7dc94df529 100644
--- a/docs/mfc/reference/styles-used-by-mfc.md
+++ b/docs/mfc/reference/styles-used-by-mfc.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Styles Used by MFC"
 title: "Styles Used by MFC"
-ms.date: "06/20/2018"
+description: "Learn more about: Styles Used by MFC"
+ms.date: 06/20/2018
 helpviewer_keywords: ["button objects (CButton), button styles", "button styles [MFC]", "buttons, MFC toolbars", "combo boxes [MFC], styles", "edit styles [MFC]", "extended window styles [MFC]", "frame windows [MFC], styles", "list boxes [MFC], styles", "message-box styles [MFC]", "scroll bars [MFC], styles", "scroll-bar styles [MFC]", "static styles [MFC]", "styles [MFC], button objects", "styles [MFC], MFC", "styles [MFC], windows", "styles [MFC]", "window styles, in MFC", "window styles [MFC]", "BS_3STATE constant [MFC]", "BS_AUTO3STATE constant [MFC]", "BS_AUTOCHECKBOX constant [MFC]", "BS_AUTORADIOBUTTON constant [MFC]", "BS_BITMAP constant [MFC]", "BS_BOTTOM constant [MFC]", "BS_CENTER constant [MFC]", "BS_CHECKBOX constant [MFC]", "BS_DEFPUSHBUTTON constant [MFC]", "BS_FLAT constant [MFC]", "BS_GROUPBOX constant [MFC]", "BS_ICON constant [MFC]", "BS_LEFT constant [MFC]", "BS_LEFTTEXT constant [MFC]", "BS_MULTILINE constant [MFC]", "BS_NOTIFY constant [MFC]", "BS_OWNERDRAW constant [MFC]", "BS_PUSHBUTTON constant [MFC]", "BS_PUSHLIKE constant [MFC]", "BS_RADIOBUTTON constant [MFC]", "BS_RIGHT constant [MFC]", "BS_RIGHTBUTTON constant [MFC]", "BS_TEXT constant [MFC]", "BS_TOP constant [MFC]", "BS_USERBUTTON constant [MFC]", "BS_VCENTER constant [MFC]", "CBS_AUTOHSCROLL constant [MFC]", "CBS_DISABLENOSCROLL constant [MFC]", "CBS_DROPDOWN constant [MFC]", "CBS_DROPDOWNLIST constant [MFC]", "CBS_HASSTRINGS constant [MFC]", "CBS_LOWERCASE constant [MFC]", "CBS_NOINTEGRALHEIGHT constant [MFC]", "CBS_OEMCONVERT constant [MFC]", "CBS_OWNERDRAWFIXED constant [MFC]", "CBS_OWNERDRAWVARIABLE constant [MFC]", "CBS_SIMPLE constant [MFC]", "CBS_SORT constant [MFC]", "CBS_UPPERCASE constant [MFC]", "ES_AUTOHSCROLL constant [MFC]", "ES_AUTOVSCROLL constant [MFC]", "ES_CENTER constant [MFC]", "ES_LEFT constant [MFC]", "ES_LOWERCASE constant [MFC]", "ES_MULTILINE constant [MFC]", "ES_NOHIDESEL constant [MFC]", "ES_NUMBER constant [MFC]", "ES_OEMCONVERT constant [MFC]", "ES_PASSWORD constant [MFC]", "ES_READONLY constant [MFC]", "ES_RIGHT constant [MFC]", "ES_UPPERCASE constant [MFC]", "ES_WANTRETURN constant [MFC]", "FWS_ADDTOTITLE constant [MFC]", "FWS_PREFIXTITLE constant [MFC]", "FWS_SNAPTOBARS constant [MFC]", "LBS_DISABLENOSCROLL constant [MFC]", "LBS_EXTENDEDSEL constant [MFC]", "LBS_HASSTRINGS constant [MFC]", "LBS_MULTICOLUMN constant [MFC]", "LBS_MULTIPLESEL constant [MFC]", "LBS_NODATA constant [MFC]", "LBS_NOINTEGRALHEIGHT constant [MFC]", "LBS_NOREDRAW constant [MFC]", "LBS_NOSEL constant [MFC]", "LBS_NOTIFY constant [MFC]", "LBS_OWNERDRAWFIXED constant [MFC]", "LBS_OWNERDRAWVARIABLE constant [MFC]", "LBS_SORT constant [MFC]", "LBS_STANDARD constant [MFC]", "LBS_USETABSTOPS constant [MFC]", "LBS_WANTKEYBOARDINPUT constant [MFC]", "MB_ABORTRETRYOVERWRITE constant [MFC]", "MB_APPLMODAL constant [MFC]", "MB_DEFBUTTON1 constant [MFC]", "MB_DEFBUTTON2 constant [MFC]", "MB_DEFBUTTON3 constant [MFC]", "MB_ICONEXCLAMATION constant [MFC]", "MB_ICONINFORMATION constant [MFC]", "MB_ICONQUESTION constant [MFC]", "MB_ICONSTOP constant [MFC]", "MB_OK constant [MFC]", "MB_OKCANCEL constant [MFC]", "MB_RETRYCANCEL constant [MFC]", "MB_SYSTEMMODAL constant [MFC]", "MB_TASKMODAL constant [MFC]", "MB_YESNO constant [MFC]", "MB_YESNOCANCEL constant [MFC]", "SBS_BOTTOMALIGN constant [MFC]", "SBS_HORZ constant [MFC]", "SBS_LEFTALIGN constant [MFC]", "SBS_RIGHTALIGN constant [MFC]", "SBS_SIZEBOX constant [MFC]", "SBS_SIZEBOXBOTTOMRIGHTALIGN constant [MFC]", "SBS_SIZEBOXTOPLEFTALIGN constant [MFC]", "SBS_TOPALIGN constant [MFC]", "SBS_VERT constant [MFC]", "SS_BITMAP constant [MFC]", "SS_BLACKFRAME constant [MFC]", "SS_BLACKRECT constant [MFC]", "SS_CENTER constant [MFC]", "SS_CENTERIMAGE constant [MFC]", "SS_ENDELLIPSIS constant [MFC]", "SS_ENHMETAFILE constant [MFC]", "SS_ETCHEDFRAME constant [MFC]", "SS_ETCHEDHORZ constant [MFC]", "SS_ETCHEDVERT constant [MFC]", "SS_GRAYFRAME constant [MFC]", "SS_GRAYRECT constant [MFC]", "SS_ICON constant [MFC]", "SS_LEFT constant [MFC]", "SS_LEFTNOWORDWRAP constant [MFC]", "SS_NOPREFIX constant [MFC]", "SS_NOTIFY constant [MFC]", "SS_OWNERDRAW constant [MFC]", "SS_PATHELLIPSIS constant [MFC]", "SS_REALSIZEIMAGE constant [MFC]", "SS_RIGHT constant [MFC]", "SS_RIGHTJUST constant [MFC]", "SS_SIMPLE constant [MFC]", "SS_SUNKEN constant [MFC]", "SS_USERITEM constant [MFC]", "SS_WHITEFRAME constant [MFC]", "SS_WHITERECT constant [MFC]", "SS_WORDELLIPSIS constant [MFC]", "WS_BORDER constant [MFC]", "WS_CAPTION constant [MFC]", "WS_CHILD constant [MFC]", "WS_CHILDWINDOW constant [MFC]", "WS_CLIPCHILDREN constant [MFC]", "WS_CLIPSIBLINGS constant [MFC]", "WS_DISABLED constant [MFC]", "WS_DLGFRAME constant [MFC]", "WS_GROUP constant [MFC]", "WS_HSCROLL constant [MFC]", "WS_ICONIC constant [MFC]", "WS_MAXIMIZE constant [MFC]", "WS_MAXIMIZEBOX constant [MFC]", "WS_MINIMIZE constant [MFC]", "WS_MINIMIZEBOX constant [MFC]", "WS_OVERLAPPED constant [MFC]", "WS_OVERLAPPEDWINDOW constant [MFC]", "WS_POPUP constant [MFC]", "WS_POPUPWINDOW constant [MFC]", "WS_SIZEBOX constant [MFC]", "WS_SYSMENU constant [MFC]", "WS_TABSTOP constant [MFC]", "WS_THICKFRAME constant [MFC]", "WS_TILED constant [MFC]", "WS_TILEDWINDOW constant [MFC]", "WS_VISIBLE constant [MFC]", "WS_VSCROLL constant [MFC]", "WS_EX_ACCEPTFILES constant [MFC]", "WS_EX_APPWINDOW constant [MFC]", "WS_EX_CLIENTEDGE constant [MFC]", "WS_EX_CONTEXTHELP constant [MFC]", "WS_EX_CONTROLPARENT constant [MFC]", "WS_EX_DLGMODALFRAME constant [MFC]", "WS_EX_LEFT constant [MFC]", "WS_EX_LEFTSCROLLBAR constant [MFC]", "WS_EX_LTRREADING constant [MFC]", "WS_EX_MDICHILD constant [MFC]", "WS_EX_NOPARENTNOTIFY constant [MFC]", "WS_EX_OVERLAPPEDWINDOW constant [MFC]", "WS_EX_PALETTEWINDOW constant [MFC]", "WS_EX_RIGHT constant [MFC]", "WS_EX_RIGHTSCROLLBAR constant [MFC]", "WS_EX_RTLREADING constant [MFC]", "WS_EX_STATICEDGE constant [MFC]", "WS_EX_TOOLWINDOW constant [MFC]", "WS_EX_TOPMOST constant [MFC]", "WS_EX_TRANSPARENT constant [MFC]", "WS_EX_WINDOWEDGE constant [MFC]"]
-ms.assetid: d3b9af37-31b5-4c97-a8ad-189fd724b04c
 ---
 # Styles Used by MFC
 
@@ -11,7 +10,7 @@ Use the following style flags to specify window or control appearance and behavi
 
 ## <a name="button-styles"></a> Button styles
 
-Button styles apply to [`CButton Class`](../../mfc/reference/cbutton-class.md) objects, such as radio buttons, check boxes and pushbuttons. Specify a combination of styles in the *`dwStyle`* parameter of [`CButton::Create`](../../mfc/reference/cbutton-class.md#create). For more information on button styles in Windows, see [Button Styles (Windows)](/windows/win32/Controls/button-styles).
+Button styles apply to [`CButton Class`](cbutton-class.md) objects, such as radio buttons, check boxes and pushbuttons. Specify a combination of styles in the *`dwStyle`* parameter of [`CButton::Create`](cbutton-class.md#create). For more information on button styles in Windows, see [Button Styles (Windows)](/windows/win32/Controls/button-styles).
 
 ### Button types
 
@@ -24,8 +23,8 @@ The following table lists button types. You can optionally choose one of the fol
 |`BS_AUTOCHECKBOX`|Creates a check box button with two states: `BST_CHECKED` and `BST_UNCHECKED`. Clicking on the button sends a `BN_CLICKED` notification to the owner window and changes the state of the button. By default, associated text is displayed to the right of the check box. To display text to the left of the check box, use the `BS_LEFTTEXT` or `BS_RIGHTBUTTON` style.|
 |`BS_AUTORADIOBUTTON`|Creates a radio button with two states: `BST_CHECKED` and `BST_UNCHECKED`. Radio buttons are usually used in groups, with each group having a maximum of one checked option at a time. Clicking on the button sends a `BN_CLICKED` notification to the owner window, sets the state of the clicked radio button to `BST_CHECKED`, and sets the states of all other radio buttons in the button group to `BST_UNCHECKED`. By default, associated text is displayed to the right of the radio button. To display text to the left of the radio button, use the `BS_LEFTTEXT` or `BS_RIGHTBUTTON` style.|
 |`BS_CHECKBOX`|Creates a check box button with two states: `BST_CHECKED` and `BST_UNCHECKED`. Clicking on the button sends a `BN_CLICKED` notification to the owner window but does not change the state of the button. By default, associated text is displayed to the right of the check box. To display text to the left of the check box, use the `BS_LEFTTEXT` or `BS_RIGHTBUTTON` style.|
-|`BS_COMMANDLINK`|Creates a command link button. A command link button is a command button specific to Windows Vista that displays a green arrow to the left of the main text and a note below the main text. You can set the note text using [`CButton::SetNote`](../../mfc/reference/cbutton-class.md#setnote).|
-|`BS_DEFCOMMANDLINK`|Creates a command link button. A command link button is a command button specific to Windows Vista that displays a green arrow to the left of the main text and a note below the main text. You can set the note text using [`CButton::SetNote`](../../mfc/reference/cbutton-class.md#setnote). If the button is in a dialog box, pressing the ENTER key sends a `BN_CLICKED` notification to the dialog box even when the button does not have the input focus.|
+|`BS_COMMANDLINK`|Creates a command link button. A command link button is a command button specific to Windows Vista that displays a green arrow to the left of the main text and a note below the main text. You can set the note text using [`CButton::SetNote`](cbutton-class.md#setnote).|
+|`BS_DEFCOMMANDLINK`|Creates a command link button. A command link button is a command button specific to Windows Vista that displays a green arrow to the left of the main text and a note below the main text. You can set the note text using [`CButton::SetNote`](cbutton-class.md#setnote). If the button is in a dialog box, pressing the ENTER key sends a `BN_CLICKED` notification to the dialog box even when the button does not have the input focus.|
 |`BS_DEFPUSHBUTTON`|Creates a command button that has a heavy black border. If the button is in a dialog box, pressing the ENTER key sends a `BN_CLICKED` notification to the dialog box even when the button does not have the input focus.|
 |`BS_DEFSPLITBUTTON`|Creates a split button. A split button is a command button specific to Windows Vista that contains a button adjacent to a drop-down arrow. When you click the button, the default command is executed. When you click the drop-down arrow, a menu of additional commands appears. If the split button is in a dialog box, pressing the ENTER key sends a `BN_CLICKED` notification to the dialog box even when the button does not have the input focus|
 |`BS_GROUPBOX`|Creates a rectangle in which other buttons can be grouped. Text associated with this style is displayed in the rectangle's upper-left corner.|
@@ -100,7 +99,7 @@ The following combo-box styles are available in MFC. For more information about
 
 ## <a name="edit-styles"></a> Edit styles
 
-Edit styles apply to [`CEdit` Class](../../mfc/reference/cedit-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CEdit::Create`](../../mfc/reference/cedit-class.md#create). For more information about edit control styles in Windows, see [Edit Control Styles (Windows)](/windows/win32/Controls/edit-control-styles).
+Edit styles apply to [`CEdit` Class](cedit-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CEdit::Create`](cedit-class.md#create). For more information about edit control styles in Windows, see [Edit Control Styles (Windows)](/windows/win32/Controls/edit-control-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -121,17 +120,17 @@ Edit styles apply to [`CEdit` Class](../../mfc/reference/cedit-class.md) objects
 
 ## <a name="frame-window-styles-mfc"></a> Frame-window styles
 
-Frame-window styles apply to [`CFrameWnd` Class](../../mfc/reference/cframewnd-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CFrameWnd::Create`](../../mfc/reference/cframewnd-class.md#create).
+Frame-window styles apply to [`CFrameWnd` Class](cframewnd-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CFrameWnd::Create`](cframewnd-class.md#create).
 
 |Style|Description|
 |-----------|-----------------|
 |`FWS_ADDTOTITLE`|Specifies information to append to the end of a frame window title. For example, "Microsoft Draw - Drawing in Document1". You can specify the strings displayed in the Document Template Strings tab in the Application Wizard. If you need to turn this option off, override the `CWnd::PreCreateWindow` member function.|
 |`FWS_PREFIXTITLE`|Shows the document name before the application name in a frame window title. For example, "Document - WordPad". You can specify the strings displayed in the Document Template Strings tab in the Application Wizard. If you need to turn this option off, override the `CWnd::PreCreateWindow` member function.|
-|FWS_SNAPTOBARS|Controls sizing of the frame window that encloses a control bar when it is in a floating window rather than docked to a frame window. This style sizes the window to fit the control bar.|
+|`FWS_SNAPTOBARS`|Controls sizing of the frame window that encloses a control bar when it is in a floating window rather than docked to a frame window. This style sizes the window to fit the control bar.|
 
 ## <a name="list-box-styles"></a> List-box styles
 
-List-box styles apply to [`CListBox` Class](../../mfc/reference/clistbox-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CListBox::Create`](../../mfc/reference/clistbox-class.md#create). For more information about list box styles in Windows, see [List Box Styles (Windows)](/windows/win32/Controls/list-box-styles).
+List-box styles apply to [`CListBox` Class](clistbox-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CListBox::Create`](clistbox-class.md#create). For more information about list box styles in Windows, see [List Box Styles (Windows)](/windows/win32/Controls/list-box-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -154,7 +153,7 @@ List-box styles apply to [`CListBox` Class](../../mfc/reference/clistbox-class.m
 
 ## <a name="message-box-styles"></a> Message-box styles
 
-Message-box styles apply to [`AfxMessageBox`](../../mfc/reference/cstring-formatting-and-message-box-display.md#afxmessagebox) items. Specify a combination of styles in the *`nType`* parameter of `AfxMessageBox`. For more information about message box styles in Windows, see [`MessageBox` Function (Windows)](/windows/win32/api/winuser/nf-winuser-messagebox).
+Message-box styles apply to [`AfxMessageBox`](cstring-formatting-and-message-box-display.md#afxmessagebox) items. Specify a combination of styles in the *`nType`* parameter of `AfxMessageBox`. For more information about message box styles in Windows, see [`MessageBox` Function (Windows)](/windows/win32/api/winuser/nf-winuser-messagebox).
 
 The following message-box styles are available.
 
@@ -196,7 +195,7 @@ The following message-box styles are available.
 
 ## <a name="scroll-bar-styles"></a> Scroll-bar styles
 
-Scroll-bar styles apply to [`CScrollBar` Class](../../mfc/reference/cscrollbar-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CScrollBar::Create`](../../mfc/reference/cscrollbar-class.md#create). For more information about scroll bar control styles in Windows, see [Scroll Bar Control Styles (Windows)](/windows/win32/Controls/scroll-bar-control-styles).
+Scroll-bar styles apply to [`CScrollBar` Class](cscrollbar-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CScrollBar::Create`](cscrollbar-class.md#create). For more information about scroll bar control styles in Windows, see [Scroll Bar Control Styles (Windows)](/windows/win32/Controls/scroll-bar-control-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -213,7 +212,7 @@ Scroll-bar styles apply to [`CScrollBar` Class](../../mfc/reference/cscrollbar-c
 
 ## <a name="static-styles"></a> Static styles
 
-Static styles apply to [`CStatic` Class](../../mfc/reference/cstatic-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CStatic::Create`](../../mfc/reference/cstatic-class.md#create). For more information about static control styles in Windows, see [Static Control Styles (Windows)](/windows/win32/Controls/static-control-styles).
+Static styles apply to [`CStatic` Class](cstatic-class.md) objects. Specify a combination of styles in the *`dwStyle`* parameter of [`CStatic::Create`](cstatic-class.md#create). For more information about static control styles in Windows, see [Static Control Styles (Windows)](/windows/win32/Controls/static-control-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -247,7 +246,7 @@ Static styles apply to [`CStatic` Class](../../mfc/reference/cstatic-class.md) o
 
 ## <a name="window-styles"></a> Window styles
 
-Window styles apply to [`CWnd` Class](../../mfc/reference/cwnd-class.md) objects. Specify a combination of styles in the *dwStyle* parameter of [`CWnd::Create`](../../mfc/reference/cwnd-class.md#create) or [`CWnd::CreateEx`](../../mfc/reference/cwnd-class.md#createex). For more information about window styles in Windows, see [Window Styles (Windows)](/windows/win32/winmsg/window-styles).
+Window styles apply to [`CWnd` Class](cwnd-class.md) objects. Specify a combination of styles in the *dwStyle* parameter of [`CWnd::Create`](cwnd-class.md#create) or [`CWnd::CreateEx`](cwnd-class.md#createex). For more information about window styles in Windows, see [Window Styles (Windows)](/windows/win32/winmsg/window-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -281,7 +280,7 @@ Window styles apply to [`CWnd` Class](../../mfc/reference/cwnd-class.md) objects
 
 ## <a name="extended-window-styles"></a> Extended window styles
 
-Extended window styles apply to [`CWnd` Class](../../mfc/reference/cwnd-class.md) objects. Specify a combination of styles in the *`dwExStyle`* parameter of [`CWnd::CreateEx`](../../mfc/reference/cwnd-class.md#createex). For more information about extended window styles in Windows, see [Extended Window Styles (Windows)](/windows/win32/winmsg/extended-window-styles).
+Extended window styles apply to [`CWnd` Class](cwnd-class.md) objects. Specify a combination of styles in the *`dwExStyle`* parameter of [`CWnd::CreateEx`](cwnd-class.md#createex). For more information about extended window styles in Windows, see [Extended Window Styles (Windows)](/windows/win32/winmsg/extended-window-styles).
 
 |Style|Description|
 |-----------|-----------------|
@@ -310,21 +309,21 @@ Extended window styles apply to [`CWnd` Class](../../mfc/reference/cwnd-class.md
 
 ## See also
 
-[MFC Class Overview](../../mfc/class-library-overview.md)<br/>
-[`CWnd::Create`](../../mfc/reference/cwnd-class.md#create)<br/>
-[`CWnd::CreateEx`](../../mfc/reference/cwnd-class.md#createex)<br/>
-[`CEdit::Create`](../../mfc/reference/cedit-class.md#create)<br/>
-[`CScrollBar::Create`](../../mfc/reference/cscrollbar-class.md#create)<br/>
-[`CStatic::Create`](../../mfc/reference/cstatic-class.md#create)<br/>
-[`AfxMessageBox`](../../mfc/reference/cstring-formatting-and-message-box-display.md#afxmessagebox)<br/>
-[`CreateWindow`](/windows/win32/api/winuser/nf-winuser-createwindoww)<br/>
-[`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw)<br/>
-[Button Styles (Windows)](/windows/win32/Controls/button-styles)<br/>
-[Combo Box Styles (Windows)](/windows/win32/Controls/combo-box-styles)<br/>
-[Edit Control Styles (Windows)](/windows/win32/Controls/edit-control-styles)<br/>
-[List Box Styles (Windows)](/windows/win32/Controls/list-box-styles)<br/>
-[`MessageBox` Function (Windows)](/windows/win32/api/winuser/nf-winuser-messagebox)<br/>
-[Scroll Bar Control Styles (Windows)](/windows/win32/Controls/scroll-bar-control-styles)<br/>
-[Static Control Styles (Windows)](/windows/win32/Controls/static-control-styles)<br/>
-[Window Styles (Windows)](/windows/win32/winmsg/window-styles)<br/>
+[MFC Class Overview](../class-library-overview.md)\
+[`CWnd::Create`](cwnd-class.md#create)\
+[`CWnd::CreateEx`](cwnd-class.md#createex)\
+[`CEdit::Create`](cedit-class.md#create)\
+[`CScrollBar::Create`](cscrollbar-class.md#create)\
+[`CStatic::Create`](cstatic-class.md#create)\
+[`AfxMessageBox`](cstring-formatting-and-message-box-display.md#afxmessagebox)\
+[`CreateWindow`](/windows/win32/api/winuser/nf-winuser-createwindoww)\
+[`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw)\
+[Button Styles (Windows)](/windows/win32/Controls/button-styles)\
+[Combo Box Styles (Windows)](/windows/win32/Controls/combo-box-styles)\
+[Edit Control Styles (Windows)](/windows/win32/Controls/edit-control-styles)\
+[List Box Styles (Windows)](/windows/win32/Controls/list-box-styles)\
+[`MessageBox` Function (Windows)](/windows/win32/api/winuser/nf-winuser-messagebox)\
+[Scroll Bar Control Styles (Windows)](/windows/win32/Controls/scroll-bar-control-styles)\
+[Static Control Styles (Windows)](/windows/win32/Controls/static-control-styles)\
+[Window Styles (Windows)](/windows/win32/winmsg/window-styles)\
 [Extended Window Styles (Windows)](/windows/win32/winmsg/extended-window-styles)
diff --git a/docs/mfc/registering-window-classes.md b/docs/mfc/registering-window-classes.md
index 2d37bda3fb..20bf96df28 100644
--- a/docs/mfc/registering-window-classes.md
+++ b/docs/mfc/registering-window-classes.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["WndProc"]
 helpviewer_keywords: ["window classes [MFC], registering", "registry [MFC], registering classes", "AfxRegisterWndClass method [MFC]", "MFC, windows", "WinMain method [MFC], and registering window classes", "WndProc method [MFC]", "classes [MFC], registering window classes", "WinMain method [MFC]", "registering window classes [MFC]"]
 ms.assetid: 30994bc4-a362-43da-bcc5-1bf67a3fc929
+ms.topic: concept-article
 ---
 # Registering Window Classes
 
diff --git a/docs/mfc/responding-to-dynamic-data-exchange-dde.md b/docs/mfc/responding-to-dynamic-data-exchange-dde.md
index 9ec13c9df4..cfcc4ddc45 100644
--- a/docs/mfc/responding-to-dynamic-data-exchange-dde.md
+++ b/docs/mfc/responding-to-dynamic-data-exchange-dde.md
@@ -4,6 +4,7 @@ title: "Responding to Dynamic Data Exchange (DDE)"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["registry [MFC], most recently used files", "frame windows [MFC], dynamic data exchange (DDE)", "DDE (Dynamic Data Exchange), frame windows", "registration [MFC], shell", "Shell [MFC], registering file types", "windows [MFC], and dynamic data exchange", "responding to dynamic data exchange (DDE)", "frame windows [MFC], shell registration"]
 ms.assetid: 4db838d5-62cf-4123-915a-66e514155c0c
+ms.topic: concept-article
 ---
 # Responding to Dynamic Data Exchange (DDE)
 
diff --git a/docs/mfc/retrieving-data-from-the-dialog-object.md b/docs/mfc/retrieving-data-from-the-dialog-object.md
index 7c870f7807..0177ee9d4a 100644
--- a/docs/mfc/retrieving-data-from-the-dialog-object.md
+++ b/docs/mfc/retrieving-data-from-the-dialog-object.md
@@ -4,6 +4,7 @@ title: "Retrieving Data from the Dialog Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["dialog boxes [MFC], retrieving user data", "dialog box data [MFC]", "data [MFC], retrieving", "GetDlgItemText method [MFC]", "SetDlgItemText method [MFC]", "SetWindowText method [MFC]", "dialog box data [MFC], retrieving", "retrieving data [MFC]", "user input [MFC], retrieving from MFC dialog boxes", "capturing user input [MFC]", "dialog box controls [MFC], initializing values", "DDX (dialog data exchange) [MFC]", "MFC dialog boxes [MFC], retrieving user input", "data retrieval [MFC], dialog boxes", "data [MFC], dialog boxes", "DDX (dialog data exchange) [MFC], about DDX", "DDX (dialog data exchange) [MFC], retrieving data from Dialog object", "GetWindowText method [MFC]"]
 ms.assetid: bdca2b61-6b53-4c2e-b426-8712c7a38ec0
+ms.topic: concept-article
 ---
 # Retrieving Data from the Dialog Object
 
diff --git a/docs/mfc/rubber-banding-and-trackers.md b/docs/mfc/rubber-banding-and-trackers.md
index 4fb1ae81c9..78313d5745 100644
--- a/docs/mfc/rubber-banding-and-trackers.md
+++ b/docs/mfc/rubber-banding-and-trackers.md
@@ -4,6 +4,7 @@ title: "Rubber-Banding and Trackers"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["trackers [MFC]", "CRectTracker class [MFC], implementing trackers", "OLE objects [MFC], selecting", "rubber banding [MFC]", "WM_LBUTTONDOWN [MFC]"]
 ms.assetid: 0d0fa64c-6418-4baf-ab7f-2d16ca039230
+ms.topic: concept-article
 ---
 # Rubber-Banding and Trackers
 
diff --git a/docs/mfc/scrolling-and-scaling-views.md b/docs/mfc/scrolling-and-scaling-views.md
index 997ef315f8..ae3f1dd968 100644
--- a/docs/mfc/scrolling-and-scaling-views.md
+++ b/docs/mfc/scrolling-and-scaling-views.md
@@ -4,6 +4,7 @@ title: "Scrolling and Scaling Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["message handlers [MFC]", "scaling views [MFC]", "message handling [MFC], scroll bars in view class [MFC]", "scroll bars [MFC], messages", "scrolling views [MFC]"]
 ms.assetid: f98a3421-c336-407e-97ee-dbb2ffd76fbd
+ms.topic: concept-article
 ---
 # Scrolling and Scaling Views
 
diff --git a/docs/mfc/selecting-a-graphic-object-into-a-device-context.md b/docs/mfc/selecting-a-graphic-object-into-a-device-context.md
index 711b5ca875..722c6609e7 100644
--- a/docs/mfc/selecting-a-graphic-object-into-a-device-context.md
+++ b/docs/mfc/selecting-a-graphic-object-into-a-device-context.md
@@ -4,6 +4,7 @@ title: "Selecting a Graphic Object into a Device Context"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["graphic objects [MFC], selecting into device context", "SelectObject method [MFC]", "GDI objects [MFC], device contexts", "lifetime, graphic objects [MFC]", "device contexts, selecting graphic objects into", "device contexts, graphic objects [MFC]"]
 ms.assetid: cf54a330-63ef-421f-83eb-90ec7bd82eef
+ms.topic: concept-article
 ---
 # Selecting a Graphic Object into a Device Context
 
diff --git a/docs/mfc/serializing-data-to-and-from-files.md b/docs/mfc/serializing-data-to-and-from-files.md
index 9fac8aba10..4131496be7 100644
--- a/docs/mfc/serializing-data-to-and-from-files.md
+++ b/docs/mfc/serializing-data-to-and-from-files.md
@@ -4,6 +4,7 @@ title: "Serializing Data to and from Files"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["documents [MFC], serialization", "documents [MFC], saving", "saving documents", "deserialization [MFC]", "serialization [MFC], role of document", "serialization [MFC], role of data", "data [MFC]", "data [MFC], serializing", "document data [MFC]"]
 ms.assetid: b42a0c68-4bc4-4012-9938-5433a26d2c24
+ms.topic: concept-article
 ---
 # Serializing Data to and from Files
 
diff --git a/docs/mfc/setting-a-hot-key.md b/docs/mfc/setting-a-hot-key.md
index 75e0824604..fbe03ecfbd 100644
--- a/docs/mfc/setting-a-hot-key.md
+++ b/docs/mfc/setting-a-hot-key.md
@@ -4,6 +4,7 @@ title: "Setting a Hot Key"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["keyboard shortcuts [MFC], hot keys", "access keys [MFC], hot keys", "CHotKeyCtrl class [MFC], setting hot key"]
 ms.assetid: 6f3bc141-e346-4dce-9ca7-3e6b2c453f3f
+ms.topic: concept-article
 ---
 # Setting a Hot Key
 
diff --git a/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md b/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md
index 1ab946d3d7..f563ff6a99 100644
--- a/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md
+++ b/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["MCN_GETDAYSTATE"]
 helpviewer_keywords: ["CMonthCalCtrl class [MFC], setting day state info", "MCN_GETDAYSTATE notification [MFC]", "month calendar controls [MFC], day state info"]
 ms.assetid: 435d1b11-ec0e-4121-9e25-aaa6af812a3c
+ms.topic: how-to
 ---
 # Setting the Day State of a Month Calendar Control
 
diff --git a/docs/mfc/setting-the-dialog-boxs-background-color.md b/docs/mfc/setting-the-dialog-boxs-background-color.md
index 7935340160..f9636fc671 100644
--- a/docs/mfc/setting-the-dialog-boxs-background-color.md
+++ b/docs/mfc/setting-the-dialog-boxs-background-color.md
@@ -3,6 +3,7 @@ description: "Learn more about: Setting the Dialog Box's Background Color"
 title: "Setting the Dialog Box's Background Color"
 ms.date: 11/17/2023
 helpviewer_keywords: ["CSS, background attributes in styles [MFC]", "HTML element formatting, background attributes", "colors, dialog box", "dialog boxes [MFC], colors", "background colors, dialog boxes", "MFC dialog boxes [MFC], colors"]
+ms.topic: concept-article
 ---
 # Setting the Dialog Box's Background Color
 
diff --git a/docs/mfc/setting-the-images-for-an-individual-item.md b/docs/mfc/setting-the-images-for-an-individual-item.md
index 88a9906b6d..d8b1d62da5 100644
--- a/docs/mfc/setting-the-images-for-an-individual-item.md
+++ b/docs/mfc/setting-the-images-for-an-individual-item.md
@@ -4,6 +4,7 @@ title: "Setting the Images for an Individual Item"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["extended combo boxes [MFC], images", "images [MFC], combo box items"]
 ms.assetid: bde83db8-23a7-4e35-837a-c86447d2c0af
+ms.topic: how-to
 ---
 # Setting the Images for an Individual Item
 
diff --git a/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md b/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md
index bdfd84d65d..2b6710e45a 100644
--- a/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md
+++ b/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md
@@ -4,6 +4,7 @@ title: "Setting the Mode of a CStatusBarCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["simple mode and status bar controls", "IsSimple method, using", "SetSimple method [MFC]", "status bar controls [MFC], simple and nonsimple modes", "non-simple mode and status bar controls", "CStatusBarCtrl class [MFC], simple and nonsimple modes"]
 ms.assetid: ca6076e5-1501-4e33-8d35-9308941e46c0
+ms.topic: concept-article
 ---
 # Setting the Mode of a CStatusBarCtrl Object
 
diff --git a/docs/mfc/specifying-levels-of-functionality.md b/docs/mfc/specifying-levels-of-functionality.md
index 66ae19f7f9..cfaa99c8a4 100644
--- a/docs/mfc/specifying-levels-of-functionality.md
+++ b/docs/mfc/specifying-levels-of-functionality.md
@@ -4,6 +4,7 @@ title: "Specifying Levels of Functionality"
 ms.date: "11/06/2018"
 helpviewer_keywords: ["CObject class [MFC], adding functionality to derived classes", "runtime [MFC], class information", "serialization [MFC], Cobject", "dynamic creation support", "levels [MFC], functionality in CObject", "run-time class [MFC], information support", "levels [MFC]"]
 ms.assetid: 562669ba-c858-4f66-b5f1-b3beeea4f486
+ms.topic: how-to
 ---
 # Specifying Levels of Functionality
 
diff --git a/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md b/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md
index 258b8a4d22..fe0603edff 100644
--- a/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md
+++ b/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md
@@ -4,6 +4,7 @@ title: "Steps in a Typical FTP Client Application to Delete a File"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Internet client applications [MFC], FTP delete", "WinInet classes [MFC], FTP", "FTP (File Transfer Protocol) [MFC], client applications", "Internet applications [MFC], FTP client applications"]
 ms.assetid: 2c347a96-c0a4-4827-98fe-668406e552bc
+ms.topic: how-to
 ---
 # Steps in a Typical FTP Client Application to Delete a File
 
diff --git a/docs/mfc/steps-in-a-typical-ftp-client-application.md b/docs/mfc/steps-in-a-typical-ftp-client-application.md
index d84e6990dc..c1d16114ff 100644
--- a/docs/mfc/steps-in-a-typical-ftp-client-application.md
+++ b/docs/mfc/steps-in-a-typical-ftp-client-application.md
@@ -4,6 +4,7 @@ title: "Steps in a Typical FTP Client Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Internet client applications [MFC], FTP table", "FTP (File Transfer Protocol)", "WinInet classes [MFC], FTP", "FTP (File Transfer Protocol) [MFC], client applications", "Internet applications [MFC], FTP client applications"]
 ms.assetid: 70bed7b5-6040-40d1-bc77-702e63a698f2
+ms.topic: how-to
 ---
 # Steps in a Typical FTP Client Application
 
diff --git a/docs/mfc/steps-in-a-typical-gopher-client-application.md b/docs/mfc/steps-in-a-typical-gopher-client-application.md
index 6b00efb559..4468557ab4 100644
--- a/docs/mfc/steps-in-a-typical-gopher-client-application.md
+++ b/docs/mfc/steps-in-a-typical-gopher-client-application.md
@@ -4,6 +4,7 @@ title: "Steps in a Typical Gopher Client Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["WinInet classes [MFC], gopher", "Internet applications [MFC], gopher client applications", "Gopher client applications [MFC]", "Internet client applications [MFC], gopher table"]
 ms.assetid: 3e4e1869-5da0-453d-8ba9-b648c894bb90
+ms.topic: how-to
 ---
 # Steps in a Typical Gopher Client Application
 
diff --git a/docs/mfc/steps-in-a-typical-http-client-application.md b/docs/mfc/steps-in-a-typical-http-client-application.md
index 96b6b19fee..fa830ffcdb 100644
--- a/docs/mfc/steps-in-a-typical-http-client-application.md
+++ b/docs/mfc/steps-in-a-typical-http-client-application.md
@@ -4,6 +4,7 @@ title: "Steps in a Typical HTTP Client Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["HTTP client applications [MFC]", "client applications [MFC], HTTP", "Internet applications [MFC], HTTP client applications", "applications [MFC], HTTP client", "Internet client applications [MFC], HTTP table", "WinInet classes [MFC], HTTP"]
 ms.assetid: f86552e8-8acd-4b23-bdc5-0c3a247ebd74
+ms.topic: how-to
 ---
 # Steps in a Typical HTTP Client Application
 
diff --git a/docs/mfc/steps-in-a-typical-internet-client-application.md b/docs/mfc/steps-in-a-typical-internet-client-application.md
index 927d514d1e..24f95bcbc5 100644
--- a/docs/mfc/steps-in-a-typical-internet-client-application.md
+++ b/docs/mfc/steps-in-a-typical-internet-client-application.md
@@ -4,6 +4,7 @@ title: "Steps in a Typical Internet Client Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Internet client applications [MFC], general table", "WinInet classes [MFC], programming", "Internet applications [MFC], client applications"]
 ms.assetid: 7aba135c-7c15-4e2f-8c34-bbaf792c89a6
+ms.topic: how-to
 ---
 # Steps in a Typical Internet Client Application
 
diff --git a/docs/mfc/storing-and-loading-cobjects-via-an-archive.md b/docs/mfc/storing-and-loading-cobjects-via-an-archive.md
index ccbafa9bdb..f08ce386ea 100644
--- a/docs/mfc/storing-and-loading-cobjects-via-an-archive.md
+++ b/docs/mfc/storing-and-loading-cobjects-via-an-archive.md
@@ -4,6 +4,7 @@ title: "Storing and Loading CObjects via an Archive"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CObjects [MFC], loading through archives", "CArchive class [MFC], storing and loading objects", "Serialize method, vs. CArchive operators", "CObject class [MFC], CArchive objects", "CObjects [MFC]"]
 ms.assetid: a829b6dd-bc31-47e0-8108-fbb946722db9
+ms.topic: concept-article
 ---
 # Storing and Loading CObjects via an Archive
 
diff --git a/docs/mfc/testing-internet-applications.md b/docs/mfc/testing-internet-applications.md
index 17cd363f1b..40e53d914f 100644
--- a/docs/mfc/testing-internet-applications.md
+++ b/docs/mfc/testing-internet-applications.md
@@ -4,6 +4,7 @@ title: "Testing Internet Applications"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Web applications [MFC], testing", "debugging Web applications [MFC], testing applications", "testing [MFC], Internet applications", "debugging [MFC], Web applications", "Internet debugging and testing"]
 ms.assetid: ac4c74e3-d4ad-4e19-8f6c-e270de067f01
+ms.topic: concept-article
 ---
 # Testing Internet Applications
 
diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md
index fd24b36eca..d7258a77d5 100644
--- a/docs/mfc/testing-properties-and-events-with-test-container.md
+++ b/docs/mfc/testing-properties-and-events-with-test-container.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Testing Properties and Events with Test Container"
 title: "Testing Properties and Events with Test Container"
-ms.date: "11/04/2016"
+description: "Learn more about: Testing Properties and Events with Test Container"
+ms.date: 11/04/2016
 helpviewer_keywords: ["testing, test containers", "tstcon32.exe", "debugging ActiveX controls", "test container", "ActiveX Control Test Container", "ActiveX controls [MFC], testing", "properties [MFC], testing"]
-ms.assetid: 626867cf-fe53-4c30-8973-55bb93ef3917
+ms.topic: how-to
 ---
 # Testing Properties and Events with Test Container
 
@@ -36,7 +36,7 @@ At this point you can test your control's properties or events.
 
    The property now contains the new value.
 
-#### To test events and specify the destination of event information.
+#### To test events and specify the destination of event information
 
 1. On the **Options** menu, click **Logging**.
 
diff --git a/docs/mfc/tn002-persistent-object-data-format.md b/docs/mfc/tn002-persistent-object-data-format.md
index da977b57ee..46c468bb74 100644
--- a/docs/mfc/tn002-persistent-object-data-format.md
+++ b/docs/mfc/tn002-persistent-object-data-format.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: TN002: Persistent Object Data Format"
 title: "TN002: Persistent Object Data Format"
-ms.date: "11/04/2016"
+description: "Learn more about: TN002: Persistent Object Data Format"
+ms.date: 11/04/2016
 helpviewer_keywords: ["VERSIONABLE_SCHEMA macro [MFC]", "persistent object data", "CArchive class [MFC], support for persistent data", "persistent C++ objects [MFC]", "TN002"]
-ms.assetid: 553fe01d-c587-4c8d-a181-3244a15c2be9
 ---
 # TN002: Persistent Object Data Format
 
@@ -56,7 +55,7 @@ If the object has not been saved before, there are two possibilities to consider
 
 The descriptor for this class is then inserted into the archive using the `CRuntimeClass::Store` method. `CRuntimeClass::Store` inserts the schema number of the class (see below) and the ASCII text name of the class. Note that the use of the ASCII text name does not guarantee uniqueness of the archive across applications. Therefore, you should tag your data files to prevent corruption. Following the insertion of the class information, the archive puts the object into the *m_pStoreMap* and then calls the `Serialize` method to insert class-specific data. Placing the object into the *m_pStoreMap* before calling `Serialize` prevents multiple copies of the object from being saved to the store.
 
-When returning to the initial caller (usually the root of the network of objects), you must call [CArchive::Close](../mfc/reference/carchive-class.md#close). If you plan to perform other [CFile](../mfc/reference/cfile-class.md)operations, you must call the `CArchive` method [Flush](../mfc/reference/carchive-class.md#flush) to prevent corruption of the archive.
+When returning to the initial caller (usually the root of the network of objects), you must call [CArchive::Close](../mfc/reference/carchive-class.md#close). If you plan to perform other [CFile](../mfc/reference/cfile-class.md) operations, you must call the `CArchive` method [Flush](../mfc/reference/carchive-class.md#flush) to prevent corruption of the archive.
 
 > [!NOTE]
 > This implementation imposes a hard limit of 0x3FFFFFFE indices per archive context. This number represents the maximum number of unique objects and classes that can be saved in a single archive, but a single disk file can have an unlimited number of archive contexts.
diff --git a/docs/mfc/tn014-custom-controls.md b/docs/mfc/tn014-custom-controls.md
index debff5eb3d..d6eb5e03e1 100644
--- a/docs/mfc/tn014-custom-controls.md
+++ b/docs/mfc/tn014-custom-controls.md
@@ -38,44 +38,44 @@ By using self-draw controls you can build reusable control classes that use owne
 - For self-draw buttons:
 
     ```cpp
-    CButton:DrawItem(LPDRAWITEMSTRUCT);
+    CButton::DrawItem(LPDRAWITEMSTRUCT);
     // insert code to draw this button
     ```
 
 - For self-draw menus:
 
     ```cpp
-    CMenu:MeasureItem(LPMEASUREITEMSTRUCT);
+    CMenu::MeasureItem(LPMEASUREITEMSTRUCT);
     // insert code to measure the size of an item in this menu
-    CMenu:DrawItem(LPDRAWITEMSTRUCT);
+    CMenu::DrawItem(LPDRAWITEMSTRUCT);
     // insert code to draw an item in this menu
     ```
 
 - For self-draw list boxes:
 
     ```cpp
-    CListBox:MeasureItem(LPMEASUREITEMSTRUCT);
+    CListBox::MeasureItem(LPMEASUREITEMSTRUCT);
     // insert code to measure the size of an item in this list box
-    CListBox:DrawItem(LPDRAWITEMSTRUCT);
+    CListBox::DrawItem(LPDRAWITEMSTRUCT);
     // insert code to draw an item in this list box
 
-    CListBox:CompareItem(LPCOMPAREITEMSTRUCT);
+    CListBox::CompareItem(LPCOMPAREITEMSTRUCT);
     // insert code to compare two items in this list box if LBS_SORT
-    CListBox:DeleteItem(LPDELETEITEMSTRUCT);
+    CListBox::DeleteItem(LPDELETEITEMSTRUCT);
     // insert code to delete an item from this list box
     ```
 
 - For self-draw combo boxes:
 
     ```cpp
-    CComboBox:MeasureItem(LPMEASUREITEMSTRUCT);
+    CComboBox::MeasureItem(LPMEASUREITEMSTRUCT);
     // insert code to measure the size of an item in this combo box
-    CComboBox:DrawItem(LPDRAWITEMSTRUCT);
+    CComboBox::DrawItem(LPDRAWITEMSTRUCT);
     // insert code to draw an item in this combo box
 
-    CComboBox:CompareItem(LPCOMPAREITEMSTRUCT);
+    CComboBox::CompareItem(LPCOMPAREITEMSTRUCT);
     // insert code to compare two items in this combo box if CBS_SORT
-    CComboBox:DeleteItem(LPDELETEITEMSTRUCT);
+    CComboBox::DeleteItem(LPDELETEITEMSTRUCT);
     // insert code to delete an item from this combo box
     ```
 
diff --git a/docs/mfc/tn023-standard-mfc-resources.md b/docs/mfc/tn023-standard-mfc-resources.md
index d7e50ae319..eebace2eda 100644
--- a/docs/mfc/tn023-standard-mfc-resources.md
+++ b/docs/mfc/tn023-standard-mfc-resources.md
@@ -72,7 +72,7 @@ Standard framework resources are usually included in an application by using the
 
 The most common case of customizing standard framework resources is adding or removing additional includes for printing, OLE Client, and OLE Server support.
 
-In some rare cases you might want to customize the contents of the standard framework resources for your particular application, not just add and remove the entire file. The followings steps show how you can limit the resources that are included:
+In some rare cases you might want to customize the contents of the standard framework resources for your particular application, not just add and remove the entire file. The following steps show how you can limit the resources that are included:
 
 ##### To customize the contents of a standard resource file
 
diff --git a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md
index a7e7375d13..f9dd6560fb 100644
--- a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md
+++ b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: TN038: MFC/OLE IUnknown Implementation"
 title: "TN038: MFC-OLE IUnknown Implementation"
+description: "Learn more about: TN038: MFC/OLE IUnknown Implementation"
 ms.date: "06/28/2018"
 helpviewer_keywords: ["aggregation macros [MFC]", "COM interfaces, base interface", "IUnknown interface", "END_INTERFACE_MAP macro [MFC]", "TN038", "BEGIN_INTERFACE_PART macro [MFC]", "DECLARE_INTERFACE_MAP macro [MFC]", "BEGIN_INTERFACE_MAP macro [MFC]", "OLE [MFC], implementing IUnknown interface", "METHOD_PROLOGUE macro [MFC]", "STDMETHOD macro [MFC]", "END_INTERFACE_PART macro [MFC]", "INTERFACE_PART macro"]
-ms.assetid: 19d946ba-beaf-4881-85c6-0b598d7f6f11
 ---
 # TN038: MFC/OLE IUnknown Implementation
 
@@ -518,7 +517,7 @@ END_INTERFACE_PART(MyAdviseSink)
 would define a local class called XMyAdviseSink derived from IAdviseSink, and a member of the class in which it is declared called m_xMyAdviseSink.Note:
 
 > [!NOTE]
-> The lines beginning with `STDMETHOD`_ are essentially copied from OLE2.H and modified slightly. Copying them from OLE2.H can reduce errors that are hard to resolve.
+> The lines beginning with `STDMETHOD_` are essentially copied from OLE2.H and modified slightly. Copying them from OLE2.H can reduce errors that are hard to resolve.
 
 ### BEGIN_INTERFACE_MAP and END_INTERFACE_MAP — Macro Descriptions
 
diff --git a/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md b/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md
index 5c3c307246..40acefd321 100644
--- a/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md
+++ b/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md
@@ -4,6 +4,7 @@ title: "TN048: Writing ODBC Setup and Administration Programs for MFC Database A
 ms.date: "11/04/2016"
 helpviewer_keywords: ["installing ODBC", "ODBC, installing", "setup, ODBC setup programs", "TN048", "ODBC, and MFC", "MFC, database applications"]
 ms.assetid: d456cdd4-0513-4a51-80c0-9132b66115ce
+ms.topic: install-set-up-deploy
 ---
 # TN048: Writing ODBC Setup and Administration Programs for MFC Database Applications
 
diff --git a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md
index 02a2e7b506..c17812d54a 100644
--- a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md
+++ b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md
@@ -4,6 +4,7 @@ title: "TN054: Calling DAO Directly While Using MFC DAO Classes"
 ms.date: "09/17/2019"
 helpviewer_keywords: ["MFC, DAO and", "passwords [MFC], calling DAO", "security [MFC], DAO", "DAO (Data Access Objects), calling directly", "DAO (Data Access Objects), security", "security [MFC]", "TN054", "DAO (Data Access Objects), and MFC"]
 ms.assetid: f7de7d85-8d6c-4426-aa05-2e617c0da957
+ms.custom: sfi-ropc-nochange
 ---
 # TN054: Calling DAO Directly While Using MFC DAO Classes
 
diff --git a/docs/mfc/tn061-on-notify-and-wm-notify-messages.md b/docs/mfc/tn061-on-notify-and-wm-notify-messages.md
index b035d0e6d4..41abe932b8 100644
--- a/docs/mfc/tn061-on-notify-and-wm-notify-messages.md
+++ b/docs/mfc/tn061-on-notify-and-wm-notify-messages.md
@@ -4,6 +4,7 @@ title: "TN061: ON_NOTIFY and WM_NOTIFY Messages"
 ms.date: "06/28/2018"
 helpviewer_keywords: ["ON_NOTIFY_EX message [MFC]", "TN061", "ON_NOTIFY message [MFC]", "ON_NOTIFY_EX_RANGE message [MFC]", "ON_NOTIFY_RANGE message [MFC]", "notification messages", "WM_NOTIFY message"]
 ms.assetid: 04a96dde-7049-41df-9954-ad7bb5587caf
+ms.topic: reference
 ---
 # TN061: ON_NOTIFY and WM_NOTIFY Messages
 
diff --git a/docs/mfc/toc.yml b/docs/mfc/toc.yml
index eff745b744..691f07b181 100644
--- a/docs/mfc/toc.yml
+++ b/docs/mfc/toc.yml
@@ -2919,6 +2919,6 @@ items:
     - name: Add a method to an IDL interface in a MFC project
       href: reference/add-idl-mfc-method-wizard.md
     - name: Add a property to an IDL interface in a MFC project
-      href: reference/add-interface-definition-library-mfc-property-wizard.md 
+      href: reference/add-interface-definition-library-mfc-property-wizard.md
     - name: MFC class wizard
-      href: reference/mfc-class-wizard.md    
\ No newline at end of file
+      href: reference/mfc-class-wizard.md
\ No newline at end of file
diff --git a/docs/mfc/tree-control-item-states-overview.md b/docs/mfc/tree-control-item-states-overview.md
index 73e7e0f632..ca07cec4fa 100644
--- a/docs/mfc/tree-control-item-states-overview.md
+++ b/docs/mfc/tree-control-item-states-overview.md
@@ -4,6 +4,7 @@ title: "Tree Control Item States Overview"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["states, CTreeCtrl items", "tree controls [MFC], item states overview", "CTreeCtrl class [MFC], item states"]
 ms.assetid: 2db11ae0-0d87-499d-8c1f-5e0dbe9e94c8
+ms.topic: concept-article
 ---
 # Tree Control Item States Overview
 
diff --git a/docs/mfc/turning-off-the-activate-when-visible-option.md b/docs/mfc/turning-off-the-activate-when-visible-option.md
index 837eb26f2f..a72e1bf165 100644
--- a/docs/mfc/turning-off-the-activate-when-visible-option.md
+++ b/docs/mfc/turning-off-the-activate-when-visible-option.md
@@ -4,6 +4,7 @@ title: "Turning off the Activate When Visible Option"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], activate options", "Activate When Visible option [MFC]"]
 ms.assetid: 8f7ddc5a-a7a6-4da8-bcb9-1b569f0ecb48
+ms.topic: concept-article
 ---
 # Turning off the Activate When Visible Option
 
diff --git a/docs/mfc/updating-the-text-of-a-status-bar-pane.md b/docs/mfc/updating-the-text-of-a-status-bar-pane.md
index 389cc22836..1954167790 100644
--- a/docs/mfc/updating-the-text-of-a-status-bar-pane.md
+++ b/docs/mfc/updating-the-text-of-a-status-bar-pane.md
@@ -4,6 +4,7 @@ title: "Updating the Text of a Status-Bar Pane"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["updating user interface objects [MFC]", "ON_UPDATE_COMMAND_UI macro [MFC]", "user interface objects [MFC], updating", "text, status bar", "CStatusBar class [MFC], updating", "SetText method [MFC]", "panes, status bar", "status bars [MFC], updating"]
 ms.assetid: 4984a3f4-9905-4d8c-a927-dca19781053b
+ms.topic: how-to
 ---
 # Updating the Text of a Status-Bar Pane
 
diff --git a/docs/mfc/upgrading-an-existing-activex-control.md b/docs/mfc/upgrading-an-existing-activex-control.md
index e2b88e3db9..47524f2931 100644
--- a/docs/mfc/upgrading-an-existing-activex-control.md
+++ b/docs/mfc/upgrading-an-existing-activex-control.md
@@ -4,6 +4,7 @@ title: "Upgrading an Existing ActiveX Control"
 ms.date: 11/03/2021
 helpviewer_keywords: ["ActiveX controls [MFC], Internet", "LPK files for Internet controls", "safe for scripting and initialization (controls)", "OLE controls [MFC], upgrading to ActiveX", "CAB files, for ActiveX controls", "Internet applications [MFC], ActiveX controls", "Internet applications [MFC], packaging code for download", "upgrading ActiveX controls", "licensing ActiveX controls"]
 ms.assetid: 4d12ddfa-b491-4f9f-a0b7-b51458e05651
+ms.topic: how-to
 ---
 # Upgrading an Existing ActiveX Control
 
diff --git a/docs/mfc/using-a-common-control-as-a-child-window.md b/docs/mfc/using-a-common-control-as-a-child-window.md
index b51b02f859..a6bb23d0b3 100644
--- a/docs/mfc/using-a-common-control-as-a-child-window.md
+++ b/docs/mfc/using-a-common-control-as-a-child-window.md
@@ -4,6 +4,7 @@ title: "Using a Common Control as a Child Window"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [MFC], using as child windows", "windows [MFC], common controls as", "child windows [MFC], common controls as", "common controls [MFC], child windows", "Windows common controls [MFC], child windows"]
 ms.assetid: 608f7d47-7854-4fce-bde9-856c51e76753
+ms.topic: how-to
 ---
 # Using a Common Control as a Child Window
 
diff --git a/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md b/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md
index ca097e6d62..896a649cbc 100644
--- a/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md
+++ b/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md
@@ -4,6 +4,7 @@ title: "Using a Dialog Bar with a Rebar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["WS_EX_TRANSPARENT style", "rebar controls [MFC], dialog bars", "dialog bars [MFC], using with rebar bands"]
 ms.assetid: e528cea0-6b81-4bdf-9643-7c03b6176590
+ms.topic: how-to
 ---
 # Using a Dialog Bar with a Rebar Control
 
diff --git a/docs/mfc/using-a-dialog-template-in-memory.md b/docs/mfc/using-a-dialog-template-in-memory.md
index 944130b91b..2ebc1096f2 100644
--- a/docs/mfc/using-a-dialog-template-in-memory.md
+++ b/docs/mfc/using-a-dialog-template-in-memory.md
@@ -4,6 +4,7 @@ title: "Using a Dialog Template in Memory"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["templates [MFC], for dialog boxes", "dialog templates [MFC]", "dialog templates [MFC], in memory", "MFC dialog boxes [MFC], dialog templates"]
 ms.assetid: edb443bb-e614-4f77-8a3b-74d93871e9bd
+ms.topic: concept-article
 ---
 # Using a Dialog Template in Memory
 
diff --git a/docs/mfc/using-a-hot-key-control.md b/docs/mfc/using-a-hot-key-control.md
index 64a2fe30c9..ca29fb0d07 100644
--- a/docs/mfc/using-a-hot-key-control.md
+++ b/docs/mfc/using-a-hot-key-control.md
@@ -4,6 +4,7 @@ title: "Using a Hot Key Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CHotKeyCtrl class [MFC], using", "hot key controls"]
 ms.assetid: cdd6524b-cc43-447f-b151-164273559685
+ms.topic: concept-article
 ---
 # Using a Hot Key Control
 
diff --git a/docs/mfc/using-an-animation-control.md b/docs/mfc/using-an-animation-control.md
index cbf09f8efe..ceff13db01 100644
--- a/docs/mfc/using-an-animation-control.md
+++ b/docs/mfc/using-an-animation-control.md
@@ -4,6 +4,7 @@ title: "Using an Animation Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [MFC], animation", "CAnimateCtrl class [MFC], animation controls", "animation controls [MFC]"]
 ms.assetid: a009a464-e12d-4112-bf52-04a09b28dd88
+ms.topic: concept-article
 ---
 # Using an Animation Control
 
diff --git a/docs/mfc/using-an-image-list-with-a-rebar-control.md b/docs/mfc/using-an-image-list-with-a-rebar-control.md
index 2c8d693dc6..4384b1557b 100644
--- a/docs/mfc/using-an-image-list-with-a-rebar-control.md
+++ b/docs/mfc/using-an-image-list-with-a-rebar-control.md
@@ -4,6 +4,7 @@ title: "Using an Image List with a Rebar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["image lists [MFC], rebar controls", "rebar controls [MFC], image lists"]
 ms.assetid: 1a5836ac-019a-46aa-8741-b35c3376b839
+ms.topic: how-to
 ---
 # Using an Image List with a Rebar Control
 
diff --git a/docs/mfc/using-an-image-list.md b/docs/mfc/using-an-image-list.md
index 4796e5b6fb..7016e9dd27 100644
--- a/docs/mfc/using-an-image-list.md
+++ b/docs/mfc/using-an-image-list.md
@@ -4,6 +4,7 @@ title: "Using an Image List"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["lists [MFC], image", "CImageList class [MFC], using", "image lists [MFC]"]
 ms.assetid: e0aed188-a1e6-400e-9f51-033d61c5541f
+ms.topic: concept-article
 ---
 # Using an Image List
 
diff --git a/docs/mfc/using-an-unclipped-device-context.md b/docs/mfc/using-an-unclipped-device-context.md
index 9b81ba4268..35bd4e6fa1 100644
--- a/docs/mfc/using-an-unclipped-device-context.md
+++ b/docs/mfc/using-an-unclipped-device-context.md
@@ -4,6 +4,7 @@ title: "Using an Unclipped Device Context"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC ActiveX controls [MFC], unclipped device context"]
 ms.assetid: 9c020063-73da-4803-bf7b-2e1fd950c9ed
+ms.topic: concept-article
 ---
 # Using an Unclipped Device Context
 
diff --git a/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md b/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md
index 1b2bf9f7f1..34e4486769 100644
--- a/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md
+++ b/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["DTN_FORMATQUERY", "DTN_FORMAT"]
 helpviewer_keywords: ["DateTimePicker control [MFC], callback fields", "callback fields in CDateTimeCtrl class [MFC]", "CDateTimeCtrl class [MFC], callback fields", "CDateTimeCtrl class [MFC], handling DTN_FORMAT and DTN_FORMATQ", "DTN_FORMATQUERY notification [MFC]", "DTN_FORMAT notification [MFC]", "DateTimePicker control [MFC]"]
 ms.assetid: 404f4ba9-cba7-4718-9faa-bc6b274a723f
+ms.topic: concept-article
 ---
 # Using Callback Fields in a Date and Time Picker Control
 
diff --git a/docs/mfc/using-canimatectrl.md b/docs/mfc/using-canimatectrl.md
index 7c02d4b52b..7630255873 100644
--- a/docs/mfc/using-canimatectrl.md
+++ b/docs/mfc/using-canimatectrl.md
@@ -4,6 +4,7 @@ title: "Using CAnimateCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["animation controls [MFC], CAnimateCtrl class", "controls [MFC], animation", "CAnimateCtrl class [MFC], about CAnimateCtrl class [MFC]"]
 ms.assetid: 696c0805-bef0-4e2e-a9e7-b37b9215b7f0
+ms.topic: concept-article
 ---
 # Using CAnimateCtrl
 
diff --git a/docs/mfc/using-ccomboboxex.md b/docs/mfc/using-ccomboboxex.md
index a0ccb2ebc2..a9c9fca4d1 100644
--- a/docs/mfc/using-ccomboboxex.md
+++ b/docs/mfc/using-ccomboboxex.md
@@ -4,6 +4,7 @@ title: "Using CComboBoxEx"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["combo boxes [MFC], extended", "extended combo boxes [MFC], about extended combo boxes", "combo boxes [MFC], CComboBoxEx class", "CComboBox class [MFC], extended"]
 ms.assetid: c23cbfe8-75d2-4f98-a753-c942416eda52
+ms.topic: concept-article
 ---
 # Using CComboBoxEx
 
diff --git a/docs/mfc/using-cdatetimectrl.md b/docs/mfc/using-cdatetimectrl.md
index 1dc32ef93b..2a67477916 100644
--- a/docs/mfc/using-cdatetimectrl.md
+++ b/docs/mfc/using-cdatetimectrl.md
@@ -4,6 +4,7 @@ title: "Using CDateTimeCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["DateTimePicker control [MFC], CDateTimeCtrl class"]
 ms.assetid: cb2a8720-43f1-4c33-a3a4-def9a1622e00
+ms.topic: concept-article
 ---
 # Using CDateTimeCtrl
 
diff --git a/docs/mfc/using-cheaderctrl.md b/docs/mfc/using-cheaderctrl.md
index f5d2df5c64..acc495d5aa 100644
--- a/docs/mfc/using-cheaderctrl.md
+++ b/docs/mfc/using-cheaderctrl.md
@@ -4,6 +4,7 @@ title: "Using CHeaderCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["header controls [MFC], using", "CHeaderCtrl class [MFC]"]
 ms.assetid: fb3e512b-9539-43c4-a7e7-3fafd6d0706e
+ms.topic: concept-article
 ---
 # Using CHeaderCtrl
 
diff --git a/docs/mfc/using-chotkeyctrl.md b/docs/mfc/using-chotkeyctrl.md
index 051b6ffdb9..2d7022a283 100644
--- a/docs/mfc/using-chotkeyctrl.md
+++ b/docs/mfc/using-chotkeyctrl.md
@@ -4,6 +4,7 @@ title: "Using CHotKeyCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["keys, hot and CHotKeyCtrl", "CHotKeyCtrl class [MFC], using", "hot key controls"]
 ms.assetid: 9b207117-d848-4224-8888-c3d197bb0c95
+ms.topic: concept-article
 ---
 # Using CHotKeyCtrl
 
diff --git a/docs/mfc/using-cimagelist.md b/docs/mfc/using-cimagelist.md
index 45fcf92726..64daaad06c 100644
--- a/docs/mfc/using-cimagelist.md
+++ b/docs/mfc/using-cimagelist.md
@@ -4,6 +4,7 @@ title: "Using CImageList"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["image list control", "CImageList class [MFC], using"]
 ms.assetid: 3d2a909e-d641-46b7-aada-81cab1a29b41
+ms.topic: concept-article
 ---
 # Using CImageList
 
diff --git a/docs/mfc/using-clistctrl.md b/docs/mfc/using-clistctrl.md
index ea7188aea4..9381c76199 100644
--- a/docs/mfc/using-clistctrl.md
+++ b/docs/mfc/using-clistctrl.md
@@ -4,6 +4,7 @@ title: "Using CListCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CListCtrl class [MFC], using"]
 ms.assetid: 20d6a5d6-8f07-4ddf-975f-ea2dfebcc835
+ms.topic: concept-article
 ---
 # Using CListCtrl
 
diff --git a/docs/mfc/using-cmonthcalctrl.md b/docs/mfc/using-cmonthcalctrl.md
index 77869ba574..270c33595c 100644
--- a/docs/mfc/using-cmonthcalctrl.md
+++ b/docs/mfc/using-cmonthcalctrl.md
@@ -4,6 +4,7 @@ title: "Using CMonthCalCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CMonthCalCtrl class [MFC], about CMonthCalCtrl class"]
 ms.assetid: 2be0e8c2-ed03-4853-aea1-4461eba18611
+ms.topic: concept-article
 ---
 # Using CMonthCalCtrl
 
diff --git a/docs/mfc/using-cobject.md b/docs/mfc/using-cobject.md
index af6529ea21..a528b36ec1 100644
--- a/docs/mfc/using-cobject.md
+++ b/docs/mfc/using-cobject.md
@@ -4,6 +4,7 @@ title: "Using CObject"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["examples [MFC], CObject", "root base class for MFC", "derived classes [MFC], from CObject", "MFC, base class", "CObject class [MFC]"]
 ms.assetid: d0cd19bb-2856-4b41-abbc-620fd64cb223
+ms.topic: concept-article
 ---
 # Using CObject
 
diff --git a/docs/mfc/using-common-controls-in-a-dialog-box.md b/docs/mfc/using-common-controls-in-a-dialog-box.md
index 6caadbbe11..d28c82e753 100644
--- a/docs/mfc/using-common-controls-in-a-dialog-box.md
+++ b/docs/mfc/using-common-controls-in-a-dialog-box.md
@@ -4,6 +4,7 @@ title: "Using Common Controls in a Dialog Box"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["common controls [MFC], in dialog boxes", "dialog box controls [MFC], common controls", "Windows common controls [MFC], in dialog boxes"]
 ms.assetid: 17713caf-09f8-484a-bf54-5f48bf09cce9
+ms.topic: how-to
 ---
 # Using Common Controls in a Dialog Box
 
diff --git a/docs/mfc/using-cprogressctrl.md b/docs/mfc/using-cprogressctrl.md
index 884b121ca0..07121a9f07 100644
--- a/docs/mfc/using-cprogressctrl.md
+++ b/docs/mfc/using-cprogressctrl.md
@@ -4,6 +4,7 @@ title: "Using CProgressCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["progress controls [MFC]", "CProgressCtrl class [MFC], using", "progress controls [MFC], CProgressCtrl", "progress controls [MFC], using"]
 ms.assetid: 61473270-196b-41ab-bf2b-467f46673539
+ms.topic: concept-article
 ---
 # Using CProgressCtrl
 
diff --git a/docs/mfc/using-crebarctrl.md b/docs/mfc/using-crebarctrl.md
index c77177533a..ce1e299588 100644
--- a/docs/mfc/using-crebarctrl.md
+++ b/docs/mfc/using-crebarctrl.md
@@ -4,6 +4,7 @@ title: "Using CReBarCtrl"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["child windows [MFC], rebar controls", "combo boxes [MFC], in rebar controls", "rebar controls"]
 ms.assetid: 2c0aeec2-ffc3-44b8-97b5-0f56e116a338
+ms.topic: concept-article
 ---
 # Using CReBarCtrl
 
diff --git a/docs/mfc/using-cricheditctrl.md b/docs/mfc/using-cricheditctrl.md
index 5d14b8c84b..1d96ea6310 100644
--- a/docs/mfc/using-cricheditctrl.md
+++ b/docs/mfc/using-cricheditctrl.md
@@ -4,6 +4,7 @@ title: "Using CRichEditCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["rich edit controls [MFC], using", "CRichEditCtrl class [MFC], using"]
 ms.assetid: e400c6ed-563e-4d4c-ab3b-a3f0aa20273b
+ms.topic: concept-article
 ---
 # Using CRichEditCtrl
 
diff --git a/docs/mfc/using-csliderctrl.md b/docs/mfc/using-csliderctrl.md
index 0b1b04c821..f4b9103214 100644
--- a/docs/mfc/using-csliderctrl.md
+++ b/docs/mfc/using-csliderctrl.md
@@ -4,6 +4,7 @@ title: "Using CSliderCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CSliderCtrl class [MFC], using", "slider controls [MFC], using"]
 ms.assetid: 242c7bcd-126e-4b9b-8f76-8082ad06fe73
+ms.topic: concept-article
 ---
 # Using CSliderCtrl
 
diff --git a/docs/mfc/using-cspinbuttonctrl.md b/docs/mfc/using-cspinbuttonctrl.md
index 7e1f5c444c..9a28599d04 100644
--- a/docs/mfc/using-cspinbuttonctrl.md
+++ b/docs/mfc/using-cspinbuttonctrl.md
@@ -4,6 +4,7 @@ title: "Using CSpinButtonCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["up-down controls [MFC], spin button control", "up-down controls", "spin button control", "CSpinButtonCtrl class [MFC], using"]
 ms.assetid: a91db36b-e11e-42ef-8e89-51915cc486d2
+ms.topic: concept-article
 ---
 # Using CSpinButtonCtrl
 
diff --git a/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md b/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md
index c332a42a3e..daf703d607 100644
--- a/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md
+++ b/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md
@@ -4,6 +4,7 @@ title: "Using CStatusBarCtrl to Create a CStatusBarCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["status bar controls [MFC], creating", "CStatusBarCtrl class [MFC], creating"]
 ms.assetid: 365c2b65-12de-49e6-9a2e-416c6ee10d60
+ms.topic: how-to
 ---
 # Using CStatusBarCtrl to Create a CStatusBarCtrl Object
 
diff --git a/docs/mfc/using-cstatusbarctrl.md b/docs/mfc/using-cstatusbarctrl.md
index b7805b4eb7..9cb57d6094 100644
--- a/docs/mfc/using-cstatusbarctrl.md
+++ b/docs/mfc/using-cstatusbarctrl.md
@@ -4,6 +4,7 @@ title: "Using CStatusBarCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CStatusBarCtrl class [MFC], using", "status bar controls [MFC], about status bar controls"]
 ms.assetid: 08b39f83-580d-439a-b93e-7ef9e2a5702a
+ms.topic: concept-article
 ---
 # Using CStatusBarCtrl
 
diff --git a/docs/mfc/using-ctabctrl.md b/docs/mfc/using-ctabctrl.md
index 75006f68eb..6d93b0163f 100644
--- a/docs/mfc/using-ctabctrl.md
+++ b/docs/mfc/using-ctabctrl.md
@@ -4,6 +4,7 @@ title: "Using CTabCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CTabCtrl class [MFC], using", "tab controls [MFC], using"]
 ms.assetid: 6bda6798-0085-4c09-a5ea-fe0e97af5c95
+ms.topic: concept-article
 ---
 # Using CTabCtrl
 
diff --git a/docs/mfc/using-ctoolbarctrl.md b/docs/mfc/using-ctoolbarctrl.md
index 13abfe7b9e..51e7fb244b 100644
--- a/docs/mfc/using-ctoolbarctrl.md
+++ b/docs/mfc/using-ctoolbarctrl.md
@@ -4,6 +4,7 @@ title: "Using CToolBarCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CToolBarCtrl class [MFC]", "toolbar controls [MFC], creating"]
 ms.assetid: 13cf3753-135b-4a3e-a850-ed30177fcf9d
+ms.topic: concept-article
 ---
 # Using CToolBarCtrl
 
diff --git a/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md b/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md
index 14c85737f8..8bb04ae807 100644
--- a/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md
+++ b/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md
@@ -4,6 +4,7 @@ title: "Using CToolTipCtrl to Create and Manipulate a CToolTipCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["tool tips [MFC], creating", "CToolTipCtrl class [MFC], using"]
 ms.assetid: 0a34583f-f66d-46a1-a239-31b80ea395ad
+ms.topic: how-to
 ---
 # Using CToolTipCtrl to Create and Manipulate a CToolTipCtrl Object
 
diff --git a/docs/mfc/using-ctooltipctrl.md b/docs/mfc/using-ctooltipctrl.md
index edcd85851e..88c9dd0e09 100644
--- a/docs/mfc/using-ctooltipctrl.md
+++ b/docs/mfc/using-ctooltipctrl.md
@@ -4,6 +4,7 @@ title: "Using CToolTipCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CToolTipCtrl class [MFC], creating tool tips", "CToolTipCtrl class"]
 ms.assetid: 8fc58a04-4792-4223-a092-d349d11344da
+ms.topic: concept-article
 ---
 # Using CToolTipCtrl
 
diff --git a/docs/mfc/using-ctreectrl.md b/docs/mfc/using-ctreectrl.md
index f7412fec52..18651d78c1 100644
--- a/docs/mfc/using-ctreectrl.md
+++ b/docs/mfc/using-ctreectrl.md
@@ -4,6 +4,7 @@ title: "Using CTreeCtrl"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CTreeCtrl class [MFC], about CTreeCtrl", "tree controls [MFC], using"]
 ms.assetid: 6a262f2c-3540-43e5-b03f-e4b6f9cb0325
+ms.topic: concept-article
 ---
 # Using CTreeCtrl
 
diff --git a/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md b/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md
index eae626975e..0137fffce3 100644
--- a/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md
+++ b/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md
@@ -4,6 +4,7 @@ title: "Using Custom Format Strings in a Date and Time Picker Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CDateTimeCtrl class [MFC], display styles", "DateTimePicker control [MFC], display styles", "DateTimePicker control [MFC]"]
 ms.assetid: 7d577f03-6ca0-4597-9093-50b78f304719
+ms.topic: concept-article
 ---
 # Using Custom Format Strings in a Date and Time Picker Control
 
diff --git a/docs/mfc/using-documents.md b/docs/mfc/using-documents.md
index aec24f4d75..73f97283a2 100644
--- a/docs/mfc/using-documents.md
+++ b/docs/mfc/using-documents.md
@@ -4,6 +4,7 @@ title: "Using Documents"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["documents [MFC], C++ applications", "data [MFC], reading", "documents [MFC]", "files [MFC], writing to", "data [MFC], documents", "files [MFC]", "views [MFC], C++ applications", "document/view architecture [MFC], documents", "reading data [MFC], documents and views", "printing [MFC], documents", "writing to files [MFC]"]
 ms.assetid: f390d6d8-d0e1-4497-9b6a-435f7ce0776c
+ms.topic: concept-article
 ---
 # Using Documents
 
diff --git a/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md b/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md
index 818fa7efcf..86403dd5c2 100644
--- a/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md
+++ b/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["TBN_DROPDOWN", "TBSTYLE_EX_DRAWDDARROWS"]
 helpviewer_keywords: ["CToolBarCtrl class [MFC], drop-down buttons", "toolbars [MFC], drop-down buttons", "drop-down buttons in toolbars", "TBSTYLE_EX_DRAWDDARROWS", "TBN_DROPDOWN notification [MFC]"]
 ms.assetid: b859f758-d2f6-40d9-9c26-0ff61993b9b2
+ms.topic: how-to
 ---
 # Using Drop-Down Buttons in a Toolbar Control
 
diff --git a/docs/mfc/using-frame-windows.md b/docs/mfc/using-frame-windows.md
index e6d18fe076..39440816e6 100644
--- a/docs/mfc/using-frame-windows.md
+++ b/docs/mfc/using-frame-windows.md
@@ -4,6 +4,7 @@ title: "Using Frame Windows"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["windows [MFC], frame windows", "frame windows [MFC], using", "MFC, frame windows"]
 ms.assetid: 4d773238-11f6-4ccf-8114-57310c5aaa2d
+ms.topic: concept-article
 ---
 # Using Frame Windows
 
diff --git a/docs/mfc/using-image-lists-in-a-toolbar-control.md b/docs/mfc/using-image-lists-in-a-toolbar-control.md
index efa816d995..5b280fa57e 100644
--- a/docs/mfc/using-image-lists-in-a-toolbar-control.md
+++ b/docs/mfc/using-image-lists-in-a-toolbar-control.md
@@ -4,6 +4,7 @@ title: "Using Image Lists in a Toolbar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["toolbar controls [MFC], image", "image lists [MFC], toolbar controls", "CToolBarCtrl class [MFC], image lists"]
 ms.assetid: ccbe8df4-4ed9-4b54-bb93-9a1dcb3b97eb
+ms.topic: concept-article
 ---
 # Using Image Lists in a Toolbar Control
 
diff --git a/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md b/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md
index 60f03d8ba4..4060970825 100644
--- a/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md
+++ b/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md
@@ -4,6 +4,7 @@ title: "Using Image Lists in an Extended Combo Box Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["image lists [MFC], combo boxes", "extended combo boxes [MFC], images", "images [MFC], combo box items"]
 ms.assetid: dfff25fe-af70-47a2-8032-3901d1e6842d
+ms.topic: how-to
 ---
 # Using Image Lists in an Extended Combo Box Control
 
diff --git a/docs/mfc/using-image-lists-with-header-controls.md b/docs/mfc/using-image-lists-with-header-controls.md
index 346cef44bd..830297f5a5 100644
--- a/docs/mfc/using-image-lists-with-header-controls.md
+++ b/docs/mfc/using-image-lists-with-header-controls.md
@@ -4,6 +4,7 @@ title: "Using Image Lists with Header Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["header controls [MFC], image lists", "CHeaderCtrl class [MFC], image lists", "image lists [MFC], header controls"]
 ms.assetid: d5e9b310-6278-406c-909c-eefa09549a47
+ms.topic: how-to
 ---
 # Using Image Lists with Header Controls
 
diff --git a/docs/mfc/using-property-sheets-in-your-application.md b/docs/mfc/using-property-sheets-in-your-application.md
index 618786b7ce..e3dc0d6e6b 100644
--- a/docs/mfc/using-property-sheets-in-your-application.md
+++ b/docs/mfc/using-property-sheets-in-your-application.md
@@ -4,6 +4,7 @@ title: "Using Property Sheets in Your Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["dialog templates [MFC], property sheets", "dialog resources", "property pages [MFC], property sheets", "DoModal method property sheets", "AddPage method [MFC]", "property sheets, about property sheets", "Create method [MFC], property sheets", "CPropertyPage class [MFC], styles"]
 ms.assetid: 240654d4-152b-4e3f-af7b-44234339206e
+ms.topic: how-to
 ---
 # Using Property Sheets in Your Application
 
diff --git a/docs/mfc/using-slider-controls.md b/docs/mfc/using-slider-controls.md
index ce6fe778aa..2c970e4c5b 100644
--- a/docs/mfc/using-slider-controls.md
+++ b/docs/mfc/using-slider-controls.md
@@ -4,6 +4,7 @@ title: "Using Slider Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CSliderCtrl class [MFC], using", "slider controls", "slider controls [MFC], using"]
 ms.assetid: 2b1a8ac8-2b17-41e1-aa24-83c1fd737049
+ms.topic: concept-article
 ---
 # Using Slider Controls
 
diff --git a/docs/mfc/using-the-carchive-output-and-input-operators.md b/docs/mfc/using-the-carchive-output-and-input-operators.md
index 3562deb0f9..533547cef5 100644
--- a/docs/mfc/using-the-carchive-output-and-input-operators.md
+++ b/docs/mfc/using-the-carchive-output-and-input-operators.md
@@ -4,6 +4,7 @@ title: "Using the CArchive << and >> Operators"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["objects [MFC], loading from previously stored values", "CArchive class [MFC], storing and loading objects", "CArchive class [MFC], operators"]
 ms.assetid: 56aef326-02dc-4992-8282-f0a4b78a064e
+ms.topic: how-to
 ---
 # Using the CArchive `<<` and `>>` Operators
 
diff --git a/docs/mfc/using-the-classes-to-write-applications-for-windows.md b/docs/mfc/using-the-classes-to-write-applications-for-windows.md
index 6b89b84fc1..bba61db9ff 100644
--- a/docs/mfc/using-the-classes-to-write-applications-for-windows.md
+++ b/docs/mfc/using-the-classes-to-write-applications-for-windows.md
@@ -4,6 +4,7 @@ title: "Using the Classes to Write Applications for Windows"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Windows applications [MFC], MFC application framework", "MFC, application development", "applications [OLE], MFC application framework", "MFC ActiveX controls [MFC], creating", "OLE applications [MFC], MFC application framework", "database applications [MFC], creating"]
 ms.assetid: 73f63470-857d-43dd-9a54-b38b7be0f1b7
+ms.topic: concept-article
 ---
 # Using the Classes to Write Applications for Windows
 
diff --git a/docs/mfc/using-the-dialog-editor-to-add-controls.md b/docs/mfc/using-the-dialog-editor-to-add-controls.md
index fa78c746bd..c5912c87f6 100644
--- a/docs/mfc/using-the-dialog-editor-to-add-controls.md
+++ b/docs/mfc/using-the-dialog-editor-to-add-controls.md
@@ -4,6 +4,7 @@ title: "Using the Dialog Editor to Add Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Windows common controls [MFC], adding", "dialog box controls [MFC], adding to dialog boxes", "controls [MFC], adding to dialog boxes", "Dialog editor, creating controls", "common controls [MFC], adding"]
 ms.assetid: d3f9f994-7e54-4656-a545-42c204557c36
+ms.topic: concept-article
 ---
 # Using the Dialog Editor to Add Controls
 
diff --git a/docs/mfc/using-the-mfc-source-files.md b/docs/mfc/using-the-mfc-source-files.md
index 77141ce95c..10c7f2d0fc 100644
--- a/docs/mfc/using-the-mfc-source-files.md
+++ b/docs/mfc/using-the-mfc-source-files.md
@@ -4,6 +4,7 @@ title: "Using the MFC source files"
 ms.date: "08/19/2019"
 helpviewer_keywords: ["public members", "source files", "MFC, source files", "MFC source files", "comments, MFC", "private member access", "protected member access", "source files, MFC"]
 ms.assetid: 3230e8fb-3b69-4ddf-9538-365ac7ea5e72
+ms.topic: concept-article
 ---
 # Using the MFC source files
 
diff --git a/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md b/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md
index f98699e4cd..2573a72f55 100644
--- a/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md
+++ b/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md
@@ -4,6 +4,7 @@ title: "Using Tooltips in a CStatusBarCtrl Object"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["tool tips [MFC], using in status bars", "status bars [MFC], tool tips", "CStatusBarCtrl class [MFC], tool tips"]
 ms.assetid: a77597a7-43ef-4b8f-87bc-a8ea1dc63dc3
+ms.topic: how-to
 ---
 # Using Tooltips in a CStatusBarCtrl Object
 
diff --git a/docs/mfc/using-tree-controls.md b/docs/mfc/using-tree-controls.md
index a0b87f8f55..9130eb9f03 100644
--- a/docs/mfc/using-tree-controls.md
+++ b/docs/mfc/using-tree-controls.md
@@ -4,6 +4,7 @@ title: "Using Tree Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CTreeCtrl class [MFC], using", "tree controls [MFC], about tree controls"]
 ms.assetid: 4e92941a-e477-4fb1-b1ce-4abeafbef1c1
+ms.topic: concept-article
 ---
 # Using Tree Controls
 
diff --git a/docs/mfc/using-views.md b/docs/mfc/using-views.md
index be0abb6f98..2a3ce75afc 100644
--- a/docs/mfc/using-views.md
+++ b/docs/mfc/using-views.md
@@ -4,6 +4,7 @@ title: "Using Views"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["interacting with users and role of view class [MFC]", "drawing [MFC], data", "rendering data", "view classes [MFC], role in managing user interaction", "CView class [MFC], view architecture", "MFC, views", "views [MFC], using", "painting data", "user input [MFC], interpreting through view class [MFC]", "view classes [MFC], role in displaying application data"]
 ms.assetid: dc3de6ad-5c64-4317-8f10-8bdcc38cdbd5
+ms.topic: concept-article
 ---
 # Using Views
 
diff --git a/docs/mfc/using-your-old-toolbars.md b/docs/mfc/using-your-old-toolbars.md
index 737b5f6d21..d1fe0d061b 100644
--- a/docs/mfc/using-your-old-toolbars.md
+++ b/docs/mfc/using-your-old-toolbars.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 f1_keywords: ["COldToolBar"]
 helpviewer_keywords: ["toolbars [MFC], backward compatibility", "COldToolBar class [MFC]"]
 ms.assetid: 3543257c-8547-43f0-a66a-ee641dc1cf89
+ms.topic: concept-article
 ---
 # Using Your Old Toolbars
 
diff --git a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md
index 962e3caae7..1174ea2988 100644
--- a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md
+++ b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md
@@ -1,18 +1,17 @@
 ---
-description: "Learn more about: Walkthrough: Adding a CTaskDialog to an Application"
+description: "Learn how to add a CTaskDialog to a MFC application"
 title: "Walkthrough: Adding a CTaskDialog to an Application"
-ms.date: "04/25/2019"
+ms.date: "2/7/2025"
 helpviewer_keywords: ["CTaskDialog, adding", "walkthroughs [MFC], dialogs"]
-ms.assetid: 3a62abb8-2d86-4bec-bdb8-5784d5f9a9f8
 ---
-# Walkthrough: Adding a CTaskDialog to an Application
+# Walkthrough: Adding a CTaskDialog to an application
 
-This walkthrough introduces the [CTaskDialog Class](../mfc/reference/ctaskdialog-class.md) and shows you how to add one to your application.
+This walkthrough introduces the [`CTaskDialog` class](../mfc/reference/ctaskdialog-class.md) and shows how to add it to your application.
 
-The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves the original message box and adds functionality. The Windows message box is still supported in Visual Studio.
+The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves on the original message box and adds functionality. The Windows message box is still supported in Visual Studio.
 
 > [!NOTE]
-> Versions of Windows earlier than Windows Vista do not support the `CTaskDialog`. You must program an alternative dialog box option if you want to show a message to a user who runs your application on an earlier version of Windows. You can use the static method [CTaskDialog::IsSupported](../mfc/reference/ctaskdialog-class.md#issupported) to determine at run time whether a user's computer can display a `CTaskDialog`. In addition, the `CTaskDialog` is only available when your application is built with the Unicode library.
+> Versions of Windows earlier than Windows Vista don't support the `CTaskDialog`. You must program an alternative dialog box option if you want to show a message to a user who runs your application on an earlier version of Windows. You can use the static method [CTaskDialog::IsSupported](../mfc/reference/ctaskdialog-class.md#issupported) to determine at run time whether a user's computer can display a `CTaskDialog`. In addition, the `CTaskDialog` is only available when your application is built with the Unicode library.
 
 The `CTaskDialog` supports several optional elements to gather and display information. For example, a `CTaskDialog` can display command links, customized buttons, customized icons, and a footer. The `CTaskDialog` also has several methods that enable you to query the state of the task dialog box to determine what optional elements the user selected.
 
@@ -21,37 +20,30 @@ The `CTaskDialog` supports several optional elements to gather and display infor
 You need the following components to complete this walkthrough:
 
 - Visual Studio 2010 or later
-
 - Windows Vista or later
 
-## Replacing a Windows Message Box with a CTaskDialog
-
-The following procedure demonstrates the most basic use of the `CTaskDialog`, which is to replace the Windows message box. This example also changes the icon associated with the task dialog box. Changing the icon makes the `CTaskDialog` appear same to the Windows message box.
-
-### To Replace a Windows Message Box with a CTaskDialog
+## Replace the Windows message box with a CTaskDialog
 
-1. Use the **MFC Application Wizard** to create an MFC application with all the default settings. See [Walkthrough: Using the New MFC Shell Controls](walkthrough-using-the-new-mfc-shell-controls.md) for instructions on how to open the wizard for your version of Visual Studio.
+The following demonstrates the most basic use of the `CTaskDialog`, which is to replace the Windows message box. This example also changes the icon associated with the task dialog box. Changing the icon makes the `CTaskDialog` appear similar to the Windows message box.
 
+1. Use the **MFC Application Wizard** to create a Microsoft Foundation Classes (MFC) application with all the default settings. See [Walkthrough: Using the New MFC Shell Controls](walkthrough-using-the-new-mfc-shell-controls.md) for instructions on how to open the wizard for your version of Visual Studio.
 1. Call it *MyProject*.
-
-1. Use the **Solution Explorer** to open the file MyProject.cpp.
-
+1. Use the **Solution Explorer** to open `MyProject.cpp`.
 1. Add `#include "afxtaskdialog.h"` after the list of includes.
-
 1. Find the method `CMyProjectApp::InitInstance`. Insert the following lines of code before the `return TRUE;` statement. This code creates the strings that we use in either the Windows message box or in the `CTaskDialog`.
 
     ```cpp
     CString message("My message to the user");
     CString dialogTitle("My Task Dialog title");
     CString emptyString;
-    ```
-
-1. Add the following code after the code from step 4. This code guarantees that the user's computer supports the `CTaskDialog`. If the dialog isn't supported, the application displays a Windows message box instead.
 
-    ```cpp
+    // Check whether the user's computer supports `CTaskDialog`.
+    // If not, display a Windows message box instead.
     if (CTaskDialog::IsSupported())
     {
-
+        CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
+        taskDialog.SetMainIcon(TD_WARNING_ICON); // Set the icon to be the same as the Windows message box
+        taskDialog.DoModal();
     }
     else
     {
@@ -59,45 +51,18 @@ The following procedure demonstrates the most basic use of the `CTaskDialog`, wh
     }
     ```
 
-1. Insert the following code between the brackets after the **`if`** statement from step 5. This code creates the `CTaskDialog`.
-
-    ```cpp
-    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
-    ```
-
-1. On the next line, add the following code. This code sets the warning icon.
-
-    ```cpp
-    taskDialog.SetMainIcon(TD_WARNING_ICON);
-    ```
-
-1. On the next line, add the following code. This code displays the task dialog box.
-
-    ```cpp
-    taskDialog.DoModal();
-    ```
-
-You can avoid step 7 if you don't want the `CTaskDialog` to display the same icon as the Windows message box. If you avoid that step, the `CTaskDialog` has no icon when the application displays it.
-
 Compile and run the application. The application displays the task dialog box after it starts.
 
-## Adding Functionality to the CTaskDialog
-
-The following procedure shows you how to add functionality to the `CTaskDialog` that you created in the previous procedure. The example code shows you how to execute specific instructions based on the user's selections.
-
-### To Add Functionality to the CTaskDialog
+## Add functionality to the CTaskDialog
 
-1. Navigate to the **Resource View**. If you can't see the **Resource View**, you can open it from the **View** menu.
+The following shows you how to add functionality to the `CTaskDialog` that you created in the previous procedure. The example code shows you how to execute specific instructions based on the user's selections.
 
-1. Expand the **Resource View** until you can select the **String Table** folder. Expand it and double-click the **String Table** entry.
-
-1. Scroll to the bottom of the string table and add a new entry. Change the ID to `TEMP_LINE1`. Set the caption to **Command Line 1**.
-
-1. Add another new entry. Change the ID to `TEMP_LINE2`. Set the caption to **Command Line 2**.
-
-1. Navigate back to MyProject.cpp.
-
-1. After `CString emptyString;`, add the following code:
+1. Navigate to the **Resource View** via **View** > **Other Windows** > **Resource View**.
+1. Expand the **Resource View** to the **String Table** folder. Expand it and double-click **String Table**.
+1. Scroll to the bottom of the string table and add a new entry. Change the ID to `TEMP_LINE1`. Set the caption to `Command Line 1`.
+1. Add another new entry. Change the ID to `TEMP_LINE2`. Set the caption to `Command Line 2`.
+1. Navigate back to `MyProject.cpp`.
+1. In the `CMyProjectApp::InitInstance()` function, after `CString emptyString;` add the following code:
 
     ```cpp
     CString expandedLabel("Hide extra information");
@@ -109,67 +74,52 @@ The following procedure shows you how to add functionality to the `CTaskDialog`
 
     ```cpp
     taskDialog.SetMainInstruction(L"Warning");
-    taskDialog.SetCommonButtons(
-        TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);
+    taskDialog.SetCommonButtons(TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON);
     taskDialog.LoadCommandControls(TEMP_LINE1, TEMP_LINE2);
-    taskDialog.SetExpansionArea(
-        expansionInfo, collapsedLabel, expandedLabel);
+    taskDialog.SetExpansionArea(expansionInfo, collapsedLabel, expandedLabel);
     taskDialog.SetFooterText(L"This is a small footnote to the user");
     taskDialog.SetVerificationCheckboxText(L"Remember your selection");
-    ```
-
-1. Add the following line of code that displays the task dialog box to the user and retrieves the user's selection:
-
-    ```cpp
     INT_PTR result = taskDialog.DoModal();
-    ```
-
-1. Insert the following code after the call to `taskDialog.DoModal()`. This section of code processes the user's input:
 
-    ```cpp
     if (taskDialog.GetVerificationCheckboxState())
     {
-        // PROCESS IF the user selects the verification checkbox
+        // Your code if the user selects the verification checkbox
     }
 
     switch (result)
     {
-    case TEMP_LINE1:
-        // PROCESS IF the first command line
-        break;
-    case TEMP_LINE2:
-        // PROCESS IF the second command line
-        break;
-    case IDYES:
-        // PROCESS IF the user clicks yes
-        break;
-    case IDNO:
-        // PROCESS IF the user clicks no
-        break;
-    case IDCANCEL:
-        // PROCESS IF the user clicks cancel
-        break;
-    default:
-        // This case should not be hit because closing
-        // the dialog box results in IDCANCEL
-        break;
+        case TEMP_LINE1:
+            // PROCESS IF the first command line
+            break;
+        case TEMP_LINE2:
+            // PROCESS IF the second command line
+            break;
+        case IDYES:
+            // PROCESS IF the user clicks yes
+            break;
+        case IDNO:
+            // PROCESS IF the user clicks no
+            break;
+        case IDCANCEL:
+            // PROCESS IF the user clicks cancel
+            break;
+        default:
+            // This case should not be hit because closing
+            // the dialog box results in IDCANCEL
+            break;
     }
     ```
 
-In the code in step 9, replace the comments that start with `PROCESS IF` with the code that you want to execute under the specified conditions.
-
 Compile and run the application. The application displays the task dialog box that uses the new controls and additional information.
 
 ## Displaying a CTaskDialog Without Creating a CTaskDialog Object
 
-The following procedure shows you how to display a `CTaskDialog` without first creating a `CTaskDialog` object. This example continues the previous procedures.
+The following shows you how to display a `CTaskDialog` without first creating a `CTaskDialog` object. This example continues the previous procedures.
 
 ### To Display a CTaskDialog Without Creating a CTaskDialog Object
 
-1. Open the MyProject.cpp file if it isn't already open.
-
-1. Navigate to the closing bracket for the `if (CTaskDialog::IsSupported())` statement.
-
+1. Open the `MyProject.cpp` file.
+1. In the `CMyProjectApp::InitInstance()` function, navigate to the closing bracket for the `if (CTaskDialog::IsSupported())` statement.
 1. Insert the following code immediately before the closing bracket of the **`if`** statement (before the **`else`** block):
 
     ```cpp
@@ -180,12 +130,12 @@ The following procedure shows you how to display a `CTaskDialog` without first c
         TEMP_LINE2);
     ```
 
-Compile and run the application. The application displays two task dialog boxes. The first dialog box is from the **To Add Functionality to the CTaskDialog** procedure; the second dialog box is from the last procedure.
+Compile and run the application. The application displays two task dialog boxes. The first dialog box is from the **To Add Functionality to the CTaskDialog** procedure; the second dialog box is from the previous procedure.
 
 These examples don't demonstrate all the available options for a `CTaskDialog`, but should help you get started. See [CTaskDialog Class](../mfc/reference/ctaskdialog-class.md) for a full description of the class.
 
 ## See also
 
-[Dialog Boxes](../mfc/dialog-boxes.md)<br/>
-[CTaskDialog Class](../mfc/reference/ctaskdialog-class.md)<br/>
+[Dialog Boxes](../mfc/dialog-boxes.md)\
+[CTaskDialog Class](../mfc/reference/ctaskdialog-class.md)\
 [CTaskDialog::CTaskDialog](../mfc/reference/ctaskdialog-class.md#ctaskdialog)
diff --git a/docs/mfc/walkthrough-putting-controls-on-toolbars.md b/docs/mfc/walkthrough-putting-controls-on-toolbars.md
index ca7b06348c..2d3962ab8c 100644
--- a/docs/mfc/walkthrough-putting-controls-on-toolbars.md
+++ b/docs/mfc/walkthrough-putting-controls-on-toolbars.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: Walkthrough: Putting Controls On Toolbars"
 title: "Walkthrough: Putting Controls On Toolbars"
-ms.date: "04/25/2019"
+description: "Learn more about: Walkthrough: Putting Controls On Toolbars"
+ms.date: 04/25/2019
 helpviewer_keywords: ["Customize dialog box, adding controls", "toolbars [MFC], adding controls"]
-ms.assetid: 8fc94bdf-0da7-45d9-8bc4-52b7b1edf205
 ---
 # Walkthrough: Putting Controls On Toolbars
 
-This article describes how to add a toolbar button that contains a Windows control to a toolbar. In MFC, a toolbar button must be a [CMFCToolBarButton Class](../mfc/reference/cmfctoolbarbutton-class.md)-derived class, for example [CMFCToolBarComboBoxButton Class](../mfc/reference/cmfctoolbarcomboboxbutton-class.md), [CMFCToolBarEditBoxButton Class](../mfc/reference/cmfctoolbareditboxbutton-class.md), [CMFCDropDownToolbarButton Class](../mfc/reference/cmfcdropdowntoolbarbutton-class.md), or [CMFCToolBarMenuButton Class](../mfc/reference/cmfctoolbarmenubutton-class.md).
+This article describes how to add a toolbar button that contains a Windows control to a toolbar. In MFC, a toolbar button must be a [`CMFCToolBarButton` Class](reference/cmfctoolbarbutton-class.md)-derived class, for example [`CMFCToolBarComboBoxButton` Class](reference/cmfctoolbarcomboboxbutton-class.md), [`CMFCToolBarEditBoxButton` Class](reference/cmfctoolbareditboxbutton-class.md), [`CMFCDropDownToolbarButton` Class](reference/cmfcdropdowntoolbarbutton-class.md), or [`CMFCToolBarMenuButton` Class](reference/cmfctoolbarmenubutton-class.md).
 
 ## Adding Controls to Toolbars
 
@@ -21,7 +20,7 @@ To add a control to a toolbar, follow these steps:
 
    1. Construct the button control by using a `CMFCToolbarButton`-derived class.
 
-   1. Replace the dummy button with the new control by using [CMFCToolBar::ReplaceButton](../mfc/reference/cmfctoolbar-class.md#replacebutton). You can construct the button object on the stack, because `ReplaceButton` copies the button object and maintains the copy.
+   1. Replace the dummy button with the new control by using [`CMFCToolBar::ReplaceButton`](reference/cmfctoolbar-class.md#replacebutton). You can construct the button object on the stack, because `ReplaceButton` copies the button object and maintains the copy.
 
 > [!NOTE]
 > If you enabled customization in your application, you may have to reset the toolbar by using the **Reset** button on the **Toolbars** tab of the **Customize** dialog box to see the updated control in your application after recompiling. The toolbar state is saved in the Windows registry, and the registry information is loaded and applied after the `ReplaceButton` method is executed during application startup.
@@ -30,11 +29,11 @@ To add a control to a toolbar, follow these steps:
 
 The **Commands** tab of the **Customize** dialog box contains a list of commands that are available in the application. By default, the **Customize** dialog box processes the application menus and builds a list of standard toolbar buttons in each menu category. To keep the extended functionality that the toolbar controls provide, you must replace the standard toolbar button with the custom control in the **Customize** dialog box.
 
-When you enable customization, you create the **Customize** dialog box in the customization handler `OnViewCustomize` by using the [CMFCToolBarsCustomizeDialog Class](../mfc/reference/cmfctoolbarscustomizedialog-class.md) class. Before you display the **Customize** dialog box by calling [CMFCToolBarsCustomizeDialog::Create](../mfc/reference/cmfctoolbarscustomizedialog-class.md#create), call [CMFCToolBarsCustomizeDialog::ReplaceButton](../mfc/reference/cmfctoolbarscustomizedialog-class.md#replacebutton) to replace the standard button with the new control.
+When you enable customization, you create the **Customize** dialog box in the customization handler `OnViewCustomize` by using the [`CMFCToolBarsCustomizeDialog` Class](reference/cmfctoolbarscustomizedialog-class.md) class. Before you display the **Customize** dialog box by calling [`CMFCToolBarsCustomizeDialog::Create`](reference/cmfctoolbarscustomizedialog-class.md#create), call [`CMFCToolBarsCustomizeDialog::ReplaceButton`](reference/cmfctoolbarscustomizedialog-class.md#replacebutton) to replace the standard button with the new control.
 
 ## Example: Creating a Find Combo Box
 
-This section describes how to create a **Find** combo box control that appears on a toolbar and contains recent-used search strings. The user can type a string in the control and then press the enter key to search a document, or press the escape key to return the focus to the main frame. This example assumes that the document is displayed in a [CEditView Class](../mfc/reference/ceditview-class.md)-derived view.
+This section describes how to create a **Find** combo box control that appears on a toolbar and contains recent-used search strings. The user can type a string in the control and then press the enter key to search a document, or press the escape key to return the focus to the main frame. This example assumes that the document is displayed in a [`CEditView` Class](reference/ceditview-class.md)-derived view.
 
 ### Creating the Find Control
 
@@ -46,32 +45,32 @@ First, create the **Find** combo box control:
 
    1. Create a new menu item with the `ID_EDIT_FIND` command ID.
 
-   1. Add a new string "Find the text\nFind" to the string table and assign it an `ID_EDIT_FIND_COMBO` command ID. This ID will be used as the command ID of the **Find** combo box button.
+   1. Add a new string `"Find the text\nFind"` to the string table and assign it an `ID_EDIT_FIND_COMBO` command ID. This ID will be used as the command ID of the **Find** combo box button.
 
         > [!NOTE]
-        > Because `ID_EDIT_FIND` is a standard command that is processed by `CEditView`, you are not required to implement a special handler for this command.  However, you must implement a handler for the new command `ID_EDIT_FIND_COMBO`.
+        > Because `ID_EDIT_FIND` is a standard command that is processed by `CEditView`, you are not required to implement a special handler for this command. However, you must implement a handler for the new command `ID_EDIT_FIND_COMBO`.
 
-1. Create a new class, `CFindComboBox`, derived from [CComboBox Class](../mfc/reference/ccombobox-class.md).
+1. Create a new class, `CFindComboBox`, derived from [`CComboBox` Class](reference/ccombobox-class.md).
 
-1. In the `CFindComboBox` class, override the `PreTranslateMessage` virtual method. This method will enable the combo box to process the [WM_KEYDOWN](/windows/win32/inputdev/wm-keydown) message. If the user hits the escape key (`VK_ESCAPE`), return the focus to the main frame window. If the user hits the Enter key (`VK_ENTER`), post to the main frame window a `WM_COMMAND` message that contains the `ID_EDIT_FIND_COMBO` command ID.
+1. In the `CFindComboBox` class, override the `PreTranslateMessage` virtual method. This method will enable the combo box to process the [`WM_KEYDOWN`](/windows/win32/inputdev/wm-keydown) message. If the user hits the escape key (`VK_ESCAPE`), return the focus to the main frame window. If the user hits the Enter key (`VK_ENTER`), post to the main frame window a `WM_COMMAND` message that contains the `ID_EDIT_FIND_COMBO` command ID.
 
-1. Create a class for the **Find** combo box button, derived from [CMFCToolBarComboBoxButton Class](../mfc/reference/cmfctoolbarcomboboxbutton-class.md). In this example, it's named `CFindComboButton`.
+1. Create a class for the **Find** combo box button, derived from [`CMFCToolBarComboBoxButton` Class](reference/cmfctoolbarcomboboxbutton-class.md). In this example, it's named `CFindComboButton`.
 
 1. The constructor of `CMFCToolbarComboBoxButton` takes three parameters: the command ID of the button, the button image index, and the style of the combo box. Set these parameters as follows:
 
    1. Pass the `ID_EDIT_FIND_COMBO` as the command ID.
 
-   1. Use [CCommandManager::GetCmdImage](reference/internal-classes.md) with `ID_EDIT_FIND` to get the image index.
+   1. Use [`CCommandManager::GetCmdImage`](reference/internal-classes.md) with `ID_EDIT_FIND` to get the image index.
 
-   1. For a list of available combo box styles, see [Combo-Box Styles](../mfc/reference/styles-used-by-mfc.md#combo-box-styles).
+   1. For a list of available combo box styles, see [Combo-Box Styles](reference/styles-used-by-mfc.md#combo-box-styles).
 
 1. In the `CFindComboButton` class, override the `CMFCToolbarComboBoxButton::CreateCombo` method. Here you should create the `CFindComboButton` object and return a pointer to it.
 
-1. Use the [IMPLEMENT_SERIAL](../mfc/reference/run-time-object-model-services.md#implement_serial) macro to make the combo button persistent. The workspace manager automatically loads and saves the button's state in the Windows registry.
+1. Use the [`IMPLEMENT_SERIAL`](reference/run-time-object-model-services.md#implement_serial) macro to make the combo button persistent. The workspace manager automatically loads and saves the button's state in the Windows registry.
 
-1. Implement the `ID_EDIT_FIND_COMBO` handler in your document view. Use [CMFCToolBar::GetCommandButtons](../mfc/reference/cmfctoolbar-class.md#getcommandbuttons) with `ID_EDIT_FIND_COMBO` to retrieve all **Find** combo box buttons. There can be several copies of a button with the same command ID because of customization.
+1. Implement the `ID_EDIT_FIND_COMBO` handler in your document view. Use [`CMFCToolBar::GetCommandButtons`](reference/cmfctoolbar-class.md#getcommandbuttons) with `ID_EDIT_FIND_COMBO` to retrieve all **Find** combo box buttons. There can be several copies of a button with the same command ID because of customization.
 
-1. In the `ID_EDIT_FIND` message handler `OnFind`, use [CMFCToolBar::IsLastCommandFromButton](../mfc/reference/cmfctoolbar-class.md#islastcommandfrombutton) to determine whether the find command was sent from the **Find** combo box button. If so, find the text and add the search string to the combo box.
+1. In the `ID_EDIT_FIND` message handler `OnFind`, use [`CMFCToolBar::IsLastCommandFromButton`](reference/cmfctoolbar-class.md#islastcommandfrombutton) to determine whether the find command was sent from the **Find** combo box button. If so, find the text and add the search string to the combo box.
 
 ### Adding the Find Control to the Main Toolbar
 
@@ -82,20 +81,20 @@ To add the combo box button to the toolbar, follow these steps:
     > [!NOTE]
     > The framework sends this message to the main frame window when a toolbar is initialized during application startup, or when a toolbar is reset during customization. In either case, you must replace the standard toolbar button with the custom **Find** combo box button.
 
-1. In the `AFX_WM_RESETTOOLBAR` handler, examine the toolbar ID, that is, the *WPARAM* of the AFX_WM_RESETTOOLBAR message. If the toolbar ID is equal to that of the toolbar that contains the **Find** combo box button, call [CMFCToolBar::ReplaceButton](../mfc/reference/cmfctoolbar-class.md#replacebutton) to replace the **Find** button (that is, the button with the command ID `ID_EDIT_FIND)` with a `CFindComboButton` object.
+1. In the `AFX_WM_RESETTOOLBAR` handler, examine the toolbar ID, that is, the *`WPARAM`* of the `AFX_WM_RESETTOOLBAR` message. If the toolbar ID is equal to that of the toolbar that contains the **Find** combo box button, call [`CMFCToolBar::ReplaceButton`](reference/cmfctoolbar-class.md#replacebutton) to replace the **Find** button (that is, the button with the command ID `ID_EDIT_FIND`) with a `CFindComboButton` object.
 
     > [!NOTE]
     > You can construct a `CFindComboBox` object on the stack, because `ReplaceButton` copies the button object and maintains the copy.
 
 ### Adding the Find Control to the Customize Dialog Box
 
-In the customization handler `OnViewCustomize`, call [CMFCToolBarsCustomizeDialog::ReplaceButton](../mfc/reference/cmfctoolbarscustomizedialog-class.md#replacebutton) to replace the **Find** button (that is, the button with the command ID `ID_EDIT_FIND`) with a `CFindComboButton` object.
+In the customization handler `OnViewCustomize`, call [`CMFCToolBarsCustomizeDialog::ReplaceButton`](reference/cmfctoolbarscustomizedialog-class.md#replacebutton) to replace the **Find** button (that is, the button with the command ID `ID_EDIT_FIND`) with a `CFindComboButton` object.
 
 ## See also
 
-[Hierarchy Chart](../mfc/hierarchy-chart.md)<br/>
-[Classes](../mfc/reference/mfc-classes.md)<br/>
-[CMFCToolBar Class](../mfc/reference/cmfctoolbar-class.md)<br/>
-[CMFCToolBarButton Class](../mfc/reference/cmfctoolbarbutton-class.md)<br/>
-[CMFCToolBarComboBoxButton Class](../mfc/reference/cmfctoolbarcomboboxbutton-class.md)<br/>
-[CMFCToolBarsCustomizeDialog Class](../mfc/reference/cmfctoolbarscustomizedialog-class.md)
+[Hierarchy Chart](hierarchy-chart.md)\
+[Classes](reference/mfc-classes.md)\
+[`CMFCToolBar` Class](reference/cmfctoolbar-class.md)\
+[`CMFCToolBarButton` Class](reference/cmfctoolbarbutton-class.md)\
+[`CMFCToolBarComboBoxButton` Class](reference/cmfctoolbarcomboboxbutton-class.md)\
+[`CMFCToolBarsCustomizeDialog` Class](reference/cmfctoolbarscustomizedialog-class.md)
diff --git a/docs/mfc/what-is-a-carchive-object.md b/docs/mfc/what-is-a-carchive-object.md
index 299602c9df..69b0bdb75a 100644
--- a/docs/mfc/what-is-a-carchive-object.md
+++ b/docs/mfc/what-is-a-carchive-object.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 helpviewer_keywords: ["archive objects [MFC]", "archives [MFC], for serialization", "buffers, serializable objects", "CArchive class [MFC], about CArchive class [MFC]", "buffering, serializable objects"]
 ms.assetid: 843f1825-288d-4d89-a1fa-70e1f92d9b8b
 ms.custom: intro-overview
+ms.topic: concept-article
 ---
 # What Is a CArchive Object
 
diff --git a/docs/mfc/windows-sockets-using-class-casyncsocket.md b/docs/mfc/windows-sockets-using-class-casyncsocket.md
index b0a5671636..992332b73a 100644
--- a/docs/mfc/windows-sockets-using-class-casyncsocket.md
+++ b/docs/mfc/windows-sockets-using-class-casyncsocket.md
@@ -1,16 +1,16 @@
 ---
-description: "Learn more about: Windows Sockets: Using Class CAsyncSocket"
 title: "Windows Sockets: Using Class CAsyncSocket"
+description: "Learn more about: Windows Sockets: Using Class CAsyncSocket"
 ms.date: "6/8/2021"
 helpviewer_keywords: ["CAsyncSocket class [MFC], programming model", "Windows Sockets [MFC], asynchronous", "sockets [MFC], converting between Unicode and MBCS strings", "SOCKET handle", "sockets [MFC], asynchronous operation", "Windows Sockets [MFC], converting Unicode and MBCS strings"]
 ---
 # Windows Sockets: Using Class `CAsyncSocket`
 
-This article explains how to use class [`CAsyncSocket`](../mfc/reference/casyncsocket-class.md). This class encapsulates the Windows Sockets API at a very low level. `CAsyncSocket` is for use by programmers who know network communications in detail but want the convenience of callbacks for notification of network events. Based on this assumption, this article provides only basic instruction. You should probably consider using `CAsyncSocket` if you want Windows Sockets' ease of dealing with multiple network protocols in an MFC application but don't want to sacrifice flexibility. You might also feel that you can get better efficiency by programming the communications more directly yourself than you could using the more general alternative model of class `CSocket`.
+This article explains how to use class [`CAsyncSocket`](reference/casyncsocket-class.md). This class encapsulates the Windows Sockets API at a very low level. `CAsyncSocket` is for use by programmers who know network communications in detail but want the convenience of callbacks for notification of network events. Based on this assumption, this article provides only basic instruction. You should probably consider using `CAsyncSocket` if you want Windows Sockets' ease of dealing with multiple network protocols in an MFC application but don't want to sacrifice flexibility. You might also feel that you can get better efficiency by programming the communications more directly yourself than you could using the more general alternative model of class `CSocket`.
 
 `CAsyncSocket` is documented in the *MFC Reference*. Visual C++ also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual C++ doesn't supply a sample application for `CAsyncSocket`.
 
-If you aren't highly knowledgeable about network communications and want a simple solution, use class [`CSocket`](../mfc/reference/csocket-class.md) with a `CArchive` object. See [Windows Sockets: Using Sockets with Archives](../mfc/windows-sockets-using-sockets-with-archives.md) for more information.
+If you aren't highly knowledgeable about network communications and want a simple solution, use class [`CSocket`](reference/csocket-class.md) with a `CArchive` object. See [Windows Sockets: Using Sockets with Archives](windows-sockets-using-sockets-with-archives.md) for more information.
 
 This article covers:
 
@@ -22,19 +22,19 @@ This article covers:
 
 #### To use `CAsyncSocket`
 
-1. Construct a [`CAsyncSocket`](../mfc/reference/casyncsocket-class.md) object and use the object to create the underlying **`SOCKET`** handle.
+1. Construct a [`CAsyncSocket`](reference/casyncsocket-class.md) object and use the object to create the underlying **`SOCKET`** handle.
 
    Creation of a socket follows the MFC pattern of two-stage construction.
 
    For example:
 
-   [!code-cpp[NVC_MFCSimpleSocket#3](../mfc/codesnippet/cpp/windows-sockets-using-class-casyncsocket_1.cpp)]
+   [!code-cpp[NVC_MFCSimpleSocket#3](codesnippet/cpp/windows-sockets-using-class-casyncsocket_1.cpp)]
 
      -or-
 
-   [!code-cpp[NVC_MFCSimpleSocket#4](../mfc/codesnippet/cpp/windows-sockets-using-class-casyncsocket_2.cpp)]
+   [!code-cpp[NVC_MFCSimpleSocket#4](codesnippet/cpp/windows-sockets-using-class-casyncsocket_2.cpp)]
 
-   The first constructor above creates a `CAsyncSocket` object on the stack. The second constructor creates a `CAsyncSocket` on the heap. The first [`Create`](../mfc/reference/casyncsocket-class.md#create) call above uses the default parameters to create a stream socket. The second `Create` call creates a datagram socket with a specified port and address. (You can use either `Create` version with either construction method.)
+   The first constructor above creates a `CAsyncSocket` object on the stack. The second constructor creates a `CAsyncSocket` on the heap. The first [`Create`](reference/casyncsocket-class.md#create) call above uses the default parameters to create a stream socket. The second `Create` call creates a datagram socket with a specified port and address. (You can use either `Create` version with either construction method.)
 
    The parameters to `Create` are:
 
@@ -48,34 +48,34 @@ This article covers:
 
       This is your Internet Protocol (IP) address on the network. You'll probably always rely on the default value for this parameter.
 
-   The terms "port" and "socket address" are explained in [Windows Sockets: Ports and Socket Addresses](../mfc/windows-sockets-ports-and-socket-addresses.md).
+   The terms "port" and "socket address" are explained in [Windows Sockets: Ports and Socket Addresses](windows-sockets-ports-and-socket-addresses.md).
 
-1. If the socket is a client, connect the socket object to a server socket, using [`CAsyncSocket::Connect`](../mfc/reference/casyncsocket-class.md#connect).
+1. If the socket is a client, connect the socket object to a server socket, using [`CAsyncSocket::Connect`](reference/casyncsocket-class.md#connect).
 
      -or-
 
-   If the socket is a server, set the socket to begin listening (with [`CAsyncSocket::Listen`](../mfc/reference/casyncsocket-class.md#listen)) for connect attempts from a client. Upon receiving a connection request, accept it with [`CAsyncSocket::Accept`](../mfc/reference/casyncsocket-class.md#accept).
+   If the socket is a server, set the socket to begin listening (with [`CAsyncSocket::Listen`](reference/casyncsocket-class.md#listen)) for connect attempts from a client. Upon receiving a connection request, accept it with [`CAsyncSocket::Accept`](reference/casyncsocket-class.md#accept).
 
    After accepting a connection, you can do tasks like validating passwords.
 
     > [!NOTE]
-    >  The `Accept` member function takes a reference to a new, empty `CSocket` object as its parameter. You must construct this object before you call `Accept`. If this socket object goes out of scope, the connection closes. Don't call `Create` for this new socket object. For an example, see the article [Windows Sockets: Sequence of Operations](../mfc/windows-sockets-sequence-of-operations.md).
+    >  The `Accept` member function takes a reference to a new, empty `CSocket` object as its parameter. You must construct this object before you call `Accept`. If this socket object goes out of scope, the connection closes. Don't call `Create` for this new socket object. For an example, see the article [Windows Sockets: Sequence of Operations](windows-sockets-sequence-of-operations.md).
 
 1. Carry out communications with other sockets by calling the `CAsyncSocket` object's member functions that encapsulate the Windows Sockets API functions.
 
-   See the Windows Sockets specification and class [`CAsyncSocket`](../mfc/reference/casyncsocket-class.md) in the *MFC Reference*.
+   See the Windows Sockets specification and class [`CAsyncSocket`](reference/casyncsocket-class.md) in the *MFC Reference*.
 
 1. Destroy the `CAsyncSocket` object.
 
    If you created the socket object on the stack, its destructor is called when the containing function goes out of scope. If you created the socket object on the heap, using the **`new`** operator, you're responsible for using the **`delete`** operator to destroy the object.
 
-   The destructor calls the object's [`Close`](../mfc/reference/casyncsocket-class.md#close) member function before destroying the object.
+   The destructor calls the object's [`Close`](reference/casyncsocket-class.md#close) member function before destroying the object.
 
-For an example of this sequence in code (actually for a `CSocket` object), see [Windows Sockets: Sequence of Operations](../mfc/windows-sockets-sequence-of-operations.md).
+For an example of this sequence in code (actually for a `CSocket` object), see [Windows Sockets: Sequence of Operations](windows-sockets-sequence-of-operations.md).
 
 ## <a name="_core_your_responsibilities_with_casyncsocket"></a> Your responsibilities with `CAsyncSocket`
 
-When you create an object of class [`CAsyncSocket`](../mfc/reference/casyncsocket-class.md), the object encapsulates a Windows **`SOCKET`** handle and supplies operations on that handle. When you use `CAsyncSocket`, you must deal with all the issues you might face if using the API directly. For example:
+When you create an object of class [`CAsyncSocket`](reference/casyncsocket-class.md), the object encapsulates a Windows **`SOCKET`** handle and supplies operations on that handle. When you use `CAsyncSocket`, you must deal with all the issues you might face if using the API directly. For example:
 
 - "Blocking" scenarios.
 
@@ -83,16 +83,16 @@ When you create an object of class [`CAsyncSocket`](../mfc/reference/casyncsocke
 
 - Converting between Unicode and multibyte character set (MBCS) strings.
 
-For definitions of these terms and additional information, see [Windows Sockets: Blocking](../mfc/windows-sockets-blocking.md), [Windows Sockets: Byte Ordering](../mfc/windows-sockets-byte-ordering.md), [Windows Sockets: Converting Strings](../mfc/windows-sockets-converting-strings.md).
+For definitions of these terms and additional information, see [Windows Sockets: Blocking](windows-sockets-blocking.md), [Windows Sockets: Byte Ordering](windows-sockets-byte-ordering.md), [Windows Sockets: Converting Strings](windows-sockets-converting-strings.md).
 
 Despite these issues, class `CAsyncSocket` may be the right choice for you if your application requires all the flexibility and control you can get. If not, consider using class `CSocket` instead. `CSocket` hides many details from you: it pumps Windows messages during blocking calls and gives you access to `CArchive`, which manages byte order differences and string conversion for you.
 
 For more information, see:
 
-- [Windows Sockets: Background](../mfc/windows-sockets-background.md)\
-- [Windows Sockets: Stream Sockets](../mfc/windows-sockets-stream-sockets.md)\
-- [Windows Sockets: Datagram Sockets](../mfc/windows-sockets-datagram-sockets.md)
+- [Windows Sockets: Background](windows-sockets-background.md)
+- [Windows Sockets: Stream Sockets](windows-sockets-stream-sockets.md)
+- [Windows Sockets: Datagram Sockets](windows-sockets-datagram-sockets.md)
 
 ## See also
 
-[Windows Sockets in MFC](../mfc/windows-sockets-in-mfc.md)
+[Windows Sockets in MFC](windows-sockets-in-mfc.md)
diff --git a/docs/mfc/working-with-a-header-control.md b/docs/mfc/working-with-a-header-control.md
index 920a1c5ff0..1cd98c32b1 100644
--- a/docs/mfc/working-with-a-header-control.md
+++ b/docs/mfc/working-with-a-header-control.md
@@ -4,6 +4,7 @@ title: "Working with a Header Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["header controls [MFC], working with", "header controls"]
 ms.assetid: af3afb5c-bf97-451b-8fee-3adcb8257210
+ms.topic: concept-article
 ---
 # Working with a Header Control
 
diff --git a/docs/mfc/working-with-a-tab-control.md b/docs/mfc/working-with-a-tab-control.md
index 6894322f67..e730f954ac 100644
--- a/docs/mfc/working-with-a-tab-control.md
+++ b/docs/mfc/working-with-a-tab-control.md
@@ -4,6 +4,7 @@ title: "Working with a Tab Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["CTabCtrl class [MFC], using", "tab controls [MFC], working with", "tab controls [MFC], using"]
 ms.assetid: 819488e3-4944-44b7-9483-195edb8e0aed
+ms.topic: concept-article
 ---
 # Working with a Tab Control
 
diff --git a/docs/mfc/working-with-the-toolbar-control.md b/docs/mfc/working-with-the-toolbar-control.md
index f0660e38d6..486ff79f32 100644
--- a/docs/mfc/working-with-the-toolbar-control.md
+++ b/docs/mfc/working-with-the-toolbar-control.md
@@ -4,6 +4,7 @@ title: "Working with the Toolbar Control"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["GetToolBarCtrl method [MFC]", "toolbars [MFC], accessing common control", "CToolBarCtrl class [MFC], accessing toolbar", "toolbar controls [MFC], accessing"]
 ms.assetid: b19409d5-3831-42c7-80ae-195c49dc9085
+ms.topic: how-to
 ---
 # Working with the Toolbar Control
 
diff --git a/docs/mfc/working-with-window-objects.md b/docs/mfc/working-with-window-objects.md
index 3624187334..55547aac56 100644
--- a/docs/mfc/working-with-window-objects.md
+++ b/docs/mfc/working-with-window-objects.md
@@ -4,6 +4,7 @@ title: "Working with Window Objects"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["child windows [MFC], working with", "window objects [MFC], working with"]
 ms.assetid: f73aa254-90e3-46a9-8e9b-d78b7054a331
+ms.topic: concept-article
 ---
 # Working with Window Objects
 
diff --git a/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md b/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md
index ce28434c99..89176ac68e 100644
--- a/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md
+++ b/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md
@@ -4,6 +4,7 @@ title: "Writing an Internet Client Application Using MFC WinInet Classes"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Internet client applications [MFC]", "WinInet classes [MFC], programming", "Internet client applications [MFC], writing", "Internet applications [MFC], WinInet", "Internet applications [MFC], client applications", "MFC, Internet applications"]
 ms.assetid: a2c4a40c-a94e-4b3e-9dbf-f8a8dc8e5428
+ms.topic: concept-article
 ---
 # Writing an Internet Client Application Using MFC WinInet Classes
 
diff --git a/docs/mfc/writing-mfc-applications.md b/docs/mfc/writing-mfc-applications.md
index 8858085fae..abb166fc97 100644
--- a/docs/mfc/writing-mfc-applications.md
+++ b/docs/mfc/writing-mfc-applications.md
@@ -4,6 +4,7 @@ title: "Writing MFC Applications"
 ms.date: "09/12/2018"
 helpviewer_keywords: ["Internet applications [MFC], MFC", "MFC, Internet applications", "application wizards [MFC], Internet applications", "MFC, application development"]
 ms.assetid: 6a8d8a03-abfa-4976-86c2-c5773a4b7179
+ms.topic: concept-article
 ---
 # Writing MFC Applications
 
diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md
index e35858c146..b167daf235 100644
--- a/docs/overview/compiler-versions.md
+++ b/docs/overview/compiler-versions.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about Microsoft Visual C++ compiler versioning."
 title: "Microsoft Visual C++ compiler versioning (Visual C++)"
-ms.date: 02/13/2024
+ms.date: 02/12/2025
 ms.service: "visual-cpp"
 ms.subservice: "tools"
 helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"]
@@ -52,7 +52,7 @@ The macros reflect these values like this:
 
 ### Service releases starting with Visual Studio 2017
 
-Servicing releases can be distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1.
+Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1.
 
 For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 16.8 from 16.9, and Visual Studio 2019 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`.
 
@@ -71,7 +71,7 @@ R - revision version
 
 **[`_MSC_VER`](../preprocessor/predefined-macros.md)** distinguishes between major and minor releases. It has the form: MMNN.
 
-**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. See [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017) for more information about Visual Studio 2019 16.8, 16.9, 16.10 and 16.11.
+**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017).
 
 **[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases.
 
@@ -79,47 +79,51 @@ When the major version changed between Visual Studio 2013 and Visual Studio 2015
 
 An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932.
 
-The following table lists the Visual C++ compiler `_MSC_VER` for each Visual Studio release:
-
-| Visual Studio version | `_MSC_VER` |
-|--|--|
-| Visual Studio 6.0 | 1200 |
-| Visual Studio .NET 2002 (7.0) | 1300 |
-| Visual Studio .NET 2003 (7.1) | 1310 |
-| Visual Studio 2005 (8.0) | 1400 |
-| Visual Studio 2008 (9.0) | 1500 |
-| Visual Studio 2010 (10.0) | 1600 |
-| Visual Studio 2012 (11.0) | 1700 |
-| Visual Studio 2013 (12.0) | 1800 |
-| Visual Studio 2015 (14.0) | 1900 |
-| Visual Studio 2017 RTW (15.0) | 1910 |
-| Visual Studio 2017 version 15.3 | 1911 |
-| Visual Studio 2017 version 15.5 | 1912 |
-| Visual Studio 2017 version 15.6 | 1913 |
-| Visual Studio 2017 version 15.7 | 1914 |
-| Visual Studio 2017 version 15.8 | 1915 |
-| Visual Studio 2017 version 15.9 | 1916 |
-| Visual Studio 2019 RTW 16.0 | 1920 |
-| Visual Studio 2019 version 16.1 | 1921 |
-| Visual Studio 2019 version 16.2 | 1922 |
-| Visual Studio 2019 version 16.3 | 1923 |
-| Visual Studio 2019 version 16.4 | 1924 |
-| Visual Studio 2019 version 16.5 | 1925 |
-| Visual Studio 2019 version 16.6 | 1926 |
-| Visual Studio 2019 version 16.7 | 1927 |
-| Visual Studio 2019 version 16.8, 16.9 <sup>a</sup> | 1928 |
-| Visual Studio 2019 version 16.10, 16.11 <sup>b</sup> | 1929 |
-| Visual Studio 2022 RTW 17.0 | 1930 |
-| Visual Studio 2022 version 17.1 | 1931 |
-| Visual Studio 2022 version 17.2 | 1932 |
-| Visual Studio 2022 version 17.3 | 1933 |
-| Visual Studio 2022 version 17.4 | 1934 |
-| Visual Studio 2022 version 17.5 | 1935 |
-| Visual Studio 2022 version 17.6 | 1936 |
-| Visual Studio 2022 version 17.7 | 1937 |
-| Visual Studio 2022 version 17.8 | 1938 |
-| Visual Studio 2022 version 17.9 | 1939 |
-| Visual Studio 2022 version 17.10 | 1940 |
+The following table lists the Visual Studio version corresponding to each Visual C++ compiler (`_MSC_VER`) and MSVC toolset release:
+
+| Visual Studio version | `_MSC_VER` | MSVC toolset version |
+|--|--|--|
+| Visual Studio 6.0 | 1200 | 6.0 |
+| Visual Studio .NET 2002 (7.0) | 1300 | 7.0 |
+| Visual Studio .NET 2003 (7.1) | 1310 | 7.1 |
+| Visual Studio 2005 (8.0) | 1400 | 8.0 |
+| Visual Studio 2008 (9.0) | 1500 | 9.0 |
+| Visual Studio 2010 (10.0) | 1600 | 10.0 |
+| Visual Studio 2012 (11.0) | 1700 | 11.0 |
+| Visual Studio 2013 (12.0) | 1800 | 12.0 |
+| Visual Studio 2015 (14.0) | 1900 | 14.0 |
+| Visual Studio 2017 RTW (15.0) | 1910 | 14.10 |
+| Visual Studio 2017 version 15.3 | 1911 | 14.11 |
+| Visual Studio 2017 version 15.5 | 1912 | 14.12 |
+| Visual Studio 2017 version 15.6 | 1913 | 14.13 |
+| Visual Studio 2017 version 15.7 | 1914 | 14.14 |
+| Visual Studio 2017 version 15.8 | 1915 | 14.15 |
+| Visual Studio 2017 version 15.9 | 1916 | 14.16 |
+| Visual Studio 2019 RTW 16.0 | 1920 | 14.20 |
+| Visual Studio 2019 version 16.1 | 1921 | 14.21 |
+| Visual Studio 2019 version 16.2 | 1922 | 14.22 |
+| Visual Studio 2019 version 16.3 | 1923 | 14.23 |
+| Visual Studio 2019 version 16.4 | 1924 | 14.24 |
+| Visual Studio 2019 version 16.5 | 1925 | 14.25 |
+| Visual Studio 2019 version 16.6 | 1926 | 14.26 |
+| Visual Studio 2019 version 16.7 | 1927 | 14.27 |
+| Visual Studio 2019 version 16.8, 16.9 <sup>a</sup> | 1928 | 14.28 |
+| Visual Studio 2019 version 16.10, 16.11 <sup>b</sup> | 1929 | 14.29 |
+| Visual Studio 2022 RTW 17.0 | 1930 | 14.30 |
+| Visual Studio 2022 version 17.1 | 1931 | 14.31 |
+| Visual Studio 2022 version 17.2 | 1932 | 14.32 |
+| Visual Studio 2022 version 17.3 | 1933 | 14.33 |
+| Visual Studio 2022 version 17.4 | 1934 | 14.34 |
+| Visual Studio 2022 version 17.5 | 1935 | 14.35 |
+| Visual Studio 2022 version 17.6 | 1936 | 14.36 |
+| Visual Studio 2022 version 17.7 | 1937 | 14.37 |
+| Visual Studio 2022 version 17.8 | 1938 | 14.38 |
+| Visual Studio 2022 version 17.9 | 1939 | 14.39 |
+| Visual Studio 2022 version 17.10 | 1940 | 14.40 |
+| Visual Studio 2022 version 17.11 | 1941 | 14.41 |
+| Visual Studio 2022 version 17.12 | 1942 | 14.42 |
+| Visual Studio 2022 version 17.13 | 1943 | 14.43 |
+| Visual Studio 2022 version 17.14 | 1944 | 14.44 |
 
 <sup>a</sup> Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910.
 
diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md
index 557e798336..af33b89fb3 100644
--- a/docs/overview/cpp-conformance-improvements-2017.md
+++ b/docs/overview/cpp-conformance-improvements-2017.md
@@ -465,7 +465,7 @@ int main()
     // understand C++ and uses BitBlt, which results in a double-free later.
     f(A()); // C4606 'A': passing argument by value across native and managed
     // boundary requires valid copy constructor. Otherwise, the runtime
-    // behavior is undefined.`
+    // behavior is undefined.
 }
 ```
 
@@ -1629,7 +1629,7 @@ The standard C++ attribute [`[[deprecated]]`](../cpp/attributes.md) may be used
 template <typename T>
 using X = __declspec(deprecated("msg")) T; // C2760: syntax error:
                                            // unexpected token '__declspec',
-                                           // expected 'type specifier'`
+                                           // expected 'type specifier'
 ```
 
 To fix the error, change to code to the following (with the attribute placed before the '=' of the alias definition):
@@ -1678,7 +1678,7 @@ The following code now raises C4643:
 namespace std {
     template<typename T> class vector;  // C4643: Forward declaring 'vector'
                                         // in namespace std is not permitted
-                                        // by the C++ Standard`
+                                        // by the C++ Standard
 }
 ```
 
diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md
index 533c1dbe18..e3b390b72f 100644
--- a/docs/overview/cpp-conformance-improvements-2019.md
+++ b/docs/overview/cpp-conformance-improvements-2019.md
@@ -1249,7 +1249,7 @@ void f() {
 
 Previously, thread-local variables in DLLs weren't correctly initialized. Other than on the thread that loaded the DLL, they weren't initialized before first use on threads that existed before the DLL was loaded. This defect has now been corrected. Thread-local variables in such a DLL get initialized immediately before their first use on such threads.
 
-This new behavior of testing for initialization on uses of thread-local variables may be disabled by using the **`/Zc:tlsGuards-`** compiler option. Or, by adding the `[[msvc:no_tls_guard]]` attribute to particular thread local variables.
+This new behavior of testing for initialization on uses of thread-local variables may be disabled by using the **`/Zc:tlsGuards-`** compiler option. Or, by adding the `[[msvc::no_tls_guard]]` attribute to particular thread local variables.
 
 ### Better diagnosis of call to deleted functions
 
@@ -1934,14 +1934,14 @@ C++20 doesn't support coroutines with a return type that includes a placeholder
 auto my_generator() {
     ...
     co_yield next;
-};
+}
 
 // /std:c++latest
 #include <experimental/generator>
 std::experimental::generator<int> my_generator() {
     ...
     co_yield next;
-};
+}
 ```
 
 #### Return type of `return_value`
diff --git a/docs/overview/cpp-conformance-improvements.md b/docs/overview/cpp-conformance-improvements.md
index a1f9c469fb..2249e10efa 100644
--- a/docs/overview/cpp-conformance-improvements.md
+++ b/docs/overview/cpp-conformance-improvements.md
@@ -1,7 +1,7 @@
 ---
 title: "C++ conformance improvements in Visual Studio 2022"
 description: "Microsoft C++ in Visual Studio is improving standards conformance and fixing bugs regularly."
-ms.date: 11/12/2024
+ms.date: 05/13/2025
 ms.service: "visual-cpp"
 ms.subservice: "cpp-lang"
 ---
@@ -19,6 +19,114 @@ For changes in earlier versions of Visual Studio:
 | 2017 | [C++ conformance improvements in Visual Studio 2017](cpp-conformance-improvements-2017.md) |
 | 2003-2015 | [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) |
 
+## <a name="improvements_1714"></a> Conformance improvements in Visual Studio 2022 version 17.14
+
+Visual Studio 2022 version 17.14 includes the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler.
+
+### Conformance improvements
+
+- Standard library hardening ([P3471R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3471r4.html)) turns some instances of undefined behavior in the standard library into a call to [__fastfail](../intrinsics/fastfail.md). Off by default. Define `_MSVC_STL_HARDENING=1` project-wide to enable.
+
+### Enhanced behavior
+
+- Implemented "destructor tombstones" to mitigate use-after-free mistakes. Off by default. Define `_MSVC_STL_DESTRUCTOR_TOMBSTONES=1` project-wide to enable.
+
+### Bug fixes
+
+- Fixed errant compiler errors when using `<format>` in a CUDA project.
+- Fixed a compiler issue where the address of a local variable could "leak" during `constexpr` evaluation. For example:
+
+    ```cpp
+    const unsigned & func() 
+    {
+      const int x = 0;
+      constexpr const unsigned & r1 = x; // Previously accepted, now an error
+      return r1;
+    }
+    
+    auto r = func();  // Previously, the local address leaked
+    ```
+
+    **Example #2**
+
+    ```cpp
+    #include <initializer_list>
+    
+    void test()
+    {
+        constexpr std::initializer_list<int> xs { 1, 2, 3 };        // Previously accepted, now an error
+    
+        static constexpr std::initializer_list<int> ys { 1, 2, 3 }; // Correct usage - note use of static
+    }
+    ```
+
+- Code compiled with `/permissive-` no longer accepts a combination of `friend` and `static` on a declaration. The fix is usually to remove `static` from the declaration. For example:
+
+    ```cpp
+    struct S
+    {
+        friend static void f(); // Previously accepted, now emits error C2440: 'static' cannot be used with 'friend'
+    };
+    ```
+
+- Reference binding to volatile-qualified types fixed when referring to a base or derived class. For example:
+
+    ```cpp
+    struct A {};
+    struct B : public A {};
+    
+    void f(A&);                 // 1
+    void f(const volatile A&);  // 2
+    
+    f(B{}); // Previously called 2. This is ill-formed under /permissive- or /Zc:referenceBinding. Chooses 1 if relaxed reference binding rules are enabled.
+    ```
+
+For an in-depth summary of changes made to the Standard Template Library, including conformance changes, bug fixes, and performance improvements, see [STL Changelog VS 2022 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714).
+
+## <a name="improvements_1713"></a> Conformance improvements in Visual Studio 2022 version 17.13
+
+Visual Studio 2022 version 17.13 includes the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler.
+
+For an in-depth summary of changes made to the Standard Template Library, including conformance changes, bug fixes, and performance improvements, see [STL Changelog VS 2022 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713).
+
+### Argument-dependent lookup (ADL)
+
+Language constructs such as range-for and structured bindings have special argument-dependent lookup rules for certain identifiers such as `begin`, `end`, or `get`. Previously, this lookup included candidates from the `std` namespace, even when namespace `std` isn't part of the ordinary set of associated namespaces for argument-dependent lookup.
+
+Programs that introduced declarations to `std` for these constructs no longer compile. Instead, the declarations should be in a normal associated namespace for the types involved (possibly including the global namespace).
+
+```cpp
+template <typename T>
+struct Foo {};
+
+namespace std
+{
+    // To correct the program, move these declarations from std to the global namespace
+    template <typename T>
+    T* begin(Foo<T>& f);
+    template <typename T>
+    T* end(Foo<T>& f);
+}
+
+void f(Foo<int> foo)
+{
+   for (auto x : foo) // Previously compiled. Now emits error C3312: no callable 'begin' function found for type 'Foo<int>'
+   {
+      ...
+   }
+}
+```
+
+### Can't modify implementation-reserved macros
+
+Previously, the compiler permitted changing or undefining certain implementation-provided macros such as `_MSC_EXTENSIONS`. Altering the definition of certain macros can result in undefined behavior.
+
+Attempting to alter or undefine certain reserved macro names now results in the level-1 warning `C5308`. In `/permissive-` mode, this warning is treated as an error.
+
+```cpp
+#undef _MSC_EXTENSIONS // Warning C5308: Modifying reserved macro name `_MSC_EXTENSIONS` may cause undefined behavior
+```
+
 ## <a name="improvements_1712"></a> Conformance improvements in Visual Studio 2022 version 17.12
 
 Visual Studio 2022 version 17.12 includes the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler.
@@ -29,9 +137,9 @@ For an in-depth summary of changes made to the Standard Template Library, includ
 
 This is a source/binary breaking change.
 
-The implicit conversion to `bool` from `_com_ptr_t` instances can be surprising or lead to compiler errors. Implicit conversion functions are discouraged by the [C++ Core Guidelines (C.164)](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ro-conversion), and `_com_ptr_t` contained implicit conversions to both `bool` and `Interface*`. These two implicit conversions can lead to ambiguities.
+The implicit conversion to `bool` from `_com_ptr_t` instances can be surprising or lead to compiler errors. [C.164: Avoid implicit conversion operators](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c164-avoid-implicit-conversion-operators) in the C++ Core Guidelines discourage implicit conversion functions. And `_com_ptr_t` contained implicit conversions to both `bool` and `Interface*`. These two implicit conversions can lead to ambiguities.
 
-To help address this, the conversion to `bool` is now explicit. The conversion to `Interface*` is unchanged.
+To address this, the conversion to `bool` is now explicit. The conversion to `Interface*` is unchanged.
 
 A macro is provided to opt-out of this new behavior and restore the previous implicit conversion. Compile with `/D_COM_DISABLE_EXPLICIT_OPERATOR_BOOL` to opt-out of this change. We recommend that you modify the code to not rely on implicit conversions.
 
@@ -256,7 +364,7 @@ To fix this warning, either use an equality operator, `value == 9`, if this is w
 
 Visual Studio 2022 version 17.9 contains the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler.
 
-For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.9](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-179).
+For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.9](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-179).
 
 ### Application of `_Alignas` on a structured type in C
 
@@ -345,7 +453,7 @@ The C compiler used to accept the `/FU` option, even though it hasn't support ma
 
 The C++23 named modules `std` and `std.compat` are now available when compiling with `/std:c++20`.
 
-For a broader summary of changes made to the C++ Standard Library, see [STL Changelog VS 2022 17.8](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-178).
+For a broader summary of changes made to the C++ Standard Library, see [STL Changelog VS 2022 17.8](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-178).
 
 ## <a name="improvements_177"></a> Conformance improvements in Visual Studio 2022 version 17.7
 
@@ -361,7 +469,7 @@ The `<print>` library is now supported. See [P2093R14 Formatted output](https://
 
 Implemented `views::cartesian_product`.
 
-For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.7](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-177).
+For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.7](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-177).
 
 ### `using` conformance
 
@@ -481,7 +589,7 @@ bool b = S{} != S{};
 
 The compiler accepts this code, which means that the compiler is more strict with code such as:
 
-```c++
+```cpp
 struct S
 {
   operator bool() const;
diff --git a/docs/overview/languages-cpp.md b/docs/overview/languages-cpp.md
index b02dc239e2..8618404b3e 100644
--- a/docs/overview/languages-cpp.md
+++ b/docs/overview/languages-cpp.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: Languages"
 title: "Languages"
-ms.date: "03/29/2019"
-helpviewer_keywords: ["C lanugage", "C++ Language", "Assembly Language", "Compiler Intrinsics"]
+description: "Learn more about: Languages"
+ms.date: 03/29/2019
+helpviewer_keywords: ["C language", "C++ Language", "Assembly Language", "Compiler Intrinsics"]
 ---
 # Languages
 
diff --git a/docs/overview/media/cmake-intellisense.png b/docs/overview/media/cmake-intellisense.png
new file mode 100644
index 0000000000..7f55a9ca39
Binary files /dev/null and b/docs/overview/media/cmake-intellisense.png differ
diff --git a/docs/overview/media/cmake-module-intellisense.png b/docs/overview/media/cmake-module-intellisense.png
new file mode 100644
index 0000000000..0d66cfc4df
Binary files /dev/null and b/docs/overview/media/cmake-module-intellisense.png differ
diff --git a/docs/overview/media/model-picker.png b/docs/overview/media/model-picker.png
new file mode 100644
index 0000000000..287be12cea
Binary files /dev/null and b/docs/overview/media/model-picker.png differ
diff --git a/docs/overview/media/vs2022-copilot-comment-example.png b/docs/overview/media/vs2022-copilot-comment-example.png
new file mode 100644
index 0000000000..523959124d
Binary files /dev/null and b/docs/overview/media/vs2022-copilot-comment-example.png differ
diff --git a/docs/overview/media/vs2022-copilot-edit-session-example.png b/docs/overview/media/vs2022-copilot-edit-session-example.png
new file mode 100644
index 0000000000..4d154f0bd0
Binary files /dev/null and b/docs/overview/media/vs2022-copilot-edit-session-example.png differ
diff --git a/docs/overview/media/vs2022-copilot-edit-session.png b/docs/overview/media/vs2022-copilot-edit-session.png
new file mode 100644
index 0000000000..d4a5e14951
Binary files /dev/null and b/docs/overview/media/vs2022-copilot-edit-session.png differ
diff --git a/docs/overview/media/vs2022-copilot-git-changes-review.png b/docs/overview/media/vs2022-copilot-git-changes-review.png
new file mode 100644
index 0000000000..b42accbd5f
Binary files /dev/null and b/docs/overview/media/vs2022-copilot-git-changes-review.png differ
diff --git a/docs/overview/overview-of-cpp-development.md b/docs/overview/overview-of-cpp-development.md
index 8032f92a34..ca4cb394b9 100644
--- a/docs/overview/overview-of-cpp-development.md
+++ b/docs/overview/overview-of-cpp-development.md
@@ -1,7 +1,7 @@
 ---
 title: "Overview of C++ development in Visual Studio"
 description: "The Visual Studio IDE supports C++ development on Windows, Linux, Android and iOS with a code editor, debugger, test frameworks, static analyzers, and other programming tools."
-ms.date: "12/02/2019"
+ms.date: 12/02/2019
 helpviewer_keywords: ["Visual C++, development tools"]
 author: "tylermsft"
 ms.author: "twhitney"
@@ -44,13 +44,13 @@ Source control enables you to coordinate work among multiple developers, isolate
 
 ::: moniker range=">=msvc-160"
 
-![Screenshot of the Team Explorer window in Visual Studio 2019.](media/vs2019-team-explorer.png )
+![Screenshot of the Team Explorer window in Visual Studio 2019.](media/vs2019-team-explorer.png)
 
 ::: moniker-end
 
 ::: moniker range="<=msvc-150"
 
-![Screenshot of the Team Explorer window in Visual Studio 2017.](media/vs2017-team-explorer.png )
+![Screenshot of the Team Explorer window in Visual Studio 2017.](media/vs2017-team-explorer.png)
 
 ::: moniker-end
 
@@ -110,7 +110,7 @@ For more information, see [Verifying Code by Using Unit Tests](/visualstudio/tes
 
 ## Analyze
 
-Visual Studio includes static code analysis tools that can detect potential problems in your source code. These tools include an implementation of the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rules checkers. For more information, see [Code analysis for C/C++ overview](../code-quality/code-analysis-for-c-cpp-overview.md).
+Visual Studio includes static code analysis tools that can detect potential problems in your source code. These tools include an implementation of the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rules checkers. For more information, see [Code analysis for C/C++ overview](../code-quality/code-analysis-for-c-cpp-overview.md).
 
 ## Deploy completed applications
 
diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml
index eb098aa480..66d418921e 100644
--- a/docs/overview/toc.yml
+++ b/docs/overview/toc.yml
@@ -12,8 +12,6 @@ items:
       href: ../overview/what-s-new-for-cpp-2019.md
     - name: What's new for C++ in Visual Studio 2017
       href: ../overview/what-s-new-for-cpp-2017.md
-    - name: What's new for Microsoft C++ docs 
-      href: ../overview/whats-new-cpp-docs.md
     - name: C++ conformance improvements in Visual Studio 2022
       href: ../overview/cpp-conformance-improvements.md
     - name: C++ conformance improvements in Visual Studio 2019
diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md
index f24433753c..b276614c6a 100644
--- a/docs/overview/visual-cpp-language-conformance.md
+++ b/docs/overview/visual-cpp-language-conformance.md
@@ -216,7 +216,6 @@ For details on conformance improvements, see [C++ conformance improvements in Vi
 | &emsp;[`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | no |
 | &emsp;[`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | no |
 | &emsp;[`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | no |
-| &emsp;[`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | no |
 | &emsp;[`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 <sup>[DR](#note_DR)</sup> |
 | &emsp;[`P2579R0 Mitigation strategies for P2036 ”Changing scope for lambda trailing-return-type”`](https://wg21.link/p2579r0) | no |
 | &emsp;[`P2582R1 Wording for class template argument deduction from inherited constructors`](https://wg21.link/p2582r1) | no |
@@ -335,7 +334,7 @@ A more detailed listing of Standard Library features and bug fixes by product ve
 | &emsp;[`P0607R0 Inline Variables for the Standard Library`](https://wg21.link/p0607r0) | VS 2017 15.5 <sup>[17](#note_17)</sup> |
 | &emsp;[`P0618R0 Deprecating <codecvt>`](https://wg21.link/p0618r0) | VS 2017 15.5 <sup>[17](#note_17)</sup> |
 | **C++17 Standard library features (Defect reports)** | **Supported** |
-| &emsp;[`P0682R1 Repairing Elementary String Conversions`](https://wg21.link/P0682R1) | VS 2015 15.7 <sup>[17](#note_17)</sup> |
+| &emsp;[`P0682R1 Repairing Elementary String Conversions`](https://wg21.link/P0682R1) | VS 2017 15.7 <sup>[17](#note_17)</sup> |
 | &emsp;[`P1164R1 Making create_directory() Intuitive`](https://wg21.link/P1164R1) | VS 2019 16.0 <sup>[14](#note_14)</sup> |
 | **C++20 Standard library features** | **Supported** |
 | &emsp;[`P0809R0 Comparing Unordered Containers`](https://wg21.link/p0809r0) | VS 2010 <sup>[14](#note_14)</sup> |
@@ -401,7 +400,7 @@ A more detailed listing of Standard Library features and bug fixes by product ve
 | &emsp;[`P1023R0 constexpr For std::array Comparisons`](https://wg21.link/P1023R0) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
 | &emsp;[`P1115R3 erase()/erase_if() Return size_type`](https://wg21.link/P1115R3) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
 | &emsp;[`P1831R1 Deprecating volatile in the standard library`](https://wg21.link/P1831R1) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
-| &emsp;[`P1871R1 Concept traits should be named after concepts`](https://wg21.link/P1831R1) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
+| &emsp;[`P1871R1 Concept traits should be named after concepts`](https://wg21.link/P1871R1) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
 | &emsp;[`P1956R1 <bit> has_single_bit(), bit_ceil(), bit_floor(), bit_width()`](https://wg21.link/P1956R1) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
 | &emsp;[`P1964R2 Replacing boolean With boolean-testable`](https://wg21.link/P1964R2) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
 | &emsp;[`P1976R2 Fixed-size span construction from dynamic range`](https://wg21.link/P1976R2) | VS 2019 16.7 <sup>[20](#note_20)</sup> |
@@ -446,61 +445,61 @@ A more detailed listing of Standard Library features and bug fixes by product ve
 | &emsp;[`P2367R0 Remove misuses of list-initialization from clause 24 ranges`](https://wg21.link/P2367R0) | VS 2022 17.0 <sup>[20abi](#note_20abi)</sup> |
 | &emsp;[`P2259R1 Partial LWG issue resolution: repairing Input Range Adaptors and counted_iterator`](https://wg21.link/P2259R1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
 | **C++23 Standard library features** | **Supported** |
-| &emsp;[`P0288R9 move_only_function​`](https://wg21.link/p0288r9) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0323R12 <expected>​​`](https://wg21.link/p0323r12) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0401R6 Providing Size Feedback In The Allocator Interface​`](https://wg21.link/p0401r6) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0448R4 <spanstream>​`](https://wg21.link/p0448r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0627R6 unreachable()​`](https://wg21.link/p0627r6) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0798R8 Monadic Operations For optional​`](https://wg21.link/p0798r8) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0849R8 auto(x): decay-copy In The Language​`](https://wg21.link/p0849r8) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0881R7 <stacktrace>​`](https://wg21.link/p0881r7) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P0943R6 Supporting C Atomics In C++​`](https://wg21.link/p0943r6) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1048R1 is_scoped_enum​`](https://wg21.link/p1048r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1072R10 basic_string::resize_and_overwrite​`](https://wg21.link/p1072r10) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1132R7 out_ptr(), inout_ptr()​`](https://wg21.link/p1132r7) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1147R1 Printing volatile Pointers​`](https://wg21.link/p1147r1) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1206R7 Conversions From Ranges To Containers​`](https://wg21.link/p1206r7) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1272R4 byteswap()​`](https://wg21.link/p1272r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1328R1 constexpr type_info::operator==()​`](https://wg21.link/p1328r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1413R3 Deprecate aligned_storage And aligned_union​​`](https://wg21.link/p1413r3) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1425R4 Iterator Pair Constructors For stack And queue​`](https://wg21.link/p1425r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1518R2 Stop Overconstraining Allocators In Container Deduction Guides​`](https://wg21.link/p1518r2) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1659R3 ranges::starts_with, ranges::ends_with​`](https://wg21.link/p1659r3) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1679R3 contains() For basic_string/basic_string_view​`](https://wg21.link/p1679r3) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1682R3 to_underlying() For Enumerations​`](https://wg21.link/p1682r3) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1899R3 views::stride​`](https://wg21.link/p1899r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1951R1 Default Template Arguments For pair's Forwarding Constructor​`](https://wg21.link/p1951r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P1989R2 Range Constructor For string_view​`](https://wg21.link/p1989r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2077R3 Heterogeneous Erasure Overloads For Associative Containers​`](https://wg21.link/p2077r3) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2136R3 invoke_r()​`](https://wg21.link/p2136r3) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0288R9 move_only_function`](https://wg21.link/p0288r9) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0323R12 <expected>`](https://wg21.link/p0323r12) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0401R6 Providing Size Feedback In The Allocator Interface`](https://wg21.link/p0401r6) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0448R4 <spanstream>`](https://wg21.link/p0448r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0627R6 unreachable()`](https://wg21.link/p0627r6) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0798R8 Monadic Operations For optional`](https://wg21.link/p0798r8) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0849R8 auto(x): decay-copy In The Language`](https://wg21.link/p0849r8) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0881R7 <stacktrace>`](https://wg21.link/p0881r7) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P0943R6 Supporting C Atomics In C++`](https://wg21.link/p0943r6) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1048R1 is_scoped_enum`](https://wg21.link/p1048r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1072R10 basic_string::resize_and_overwrite`](https://wg21.link/p1072r10) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1132R7 out_ptr(), inout_ptr()`](https://wg21.link/p1132r7) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1147R1 Printing volatile Pointers`](https://wg21.link/p1147r1) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1206R7 Conversions From Ranges To Containers`](https://wg21.link/p1206r7) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1272R4 byteswap()`](https://wg21.link/p1272r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1328R1 constexpr type_info::operator==()`](https://wg21.link/p1328r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1413R3 Deprecate aligned_storage And aligned_union`](https://wg21.link/p1413r3) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1425R4 Iterator Pair Constructors For stack And queue`](https://wg21.link/p1425r4) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1518R2 Stop Overconstraining Allocators In Container Deduction Guides`](https://wg21.link/p1518r2) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1659R3 ranges::starts_with, ranges::ends_with`](https://wg21.link/p1659r3) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1679R3 contains() For basic_string/basic_string_view`](https://wg21.link/p1679r3) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1682R3 to_underlying() For Enumerations`](https://wg21.link/p1682r3) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1899R3 views::stride`](https://wg21.link/p1899r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1951R1 Default Template Arguments For pair's Forwarding Constructor`](https://wg21.link/p1951r1) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P1989R2 Range Constructor For string_view`](https://wg21.link/p1989r2) | VS 2022 17.0 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2077R3 Heterogeneous Erasure Overloads For Associative Containers`](https://wg21.link/p2077r3) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2136R3 invoke_r()`](https://wg21.link/p2136r3) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
 | &emsp;[`P2162R2 Inheriting from std::variant`](https://wg21.link/P2162R2) | VS 2022 17.0 <sup>[17](#note_17)</sup> |
 | &emsp;[`P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr`](https://wg21.link/P2166R1) | VS 2022 17.0 <sup>[23](#note_23), [R](#note_R)</sup> |
 | &emsp;[`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 <sup>[23](#note_23), [Q](#note_Q)</sup> |
-| &emsp;[`P2251R1 Require span And basic_string_view To Be Trivially Copyable​`](https://wg21.link/p2251r1) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2273R3 constexpr unique_ptr​​`](https://wg21.link/p2273r3) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2291R3 constexpr Integral <charconv>​`](https://wg21.link/p2291r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2302R4 ranges::contains, ranges::contains_subrange​`](https://wg21.link/p2302r4) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2321R2 std::zip​`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2322R6 ranges::fold_left, ranges::fold_right, etc.​`](https://wg21.link/p2322r6) | VS 2022 17.5 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2387R3 Pipe Support For User-Defined Range Adaptors​`](https://wg21.link/p2387r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2393R1 Cleaning Up Integer-Class Types​`](https://wg21.link/p2393r1) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2401R0 Conditional noexcept For exchange()​`](https://wg21.link/p2401r0) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms​`](https://wg21.link/p2408r5) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2417R2 More constexpr bitset​`](https://wg21.link/p2417r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types​`](https://wg21.link/p2419r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2438R2 string::substr() &&​`](https://wg21.link/p2438r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right​`](https://wg21.link/p2440r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2441R2 views::join_with​`](https://wg21.link/p2441r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2442R1 Windowing Range Adaptors: views::chunk, views::slide​​`](https://wg21.link/p2442r1) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2443R1 views::chunk_by​​`](https://wg21.link/p2443r1) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2445R1 forward_like()​`](https://wg21.link/p2445r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2446R2 views::as_rvalue​`](https://wg21.link/p2446r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2465R3 Standard Library Modules std And std.compat​`](https://wg21.link/p2465r3) | no |
-| &emsp;[`P2494R2 Relaxing Range Adaptors To Allow Move-Only Types​`](https://wg21.link/p2494r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2499R0 string_view Range Constructor Should Be explicit​`](https://wg21.link/p2499r0) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2508R1 basic_format_string, format_string, wformat_string​`](https://wg21.link/p2508r1) | VS 2022 17.5 <sup>[23](#note_23) |
-| &emsp;[`P2517R1 Conditional noexcept For apply()​`](https://wg21.link/p2517r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
-| &emsp;[`P2520R0 move_iterator<T*> Should Be A Random-Access Iterator​​`](https://wg21.link/p2520r0) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2291R3 constexpr Integral <charconv>`](https://wg21.link/p2291r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2302R4 ranges::contains, ranges::contains_subrange`](https://wg21.link/p2302r4) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2321R2 std::zip`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2322R6 ranges::fold_left, ranges::fold_right, etc.`](https://wg21.link/p2322r6) | VS 2022 17.5 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2387R3 Pipe Support For User-Defined Range Adaptors`](https://wg21.link/p2387r3) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2393R1 Cleaning Up Integer-Class Types`](https://wg21.link/p2393r1) | VS 2022 17.2 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2401R0 Conditional noexcept For exchange()`](https://wg21.link/p2401r0) | VS 2022 17.1 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms`](https://wg21.link/p2408r5) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2417R2 More constexpr bitset`](https://wg21.link/p2417r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types`](https://wg21.link/p2419r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2438R2 string::substr() &&`](https://wg21.link/p2438r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right`](https://wg21.link/p2440r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2441R2 views::join_with`](https://wg21.link/p2441r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2442R1 Windowing Range Adaptors: views::chunk, views::slide`](https://wg21.link/p2442r1) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2443R1 views::chunk_by`](https://wg21.link/p2443r1) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2445R1 forward_like()`](https://wg21.link/p2445r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2446R2 views::as_rvalue`](https://wg21.link/p2446r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2465R3 Standard Library Modules std And std.compat`](https://wg21.link/p2465r3) | no |
+| &emsp;[`P2494R2 Relaxing Range Adaptors To Allow Move-Only Types`](https://wg21.link/p2494r2) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2499R0 string_view Range Constructor Should Be explicit`](https://wg21.link/p2499r0) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2508R1 basic_format_string, format_string, wformat_string`](https://wg21.link/p2508r1) | VS 2022 17.5 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2517R1 Conditional noexcept For apply()`](https://wg21.link/p2517r1) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
+| &emsp;[`P2520R0 move_iterator<T*> Should Be A Random-Access Iterator`](https://wg21.link/p2520r0) | VS 2022 17.4 <sup>[23](#note_23)</sup> |
 | &emsp;[`P2549R1 unexpected<E>::error()`](https://wg21.link/p2549r1) | VS 2022 17.3 <sup>[23](#note_23)</sup> |
 
 A group of papers listed together indicates a Standard feature along with one or more approved improvements or expansions. These features are implemented together.
@@ -537,7 +536,7 @@ A group of papers listed together indicates a Standard feature along with one or
 | &emsp;`gets_s()` | VS 2019 16.8 <sup>[C11](#note_C11)</sup> |
 | &emsp;Bounds-checking interfaces (`*_s` APIs) | Partial in VS 2015 <sup>[C11](#note_C11), [O](#note_O)</sup> |
 | &emsp;`fopen` `"x"` option | VS 2019 16.8 <sup>[C11](#note_C11)</sup> |
-| &emsp;Static assertions | VS 2019 16.8  <sup>[C11](#note_C11), [2104](#note_2104)</sup> |
+| &emsp;Static assertions | VS 2019 16.8 <sup>[C11](#note_C11), [2104](#note_2104)</sup> |
 | &emsp;`quick_exit` | VS 2019 16.8 <sup>[C11](#note_C11)</sup> |
 | &emsp;`<complex.h>` macros | VS 2019 16.8 <sup>[C11](#note_C11)</sup> |
 | &emsp;floating point characteristics `<float.h>` | VS 2019 16.8 <sup>[C11](#note_C11)</sup> |
diff --git a/docs/overview/visual-cpp-samples.md b/docs/overview/visual-cpp-samples.md
index ab94351935..e3371885a1 100644
--- a/docs/overview/visual-cpp-samples.md
+++ b/docs/overview/visual-cpp-samples.md
@@ -1,11 +1,11 @@
 ---
 title: "Visual Studio C++ Samples"
-description: "Summary descriptions of the samples available in the archived Visual Studio C++ samples repository on GitHub."
-ms.date: "03/23/2020"
+description: "Learn about the samples available in the archived Visual Studio C++ samples repository on GitHub."
+ms.date: 03/25/2025
 ms.service: "visual-cpp"
 ms.subservice: "cpp-lang"
 ---
-# Visual Studio C++ Samples
+# Visual Studio C++ samples
 
 Samples for Visual Studio C++ are available on the web. Microsoft has produced many C++ samples that demonstrate different functionalities across multiple technologies. Here are a few of the places to find additional samples:
 
@@ -21,7 +21,24 @@ Samples for Visual Studio C++ are available on the web. Microsoft has produced m
 
 ## Archived C++ samples on GitHub
 
-Visual Studio included C++ sample code in previous versions. The sample code was either installed with Visual Studio, or was available as a separate download. Many articles in our documentation refer to these samples. They don't get installed by Visual Studio anymore. Instead, a repository is available on GitHub. The tables below have descriptions for each sample, and links to the sample's directory in the repository.
+Previous versions of Visual Studio included C++ sample code. The sample code was either installed with Visual Studio, or was available as a separate download. Many articles in our documentation refer to these samples. They don't get installed by Visual Studio anymore. Instead, a repository is available on GitHub. The following tables have descriptions for each sample, and links to the sample's directory in the repository.
+
+- [ATL samples](#atl-samples)
+- [CLR and language samples](#clr-and-language-samples---windows-forms)
+- [COM events samples](#com-events-samples)
+- [ComTypeLibfor7 samples](#comtypelibfor7-samples)
+- [Compiler samples](#compiler-samples)
+- [CRT samples](#crt-samples)
+- [Debugging samples](#debugging-samples)
+- [Fusion samples](#fusion-samples)
+- [Hilo sample](#hilo-sample)
+- [International samples](#international-samples)
+- [Language samples](#language-samples---general)
+- [MFC samples](#mfc-samples)
+- [ODBC samples](#odbc-samples)
+- [OS samples](#os-samples)
+- [Unix samples](#unix-samples)
+- [Windows 8 samples](#windows-8-samples)
 
 [!INCLUDE[note_security_samplecode](includes/note_security_samplecode_md.md)]
 
@@ -34,10 +51,10 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 | [ActiveDoc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Demonstrates how to implement an Active Document Server. |
 | [Async](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Downloads data asynchronously from a URL. |
 | [ATLButton](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Creates a button that displays itself with three different bitmaps depending on its state. |
-| [ATLDuck](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Demonstrates using connection points with ATL controls. |
+| [ATLDuck](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Demonstrates how to use connection points with ATL controls. |
 | [ATLSecurity](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Shows how to use the ATL security classes to examine security settings. |
 | [ATLTraceTool](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Displays the output generated by the `ATLTRACE2` macro. |
-| [Connect](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Illustrates the implementation and use of connection points (the IConnectionPointContainer and IConnectionPoint interfaces) in a multithreaded environment. |
+| [Connect](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Illustrates the implementation and use of connection points (the `IConnectionPointContainer` and `IConnectionPoint` interfaces) in a multithreaded environment. |
 | [CThreadPool](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Shows how to use a thread pool in an application and how implementing a thread pool can improve the application's performance. |
 | [DCOM](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Demonstrates how to call a COM object (implemented in a Windows service) from multiple clients, running on different machines. |
 | [MFCATL](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/Advanced) | Illustrates how ATL COM objects can be used in an MFC server EXE. |
@@ -72,7 +89,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 |--|--|
 | [CatDB](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/OLEDB/Consumer) | Displays the schema information, such as tables and columns, of OLE DB providers. |
 | [DBViewer](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/OLEDB/Consumer) | Demonstrates a mid-level application that relies on the `CManualAccessor` class to take full control of data bindings for your applications. |
-| [DynamicConsumer](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/OLEDB/Consumer) | Demonstrates using dynamic accessor and schema rowset classes to read metadata from a database. |
+| [DynamicConsumer](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/OLEDB/Consumer) | Demonstrates how to use dynamic accessor and schema rowset classes to read metadata from a database. |
 | [MultiRead](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ATL/OLEDB/Consumer) | Reads through a table in a database using multiple threads. |
 
 ### ATL samples - OLEDB - Provider
@@ -88,7 +105,6 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 |--|--|
 | [BirthdayPicker](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/Language/Windows%20Forms) | Shows how the .NET Framework resource mechanism can be used in C++ applications. It also demonstrates some common Window Forms components. |
 | [Calculator](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/Language/Windows%20Forms) | Implements a simple pocket calculator using C++ and the .NET Framework Windows Forms classes. |
-| Scribble (using MFC) | An MFC implementation of the Scribble sample, updated and extended to include new .NET functionality. |
 | [Scribble (Windows Forms)](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/Language/General) | A Windows Forms implementation of the Scribble sample, updated and extended to include new .NET functionality. |
 | [STLCLR](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/CLR/stlclr/StlClr%20Sample) | Demonstrates some of the capabilities available when using the STL/CLR Library. |
 
@@ -109,9 +125,9 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 | [Connect](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Illustrates the use and implementation of connection points (the `IConnectionPointContainer` and `IConnectionPoint` interfaces) in a multithreaded environment. |
 | [DCOM](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates how to call a COM object (implemented in a Windows service) from multiple clients, running on different computers. |
 | [FreeThrd](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates a multithreaded client and free-threaded server with compiler COM support. |
-| [InProc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates an in-process Automation server application with compiler COM support. |
+| [InProc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates an in-process automation server application with compiler COM support. |
 | [Labrador](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Implements an EXE server that doesn't have any user interface. |
-| [MFCCalc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates an Automation server application with compiler COM support. |
+| [MFCCalc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/ComTypeLibfor7) | Demonstrates an automation server application with compiler COM support. |
 
 ## Compiler samples
 
@@ -119,7 +135,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 
 | Sample name | Description |
 |--|--|
-| [ccWrapper](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/Compiler) | Demonstrates how to map C/C++ compiler flags from other compilers to the Visual C++ compiler (cl.exe). |
+| [ccWrapper](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/Compiler) | Demonstrates how to map C/C++ compiler flags from other compilers to the Visual C++ compiler (`cl.exe`). |
 
 ### Compiler samples - MASM
 
@@ -137,10 +153,10 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 |--|--|
 | [CPUID](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Determines the capabilities of the CPU being run. |
 | [CRT_Dbg1](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Illustrates the basic debugging features of the C run-time libraries. |
-| [CRT_Dbg2](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Demonstrates the C run-time debugging hook functions. |
+| [CRT_Dbg2](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Demonstrates the C runtime debugging hook functions. |
 | [DFACObjs](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Shows how to use the _CrtDoForAllClientObjects C run-time function to iterate through a linked list of client objects. |
-| [Report](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Illustrates the C run-time debugging report functions. |
-| [RTC](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Demonstrates the run-time error checks feature. |
+| [Report](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Illustrates the C runtime debugging report functions. |
+| [RTC](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | Demonstrates the runtime error checks feature. |
 | [SecureCRT](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/crt) | This sample demonstrates how to upgrade code that used deprecated CRT functions to increase code security. |
 
 ## Debugging samples
@@ -159,7 +175,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 
 | Sample name | Description |
 |--|--|
-| [Hilo](https://github.com/Microsoft/VCSamples/tree/master/VC2013Samples/Hilo) | Hilo is a series of articles and sample applications. They demonstrate the power of Windows 7, Visual Studio and C++ to build high performance, responsive client applications. Hilo provides both source code and guidance that will help you design and develop compelling, touch-enabled Windows applications of your own.<br/><br/>This sample has been updated for Visual Studio 2013. It includes a hot fix to the *AsyncLoaderMemoryManager.cpp* file (in lines 36 and 37), which addresses a common crash issue. |
+| [Hilo](https://github.com/Microsoft/VCSamples/tree/master/VC2013Samples/Hilo) | Hilo is a series of articles and sample applications. They demonstrate the power of Windows 7, Visual Studio and C++ to build high performance, responsive client applications. Hilo provides both source code and guidance that help you design and develop compelling, touch-enabled Windows applications of your own. |
 
 ## International samples
 
@@ -201,13 +217,13 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 | Sample name | Description |
 |--|--|
 | [Button](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates use of an in-place active menu, a stock property page, and the About box control option. |
-| [Circ](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates ActiveX control basics. These include control painting, stock and custom properties, stock and custom events, use of colors and fonts, the stock Font property page, the default property page, and versioning. |
-| [CmnCtrl](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates some of the new controls available with MFC on wiprlhext: The command link button (`CButton`), the pager control (`CPagerCtrl`), the split button (`CSplitButton`), and the network address control (`CNetAddressCtrl`). |
+| [Circ](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates ActiveX control basics. These include control painting, stock and custom properties, stock and custom events, use of colors and fonts, the stock font property page, the default property page, and versioning. |
+| [CmnCtrl](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates some of the new controls available with MFC on Windows Vista: The command link button (`CButton`), the pager control (`CPagerCtrl`), the split button (`CSplitButton`), and the network address control (`CNetAddressCtrl`). |
 | [Contain](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates a Visual Editing Container Application. |
 | [Image](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates how to use MFC to build an ActiveX control that downloads data asynchronously. |
 | [Licensed](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | A control that enforces use of a design-time and run-time license. |
 | [Localize](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | A control with a localized user interface that demonstrates use of separate type libraries and resource dynamic-link libraries (DLLs) for localization. |
-| [NetAddr](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates use of the Windows Vista "Net Address Verifier" control. |
+| [NetAddr](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates use of the Windows Vista *Net Address Verifier* control. |
 | [Pal](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Control that displays the colors of a palette. It demonstrates read-only properties, persistent Get/Set properties, persistent parameterized properties, and picture properties. |
 | [Push](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Control subclassed from a Windows owner-drawn button control. It demonstrates stock properties, custom events, and picture holders. |
 | [RegSvr](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/controls) | Demonstrates the invocation of Self-Registration Code. |
@@ -227,7 +243,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 | [CtrlBars](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Custom toolbar and status bar, dialog bar, and floating palette. |
 | [CtrlTest](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Owner-draw list box and menu, custom control, bitmap button, spin control. |
 | [DBVList](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Uses the `CListView` and `CDaoRecordset` classes to implement the virtual list view functionality available for the list view common control. |
-| [DIBLook](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Demonstrates the Use of DIBs and Color Palettes. |
+| [DIBLook](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Demonstrates the use of DIBs and color palettes. |
 | [DlgCbr32](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Adding a toolbar and a status bar to a dialog-based application. |
 | [DlgTempl](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Demonstrates the dynamic creation of dialog templates. |
 | [DockTool](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/general) | Dragging and floating toolbars that are dockable. |
@@ -258,23 +274,23 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 |--|--|
 | [DHTMLExplore](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/internet) | Demonstrates handling DHTML events and using DHTML DDX. |
 | [HTMLEdit](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/internet) | Wraps the Internet Explorer MSHTML editing control. |
-| [MFCIE](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/internet) | Demonstrates the MFC `CHtmlView` and `CReBar` Classes. |
+| [MFCIE](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/internet) | Demonstrates the MFC `CHtmlView` and `CReBar` classes. |
 | [Scheduler](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/internet) | Demonstrates how to create an HTML-based dialog box using the Visual C++ libraries classes. |
 
 ### MFC samples - OLE
 
 | Sample name | Description |
 |--|--|
-| [ACDual](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Demonstrates how to add dual interface support to an MFC-based Automation server. |
-| [AutoClik](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Illustrates Automation features. Includes AUTODRIV, a simple Automation client application that drives the AUTOCLIK sample application. |
+| [ACDual](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Demonstrates how to add dual interface support to an MFC-based automation server. |
+| [AutoClik](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Illustrates automation features. Includes AUTODRIV, a simple Automation client application that drives the AUTOCLIK sample application. |
 | [CalcDriv](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Automation client. |
 | [DrawCli](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Full-featured object-oriented drawing application that is also an ActiveX Visual Editing container. |
-| [HierSvr](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Demonstrates a Server Application with OLE Drag and Drop. |
-| [InProc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | An in-process Automation server that can be loaded as a DLL in the client's address space. |
-| [IPDrive](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | A simple Automation client application that drives the INPROC sample application. |
-| [MFCBind](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Shows how to create an Active document (formerly known as a DocObject) container. |
-| [MFCCalc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | An Automation server that implements a simple calculator. |
-| [OClient](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | ActiveX Visual Editing container application, with drag and drop. |
+| [HierSvr](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Demonstrates a server application with OLE Drag and Drop. |
+| [InProc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | An in-process automation server that can be loaded as a DLL in the client's address space. |
+| [IPDrive](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | A simple automation client application that drives the INPROC sample application. |
+| [MFCBind](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Shows how to create an active document (formerly known as a DocObject) container. |
+| [MFCCalc](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | An automation server that implements a simple calculator. |
+| [OClient](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | ActiveX visual editing container application, with drag and drop. |
 | [OLEView](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Implementing an OLE object browser through custom OLE interfaces. |
 | [SuperPad](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Demonstrates a visual editing server that edits text using CEditView. |
 | [TstCon](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/ole) | Implements an ActiveX control container using MFC's support for OLE embedding. You can use TSTCON to test ActiveX controls, change their properties, and invoke their methods. |
@@ -306,7 +322,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 | [OutlookDemo](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Demonstrates how to create an application similar to Outlook 2003/2007. |
 | [OutlookMultiViews](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Demonstrates how to switch between multiple views on a single document in an SDI application. The sample uses the Outlook bar control to list the available views and switch between them. |
 | [OwnerDrawMenu](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Illustrates how to draw popup menu items dynamically. |
-| [PaletteDemo](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Illustrates how to create a multi-column toolbar with an owner-draw information area. Click 2, 3 or 4 buttons on the Standard toolbar to change at runtime the number of columns of the custom toolbar. |
+| [PaletteDemo](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Illustrates how to create a multi-column toolbar with an owner-draw information area. Click 2, 3, or 4 buttons on the Standard toolbar to change at runtime the number of columns of the custom toolbar. |
 | [PropSheetDemo](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Illustrates the following types of Property Sheet control: simple, with tabs at the left side, with tree control at the left side, OneNote-style tabs, list of items at the left side. |
 | [RebarTest](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Demonstrates a customizable Rebar control that hosts a toolbar. |
 | [RibbonGadgets](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack) | Illustrates various controls that can be hosted in the Ribbon Control. At the bottom of the main frame, you can find the Source Code window with source code text, which outlines how to create a particular gadget. |
@@ -349,7 +365,7 @@ Visual Studio included C++ sample code in previous versions. The sample code was
 
 | Sample name | Description |
 |--|--|
-| [Unix - ccWrapper](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples) | Demonstrates a wrapper that maps flags from the Sun Forte and gcc compilers to the Microsoft Visual C++ compiler (cl.exe). |
+| [Unix - ccWrapper](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples) | Demonstrates a wrapper that maps flags from the Sun Forte and gcc compilers to the Microsoft Visual C++ compiler (`cl.exe`). |
 
 ## Windows 8 samples
 
@@ -362,27 +378,27 @@ More information is available about the programming models, platforms, languages
 | [Background Transfer sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the power-friendly, cost-aware, and flexible behavior of the Background Transfer API for Windows Runtime applications. Provided sample scenarios cover file downloads and uploads. |
 | [CryptoWinRT sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the new Cryptography APIs. |
 | [Print sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how apps can integrate the Windows print experience. The scenarios demonstrated in this sample include: Printing from the app by using the charms bar and the print contract, Printing from within the app experience, and more. |
-| [HttpClient sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the use of the HttpClient class and the IXMLHTTPRequest2 interface to upload and download various types of content from an HTTP server using the networking features provided by the Windows Runtime. |
-| [Accelerometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Accelerometer` API. This sample allows the user to view the acceleration forces along the X-, Y-, and Z-axes for a 3-axis accelerometer. You can choose one of three scenarios. |
+| [HttpClient sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the use of the `HttpClient` class and the `IXMLHTTPRequest2` interface to upload and download various types of content from an HTTP server using the networking features provided by the Windows Runtime. |
+| [Accelerometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Accelerometer` API. This sample allows the user to view the acceleration forces along the X-, Y-, and Z-axes for a three-axis accelerometer. You can choose one of three scenarios. |
 | [Account picture name sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates different ways of getting the name of the user that is currently logged in. It also demonstrates how to get and set the image used for the user's tile. |
 | [App settings sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the ApplicationSettings API and settings flyouts to integrate an app's settings UI with the Settings charm. The sample uses the `Windows.UI.ApplicationSettings` namespace and `WinJS.UI.SettingsFlyout`. |
 | [Windows Store device app for camera sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to create a Windows Store device app for a camera. A Windows Store device app is provided by an IHV or OEM to differentiate the capture experience for a particular camera. |
 | [Getting started with C++ simple blog reader sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The sample demonstrates some basic principles of Windows Store app development in native C++ using XAML to define the user interface. It's a complete working version of the application discussed on the Windows Developer Center. |
-| [Reading and writing data sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the DataReader and DataWriter classes to store and retrieve data. |
+| [Reading and writing data sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `DataReader` and `DataWriter` classes to store and retrieve data. |
 | [Application data sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows you how to store and retrieve data that is specific to each user and Windows Store app using the Windows Runtime application data APIs. Application data includes session state, user preferences, and other settings. |
-| [Custom driver access sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use CreateDeviceAccessInstance and IDeviceIoControl to access a specialized device. |
+| [Custom driver access sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use `CreateDeviceAccessInstance` and `IDeviceIoControl` to access a specialized device. |
 | [XAML ListView and GridView essentials sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the GridView and ListView controls. |
 | [Animation metrics sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the Animation Metrics APIs in `Windows.UI.Core.AnimationMetrics` to access the raw parameters that define the animations in the Windows Animation Library. |
-| [Playback Manager msAudioCategory sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to select the correct msAudioCategory category for an audio-video (AV) stream to configure it as an audio playback stream. |
+| [Playback Manager msAudioCategory sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to select the correct `msAudioCategory` category for an audio-video (AV) stream to configure it as an audio playback stream. |
 | [XAML DirectX  3D shooting game sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the implementation of a simple first person 3-D game using DirectX (Direct3D 11.1, Direct2D, XInput, and XAudio2) and XAML in a C++ app. XAML is used for the heads-up display and game state messages. |
 | [XAML scrolling, panning, and zooming sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the ScrollViewer control to pan and zoom. |
 | [XAML FlipView control sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the FlipView control to enable users to flip through a collection. |
-| [Gyrometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Gyrometer` API. This sample allows the user to view the angular velocity along the X-, Y-, and Z-axis for a 3-axis gyrometer. |
+| [Gyrometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Gyrometer` API. This sample allows the user to view the angular velocity along the X-, Y-, and Z-axis for a three-axis gyrometer. |
 | [Device app for printers SDK sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to create a device app for printers that can be activated from the tile contract, the printTaskSettings contract, and from toast displayed by backgroundTask in response to print driver event. |
 | [Background task sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows you how to create and register background tasks using the Windows Runtime background task API. A background task is triggered by a system or time event, and can be constrained by one or more conditions. |
-| [StreamSocket sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the basics of the StreamSocket class using the networking features provided by the Windows Runtime. The client component of the sample creates a TCP socket to make a network connection, uses the socket to send data, and more. |
+| [StreamSocket sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the basics of the `StreamSocket` class using the networking features provided by the Windows Runtime. The client component of the sample creates a TCP socket to make a network connection, uses the socket to send data, and more. |
 | [Scheduled notifications sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use scheduled and recurring tile updates and toast notifications for an app. This ability enables you to specify a precise time to deliver the notification, even if the app isn't running. |
-| [Playback Manager Companion Sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to select the correct msAudioCategory category for an audio-video stream to configure it as an audio playback stream. |
+| [Playback Manager Companion Sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to select the correct `msAudioCategory` category for an audio-video stream to configure it as an audio playback stream. |
 | [OrientationSensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.OrientationSensor` API. It allows the user to view the rotation matrix and Quaternion values that reflect the current device orientation. |
 | [File access sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to create, read, write, copy and delete a file, how to retrieve file properties, and how to track a file or folder so that your app can access it again. This sample uses `Windows.Storage` and `Windows.Storage.AccessCache` API. |
 | [Removable storage sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The removable storage sample demonstrates how to transfer files to and from removable storage devices. This sample requires a removable storage device connected to the system, such as a camera, media player, cellular phone, or a USB thumb drive. |
@@ -397,7 +413,7 @@ More information is available about the programming models, platforms, languages
 | [DirectX 3D shooting game sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the implementation of a simple first person 3-D game using DirectX (Direct3D 11.1, Direct2D, XInput, and XAudio2) in a C++ app. |
 | [XAML AppBar control sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the AppBar control to present navigation, commands, and tools to users. The app bar is hidden by default and appears when users swipe a finger from the top or bottom edge of the screen. |
 | [Date and time formatting sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the DateTimeFormatter class in the `Windows.Globalization.DateTimeFormatting` namespace to display dates and times according to the user's preferences. |
-| [Secondary tiles sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to pin and use a secondary tile. That's a tile that directly accesses a specific, non-default section or experience within an app, such as a saved game, or a specific friend in a social networking app. |
+| [Secondary tiles sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to pin and use a secondary tile. That's a tile that directly accesses a specific, nondefault section or experience within an app, such as a saved game, or a specific friend in a social networking app. |
 | [Input Touch hit testing sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample uses a polygon shapes puzzle to demonstrate how to handle pointer input, implement custom hit testing for touch input, and process manipulations in a Windows Store app using C++ and DirectX. |
 | [Network information  sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the Windows Runtime Network Information APIs. |
 | [Input Simplified ink sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use ink functionality in Windows Store apps. |
@@ -406,11 +422,11 @@ More information is available about the programming models, platforms, languages
 | [Check if current session is remote sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the use of `Windows.System.RemoteDesktop` API. |
 | [Application resources and localization sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use application resources to separate localizable content from application code. The sample uses the `Windows.ApplicationModel.Resources.Core` and `Windows.Globalization` namespaces, and `WinJS.Resources`. |
 | [Context menu sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to create a context menu and how to replace the default context menu for text. This sample uses `Windows.UI.Popups` API, including the PopupMenu and the oncontextmenu event. |
-| [Geolocation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The Geolocation sample demonstrates how to use the Geolocation API to get the geographic location of the user's PC. An app can use the Geolocation API to get location one time, or it can continuously track the location. |
+| [Geolocation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The Geolocation sample demonstrates how to use the Geolocation API to get the geographic location of the user's PC. An app can use the `Geolocation` API to get location one time, or it can continuously track the location. |
 | [Message dialog sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use a MessageDialog for displaying dialogs, setting commands and their actions, and changing the default button. The `Windows.UI.Popups` namespace contains the MessageDialog class. |
 | [MediaStreamSource media extension sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to support the Microsoft Silverlight MediaStreamSource concept in a Windows Store app. |
 | [DirectWrite vertical text sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample uses DirectWrite and Direct2D to properly display vertical text in a custom layout shape. |
-| [DXGI swap chain rotation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the IDXGISwapChain1::SetRotation method and how you can use the method in conjunction with prerotated content to improve presentation performance. |
+| [DXGI swap chain rotation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the IDXGISwapChain1::SetRotation method and how you can use the method with prerotated content to improve presentation performance. |
 | [Direct2D custom image effects sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to implement custom Direct2D Effects using standard pixel, vertex, and compute shaders. |
 | [DirectX touch input sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates touch and mouse navigation of a 3-D environment in a C++ app with Direct3D. |
 | [XInput game controller sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the use of the XInput APIs in a C++ app. It reads input from an Xbox game controller and displays data about the analog stick movements and button presses. |
@@ -425,14 +441,14 @@ More information is available about the programming models, platforms, languages
 | [Display orientation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the `DisplayProperties` class to set the display orientation in an app. |
 | [Direct2D interpolation modes sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows the various interpolation modes used by Direct2D. |
 | [Globalization preferences sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the `Windows.System.UserProfile.GlobalizationPreferences` class to obtain the user's globalization preferences. It also shows how to use the `GeographicRegion` and `Language` classes. |
-| [Direct2D geometry realization sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how multi-core geometry tessellation can help reduce geometry rendering time. Using opacity masks and meshes is an alternative to traditional geometry rendering that may be better in some situations. |
+| [Direct2D geometry realization sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how multi-core geometry tessellation can help reduce geometry rendering time. Using opacity masks and meshes is an alternative to traditional geometry rendering that might be better in some situations. |
 | [Language font mapping sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to obtain language-specific font recommendations using the `LanguageFontGroup` class in the `Windows.Globalization.Fonts` namespace. |
-| [Inclinometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Inclinometer` API. This sample allows the user to view the angles of incline about the X-, Y-, and Z-axis for a 3-axis inclinometer. |
+| [Inclinometer sensor sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Devices.Sensors.Inclinometer` API. This sample allows the user to view the angles of incline about the X-, Y-, and Z-axis for a three-axis inclinometer. |
 | [XAML high contrast style sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates various techniques for implementing support for high contrast mode in your app. Support for high contrast mode is important to make your app accessible to people with eyesight problems. |
 | [Input Device capabilities sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to query the input devices that are connected to the user's device. And, how to support the pointer, touch, pen/stylus, mouse, and keyboard input modes of Windows Store apps. |
 | [EAS policies for mail clients sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how mail clients can retrieved device information and work with supplied Exchange Active Sync (EAS) policies. Windows Store apps can configure their mail clients to stay compliant with the given EAS policies. |
 | [DatagramSocket sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the basics of the `DatagramSocket` class using the networking features provided by the Windows Runtime. The client component of the sample creates a UDP socket, uses the socket to send and receive data, and closes the socket. |
-| [DirectWrite hello world sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use DirectWrite and Direct2D to render the text "Hello World" to a `CoreWindow`. |
+| [DirectWrite hello world sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use DirectWrite and Direct2D to render the text *Hello World* to a `CoreWindow`. |
 | [Compression sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to read structured data from a file and write compressed data to a new file and how to read compressed data and write decompressed data to a new file. Many applications need to compress and decompress data. |
 | [Network status background sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to determine a change in Internet connection profile by registering a background task handler for Network Status Change event using an Internet Present condition. |
 | [App package information sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows you how to get package information using the Windows Runtime packaging API. Users acquire your Windows Store app as an app package. Windows uses the information in an app package to install the app on a per-user basis. |
@@ -473,7 +489,7 @@ More information is available about the programming models, platforms, languages
 | [Playlist sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to create, save, display, and edit a playlist of audio files. This sample uses classes that are in the `Windows.Media.Playlists` namespace. |
 | [Media Server client sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to create a Media Server client using the Media Server API. The Media Server sample demonstrates how to browse a Digital Media Server programmatically on your local network, and display all of its video files. |
 | [Direct2D magazine app sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use Direct2D, DirectWrite, Windows Imaging Component (WIC), and XAML to build an app with a magazine-type presentation. |
-| [Mobile broadband account and device management sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the Windows 8 Mobile Broadband API (`Windows.Networking.NetworkOperators`) employed by Mobile Network Operators (MNO). It demonstrates how to use the MobileBroadbandAccount APIs to retrieve and display available Mobile Broadband accounts. |
+| [Mobile broadband account and device management sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the Windows 8 Mobile Broadband API (`Windows.Networking.NetworkOperators`) employed by Mobile Network Operators (MNO). It demonstrates how to use the `MobileBroadbandAccount` APIs to retrieve and display available Mobile Broadband accounts. |
 | [Proximity sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the `PeerFinder` and `ProximityDevice` classes to communicate with nearby computers. You can use the `Proximity` API to exchange small messages during a tap gesture or set up a socket connection between peer apps. |
 | [Creating a Windows Runtime in-process component sample (C++CX) (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to create a component in C++/CX that's used in C++/CX, JavaScript, and C# client code. The OvenServer project contains a runtime class named `Oven`, which implements an `IOven` interface and an `IAppliance` interface. |
 | [Device auto rotation preferences sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `DisplayProperties` class to handle and verify device rotation events. |
@@ -495,14 +511,14 @@ More information is available about the programming models, platforms, languages
 | [Device enumeration sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the Device Enumeration API to find available devices and look for device information. The sample presents two scenarios: In the first scenario, the Device Enumeration API is used to look for specific device interfaces. |
 | [DirectWrite paragraph text sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use DirectWrite and Direct2D to render paragraph text to a `CoreWindow`. And, apply justification and character spacing to the layout. |
 | [Responding to the appearance of the on-screen keyboard sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | [This documentation is preliminary and is subject to change.] This sample shows how to listen for and respond to the appearance of the onscreen soft keyboard. When focus is given to an element that requires text input on a device that  doesn't have a keyboard. |
-| [XAML data binding sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates basic data binding techniques using the Binding class and Binding markup extension. |
+| [XAML data binding sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates basic data binding techniques using the `Binding` class and `Binding` markup extension. |
 | [Direct3D tutorial sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample is a five-lesson tutorial. It provides an introduction to the Direct3D API, and introduces the concepts and code used in many of the other DirectX samples. |
 | [Direct2D effects photo adjustment app sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows various common photo manipulation techniques using Direct2D Effects. This sample is divided into several parts. Lesson 1: Shows the basics of loading and drawing an image using Direct2D Effects. |
 | [Windows Audio Session (WASAPI) sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | Demonstrates how to do various audio related tasks using the Windows Audio Session API (WASAPI). |
 | [User domain name sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the domain-related functionality provided by the `UserInformation` class of the `Windows.System.UserProfile` namespace. The UserInformation class enables an app to get and set information about the user. |
 | [USSD message management sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates network account management using the USSD protocol with GSM-capable mobile broadband devices. USSD is typically used for account management of a mobile broadband profile by the Mobile Network Operator (MNO). |
 | [Bing Maps Trip Optimizer sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The sample demonstrates how to use JavaScript and Visual C++ and to create app for Windows 8 named Bing Maps Trip Optimizer. Bing Maps Trip Optimizer uses JavaScript to define the UI, and C++ for a computationally expensive algorithm in parallel. |
-| [Direct2D and DirectWrite animated text on a path sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use Direct2D and DirectWrite to render a string of text along an animated, non-linear geometric path. The app renders "Hello, World!" repeated several times in different languages along a Bezier curve. |
+| [Direct2D and DirectWrite animated text on a path sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use Direct2D and DirectWrite to render a string of text along an animated, nonlinear geometric path. The app renders "Hello, World!" repeated several times in different languages along a Bezier curve. |
 | [Wi-Fi hotspot authentication sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the Windows 8 Mobile Broadband API (`Windows.Networking.NetworkOperators`) for Wi-Fi hotspot authentication. Use this mechanism as an alternative to configuring static credentials for a Wi-Fi hotspot. |
 | [XAML images sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates various techniques for displaying and manipulating images in your app using the Image control and the BitmapImage class. |
 | [HomeGroup app sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use a `HomeGroup` to open, search, and share files. This sample uses some of the `HomeGroup` options found in the `Windows.Storage.Pickers` and `Windows.Storage.KnownFolders`. |
@@ -527,9 +543,9 @@ More information is available about the programming models, platforms, languages
 | [Direct2D command list sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the use of a command list. It's used for recording a set of vector commands, creating an image brush from the command list, and then filling a rectangle geometry with it. The command list preserves resolution independence of the vector. |
 | [ControlChannelTrigger XMLHTTPRequest sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | The sample shows how to use the `ControlChannelTrigger` class to enable a Windows Store app using `IXMLHTTPRequest2` to be always connected and always reachable. This sample demonstrates the use of background network notifications in a Windows Store app. |
 | [XInput and JavaScript controller sketch sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to wrap the XInput C++ API in a Windows Runtime component. Then, it calls it from a Windows Store app using JavaScript. This sample implements a sketch app that lets you use the Xbox game controller to select line thickness and more. |
-| [Direct2D convolve matrix effect sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the Direct2D Effects convolve matrix effect. This sample has some example convolution kernel matrices: Passthrough (no-op), Box blur (width 5), Simple edge detect, Simple sharpen, Emboss, Vertical smear (height 10) theses and more. |
+| [Direct2D convolve matrix effect sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates the Direct2D Effects convolve matrix effect. This sample has some example convolution kernel matrices: Passthrough (no-op), Box blur (width 5), Simple edge detect, Simple sharpen, Emboss, Vertical smear (height 10) these and more. |
 | [DirectX swap chain implementation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to receive `CoreWindow` events in a native application, and how to connect a DirectX swap chain to the application view. |
-| [Credential picker sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Security.Credentials.UI.CredentialPicker` class to retrieve credentials. These credentials may be passed to APIs that require them, for example, `HttpClient`. |
+| [Credential picker sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use the `Windows.Security.Credentials.UI.CredentialPicker` class to retrieve credentials. These credentials might be passed to APIs that require them, for example, `HttpClient`. |
 | [Direct2D animation sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to use Direct2D to render and animate a Direct2D primitive along a spiral path. |
 | [Sharing content target app sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how an app can receive content shared from another app. This sample uses classes from the `Windows.ApplicationModel.DataTransfer` and `Windows.ApplicationModel.DataTransfer.Share` namespaces. |
 | [Direct2D save to image file sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to render to the screen using Direct2D and DirectWrite. And, how to save the rendered image to disk using the WIC API. |
@@ -537,7 +553,7 @@ More information is available about the programming models, platforms, languages
 | [Creating a Windows Runtime in-process component sample (C#) (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to create a component in C# that's used in C++/CX, JavaScript, and C# client code. The OvenServer project contains a runtime class named `Oven`, which implements an `IOven` interface and an `IAppliance` interface. |
 | [Push and periodic notifications client-side sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how a client app can register and listen for push notifications sent from a web server. Push notifications can be used to update a badge or a tile, raise a toast notification, or launch a background task. |
 | [Portable device API sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample shows how to access the `IPortableDevice` COM API from a C++ app. To learn how to access the `IPortableDevice` COM API from a Desktop C++ app, refer to the Portable Devices COM API Sample. |
-| [PlayToReceiver sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to create a software Play To receiver. To advertise the software Play To Receiver, click the Start Receiver button. To stop the receiver, click the Stop Receiver button. |
+| [PlayToReceiver sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to create a software Play To receiver. To advertise the software Play To receiver, select the **Start Receiver** button. To stop the receiver, select the **Stop Receiver** button. |
 | [Lock screen personalization sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the `LockScreen` API to set the current user's lock screen image. This sample uses classes from the `Windows.System.UserProfile` namespace. |
 | [Credential locker sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates how to use the WinRT `PasswordVault` APIs, and how to use the credential locker to store web credentials. Specific scenarios include a single user with a single resource, and multiple users with a single resource. |
 | [Media engine native C++ video playback sample (Windows 8)](https://github.com/Microsoft/VCSamples/tree/master/VC2012Samples/Windows%208%20samples/C%2B%2B/Windows%208%20app%20samples) | This sample demonstrates video playback using the `MediaEngine` API in a native C++ app. |
diff --git a/docs/overview/what-s-new-for-cpp-2017.md b/docs/overview/what-s-new-for-cpp-2017.md
index d6cf9b9e02..ada04edf00 100644
--- a/docs/overview/what-s-new-for-cpp-2017.md
+++ b/docs/overview/what-s-new-for-cpp-2017.md
@@ -420,7 +420,7 @@ The Clang/C2 toolset that ships with Visual Studio 2017 now supports the **`/big
 
 The C++ Core Checkers for enforcing the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) are now distributed with Visual Studio. Enable the checkers in the **Code Analysis Extensions** page in the project's property pages. The extensions are then included when you run code analysis. For more information, see [Using the C++ Core Guidelines checkers](../code-quality/using-the-cpp-core-guidelines-checkers.md).
 
-![Screenshot of the Property Pages dialog box showing Configuration Properties > Code Analysis > General selected and a number of Core Checks listed in teh Run this rule set section.](media/CppCoreCheck.png "CppCoreCheck properties page")
+![Screenshot of the Property Pages dialog box showing Configuration Properties > Code Analysis > General selected and a number of Core Checks listed in the Run this rule set section.](media/CppCoreCheck.png "CppCoreCheck properties page")
 
 ##### Visual Studio 2017 version 15.3
 
diff --git a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md
index a24cc6cb36..c603b8f916 100644
--- a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md
+++ b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md
@@ -1,7 +1,7 @@
 ---
 title: "What's new for C++ in Visual Studio"
 description: "The new features and fixes in the Microsoft C/C++ compiler and tools in Visual Studio."
-ms.date: 11/12/2024
+ms.date: 05/13/2025
 ms.service: "visual-cpp"
 ms.subservice: "ide"
 ms.custom: intro-whats-new
@@ -12,10 +12,149 @@ ai-usage: ai-assisted
 
 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application.
 
-- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022?view=vs-2022&preserve-view=true).
-- For information about what's new in the C++ docs, see [Microsoft C++ docs: What's new](./whats-new-cpp-docs.md).
+- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022).
 - For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history).
 
+## What's new for C++ in Visual Studio version 17.14
+
+*Released May 2025*
+
+| For more information about | See |
+|---|---|
+| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) |
+| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) |
+| New features in the IDE |[Visual Studio 2022 version 17.14 Release Notes](/visualstudio/releases/2022/release-notes) |
+| C++ language updates  | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) |
+| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) |
+
+A quick highlight of some of the new features:
+
+- C++ Dynamic Debugging allows you to debug optimized code without impacting performance. For more information, see [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging).
+- Implemented C++23 features (requires `/std:c++latest` or `/std:c++23preview`):
+  - [`static operator()`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1169r4.html)
+  - [`static operator[]`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2589r1.pdf)
+  - [`if consteval`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1938r3.html). Allows you to run different code depending on whether the statement is executed at compile time or run time.
+- Automatically generate documentation comments with GitHub Copilot. For more information, see [Introducing automatic documentation comment generation in Visual Studio](https://devblogs.microsoft.com/visualstudio/introducing-automatic-documentation-comment-generation-in-visual-studio/).
+- Use the Model Picker in Visual Studio to select your AI model for GitHub Copilot. For more information, see [Changing the AI model for Copilot Chat](https://docs.github.com/en/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat). This screenshot shows the Model Picker at the bottom of the GitHub Copilot chat window:
+    :::image type="complex" source="./media/model-picker.png" alt-text="A screenshot of the GitHub Copilot chat window with the Model Picker dropdown highlighted.":::
+    The dropdown for the Model Picker is open. The options include: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking, and others.
+    :::image-end:::
+- Unreal Engine integration improvements:
+    - The Visual Studio C++ debugger now supports Unreal Engine Blueprints.
+    - Commands for building files, modules, and plugins are available natively in Visual Studio.
+- New compiler flag [/forceInterlockedFunctions](../build/reference/force-interlocked-functions.md) dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 Large System Extension (LSE) atomic instructions based on CPU capability at runtime.
+- Added support for IntelliSense-based completions and quick info for CMake modules in Visual Studio. You can view all available CMake modules and when you hover over a referenced CMake module, IntelliSense provides more info about the selected module:
+    :::image type="complex" source="./media/cmake-module-intellisense.png" alt-text="A screenshot of intellisense explaining C Make Print Helpers.":::
+    The screenshot is of an edit in the C Make Lists .txt file. The cursor is on include ( CMakePrintHelpers ). Intellisense says: Convenience functions for printing properties and variables, useful for debugging.
+    :::image-end:::
+
+    When you start typing a CMake module name in your `CMakeLists.txt` or other CMake script files, IntelliSense provides a list of available modules to choose from:
+    :::image type="complex" source="./media/cmake-intellisense.png" alt-text="A screenshot of intellisense for a include statement.":::
+    The screenshot is of an edit in the C Make Lists .txt file. The cursor is on include ( C Make. The Intellisense dropdown contains entries for C Make Add Fortran Subdirectory, C Make Dependent Option, and more.
+    :::image-end:::
+- Guidelines Support Library (GSL) 4.2.0: This release includes performance improvements for `gsl::span`, new features, and better alignment with C++ standards. For more information, see [Announcing Guidelines Support Library v4.2.0](https://devblogs.microsoft.com/cppblog/announcing-guidelines-support-library-v4-2-0/).
+
+## What's new for C++ in Visual Studio version 17.13
+
+*Released February 2025*
+
+| For more information about | See |
+|---|---|
+| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-13/) |
+| Standard Library (STL) C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713) |
+| New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes) |
+| C++ language updates  | [MSVC compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-updates-in-visual-studio-2022-version-17-13/) |
+| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.13](cpp-conformance-improvements.md#improvements_1713) |
+
+A quick highlight of some new features:
+
+- **C++ language enhancements**
+
+  - Try out C++23 preview features by setting the C++ Language Standard to `/std:c++23preview`. This setting enables the latest C++23 features and bug fixes. For more information, see [/std (Specify Language Standard Version)](../build/reference/std-specify-language-standard-version.md#stdc23preview).
+  - Support for C++23’s `size_t` literal suffix, which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example:
+    ```cpp
+    // Infinite loop if v.size > max unsigned int 
+    for (auto i = 0u; i < v.size(); ++i)
+    { 
+      ...
+    } 
+    
+    // Fixed because of uz literal 
+    for (auto i = 0uz; i < v.size(); ++i)
+    { 
+      ...
+    } 
+    ```
+
+  - Support for vector lengths for code generation on x86 and x64. For more information, see [/vlen](../build/reference/vlen.md).
+  - Support for Intel Advanced Vector Extensions 10 version 1. For more information about `/arch:AVX10.1`, see [/arch (x64)](../build/reference/arch-x64.md).
+
+- **Standard Library enhancements**
+
+  - Standard library support for couroutines. In this example from [P2502R2](https://wg21.link/p2502r2), the `fib` function is a coroutine. When the `co_yield` statement is executed, `fib` is suspended and the value is returned to the caller. You can resume the `fib` coroutine later to produce more values without requiring any manual state handling:
+
+    ```cpp
+    std::generator<int> fib()
+    { 
+      auto a = 0, b = 1; 
+   
+      while (true)
+      { 
+          co_yield std::exchange(a, std::exchange(b, a + b)); 
+      }
+    } 
+      
+    int answer_to_the_universe()
+    { 
+      auto rng = fib() | std::views::drop(6) | std::views::take(3); 
+      return std::ranges::fold_left(std::move(range), 0, std::plus{}); 
+    } 
+    ```
+
+ - Moved `system_clock`, `high_resolution_clock`, and `chrono_literals` from a commonly included internal header to `<chrono>`. If you see compiler errors that types like `system_clock` or user-defined literals like `1729ms` aren't recognized, include `<chrono>`.
+  - Improved the vectorized implementations of `bitset` constructors from strings, `basic_string::find_last_of()`, `remove()`, `ranges::remove`, and the `minmax_element()` and `minmax()` algorithm families.
+  - Added vectorized implementations of:
+    - `find_end()` and `ranges::find_end` for 1-byte and 2-byte elements.
+    - `basic_string::find()` and `basic_string::rfind()` for a substring.
+    - `basic_string::rfind()` for a single character.
+  - Merged C++23 Defect Reports:
+    - [P3107R5](https://wg21.link/P3107R5) Permit an efficient implementation of `<print>`.
+    - [P3235R3](https://wg21.link/P3235R3) `std::print` More types faster with less memory.
+
+- **GitHub Copilot**
+
+  - GitHub Copilot Free is now available. Get 2,000 code completions and 50 chat requests per month at no cost.
+  - GitHub Copilot code completions provide autocomplete suggestions inline as you code. To enhance the experience of C++ developers, GitHub Copilot includes other relevant files as context. This reduces errors while offering more relevant and accurate suggestions.
+  - You can now request a code review from GitHub Copilot from the Git Changes window:
+    :::image type="complex" source="./media/vs2022-copilot-git-changes-review.png" alt-text="A screenshot of the Git Changes window with the GitHub Copilot Review button highlighted.":::
+    The Git Changes window is open with the GitHub Copilot Review button highlighted.
+    :::image-end:::
+
+    GitHub Copilot looks for potential issues and creates comments for them:
+
+    :::image type="complex" source="./media/vs2022-copilot-comment-example.png" alt-text="A screenshot of the GitHub Copilot explaining an issue.":::
+    GitHub Copilot found an issue with the line if ( is_enabled_) new_site.disable(). It says it may be a mistake and should likely be if ( is_enabled_) new_site.enable() because the intention seem to be enabling the new site if the breakpoint is enabled.
+    :::image-end:::
+
+    To use this feature, ensure the following are turned on:
+      - **Tools**>**Options**> **Preview Features** > **Pull Request Comments**
+      - **Tools** >**Options** > **GitHub** > **Copilot** > **Source Control Integration** > **Enable Git preview features**.
+
+  - GitHub Copilot Edits is a new feature that can make changes across multiple files in your project. To start a new Edits session, click **Create new edit session** at the top of the GitHub Copilot Chat window:
+
+    :::image type="content" source="./media/vs2022-copilot-edit-session.png" alt-text="A screenshot of the GitHub Copilot Chat window. The Create new edit session button is highlighted.":::
+
+    Describe the changes you want to make and Copilot suggests relevant edits. You can preview the edits one-by-one and accept the ones you want or make corrections:
+
+    :::image type="complex" source="./media/vs2022-copilot-edit-session-example.png" alt-text="A screenshot of the GitHub Copilot Chat window displaying the files it edited.":::
+    GitHub Copilot is displaying a summary of the changes it made, such as 1. Create a new subclass range_breakpoint in include/libsdb/breakpoint.hpp" and 2. Implement the range_breakpoint class in src/breakpoint.cpp. An option to accept the changes is displayed.
+    :::image-end:::
+
+    For more information, see [Iterate across multiple files more efficiently with GitHub Copilot Edits](https://devblogs.microsoft.com/visualstudio/iterate-across-multiple-files-more-efficiently-with-github-copilot-edits-preview/).
+
+- **CMake**
+  - Now supports CMake Presets v9. New macro expansions in a preset's include field. For more information, see [Macro expansion](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html#macro-expansion) in the official CMake documentation.
+
 ## What's new for C++ in Visual Studio version 17.12
 
 *Released November 2024*
@@ -23,7 +162,7 @@ Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler a
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.12](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-12/) |
-| Standard Library (STL) merged C++26 and C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.12](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1712) |
+| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.12](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1712) |
 | New features in the Visual Studio 17.12 IDE |[Visual Studio 2022 version 17.12 Release Notes](/visualstudio/releases/2022/release-notes) |
 | C++ language conformance improvements in Visual Studio 2022 17.12 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.12](cpp-conformance-improvements.md#improvements_1712) |
 
@@ -48,7 +187,7 @@ A quick highlight of some of the new features:
   :::image type="complex" source="./media/copilot-smart-variable-inspection.png" alt-text="A screenshot of the Autos window. The variable named it is NULL. The Ask Copilot icon next to it is highlighted.":::
   The code that caused this problem is: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).
   :::image-end:::
-  If you click Ask Copilot icon for the `it` variable, it will tell you why it is `<NULL>`:
+  If you click Ask Copilot icon for the `it` variable, it tells you why it is `<NULL>`:
   :::image type="complex" source="./media/copilot-smart-variable-explanation.png" alt-text="A screenshot of a GitHub Copilot window.":::
   This error is inside a function defined as int calculate_number_of_cats(const house& h). The GitHub Copilot message says: "The value of the expression it is NULL, which means that the iterator is not pointing to any valid element in the vector animals_. In the context of your program, it is supposed to iterate over the animals_ vector in the house object to count the number of cat objects. Why it is null. Based on the locals and call stack context: the house object h has an empty animals_ vector (size=0). The loop condition it <= h.animals_.end() is incorrect. It should be it != h.animals_.end()."
   :::image-end:::
@@ -63,7 +202,7 @@ A quick highlight of some of the new features:
 - **Debugging**
   - New debug visualizers for `mutex`, `recursive_mutex`, and `move_iterator`.
   - The debugger now displays return values inline:
-  :::image type="content" source="./media/debugger-inline-return-values.png" alt-text="A screenshot of a tooltip showing the value 8.25. It is the result of the expression following the return statement that was  stepped over.":::
+  :::image type="content" source="./media/debugger-inline-return-values.png" alt-text="A screenshot of a tooltip showing the value 8.25. It's the result of the expression following the return statement that was stepped over.":::
 
 ## What's new for C++ in Visual Studio version 17.11
 
@@ -72,7 +211,7 @@ A quick highlight of some of the new features:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.11](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-11/) |
-| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.11](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1711) |
+| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.11](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1711) |
 | New features in the Visual Studio 17.11 IDE |[Visual Studio 2022 version 17.11 Release Notes](/visualstudio/releases/2022/release-notes) |
 | C++ language conformance improvements in Visual Studio 2022 17.11 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.11](cpp-conformance-improvements.md#improvements_1711) |
 
@@ -81,7 +220,7 @@ A partial list of new features:
 - **Standard Library Enhancements**
     - The formatted output implementation now includes `std::range_formatter` and formatters for `std::pair` and `std::tuple`.
     - Added support for `std::println()` with no arguments. This prints a blank line as proposed in [P3142R0](https://wg21.link/P3142R0).
-    - Improved vectorization for several algorithms including `replace_copy()`, `replace_copy_if()`, `ranges::replace_copy`, `ranges::replace_copy_if`, `find_first_of()` and `ranges::find_first_of`, for 8-bit and 16-bit elements, `mismatch()`, `ranges::mismatch`, `count()` `ranges::count`, `find()`, `ranges::find`, `ranges::find_last`, and `ranges::iota`.
+    - Improved vectorization for several algorithms including `replace_copy()`, `replace_copy_if()`, `ranges::replace_copy`, `ranges::replace_copy_if`, `find_first_of()` and `ranges::find_first_of`, for 8-bit and 16-bit elements, `mismatch()`, `ranges::mismatch`, `count()`, `ranges::count`, `find()`, `ranges::find`, `ranges::find_last`, and `ranges::iota`.
 
 - **Game development in C++**
     - You can now add common Unreal Engine class templates, modules, and plugins from within Visual Studio. For more information, see [Add Unreal Engine classes, modules, and plugins in Visual Studio](/visualstudio/gamedev/unreal/get-started/vs-tools-unreal-add-class-module-plugin).
@@ -90,7 +229,7 @@ A partial list of new features:
     :::image type="complex" source="./media/include-diagnostics-improved.png" alt-text="A screenshot of the improved Included Files diagnostics results.":::
     The Included Files view has a new column for the project. The Project column is selected and projects such as (Select All), CompilerIdC, OpenAL, common, and so on, are selected. The included files are listed by relative path and file name and grouped together.
     :::image-end:::
-- CMake debugging
+- **CMake debugging**
     - You can now debug your CMake scripts and `CMakeLists.txt` files in the Visual Studio debugger for CMake projects that target Linux via Windows Subsystem for Linux (WSL) or SSH. To start a CMake debugging session in Visual Studio, set a breakpoint in your `CMakeLists.txt` file and then navigate to **Project** > **Configure Cache with CMake Debugging**.
 - **GitHub Copilot**
     - When you hover over symbols in the code editor, click the Copilot **Tell me more** button in the Quick Info dialog to learn more about a given symbol:
@@ -123,7 +262,7 @@ A partial list of new features:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.10](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-10/) |
-| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.10](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) |
+| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.10](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) |
 | New features in the Visual Studio 17.10 IDE |[Visual Studio 2022 version 17.10 Release Notes](/visualstudio/releases/2022/release-notes) |
 | C++ language conformance improvements in Visual Studio 2022 17.10 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.10](cpp-conformance-improvements.md#improvements_1710) |
 
@@ -160,7 +299,7 @@ A partial list of new features:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.9](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-9/) |
-| Standard Library (STL) merged C++23 features, performance improvements, enhanced behavior, LWG issue resolutions, and fixed bugs | [STL Changelog 17.9](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-179) |
+| Standard Library (STL) merged C++23 features, performance improvements, enhanced behavior, Language Working Group (LWG) issue resolutions, and fixed bugs | [STL Changelog 17.9](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-179) |
 | New features in the Visual Studio 17.9 IDE |[Visual Studio 2022 version 17.9 Release Notes](/visualstudio/releases/2022/release-notes-v17.9) |
 | C++ language conformance improvements in Visual Studio 2022 17.9 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_179) |
 | Summary of C++ backend updates | [MSVC Backend updates since Visual Studio 2022 version 17.3](https://devblogs.microsoft.com/cppblog/msvc-backend-updates-since-visual-studio-2022-version-17-3/) |
@@ -193,7 +332,7 @@ A partial list of new features:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.8](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-8/) |
-| Standard Library (STL) merged C++26, C++23 features, C++20 extensions, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.8](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-178) |
+| Standard Library (STL) merged C++26, C++23 features, C++20 extensions, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.8](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-178) |
 | New features in the Visual Studio 17.8 IDE |[Visual Studio 2022 version 17.8 Release Notes](/visualstudio/releases/2022/release-notes-v17.8) |
 | C++ language conformance improvements in Visual Studio 2022 17.8 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_178) |
 | An overview of C++ improvements in Visual Studio, VS Code, and vcpkg during 2023 | [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) |
@@ -202,14 +341,14 @@ A partial list of new features:
 
 - C++ structured diagnostics in the Output window and a new problem details window that provides more information about the error. For more information, see [Structured SARIF Output](../build/reference/sarif-output.md) and [Problem Details Window](/visualstudio/ide/reference/problem-details-window).
 - A feature that lets you visualize the size and alignment of your classes, structs, unions, base types, or enums even before the code is compiled. Hover over the identifier and a Quick Info displays the size and alignment information.
-- A feature that suggests when to mark member functions `const` because they don’t modify the object’s state. Hover over a member function and click the light bulb icon to mark the function as `const`.
+- A feature that suggests when to mark member functions `const` because they don't modify the object's state. Hover over a member function and click the light bulb icon to mark the function as `const`.
 - Visual Studio now prompts you to mark global functions as static via a screwdriver icon that appears by the function name. Click the screwdriver icon to mark the function as static.
 - Unused #include directives are dimmed in the editor. You can hover over a dimmed include and use the light bulb menu to either remove that include or all unused includes. You can also add `#include` directives for entities that are indirectly included via other headers. For more information, see [Clean up C/C++ includes in Visual Studio](../ide/include-cleanup-overview.md).
 - More Unreal Engine support:
   - Unreal Engine Test Adapter lets you discover, run, manage, and debug your Unreal Engine tests without leaving the Visual Studio IDE.
   - With Unreal Engine Code Snippets, you can find common Unreal Engine constructs as snippets in your member list.
   - Build Insights is now integrated with Visual Studio 2022 and works with MSBuild and CMake projects using MSVC. You can now see additional information about the compilation of a function such as how long it took to compile and the number of ForceInlines, and the impact of header files on build time. For more information, see [Tutorial: Troubleshoot function inlining on build time](../build-insights/tutorials/build-insights-function-view.md) and [Tutorial: Troubleshoot header file impact on build time](../build-insights/tutorials/build-insights-included-files-view.md).
-- Remote Linux unit test support now lets you run your CTest and GTest tests on your remote Linux machines from Visual Studio’s Test Explorer, just like your local tests.
+- Remote Linux unit test support now lets you run your CTest and GTest tests on your remote Linux machines from Visual Studio's Test Explorer, just like your local tests.
 
 ## What's new for C++ in Visual Studio version 17.7
 
@@ -217,9 +356,9 @@ A partial list of new features:
 
 | For more information about | See |
 |---|---|
-| What's new for C++ developers | [What’s new for C++ Developers in Visual Studio 2022 17.7](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-7/) |
+| What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.7](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-7/) |
 | New C++ features specific to game development | [Unleashing the Power of Visual Studio 2022 for C++ Game Development](https://devblogs.microsoft.com/visualstudio/unleashing-the-power-of-visual-studio-2022-for-c-game-development/) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.7](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-177) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.7](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-177) |
 | New features in the Visual Studio 17.7 IDE |[Visual Studio 2022 version 17.7 Release Notes](/visualstudio/releases/2022/release-notes-v17.7) |
 | C++ language conformance improvements in Visual Studio 2022 17.7 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_177) |
 
@@ -239,8 +378,8 @@ A partial list of new features:
 
 | For more information about | See |
 |---|---|
-| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.6](https://devblogs.microsoft.com/cppblog/visual-studio-17-6-for-cpp-devs/) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.6](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-176) |
+| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.6](https://devblogs.microsoft.com/cppblog/visual-studio-17-6-for-cpp-devs/) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.6](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-176) |
 | New features in the Visual Studio 17.6 IDE | [Visual Studio 2022 version 17.6 Release Notes](/visualstudio/releases/2022/release-notes-v17.6) |
 | C++ language conformance improvements in Visual Studio 2022 17.6 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_176) |
 
@@ -257,8 +396,8 @@ A partial list of new features includes:
 
 | For more information about | See |
 |---|---|
-| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.5](https://devblogs.microsoft.com/cppblog/visual-studio-17-5-for-cpp-devs/) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.5](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-175) |
+| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.5](https://devblogs.microsoft.com/cppblog/visual-studio-17-5-for-cpp-devs/) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.5](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-175) |
 | New features in the Visual Studio 17.5 IDE | [Visual Studio 2022 version 17.5 Release Notes](/visualstudio/releases/2022/release-notes-v17.5) |
 
 A partial list of new features includes:
@@ -296,8 +435,8 @@ A partial list of new features includes:
 
 | For more information about | See |
 |---|---|
-| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.4](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-4/) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.4](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-174) |
+| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.4](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-4/) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.4](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-174) |
 | New features in the Visual Studio 17.4 IDE | [Visual Studio 2022 version 17.4 Release Notes](/visualstudio/releases/2022/release-notes-v17.4) |
 | C++ language conformance improvements in Visual Studio 2022 17.4 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_174) |
 
@@ -346,7 +485,7 @@ A partial list of new features in 17.4:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [C++ improvements in 17.3](https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-3-is-now-available/#c-improvements) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.3](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-173) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.3](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-173) |
 | New features in the Visual Studio 17.3 IDE | [Visual Studio 2022 version 17.3 Release Notes](/visualstudio/releases/2022/release-notes-v17.3) |
 | C++ language conformance improvements in Visual Studio 2022 17.3 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_173) |
 
@@ -373,7 +512,7 @@ The responsiveness of **Go To All** is improved. Previously, results appeared af
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [Visual Studio 2022 17.2 is now available](https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-2-is-now-available/) |
-| Standard Library (STL) merged C++20 defect reports, C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.2](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) |
+| Standard Library (STL) merged C++20 defect reports, C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.2](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) |
 | New features in the Visual Studio 17.2 IDE | [Visual Studio 2022 version 17.2 Release Notes](/visualstudio/releases/2022/release-notes-v17.2) |
 | C++ language conformance improvements in Visual Studio 2022 17.2 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_172) |
 
@@ -389,7 +528,7 @@ A partial list of new features in 17.2:
   - When you select the start and end values for the stack pointer in the RTOS tool window, it opens in the memory window.
   - Added thread awareness for device targets to the call stack window.
   - Users can now select a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View.
-- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [C++20 Defect Reports project](https://github.com/microsoft/STL/projects/9) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post.
+- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [VS 2022 Changelog](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post.
 - We added various C++23 Library features, available under the **`/std:c++latest`** option. For more information about the new features, see the [STL Repo changelog](https://github.com/microsoft/STL/wiki/Changelog).
 - Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph.
 
@@ -400,7 +539,7 @@ A partial list of new features in 17.2:
 | For more information about | See |
 |---|---|
 | What's new for C++ developers | [Visual Studio 2022 17.1 is now available!](https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-1-is-now-available/) |
-| Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.1](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-171) |
+| Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.1](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-171) |
 | New features in the Visual Studio 17.1 IDE | [Visual Studio 2022 version 17.1 Release Notes](/visualstudio/releases/2022/release-notes-v17.1) |
 | C++ language conformance improvements in Visual Studio 2022 17.1 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_171) |
 
@@ -420,7 +559,7 @@ A partial list of new features in 17.1:
 | For more information about | See |
 |---|---|
 | New features in the Visual Studio 17.0 IDE | [Visual Studio 2022 version 17.0 Release Notes](/visualstudio/releases/2022/release-notes-v17.0) |
-| Standard Library (STL) merged C++23 and C++26 features, C++20 defect reports, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.0](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) |
+| Standard Library (STL) merged C++23 and C++26 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.0](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) |
 | C++ language conformance improvements in Visual Studio 2022 17.0 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.10](cpp-conformance-improvements.md#improvements_170) |
 
 An overview of some of the new features in Visual Studio 2022 version 17.0:
@@ -453,12 +592,12 @@ In Visual Studio 2022, when you start your app in the debugger, you can use the
 
 ### Standard Library improvements
 
-Select Standard Library (STL) improvements are highlighted here. For a comprehensive list of new functionality, changes, bug fixes, and performance improvements, see the STL team's [Changelog](https://github.com/microsoft/STL/wiki/Changelog#vs-2022).
+Select Standard Library (STL) improvements are highlighted here. For a comprehensive list of new functionality, changes, bug fixes, and performance improvements, see the STL team's [Changelog](https://github.com/microsoft/STL/wiki/Changelog).
 
 - Added debugging visualizers to improve how the following types are displayed: `source_location`, `bind_front()`, `u8string` (and its iterators), `default_sentinel_t`, `unreachable_sentinel_t`, `ranges::empty_view`, `ranges::single_view`, `ranges::iota_view` (and its iterator/sentinel), `ranges::ref_view`, `thread`, `thread::id`, `jthread`, and `filesystem::path`
 - Added `[[nodiscard]]` to the `stoi()` family of functions in `<string>` and to various functions in `<locale>` such as the `collate` member functions, `has_facet()`, and the `isalnum()` and `tolower()` families.
 - [P0980R1](https://wg21.link/P0980R1) Made `std::string` `constexpr` in VS 2019 16.10. Now supported for Clang.
-- [P1004R2](https://wg21.link/P1004R2) Made `std::vector` `constexpr`in VS 2019 16.10. Now supported for Clang.
+- [P1004R2](https://wg21.link/P1004R2) Made `std::vector` `constexpr` in VS 2019 16.10. Now supported for Clang.
 
 **Highlighted C++23 features**
 
diff --git a/docs/overview/whats-new-cpp-docs.md b/docs/overview/whats-new-cpp-docs.md
deleted file mode 100644
index 1bc8090c5c..0000000000
--- a/docs/overview/whats-new-cpp-docs.md
+++ /dev/null
@@ -1,292 +0,0 @@
----
-title: "What's new for the Microsoft C++ docs"
-ms.date: 06/26/2024
-description: "A list of new articles and doc updates for the Microsoft C/C++ compiler, ATL/MFC, C runtime, and standard library docs."
-ms.custom: intro-whats-new
-monikerRange: '>=msvc-160'
----
-
-# Microsoft C++ docs: What's new for November 2023 to June 2024
-
-This article lists major changes to the Microsoft C++ docs for November 2023 to June 2024.
-
-- For what was new in the docs in previous months, see [What's new history](#whats-new-history).
-- For what's new related to C++ in Visual Studio, see [What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md).
-- For the latest C and C++ conformance with ISO standards status, see [C++ conformance improvements in Visual Studio](cpp-conformance-improvements.md).
-
-### C/C++ compiler intrinsics and assembly language
-
-**Updated articles**
-
-- [ARM64 intrinsics](../intrinsics/arm64-intrinsics.md) - added entries to table for new arm64 intrinsics
-
-### Active Template Library (ATL), Microsoft Foundation Classes (MFC)
-
-**Updated articles**
-
-- [Setting the Dialog Box's Background Color](../mfc/setting-the-dialog-boxs-background-color.md) - add code example for setting a dialog box's background color
-- [Unicode and Multibyte Character Set (MBCS) Support](../atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md) - Clarified MBCS support in unicode-and-multibyte-character-set-mbcs-support.md
-
-## C/C++ projects and build systems
-
-**New articles**
-
-- [/ARM64XFUNCTIONPADMINX64 (Minimum x64 function padding)](../build/reference/arm64-function-pad-min-x64.md)
-- [/NOFUNCTIONPADSECTION (Disable function padding)](../build/reference/no-function-pad-section.md)
-- [`/experimental:log` (Structured SARIF diagnostics)](../build/reference/experimental-log.md)
-- [`/feature` (ARM64)](../build/reference/feature-arm64.md)
-- [`/LINKREPROFULLPATHRSP` (Generate file containing absolute paths of linked files)](../build/reference/link-repro-full-path-rsp.md)
-- [`/Qspectre-jmp`](../build/reference/qspectre-jmp.md)
-- [`/volatileMetadata` (Generate metadata on volatile memory accesses)](../build/reference/volatile.md)
-- [Structured SARIF Diagnostics](../build/reference/sarif-output.md)
-- [Tutorial: Troubleshoot function inlining on build time](../build-insights/tutorials/build-insights-function-view.md)
-- [Tutorial: Troubleshoot header file impact on build time](../build-insights/tutorials/build-insights-included-files-view.md)
-
-**Updated articles**
-
-- [/LARGEADDRESSAWARE (Handle Large Addresses)](../build/reference/largeaddressaware-handle-large-addresses.md) - largeaddressaware:no isn't recommended for 64-bit apps
-- [/Qspectre](../build/reference/qspectre.md) - New /QSpectre flag
-- [`/arch` (ARM64)](../build/reference/arch-arm64.md) - document __arm_arch macro
-- [Advanced Property Page](../build/reference/advanced-property-page.md) - add SARIF diagnostics documentation
-- [Linker options](../build/reference/linker-options.md)
-  - new flag: /LINKREPROFULLPATHRSP
-  - new linker switches for 17.8
-- [Linking](../build/reference/linking.md) - new linker switches for 17.8
-
-### C language
-
-**New articles**
-
-- [`typeof_unqual`, `__typeof_unqual__` (C23)](../c-language/typeof-unqual-c.md)
-- [`typeof`, `__typeof__` (C23)](../c-language/typeof-c.md)
-
-**Updated articles**
-
-- [C Keywords](../c-language/c-keywords.md) - conformance updates
-- [C Type Specifiers](../c-language/c-type-specifiers.md) - conformance updates
-
-### Code quality
-
-**New articles**
-
-- [Warning C26459](../code-quality/c26459.md)
-- [Warning C26837](../code-quality/c26837.md)
-- [Warning C26861](../code-quality/c26861.md)
-- [Warning C26862](../code-quality/c26862.md)
-- [Warning C26863](../code-quality/c26863.md)
-- [Warning C26864](../code-quality/c26864.md)
-- [Warning C6392](../code-quality/c6392.md)
-- [Warning C6393](../code-quality/c6393.md)
-- [Warning C6394](../code-quality/c6394.md)
-- [Warning C6396](../code-quality/c6396.md)
-- [Warning C6397](../code-quality/c6397.md)
-- [Warning C6398](../code-quality/c6398.md)
-
-**Updated articles**
-
-- [Using Clang-Tidy in Visual Studio](../code-quality/clang-tidy.md) - fixed code example
-- [Warning C6031](../code-quality/c6031.md) - fix some code examples
-- [Warning C6059](../code-quality/c6059.md) - add heuristics
-- [Warning C6201](../code-quality/c6201.md) - add heuristics
-
-### C++ in Visual Studio
-
-**Updated articles**
-
-- [`break` statement (C++)](../cpp/break-statement-cpp.md) - doc fix
-- [Examples of Lambda Expressions](../cpp/examples-of-lambda-expressions.md) - fixed code example
-- [Inline functions (C++)](../cpp/inline-functions-cpp.md) - address mistakes in inline functions cpp and remove content contrasting inline functions and macros
-
-### Cross platform development
-
-**Updated articles**
-
-- [Install cross-platform mobile development with C++](../cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md) - updates regarding Xamarin
-
-### C runtime library
-
-**Updated articles**
-
-- [Translation mode constants](../c-runtime-library/translation-mode-constants.md) - clarify that `_O_TEXT` is ANSI
-
-### C/C++ compiler and tools errors and warnings
-
-**New articles**
-
-- [Compiler Error C2323](../error-messages/compiler-errors-1/compiler-error-c2323.md)
-- [Compiler Warning (level 1) C5072](../error-messages/compiler-warnings/compiler-warning-c5072.md)
-- [Compiler Warning (level 4) C5266](../error-messages/compiler-warnings/compiler-warning-level-4-c5266.md)
-- [Compiler warning (level 4) C5267](../error-messages/compiler-warnings/c5267.md)
-- [Linker tools warning LNK4306](../error-messages/tool-errors/linker-tools-warning-lnk4306.md)
-- [Linker tools warning LNK4307](../error-messages/tool-errors/linker-tools-warning-lnk4307.md)
-- [Microsoft C/C++ compiler warnings C5000 through C5199](../error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md)
-- [Microsoft C/C++ compiler warnings C5200 through C5399](../error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md)
-
-**Updated articles**
-
-- Updated several compiler error and warning topics to include or refine examples.
-
-### C++ in Visual Studio tutorials
-
-**Updated articles**
-
-- [Create a console calculator in C++](../get-started/tutorial-console-cpp.md)
-
-### Read and write code using C++ in Visual Studio
-
-**New articles**
-
-- [C++ Include Diagnostics in Visual Studio](../ide/include-diagnostics.md)
-- [Visualize C/C++ macro expansion](../ide/visualize-macro-expansion.md)
-
-**Updated articles**
-
-- [Walkthrough: Deploying Your Program (C++)](../ide/walkthrough-deploying-your-program-cpp.md) - update steps
-
-### Linux with C++ in Visual Studio
-
-**Updated articles**
-
-- [Connect to your target Linux system in Visual Studio](../linux/connect-to-your-remote-linux-computer.md)
-
-### C/C++ in Visual Studio overview
-
-**New articles**
-
-- [Microsoft Visual C++ compiler versioning](../overview/compiler-versions.md)
-
-**Updated articles**
-
-- [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](../overview/cpp-conformance-improvements.md) - updates for 17.10, added `_alignof`
-- [Microsoft C++ docs: What's new for August 2023 to November 2023](../overview/whats-new-cpp-docs.md)
-- [What's new for C++ in Visual Studio 2022](../overview/what-s-new-for-visual-cpp-in-visual-studio.md) - updates for 17.10
-
-### C++ porting and upgrade guide
-
-**Updated articles**
-
-- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - clarify linking binaries built with different versions of the toolset
-
-### C/C++ preprocessor reference
-
-**Updated articles**
-
-- [Compiler warnings that are off by default](../preprocessor/compiler-warnings-that-are-off-by-default.md) - add new warning for VS 17.6 - C5266 & C5267 and add warning level info
-- [Predefined macros](../preprocessor/predefined-macros.md) - documented `__arm_arch` macro
-
-## Overview of Windows programming in C++
-
-**Updated articles**
-
-- [ClickOnce Deployment for Visual C++ Applications](../windows/clickonce-deployment-for-visual-cpp-applications.md) - fixed code example
-- [Microsoft Visual C++ Redistributable latest supported downloads](../windows/latest-supported-vc-redist.md) - note 2013 no longer supported and other updates
-
-## What's new history
-
-This section lists major changes to the Microsoft C++ docs for August 2023 to early November 2023.
-
-### Active Template Library (ATL), Microsoft Foundation Classes (MFC)
-
-**Updated articles**
-
-- [CComDynamicUnkArray Class](../atl/reference/ccomdynamicunkarray-class.md) - updated remarks
-
-### C/C++ projects and build systems
-
-**New articles**
-
-- [`/ifcMap`](../build/reference/ifc-map.md)
-- [`/Zc:checkGwOdr` (Enforce Standard C++ ODR violations under `/Gw`)](../build/reference/zc-check-gwodr.md)
-- [/KERNEL (Create kernel mode binary)](../build/reference/link-code-for-kernel-mode.md)
-
-**Updated articles**
-
-- [Configure CMake debugging sessions](../build/configure-cmake-debugging-sessions.md) - updated screenshots.
-- [`/permissive-` (Standards conformance)](../build/reference/permissive-standards-conformance.md) - reflect new behavior as of 17.6
-- [`/Zc:externConstexpr` (Enable extern constexpr variables)](../build/reference/zc-externconstexpr.md) - reflect new behavior as of 17.6
-- [Overview of ARM64EC ABI conventions](../build/arm64ec-windows-abi-conventions.md) - ppdated register mapping for integer registers table
-- [`/DEBUG` (Generate debug info)](../build/reference/debug-generate-debug-info.md) - correct documentation for `/DEBUG:FASTLINK` and `/DEBUG`
-
-### Code quality
-
-**New articles**
-
-- [Build reliable and secure C++ programs](../code-quality/build-reliable-secure-programs.md)
-- [Warning C6395](../code-quality/c6395.md)
-- [Warning C26479](../code-quality/c26479.md)
-
-**Updated articles**
-
-- [How to specify additional code information by using `_Analysis_assume_`](../code-quality/how-to-specify-additional-code-information-by-using-analysis-assume.md) - updated remarks
-
-Clarified behavior for the following warnings:
-
-- [Warning C6053](../code-quality/c6053.md)
-- [Warning C26478](../code-quality/c26478.md)
-- [Warning C26817](../code-quality/c26817.md)
-- [Warning C26820](../code-quality/c26820.md)
-
-### C++ in Visual Studio
-
-**New articles**
-
-- [`alignas` (C++)](../cpp/alignas-specifier.md)
-
-**Updated articles**
-
-- [`alignas` (C++)](../cpp/alignas-specifier.md) - updated remarks
-- [if-else statement (C++)](../cpp/if-else-statement-cpp.md) - improved code examples
-- [__fastcall](../cpp/fastcall.md) - added info about classes, structs, and unions
-- [`decltype` (C++)](../cpp/decltype-cpp.md) - fixed code example
-- [noreturn](../cpp/noreturn.md) - improved example
-
-### C runtime library
-
-**Updated articles**
-
-- [`fegetround`, `fesetround`](../c-runtime-library/reference/fegetround-fesetround2.md) - noted change of values for `FE_UPWARD` and `FE_DOWNWARD`
-
-### C/C++ compiler and tools errors and warnings
-
-**Updated articles**
-
-Clarified behavior for the following warnings:
-
-- [Compiler Error C2018](../error-messages/compiler-errors-1/compiler-error-c2018.md), [Compiler Error C2023](../error-messages/compiler-errors-1/compiler-error-c2023.md)
-- [Compiler Error C2024](../error-messages/compiler-errors-1/compiler-error-c2024.md), [Compiler Error C2049](../error-messages/compiler-errors-1/compiler-error-c2049.md)
-- [Compiler Error C2058](../error-messages/compiler-errors-1/compiler-error-c2058.md), [Compiler Error C2061](../error-messages/compiler-errors-1/compiler-error-c2061.md)
-- [Compiler Error C2082](../error-messages/compiler-errors-1/compiler-error-c2082.md), [Compiler Error C2129](../error-messages/compiler-errors-1/compiler-error-c2129.md)
-- [Compiler Error C2345](../error-messages/compiler-errors-1/compiler-error-c2345.md), [Compiler Error C2397](../error-messages/compiler-errors-1/compiler-error-c2397.md)
-- [Compiler Error C2510](../error-messages/compiler-errors-2/compiler-error-c2510.md), [Compiler Error C2534](../error-messages/compiler-errors-2/compiler-error-c2534.md)
-- [Compiler Error C2993](../error-messages/compiler-errors-2/compiler-error-c2993.md), [Compiler Error C3550](../error-messages/compiler-errors-2/compiler-error-c3550.md)
-- [Compiler Error C3551](../error-messages/compiler-errors-2/compiler-error-c3551.md)
-### Read and write code using C++ in Visual Studio
-
-**New articles**
-
-- [Clean up C/C++ includes in Visual Studio](../ide/include-cleanup-overview.md)
-- [Configure C/C++ Include Cleanup in Visual Studio](../ide/include-cleanup-config.md)
-- [Include Cleanup messages](../ide/include-cleanup-messages.md)
-- [`lnt-make-member-function-const`](../ide/lnt-make-member-function-const.md)
-- [`lnt-naming-convention`](../ide/lnt-naming-convention.md)
-
-### C/C++ in Visual Studio overview
-
-**Updated articles**
-
-- [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](../overview/cpp-conformance-improvements.md) - added conformance updates for 17.7 and 17.8.
-- [What's new for C++ in Visual Studio 2022](../overview/what-s-new-for-visual-cpp-in-visual-studio.md) - updated what's new in C++.
-
-### C++ Standard Template Library (STL) reference
-
-**Updated articles**
-
-- [auto_ptr class](../standard-library/auto-ptr-class.md) - added deprecation info
-
-### Active Template Library (ATL), Microsoft Foundation Classes (MFC)
-
-**Updated articles**
-
-- [Connection maps](../mfc/reference/connection-maps.md) - corrected parameter description of `pRefCount` in `AfxConnection(Un)Advise`
-- [`CSimpleStringT` Class](../atl-mfc-shared/reference/csimplestringt-class.md) - updated code example
-- [MFC class hierarchy chart](../mfc/hierarchy-chart.md) - updated MFC hierarchy chart
\ No newline at end of file
diff --git a/docs/parallel/amp/cpp-amp-overview.md b/docs/parallel/amp/cpp-amp-overview.md
index c6d4d0fb20..3fdac7ec56 100644
--- a/docs/parallel/amp/cpp-amp-overview.md
+++ b/docs/parallel/amp/cpp-amp-overview.md
@@ -3,6 +3,7 @@ description: "Learn more about: C++ AMP Overview"
 title: "C++ AMP Overview"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["C++ Accelerated Massive Parallelism, requirements", "C++ Accelerated Massive Parallelism, architecture", "C++ AMP", "C++ Accelerated Massive Parallelism, overview", "C++ Accelerated Massive Parallelism"]
+ms.topic: concept-article
 ---
 # C++ AMP Overview
 
diff --git a/docs/parallel/amp/graphics-cpp-amp.md b/docs/parallel/amp/graphics-cpp-amp.md
index 745744c100..2de8ab623c 100644
--- a/docs/parallel/amp/graphics-cpp-amp.md
+++ b/docs/parallel/amp/graphics-cpp-amp.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Graphics (C++ AMP)"
 title: "Graphics (C++ AMP)"
-ms.date: "11/04/2016"
+description: "Learn more about: Graphics (C++ AMP)"
+ms.date: 11/04/2016
 ---
 # Graphics (C++ AMP)
 
@@ -139,7 +139,7 @@ There are limits on the size of each dimension of the `texture` object, as shown
 
 ### Reading from Texture Objects
 
-You can read from a `texture` object by using [texture::operator\[\]](reference/texture-class.md#operator_at), [texture::operator() Operator](reference/texture-class.md#operator_call), or [texture::get Method](reference/texture-class.md#get). The two operators return a value, not a reference. Therefore, you cannot write to a `texture` object by using `texture::operator\[\]`.
+You can read from a `texture` object by using [texture::operator\[\]](reference/texture-class.md#operator_at), [texture::operator() Operator](reference/texture-class.md#operator_call), or [texture::get Method](reference/texture-class.md#get). The two operators return a value, not a reference. Therefore, you cannot write to a `texture` object by using `texture::operator[]`.
 
 ```cpp
 void readTexture() {
diff --git a/docs/parallel/amp/reference/accelerator-class.md b/docs/parallel/amp/reference/accelerator-class.md
index 02b879fba9..e5f08b9b8a 100644
--- a/docs/parallel/amp/reference/accelerator-class.md
+++ b/docs/parallel/amp/reference/accelerator-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: accelerator Class"
 title: "accelerator Class"
-ms.date: "11/04/2016"
+description: "Learn more about: accelerator Class"
+ms.date: 11/04/2016
 f1_keywords: ["AMPRT/accelerator", "AMPRT/Concurrency::accelerator::accelerator", "AMPRT/Concurrency::accelerator::create_view", "AMPRT/Concurrency::accelerator::get_all", "AMPRT/Concurrency::accelerator::get_auto_selection_view", "AMPRT/Concurrency::accelerator::get_dedicated_memory", "AMPRT/Concurrency::accelerator::get_default_cpu_access_type", "AMPRT/Concurrency::accelerator::get_default_view", "AMPRT/Concurrency::accelerator::get_description", "AMPRT/Concurrency::accelerator::get_device_path", "AMPRT/Concurrency::accelerator::get_has_display", "AMPRT/Concurrency::accelerator::get_is_debug", "AMPRT/Concurrency::accelerator::get_is_emulated", "AMPRT/Concurrency::accelerator::get_supports_cpu_shared_memory", "AMPRT/Concurrency::accelerator::get_supports_double_precision", "AMPRT/Concurrency::accelerator::get_supports_limited_double_precision", "AMPRT/Concurrency::accelerator::get_version", "AMPRT/Concurrency::accelerator::set_default", "AMPRT/Concurrency::accelerator::set_default_cpu_access_type", "AMPRT/Concurrency::accelerator::cpu_accelerator", "AMPRT/Concurrency::accelerator::dedicated_memory", "AMPRT/Concurrency::accelerator::default_accelerator", "AMPRT/Concurrency::accelerator::default_cpu_access_type", "AMPRT/Concurrency::accelerator::default_view", "AMPRT/Concurrency::accelerator::description", "AMPRT/Concurrency::accelerator::device_path", "AMPRT/Concurrency::accelerator::direct3d_ref", "AMPRT/Concurrency::accelerator::direct3d_warp", "AMPRT/Concurrency::accelerator::has_display", "AMPRT/Concurrency::accelerator::is_debug", "AMPRT/Concurrency::accelerator::is_emulated", "AMPRT/Concurrency::accelerator::supports_cpu_shared_memory", "AMPRT/Concurrency::accelerator::supports_double_precision", "AMPRT/Concurrency::accelerator::supports_limited_double_precision", "AMPRT/Concurrency::accelerator::version"]
 helpviewer_keywords: ["accelerator class"]
-ms.assetid: 37eed593-cf87-4611-9cdc-e98df6c2377a
 ---
 # accelerator Class
 
@@ -45,7 +44,7 @@ class accelerator;
 |[get_supports_limited_double_precision](#get_supports_limited_double_precision)|Determines whether the `accelerator` has limited support for double-precision math.|
 |[get_version](#get_version)|Returns the version of the `accelerator`.|
 |[set_default](#set_default)|Returns the path of the default accelerator.|
-|[set_default_cpu_access_type](#set_default_cpu_access_type)|Sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type)for arrays and implicit memory allocations made on this `accelerator`.|
+|[set_default_cpu_access_type](#set_default_cpu_access_type)|Sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`.|
 
 ### Public Operators
 
@@ -62,7 +61,7 @@ class accelerator;
 |[cpu_accelerator](#cpu_accelerator)|Gets a string constant for the CPU `accelerator`.|
 |[dedicated_memory](#dedicated_memory)|Gets the dedicated memory for the `accelerator`, in kilobytes.|
 |[default_accelerator](#default_accelerator)|Gets a string constant for the default `accelerator`.|
-|[default_cpu_access_type](#default_cpu_access_type)|Gets or sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type)for arrays and implicit memory allocations made on this `accelerator`.|
+|[default_cpu_access_type](#default_cpu_access_type)|Gets or sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`.|
 |[default_view](#default_view)|Gets the default `accelerator_view` object that is associated with the `accelerator`.|
 |[description](#description)|Gets a short description of the `accelerator` device.|
 |[device_path](#device_path)|Gets the path of the device.|
@@ -165,7 +164,7 @@ static const wchar_t default_accelerator[];
 
 ## <a name="default_cpu_access_type"></a> default_cpu_access_type
 
-The default cpu [access_type](concurrency-namespace-enums-amp.md#access_type)for arrays and implicit memory allocations made on this `accelerator`.
+The default cpu [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`.
 
 ```cpp
 __declspec(property(get= get_default_cpu_access_type)) access_type default_cpu_access_type;
diff --git a/docs/parallel/amp/reference/array-class.md b/docs/parallel/amp/reference/array-class.md
index ce31e23b61..5fd455d1f1 100644
--- a/docs/parallel/amp/reference/array-class.md
+++ b/docs/parallel/amp/reference/array-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: array Class"
 title: "array Class"
-ms.date: "11/04/2016"
+description: "Learn more about: array Class"
+ms.date: 11/04/2016
 f1_keywords: ["array", "AMP/array", "AMP/Concurrency::array::array", "AMP/Concurrency::array::copy_to", "AMP/Concurrency::array::data", "AMP/Concurrency::array::get_accelerator_view", "AMP/Concurrency::array::get_associated_accelerator_view", "AMP/Concurrency::array::get_cpu_access_type", "AMP/Concurrency::array::get_extent", "AMP/Concurrency::array::reinterpret_as", "AMP/Concurrency::array::section", "AMP/Concurrency::array::view_as", "AMP/Concurrency::array::rank", "AMP/Concurrency::array::accelerator_view", "AMP/Concurrency::array::associated_accelerator_view", "AMP/Concurrency::array::cpu_access_type", "AMP/Concurrency::array::extent"]
 helpviewer_keywords: ["array class"]
-ms.assetid: 0832b6c1-40f0-421d-9104-6b1baa0c63a7
 ---
 # array Class
 
@@ -52,7 +51,7 @@ The rank of the array.
 
 |Name|Description|
 |----------|-----------------|
-|[`operator std::vector<value_type>`](#operator_vec)|Uses `copy(*this, vector)` to implicitly convert the array to a std::[vector](../../../standard-library/vector-class.md) object.|
+|[`operator std::vector<value_type>`](#operator_vec)|Uses `copy(*this, vector)` to implicitly convert the array to a [std::vector](../../../standard-library/vector-class.md) object.|
 |[operator()](#operator_call)|Returns the element value that is specified by the parameters.|
 |[operator\[\]](#operator_at)|Returns the element that is at the specified index.|
 |[operator=](#operator_eq)|Copies the contents of the specified `array` object into this one.|
@@ -362,7 +361,7 @@ explicit array(
 
 array(
     const array_view<const value_type, _Rank>& _Src,
-    accelerator_view _Av
+    accelerator_view _Av,
     access_type _Cpu_access_type = access_type_auto) restrict(cpu);
 
 array(
diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md
index d928cc4c0d..d0a6ddd7c4 100644
--- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md
+++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md
@@ -46,11 +46,12 @@ f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::coun
 ## Requirements
 
 **Header:** amp.h
+
 **Namespace:** Concurrency
 
 ## <a name="abs"></a> abs
 
-Returns the absolute value of the argument
+Returns the absolute value of the argument.
 
 ```cpp
 inline int abs(int _X) restrict(amp);
@@ -58,7 +59,7 @@ inline int abs(int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
 ### Return Value
@@ -83,13 +84,13 @@ inline int clamp(
 
 ### Parameters
 
-*_X*<br/>
-The value to be clamped
+*_X*\
+The value to be clamped.
 
-*_Min*<br/>
+*_Min*\
 The lower bound of the clamping range.
 
-*_Max*<br/>
+*_Max*\
 The upper bound of the clamping range.
 
 ### Return Value
@@ -98,7 +99,7 @@ The clamped value of `_X`.
 
 ## <a name="countbits"></a> countbits
 
-Counts the number of set bits in _X
+Counts the number of set bits in `_X`.
 
 ```cpp
 inline unsigned int countbits(unsigned int _X) restrict(amp);
@@ -106,12 +107,12 @@ inline unsigned int countbits(unsigned int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Unsigned integer value
 
 ### Return Value
 
-Returns the number of set bits in _X
+Returns the number of set bits in `_X`.
 
 ## <a name="create_accelerator_view"></a> create_accelerator_view
 
@@ -121,27 +122,27 @@ Creates an [accelerator_view](accelerator-view-class.md) object from a pointer t
 
 ```cpp
 accelerator_view create_accelerator_view(
-    IUnknown * _D3D_device
+    IUnknown * _D3D_device,
     queuing_mode _Qmode = queuing_mode_automatic);
 
 accelerator_view create_accelerator_view(
     accelerator& _Accelerator,
-    bool _Disable_timeout
+    bool _Disable_timeout,
     queuing_mode _Qmode = queuing_mode_automatic);
 ```
 
 ### Parameters
 
-*_Accelerator*<br/>
+*_Accelerator*\
 The accelerator on which the new accelerator_view is to be created.
 
-*_D3D_device*<br/>
+*_D3D_device*\
 The pointer to the Direct3D device interface.
 
-*_Disable_timeout*<br/>
+*_Disable_timeout*\
 A Boolean parameter that specifies whether timeout should be disabled for the newly created accelerator_view. This corresponds to the D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT flag for Direct3D device creation and is used to indicate if the operating system should allow workloads that take more than 2 seconds to execute without resetting the device per the Windows timeout detection and recovery mechanism. Use of this flag is recommended if you need to perform time consuming tasks on the accelerator_view.
 
-*_Qmode*<br/>
+*_Qmode*\
 The [queuing_mode](concurrency-namespace-enums-amp.md#queuing_mode) to be used for the newly created accelerator_view. This parameter has a default value of `queuing_mode_automatic`.
 
 ## Return Value
@@ -166,7 +167,7 @@ void __cdecl d3d_access_lock(accelerator_view& _Av);
 
 ### Parameters
 
-*_Av*<br/>
+*_Av*\
 The accelerator_view to lock.
 
 ## <a name="d3d_access_try_lock"></a> d3d_access_try_lock
@@ -179,7 +180,7 @@ bool __cdecl d3d_access_try_lock(accelerator_view& _Av);
 
 ### Parameters
 
-*_Av*<br/>
+*_Av*\
 The accelerator_view to lock.
 
 ### Return Value
@@ -196,12 +197,12 @@ void __cdecl d3d_access_unlock(accelerator_view& _Av);
 
 ### Parameters
 
-*_Av*<br/>
+*_Av*\
 The accelerator_view for which the lock is to be released.
 
 ## <a name="firstbithigh"></a> firstbithigh
 
-Gets the location of the first set bit in _X, beginning with the highest-order bit and moving towards the lowest-order bit.
+Gets the location of the first set bit in `_X`, beginning with the highest-order bit and moving towards the lowest-order bit.
 
 ```cpp
 inline int firstbithigh(int _X) restrict(amp);
@@ -209,16 +210,16 @@ inline int firstbithigh(int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
 ### Return Value
 
-The location of the first set bit
+The location of the first set bit.
 
 ## <a name="firstbitlow"></a> firstbitlow
 
-Gets the location of the first set bit in _X, beginning with the lowest-order bit and working toward the highest-order bit.
+Gets the location of the first set bit in `_X`, beginning with the lowest-order bit and working toward the highest-order bit.
 
 ```cpp
 inline int firstbitlow(int _X) restrict(amp);
@@ -226,12 +227,12 @@ inline int firstbitlow(int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
 ### Return Value
 
-Returns The location of the first set bit
+Returns The location of the first set bit.
 
 ## <a name="get_buffer"></a> get_buffer
 
@@ -243,18 +244,18 @@ template<
     int _Rank
 >
 IUnknown *get_buffer(
-    const array<value_type, _Rank>& _Array)  ;
+    const array<value_type, _Rank>& _Array);
 ```
 
 ### Parameters
 
-*value_type*<br/>
+*value_type*\
 The type of elements in the array.
 
-*_Rank*<br/>
+*_Rank*\
 The rank of the array.
 
-*_Array*<br/>
+*_Array*\
 An array on a Direct3D accelerator_view for which the underlying Direct3D buffer interface is returned.
 
 ### Return Value
@@ -271,7 +272,7 @@ IUnknown* get_device(const accelerator_view Av);
 
 ### Parameters
 
-*Av*<br/>
+*Av*\
 The D3D accelerator_view for which the underlying D3D device interface is returned.
 
 ### Return value
@@ -280,7 +281,7 @@ The `IUnknown` interface pointer of the D3D device underlying the accelerator_vi
 
 ## <a name="imax"></a> imax
 
-Determine the maximum numeric value of the arguments
+Determine the maximum numeric value of the arguments.
 
 ```cpp
 inline int imax(
@@ -290,19 +291,19 @@ inline int imax(
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
-*_Y*<br/>
+*_Y*\
 Integer value
 
 ### Return Value
 
-Return the maximum numeric value of the arguments
+Return the maximum numeric value of the arguments.
 
 ## <a name="imin"></a> imin
 
-Determine the minimum numeric value of the arguments
+Determine the minimum numeric value of the arguments.
 
 ```cpp
 inline int imin(
@@ -312,15 +313,15 @@ inline int imin(
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
-*_Y*<br/>
+*_Y*\
 Integer value
 
 ### Return Value
 
-Return the minimum numeric value of the arguments
+Return the minimum numeric value of the arguments.
 
 ## <a name="is_timeout_disabled"></a> is_timeout_disabled
 
@@ -332,7 +333,7 @@ bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view);
 
 ### Parameters
 
-*_Accelerator_view*<br/>
+*_Accelerator_view*\
 The accelerator_view for which the timeout disabled setting is to be queried.
 
 ### Return Value
@@ -367,13 +368,13 @@ inline unsigned int mad(
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 The first specified argument.
 
-*_Y*<br/>
+*_Y*\
 The second specified argument.
 
-*_Z*<br/>
+*_Z*\
 The third specified argument.
 
 ### Return Value
@@ -392,24 +393,24 @@ template<
 array<value_type, _Rank> make_array(
     const extent<_Rank>& _Extent,
     const Concurrency::accelerator_view& _Rv,
-    IUnknown* _D3D_buffer)  ;
+    IUnknown* _D3D_buffer);
 ```
 
 ### Parameters
 
-*value_type*<br/>
+*value_type*\
 The element type of the array to be created.
 
-*_Rank*<br/>
+*_Rank*\
 The rank of the array to be created.
 
-*_Extent*<br/>
+*_Extent*\
 An extent that describes the shape of the array aggregate.
 
-*_Rv*<br/>
+*_Rv*\
 A D3D accelerator view on which the array is to be created.
 
-*_D3D_buffer*<br/>
+*_D3D_buffer*\
 IUnknown interface pointer of the D3D buffer to create the array from.
 
 ### Return Value
@@ -418,7 +419,7 @@ An array created using the provided Direct3D buffer.
 
 ## <a name="noise"></a> noise
 
-Generates a random value using the Perlin noise algorithm
+Generates a random value using the Perlin noise algorithm.
 
 ```cpp
 inline float noise(float _X) restrict(amp);
@@ -426,16 +427,16 @@ inline float noise(float _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
-Floating-point value from which to generate Perlin noise
+*_X*\
+Floating-point value from which to generate Perlin noise.
 
 ### Return Value
 
-Returns The Perlin noise value within a range between -1 and 1
+Returns the Perlin noise value within a range between -1 and 1.
 
 ## <a name="radians"></a> radians
 
-Converts _X from degrees to radians
+Converts `_X` from degrees to radians.
 
 ```cpp
 inline float radians(float _X) restrict(amp);
@@ -443,12 +444,12 @@ inline float radians(float _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Floating-point value
 
 ### Return Value
 
-Returns _X converted from degrees to radians
+Returns `_X` converted from degrees to radians.
 
 ## <a name="rcp"></a> rcp
 
@@ -462,7 +463,7 @@ inline double rcp(double _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 The value for which to compute the reciprocal.
 
 ### Return Value
@@ -471,7 +472,7 @@ The reciprocal of the specified argument.
 
 ## <a name="reversebits"></a> reversebits
 
-Reverses the order of the bits in _X
+Reverses the order of the bits in `_X`.
 
 ```cpp
 inline unsigned int reversebits(unsigned int _X) restrict(amp);
@@ -479,16 +480,16 @@ inline unsigned int reversebits(unsigned int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Unsigned integer value
 
 ### Return Value
 
-Returns the value with the bit order reversed in _X
+Returns the value with the bit order reversed in `_X`.
 
 ## <a name="saturate"></a> saturate
 
-Clamps _X within the range of 0 to 1
+Clamps `_X` within the range of 0 to 1.
 
 ```cpp
 inline float saturate(float _X) restrict(amp);
@@ -496,12 +497,12 @@ inline float saturate(float _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Floating-point value
 
 ### Return Value
 
-Returns _X clamped within the range of 0 to 1
+Returns `_X` clamped within the range of 0 to 1.
 
 ## <a name="sign"></a> sign
 
@@ -513,7 +514,7 @@ inline int sign(int _X) restrict(amp);
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
 ### Return Value
@@ -522,7 +523,7 @@ The sign of the argument.
 
 ## <a name="smoothstep"></a> smoothstep
 
-Returns a smooth Hermite interpolation between 0 and 1, if _X is in the range [_Min, _Max].
+Returns a smooth Hermite interpolation between 0 and 1, if `_X` is in the range [_Min, _Max].
 
 ```cpp
 inline float smoothstep(
@@ -533,22 +534,22 @@ inline float smoothstep(
 
 ### Parameters
 
-*_Min*<br/>
+*_Min*\
 Floating-point value
 
-*_Max*<br/>
+*_Max*\
 Floating-point value
 
-*_X*<br/>
+*_X*\
 Floating-point value
 
 ### Return Value
 
-Returns 0 if _X is less than _Min; 1 if _X is greater than _Max; otherwise, a value between 0 and 1 if _X is in the range [_Min, _Max]
+Returns 0 if `_X` is less than _Min; 1 if `_X` is greater than _Max; otherwise, a value between 0 and 1 if `_X` is in the range [_Min, _Max].
 
 ## <a name="step"></a> step
 
-Compares two values, returning 0 or 1 based on which value is greater
+Compares two values, returning 0 or 1 based on which value is greater.
 
 ```cpp
 inline float step(
@@ -558,19 +559,19 @@ inline float step(
 
 ### Parameters
 
-*_Y*<br/>
+*_Y*\
 Floating-point value
 
-*_X*<br/>
+*_X*\
 Floating-point value
 
 ### Return Value
 
-Returns 1 if the _X is greater than or equal to _Y; otherwise, 0
+Returns 1 if the `_X` is greater than or equal to `_Y`; otherwise, 0.
 
 ## <a name="umax"></a> umax
 
-Determine the maximum numeric value of the arguments
+Determine the maximum numeric value of the arguments.
 
 ```cpp
 inline unsigned int umax(
@@ -580,19 +581,19 @@ inline unsigned int umax(
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
-*_Y*<br/>
+*_Y*\
 Integer value
 
 ### Return Value
 
-Return the maximum numeric value of the arguments
+Return the maximum numeric value of the arguments.
 
 ## <a name="umin"></a> umin
 
-Determine the minimum numeric value of the arguments
+Determine the minimum numeric value of the arguments.
 
 ```cpp
 inline unsigned int umin(
@@ -602,15 +603,15 @@ inline unsigned int umin(
 
 ### Parameters
 
-*_X*<br/>
+*_X*\
 Integer value
 
-*_Y*<br/>
+*_Y*\
 Integer value
 
 ### Return Value
 
-Return the minimum numeric value of the arguments
+Return the minimum numeric value of the arguments.
 
 ## See also
 
diff --git a/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md
index ac0f29d676..e9e8eef189 100644
--- a/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md
+++ b/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: Concurrency::graphics namespace functions"
 title: "Concurrency::graphics namespace functions"
-ms.date: "11/04/2016"
+description: "Learn more about: Concurrency::graphics namespace functions"
+ms.date: 11/04/2016
 f1_keywords: ["amp_graphics/Concurrency::fast_math::copy_async", "amp_graphics/Concurrency::fast_math::copy"]
-ms.assetid: ace01cd5-29d3-4356-930e-c81a61c5f934
 ---
 # Concurrency::graphics namespace functions
 
-[copy](#copy)\
-[copy_async](#copy_async)
+The following functions are available in the `Concurrency::graphics` namespace:
 
 ## <a name="copy"></a> copy Function (Concurrency::graphics Namespace)
 
diff --git a/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md b/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md
index b3e6db41fd..a03bea4d1a 100644
--- a/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md
+++ b/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md
@@ -1,16 +1,14 @@
 ---
-description: "Learn more about: Concurrency namespace constants (AMP)"
 title: "Concurrency namespace constants (AMP)"
-ms.date: "11/04/2016"
+description: "Learn more about: Concurrency namespace constants (AMP)"
+ms.date: 11/04/2016
 f1_keywords: ["amp/Concurrency::HLSL_MAX_NUM_BUFFERS", "amp/Concurrency::MODULENAME_MAX_LENGTH"]
-ms.assetid: 13a8e8cd-2eec-4e60-a91d-5d271072747b
 ---
 # Concurrency namespace constants (AMP)
 
-[HLSL_MAX_NUM_BUFFERS](#hlsl_max_num_buffers)\
-[MODULENAME_MAX_LENGTH](#modulename_max_length)
+The following constants are defined in the `Concurrency` namespace (AMP):
 
-## <a name="hlsl_max_num_buffers"></a> HLSL_MAX_NUM_BUFFERS Constant
+## <a name="hlsl_max_num_buffers"></a> `HLSL_MAX_NUM_BUFFERS` Constant
 
 The maximum number of buffers allowed by DirectX.
 
@@ -18,9 +16,9 @@ The maximum number of buffers allowed by DirectX.
 static const UINT HLSL_MAX_NUM_BUFFERS = 64 + 128;
 ```
 
-## <a name="modulename_max_length"></a> MODULENAME_MAX_LENGTH Constant
+## <a name="modulename_max_length"></a> `MODULENAME_MAX_LENGTH` constant
 
-Stores the maximum length of the module name. This value must be the same on the compiler and runtime.
+Stores the maximum length of the module name. This value must be the same at compile time and runtime.
 
 ```cpp
 static const UINT MODULENAME_MAX_LENGTH = 1024;
diff --git a/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md b/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md
index 55a34e9c71..feef3abec3 100644
--- a/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md
+++ b/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md
@@ -1,18 +1,14 @@
 ---
-description: "Learn more about: Concurrency namespace enums (AMP)"
 title: "Concurrency namespace enums (AMP)"
-ms.date: "11/04/2016"
+description: "Learn more about: Concurrency namespace enums (AMP)"
+ms.date: 11/04/2016
 f1_keywords: ["amp/Concurrency::access_type", "amp/Concurrency::queuing_mode"]
-ms.assetid: 4c87457e-184f-4992-81ab-ca75e7d524ab
 ---
-# Concurrency namespace enums (AMP)
-
-[access_type Enumeration](#access_type)\
-[queuing_mode Enumeration](#queuing_mode)
+# `Concurrency` namespace enums (AMP)
 
-## <a name="access_type"></a> access_type Enumeration
+The following enumerations are available in the `Concurrency` namespace:
 
-Enumeration type used to denote the various types of access to data.
+## <a name="access_type"></a> `access_type` enumeration
 
 ```cpp
 enum access_type;
@@ -28,7 +24,7 @@ enum access_type;
 |`access_type_read_write`|Shared. The allocation is accessible on the accelerator and is writable on the CPU.|
 |`access_type_write`|Shared. The allocation is accessible on the accelerator and is both readable and writable on the CPU.|
 
-## <a name="queuing_mode"></a> queuing_mode Enumeration
+## <a name="queuing_mode"></a> `queuing_mode` enumeration
 
 Specifies the queuing modes that are supported on the accelerator.
 
diff --git a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md
index a7908a8b41..fba9b56557 100644
--- a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md
+++ b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md
@@ -1,7 +1,7 @@
 ---
 title: "Concurrency::precise_math namespace functions"
 description: "Learn more about: Concurrency::precise_math namespace functions"
-ms.date: "11/04/2016"
+ms.date: 11/04/2016
 f1_keywords: ["amp_math/Concurrency::precise_math::acos", "amp_math/Concurrency::precise_math::acosh", "amp_math/Concurrency::precise_math::acoshf", "amp_math/Concurrency::precise_math::asinf", "amp_math/Concurrency::precise_math::asinh", "amp_math/Concurrency::precise_math::atan", "amp_math/Concurrency::precise_math::atan2", "amp_math/Concurrency::precise_math::atanf", "amp_math/Concurrency::precise_math::atanh", "amp_math/Concurrency::precise_math::cbrt", "amp_math/Concurrency::precise_math::cbrtf", "amp_math/Concurrency::precise_math::ceilf", "amp_math/Concurrency::precise_math::copysign", "amp_math/Concurrency::precise_math::cos", "amp_math/Concurrency::precise_math::cosf", "amp_math/Concurrency::precise_math::coshf", "amp_math/Concurrency::precise_math::cospi", "amp_math/Concurrency::precise_math::erf", "amp_math/Concurrency::precise_math::erfc", "amp_math/Concurrency::precise_math::erfcinv", "amp_math/Concurrency::precise_math::erfcinvf", "amp_math/Concurrency::precise_math::erfinv", "amp_math/Concurrency::precise_math::erfinvf", "amp_math/Concurrency::precise_math::exp10", "amp_math/Concurrency::precise_math::exp10f", "amp_math/Concurrency::precise_math::exp2f", "amp_math/Concurrency::precise_math::expf", "amp_math/Concurrency::precise_math::expm1f", "amp_math/Concurrency::precise_math::fabs", "amp_math/Concurrency::precise_math::floor", "amp_math/Concurrency::precise_math::fdim", "amp_math/Concurrency::precise_math::floorf", "amp_math/Concurrency::precise_math::fmaf", "amp_math/Concurrency::precise_math::fmaxf", "amp_math/Concurrency::precise_math::fmin", "amp_math/Concurrency::precise_math::fmod", "amp_math/Concurrency::precise_math::fmodf", "amp_math/Concurrency::precise_math::frexp", "amp_math/Concurrency::precise_math::frexpf", "amp_math/Concurrency::precise_math::hypotf", "amp_math/Concurrency::precise_math::ilogb", "amp_math/Concurrency::precise_math::isfinite", "amp_math/Concurrency::precise_math::isinf", "amp_math/Concurrency::precise_math::isnormal", "amp_math/Concurrency::precise_math::ldexp", "amp_math/Concurrency::precise_math::lgamma", "amp_math/Concurrency::precise_math::lgammaf", "amp_math/Concurrency::precise_math::log10", "amp_math/Concurrency::precise_math::log10f", "amp_math/Concurrency::precise_math::log1pf", "amp_math/Concurrency::precise_math::log2", "amp_math/Concurrency::precise_math::logb", "amp_math/Concurrency::precise_math::logbf", "amp_math/Concurrency::precise_math::modf", "amp_math/Concurrency::precise_math::modff", "amp_math/Concurrency::precise_math::nanf", "amp_math/Concurrency::precise_math::nearbyint", "amp_math/Concurrency::precise_math::nextafter", "amp_math/Concurrency::precise_math::nextafterf", "amp_math/Concurrency::precise_math::phif", "amp_math/Concurrency::precise_math::pow", "amp_math/Concurrency::precise_math::probit", "amp_math/Concurrency::precise_math::probitf", "amp_math/Concurrency::precise_math::rcbrtf", "amp_math/Concurrency::precise_math::remainder", "amp_math/Concurrency::precise_math::remquo", "amp_math/Concurrency::precise_math::remquof", "amp_math/Concurrency::precise_math::roundf", "amp_math/Concurrency::precise_math::rsqrt", "amp_math/Concurrency::precise_math::scalb", "amp_math/Concurrency::precise_math::scalbf", "amp_math/Concurrency::precise_math::scalbnf", "amp_math/Concurrency::precise_math::signbit", "amp_math/Concurrency::precise_math::sin", "amp_math/Concurrency::precise_math::sincos", "amp_math/Concurrency::precise_math::sinf", "amp_math/Concurrency::precise_math::sinh", "amp_math/Concurrency::precise_math::sinpi", "amp_math/Concurrency::precise_math::sinpif", "amp_math/Concurrency::precise_math::sqrtf", "amp_math/Concurrency::precise_math::tan", "amp_math/Concurrency::precise_math::tanh", "amp_math/Concurrency::precise_math::tanhf", "amp_math/Concurrency::precise_math::tanpif", "amp_math/Concurrency::precise_math::tgamma", "amp_math/Concurrency::precise_math::trunc", "amp_math/Concurrency::precise_math::truncf"]
 ---
 # Concurrency::precise_math namespace functions
@@ -983,6 +983,7 @@ inline double fdim(
 
 *_X*<br/>
 Floating-point value
+
 *_Y*<br/>
 Floating-point value
 
@@ -1005,6 +1006,7 @@ inline float fdimf(
 
 *_X*<br/>
 Floating-point value
+
 *_Y*<br/>
 Floating-point value
 
@@ -1070,8 +1072,10 @@ inline double fma(
 
 *_X*<br/>
 The first floating-point argument.
+
 *_Y*<br/>
 The second floating-point argument.
+
 *_Z*<br/>
 The third floating-point argument.
 
@@ -1095,8 +1099,10 @@ inline float fmaf(
 
 *_X*<br/>
 The first floating-point argument.
+
 *_Y*<br/>
 The second floating-point argument.
+
 *_Z*<br/>
 The third floating-point argument.
 
diff --git a/docs/parallel/amp/reference/extent-class.md b/docs/parallel/amp/reference/extent-class.md
index d14304486f..f547bd38c0 100644
--- a/docs/parallel/amp/reference/extent-class.md
+++ b/docs/parallel/amp/reference/extent-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: extent Class (C++ AMP)"
 title: "extent Class (C++ AMP)"
-ms.date: "03/27/2019"
+description: "Learn more about: extent Class (C++ AMP)"
+ms.date: 03/27/2019
 f1_keywords: ["extent", "AMP/extent", "AMP/Concurrency::extent::extent", "AMP/Concurrency::extent::contains", "AMP/Concurrency::extent::size", "AMP/Concurrency::extent::tile", "AMP/Concurrency::extent::rank Constant"]
 helpviewer_keywords: ["extent structure"]
-ms.assetid: edb5de3d-3935-4dbb-8365-4cc6c4fb0269
 ---
 # extent Class (C++ AMP)
 
@@ -375,8 +374,10 @@ tiled_extent<_Dim0, _Dim1, _Dim2> tile() const ;
 
 *_Dim0*<br/>
 The most significant component of the tiled extent.
+
 *_Dim1*<br/>
 The next-to-most-significant component of the tiled extent.
+
 *_Dim2*<br/>
 The least significant component of the tiled extent.
 
diff --git a/docs/parallel/amp/reference/runtime-exception-class.md b/docs/parallel/amp/reference/runtime-exception-class.md
index 663c5148d0..ae03941949 100644
--- a/docs/parallel/amp/reference/runtime-exception-class.md
+++ b/docs/parallel/amp/reference/runtime-exception-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: runtime_exception Class"
 title: "runtime_exception Class"
-ms.date: "03/27/2019"
+description: "Learn more about: runtime_exception Class"
+ms.date: 03/27/2019
 f1_keywords: ["runtime_exception", "AMPRT/runtime_exception", "AMPRT/Concurrency::runtime_exception", "AMPRT/Concurrency::runtime_exception::get_error_code"]
 helpviewer_keywords: ["runtime_exception class"]
-ms.assetid: 8fe3ce2c-3d4c-4b9c-95e8-e592f37adefd
 ---
 # runtime_exception Class
 
@@ -82,7 +81,7 @@ The `runtime_exception` object to copy.
 
 The `runtime_exception` object.
 
-## <a name="dtor"></a>  ~runtime_exception Destructor
+## <a name="dtor"></a> ~runtime_exception Destructor
 
 Destroys the object.
 
diff --git a/docs/parallel/amp/reference/texture-class.md b/docs/parallel/amp/reference/texture-class.md
index f99e078681..67d5044bae 100644
--- a/docs/parallel/amp/reference/texture-class.md
+++ b/docs/parallel/amp/reference/texture-class.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: texture Class"
 title: "texture Class"
-ms.date: "11/04/2016"
+description: "Learn more about: texture Class"
+ms.date: 11/04/2016
 f1_keywords: ["texture", "AMP_GRAPHICS/texture", "AMP_GRAPHICS/concurrency::graphics::texture::texture", "AMP_GRAPHICS/concurrency::graphics::texture::copy_to", "AMP_GRAPHICS/concurrency::graphics::texture::data", "AMP_GRAPHICS/concurrency::graphics::texture::get", "AMP_GRAPHICS/concurrency::graphics::texture::get_associated_accelerator_view", "AMP_GRAPHICS/concurrency::graphics::texture::get_depth_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::get_row_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::set", "AMP_GRAPHICS/concurrency::graphics::texture::rank", "AMP_GRAPHICS/concurrency::graphics::texture::associated_accelerator_view", "AMP_GRAPHICS/concurrency::graphics::texture::depth_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::row_pitch"]
-ms.assetid: 16e85d4d-e80a-474a-995d-8bf63fbdf34c
 ---
 # texture Class
 
-A texture is a data aggregate on an `accelerator_view` in the extent domain. It is a collection of variables, one for each element in an extent domain. Each variable holds a value corresponding to C++ primitive type ( **`unsigned int`**, **`int`**, **`float`**, **`double`**), a scalar type ( `norm`, or `unorm`), or a short vector type.
+A texture is a data aggregate on an `accelerator_view` in the extent domain. It is a collection of variables, one for each element in an extent domain. Each variable holds a value corresponding to C++ primitive type ( **`unsigned int`**, **`int`**, **`float`**, **`double`**), a scalar type (`norm`, or `unorm`), or a short vector type.
 
 ## Syntax
 
diff --git a/docs/parallel/amp/reference/texture-view-class.md b/docs/parallel/amp/reference/texture-view-class.md
index 610f6fedf5..2ab64c9f96 100644
--- a/docs/parallel/amp/reference/texture-view-class.md
+++ b/docs/parallel/amp/reference/texture-view-class.md
@@ -40,7 +40,7 @@ The rank of the `texture_view`.
 |----------|-----------------|
 |`value_type`|The type of the elements in the texture aggregates.|
 |`coordinates_type`|The type of the coordinate used to specify a texel in the `texture_view`—that is, a `short_vector` that has the same rank as the associated texture that has a value type of **`float`**.|
-|`gather_return_type`|The return type used for gather operations—that is, a rank 4 `short_vector` that holds the four homogenous color components gathered from the four texel values sampled.|
+|`gather_return_type`|The return type used for gather operations—that is, a rank 4 `short_vector` that holds the four homogeneous color components gathered from the four texel values sampled.|
 
 ### Public Constructors
 
diff --git a/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md b/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md
index cb5312d969..5546f80384 100644
--- a/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md
+++ b/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md
@@ -1,11 +1,12 @@
 ---
-description: "Learn more about: Using accelerator and accelerator_view Objects"
 title: "Using accelerator and accelerator_view Objects"
+description: "Learn more about: Using accelerator and accelerator_view Objects"
 ms.date: "11/04/2016"
+ms.topic: how-to
 ---
 # Using accelerator and accelerator_view Objects
 
-You can use the [accelerator](../../parallel/amp/reference/accelerator-class.md) and [accelerator_view](../../parallel/amp/reference/accelerator-view-class.md) classes to specify the device or emulator to run your C++ AMP code on. A system might have several devices or emulators that differ by amount of memory, shared memory support, debugging support, or double-precision support. C++ Accelerated Massive Parallelism (C++ AMP) provides APIs that you can use to examine the available accelerators, set one as the default, specify multiple accelerator_views for multiple calls to parallel_for_each, and perform special debugging tasks.
+You can use the [accelerator](reference/accelerator-class.md) and [accelerator_view](reference/accelerator-view-class.md) classes to specify the device or emulator to run your C++ AMP code on. A system might have several devices or emulators that differ by amount of memory, shared memory support, debugging support, or double-precision support. C++ Accelerated Massive Parallelism (C++ AMP) provides APIs that you can use to examine the available accelerators, set one as the default, specify multiple accelerator_views for multiple calls to parallel_for_each, and perform special debugging tasks.
 
 > [!NOTE]
 > C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0.
@@ -45,7 +46,7 @@ void default_properties() {
 
 ### CPPAMP_DEFAULT_ACCELERATOR Environment Variable
 
-You can set the CPPAMP_DEFAULT_ACCELERATOR environment variable to specify the `accelerator::device_path` of the default accelerator. The path is hardware-dependent. The following code uses the `accelerator::get_all` function to retrieve a list of the available accelerators and then displays the path and characteristics of each accelerator.
+You can set the `CPPAMP_DEFAULT_ACCELERATOR` environment variable to specify the `accelerator::device_path` of the default accelerator. The path is hardware-dependent. The following code uses the `accelerator::get_all` function to retrieve a list of the available accelerators and then displays the path and characteristics of each accelerator.
 
 ```cpp
 void list_all_accelerators()
@@ -160,7 +161,7 @@ There are two ways to use multiple accelerators in your app:
 
 - You can pass `accelerator_view` objects to the calls to the [parallel_for_each](reference/concurrency-namespace-functions-amp.md#parallel_for_each) method.
 
-- You can construct an **array** object using a specific `accelerator_view` object. The C+AMP runtime will pick up the `accelerator_view` object from the captured **array** object in the lambda expression.
+- You can construct an **array** object using a specific `accelerator_view` object. The C++ AMP runtime will pick up the `accelerator_view` object from the captured **array** object in the lambda expression.
 
 ## Special Accelerators
 
@@ -178,6 +179,6 @@ The C++ AMP runtime supports interoperability between the `accelerator_view` cla
 
 ## See also
 
-[C++ AMP (C++ Accelerated Massive Parallelism)](../../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md)<br/>
-[Debugging GPU Code](/visualstudio/debugger/debugging-gpu-code)<br/>
-[accelerator_view Class](../../parallel/amp/reference/accelerator-view-class.md)
+[C++ AMP (C++ Accelerated Massive Parallelism)](cpp-amp-cpp-accelerated-massive-parallelism.md)\
+[Debugging GPU Code](/visualstudio/debugger/debugging-gpu-code)\
+[accelerator_view Class](reference/accelerator-view-class.md)
diff --git a/docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md b/docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md
index 7068a8bd01..48032eb464 100644
--- a/docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md
+++ b/docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Using C++ AMP in UWP Apps"
 title: "Using C++ AMP in UWP Apps"
 ms.date: "11/04/2016"
+ms.topic: concept-article
 ---
 # Using C++ AMP in UWP Apps
 
diff --git a/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md b/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md
index 8daf318892..dfe089c670 100644
--- a/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md
+++ b/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Using Lambdas, Function Objects, and Restricted Functions"
 title: "Using Lambdas, Function Objects, and Restricted Functions"
 ms.date: "11/04/2016"
+ms.topic: concept-article
 ---
 # Using Lambdas, Function Objects, and Restricted Functions
 
diff --git a/docs/parallel/amp/using-tiles.md b/docs/parallel/amp/using-tiles.md
index a68f6a66b8..e8b2840cdc 100644
--- a/docs/parallel/amp/using-tiles.md
+++ b/docs/parallel/amp/using-tiles.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Using Tiles"
 title: "Using Tiles"
 ms.date: "11/19/2018"
+ms.topic: how-to
 ---
 # Using Tiles
 
diff --git a/docs/parallel/concrt/asynchronous-message-blocks.md b/docs/parallel/concrt/asynchronous-message-blocks.md
index 54f4c8092f..dbbe11f411 100644
--- a/docs/parallel/concrt/asynchronous-message-blocks.md
+++ b/docs/parallel/concrt/asynchronous-message-blocks.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Asynchronous Message Blocks"
 title: "Asynchronous Message Blocks"
-ms.date: "11/04/2016"
+description: "Learn more about: Asynchronous Message Blocks"
+ms.date: 11/04/2016
 helpviewer_keywords: ["non-greedy join [Concurrency Runtime]", "asynchronous message blocks", "greedy join [Concurrency Runtime]"]
-ms.assetid: 79c456c0-1692-480c-bb67-98f2434c1252
 ---
 # Asynchronous Message Blocks
 
@@ -257,7 +256,7 @@ The [concurrency::join](../../parallel/concrt/reference/join-class.md) and [conc
 
 Reading from a `join` or `multitype_join` object resembles calling the Windows API function `WaitForMultipleObjects` when it has the `bWaitAll` parameter set to `TRUE`. However, just like a `choice` object, `join` and `multitype_join` objects use an event mechanism that binds data to the event itself instead of to an external synchronization object.
 
-Reading from a `join` object produces a std::[vector](../../standard-library/vector-class.md) object. Reading from a `multitype_join` object produces a std::[tuple](../../standard-library/tuple-class.md) object. Elements appear in these objects in the same order as their corresponding source buffers are linked to the `join` or `multitype_join` object. Because the order in which you link source buffers to a `join` or `multitype_join` object is associated with the order of elements in the resulting `vector` or `tuple` object, we recommend that you do not unlink an existing source buffer from a join. Doing so can result in unspecified behavior.
+Reading from a `join` object produces a [std::vector](../../standard-library/vector-class.md) object. Reading from a `multitype_join` object produces a [std::tuple](../../standard-library/tuple-class.md) object. Elements appear in these objects in the same order as their corresponding source buffers are linked to the `join` or `multitype_join` object. Because the order in which you link source buffers to a `join` or `multitype_join` object is associated with the order of elements in the resulting `vector` or `tuple` object, we recommend that you do not unlink an existing source buffer from a join. Doing so can result in unspecified behavior.
 
 ### Greedy Versus Non-Greedy Joins
 
@@ -285,7 +284,7 @@ For complete examples that show how to use the `join` class, see [How to: Select
 
 ## <a name="timer"></a> timer Class
 
-The concurrency::[timer class](../../parallel/concrt/reference/timer-class.md) acts as a message source. A `timer` object sends a message to a target after a specified period of time has elapsed. The `timer` class is useful when you must delay sending a message or you want to send a message at a regular interval.
+The [concurrency::timer class](../../parallel/concrt/reference/timer-class.md) acts as a message source. A `timer` object sends a message to a target after a specified period of time has elapsed. The `timer` class is useful when you must delay sending a message or you want to send a message at a regular interval.
 
 The `timer` class sends its message to just one target. If you set the `_PTarget` parameter in the constructor to `NULL`, you can later specify the target by calling the [concurrency::ISource::link_target](reference/source-block-class.md#link_target) method.
 
diff --git a/docs/parallel/concrt/best-practices-in-the-asynchronous-agents-library.md b/docs/parallel/concrt/best-practices-in-the-asynchronous-agents-library.md
index 88a23f3247..f41406f07f 100644
--- a/docs/parallel/concrt/best-practices-in-the-asynchronous-agents-library.md
+++ b/docs/parallel/concrt/best-practices-in-the-asynchronous-agents-library.md
@@ -4,6 +4,7 @@ title: "Best Practices in the Asynchronous Agents Library"
 ms.date: 08/25/2021
 helpviewer_keywords: ["best practices, Asynchronous Agents Library", "Asynchronous Agents Library, best practices", "Asynchronous Agents Library, practices to avoid", "practices to avoid, Asynchronous Agents Library"]
 ms.assetid: 85f52354-41eb-4b0d-98c5-f7344ee8a8cf
+ms.topic: best-practice
 ---
 # Best Practices in the Asynchronous Agents Library
 
diff --git a/docs/parallel/concrt/best-practices-in-the-parallel-patterns-library.md b/docs/parallel/concrt/best-practices-in-the-parallel-patterns-library.md
index 6a1a228678..34ef2be116 100644
--- a/docs/parallel/concrt/best-practices-in-the-parallel-patterns-library.md
+++ b/docs/parallel/concrt/best-practices-in-the-parallel-patterns-library.md
@@ -4,6 +4,7 @@ title: "Best Practices in the Parallel Patterns Library"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Parallel Patterns Library, practices to avoid", "practices to avoid, Parallel Patterns Library", "best practices, Parallel Patterns Library", "Parallel Patterns Library, best practices"]
 ms.assetid: e43e0304-4d54-4bd8-a3b3-b8673559a9d7
+ms.topic: best-practice
 ---
 # Best Practices in the Parallel Patterns Library
 
diff --git a/docs/parallel/concrt/codesnippet/CPP/exception-handling-in-the-concurrency-runtime_6.cpp b/docs/parallel/concrt/codesnippet/CPP/exception-handling-in-the-concurrency-runtime_6.cpp
index ca2b028026..516134985e 100644
--- a/docs/parallel/concrt/codesnippet/CPP/exception-handling-in-the-concurrency-runtime_6.cpp
+++ b/docs/parallel/concrt/codesnippet/CPP/exception-handling-in-the-concurrency-runtime_6.cpp
@@ -18,7 +18,7 @@ int wmain()
    {
       parallel_for(-5, 20, [min,max](int i)
       {
-         // Throw an exeception if the input value is less than the 
+         // Throw an exception if the input value is less than the 
          // minimum or greater than the maximum.
 
          // Otherwise, print the value to the console.
diff --git a/docs/parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md b/docs/parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md
index db3fe945cd..bd772a4ef6 100644
--- a/docs/parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md
+++ b/docs/parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md
@@ -4,6 +4,7 @@ title: "Comparing Synchronization Data Structures to the Windows API"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["synchronization data structures, compared to Windows API", "event class, example"]
 ms.assetid: 8b0b1a3a-ef80-408c-91fa-93e6af920b4e
+ms.topic: concept-article
 ---
 # Comparing Synchronization Data Structures to the Windows API
 
diff --git a/docs/parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md b/docs/parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md
index 6ed662fcd0..6b4db8e930 100644
--- a/docs/parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md
+++ b/docs/parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md
@@ -4,6 +4,7 @@ title: "Comparing the Concurrency Runtime to Other Concurrency Models"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Concurrency Runtime, compared to other models"]
 ms.assetid: d8b9a1f4-f15f-43c3-a5b4-c0991edf9c86
+ms.topic: concept-article
 ---
 # Comparing the Concurrency Runtime to Other Concurrency Models
 
diff --git a/docs/parallel/concrt/concurrency-runtime-best-practices.md b/docs/parallel/concrt/concurrency-runtime-best-practices.md
index a3406772d9..17e5f8d963 100644
--- a/docs/parallel/concrt/concurrency-runtime-best-practices.md
+++ b/docs/parallel/concrt/concurrency-runtime-best-practices.md
@@ -4,6 +4,7 @@ title: "Concurrency Runtime Best Practices"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["best practices [Concurrency Runtime]", "Concurrency Runtime, practices to avoid", "practices to avoid [Concurrency Runtime]", "Concurrency Runtime, best practices"]
 ms.assetid: 7231d4be-d1e3-401d-8b66-94fd51b587c9
+ms.topic: best-practice
 ---
 # Concurrency Runtime Best Practices
 
diff --git a/docs/parallel/concrt/contexts.md b/docs/parallel/concrt/contexts.md
index 47042ab9ef..371b1142c8 100644
--- a/docs/parallel/concrt/contexts.md
+++ b/docs/parallel/concrt/contexts.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: Contexts"
 title: "Contexts"
-ms.date: "11/04/2016"
+description: "Learn more about: Contexts"
+ms.date: 11/04/2016
 helpviewer_keywords: ["contexts [Concurrency Runtime]"]
-ms.assetid: 10c1d861-8fbb-4ba0-b2ec-61876b11176e
 ---
 # Contexts
 
-This document describes the role of contexts in the Concurrency Runtime. A thread that is attached to a scheduler is known as an *execution context*, or just *context*. The [concurrency::wait](reference/concurrency-namespace-functions.md#wait) function and the concurrency::[Context class](../../parallel/concrt/reference/context-class.md) enable you to control the behavior of contexts. Use the `wait` function to suspend the current context for a specified time. Use the `Context` class when you need more control over when contexts block, unblock, and yield, or when you want to oversubscribe the current context.
+This document describes the role of contexts in the Concurrency Runtime. A thread that is attached to a scheduler is known as an *execution context*, or just *context*. The [concurrency::wait](reference/concurrency-namespace-functions.md#wait) function and the [concurrency::Context class](../../parallel/concrt/reference/context-class.md) enable you to control the behavior of contexts. Use the `wait` function to suspend the current context for a specified time. Use the `Context` class when you need more control over when contexts block, unblock, and yield, or when you want to oversubscribe the current context.
 
 > [!TIP]
 > The Concurrency Runtime provides a default scheduler, and therefore you are not required to create one in your application. Because the Task Scheduler helps you fine-tune the performance of your applications, we recommend that you start with the [Parallel Patterns Library (PPL)](../../parallel/concrt/parallel-patterns-library-ppl.md) or the [Asynchronous Agents Library](../../parallel/concrt/asynchronous-agents-library.md) if you are new to the Concurrency Runtime.
@@ -24,7 +23,7 @@ For an example that uses the `wait` function to yield the current context, and t
 
 ## The Context Class
 
-The concurrency::[Context class](../../parallel/concrt/reference/context-class.md) provides a programming abstraction for an execution context and offers two important features: the ability to cooperatively block, unblock, and yield the current context, and the ability to oversubscribe the current context.
+The [concurrency::Context class](../../parallel/concrt/reference/context-class.md) provides a programming abstraction for an execution context and offers two important features: the ability to cooperatively block, unblock, and yield the current context, and the ability to oversubscribe the current context.
 
 ### Cooperative Blocking
 
diff --git a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md
index 456c664ae9..610f700e89 100644
--- a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md
+++ b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md
@@ -4,6 +4,7 @@ title: "How to: Convert an OpenMP Loop that Uses a Reduction Variable to Use the
 ms.date: "11/04/2016"
 helpviewer_keywords: ["converting from OpenMP to the Concurrency Runtime, reduction variables", "reduction variables, converting from OpenMP to the Concurrency Runtime"]
 ms.assetid: 96623f36-5e57-4d3f-8c13-669e6cd535b1
+ms.topic: how-to
 ---
 # How to: Convert an OpenMP Loop that Uses a Reduction Variable to Use the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md
index 2bb78350f3..0afc528434 100644
--- a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md
+++ b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md
@@ -4,6 +4,7 @@ title: "How to: Convert an OpenMP Loop that Uses Cancellation to Use the Concurr
 ms.date: "11/04/2016"
 helpviewer_keywords: ["converting from OpenMP to the Concurrency Runtime, cancellation", "cancellation, converting from OpenMP to the Concurrency Runtime"]
 ms.assetid: 4b0b3c33-bfa9-4e96-ae08-aef245a39cbb
+ms.topic: how-to
 ---
 # How to: Convert an OpenMP Loop that Uses Cancellation to Use the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md
index 7ccc805681..2b4ed57d1b 100644
--- a/docs/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md
+++ b/docs/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md
@@ -4,6 +4,7 @@ title: "How to: Convert an OpenMP Loop that Uses Exception Handling to Use the C
 ms.date: "11/04/2016"
 helpviewer_keywords: ["exception handling, converting from OpenMP to the Concurrency Runtime", "converting from OpenMP to the Concurrency Runtime, exception handling"]
 ms.assetid: 03c28196-21ba-439e-8641-afab1c283e1a
+ms.topic: how-to
 ---
 # How to: Convert an OpenMP Loop that Uses Exception Handling to Use the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md b/docs/parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md
index 99750f5ce7..ab14834555 100644
--- a/docs/parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md
+++ b/docs/parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md
@@ -4,6 +4,7 @@ title: "Creating Asynchronous Operations in C++ for UWP Apps"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["Windows 8.x apps, creating C++ async operations", "Creating C++ async operations"]
 ms.assetid: a57cecf4-394a-4391-a957-1d52ed2e5494
+ms.topic: concept-article
 ---
 # Creating Asynchronous Operations in C++ for UWP Apps
 
diff --git a/docs/parallel/concrt/general-best-practices-in-the-concurrency-runtime.md b/docs/parallel/concrt/general-best-practices-in-the-concurrency-runtime.md
index cd72bb5c72..8e933fe501 100644
--- a/docs/parallel/concrt/general-best-practices-in-the-concurrency-runtime.md
+++ b/docs/parallel/concrt/general-best-practices-in-the-concurrency-runtime.md
@@ -4,6 +4,7 @@ title: "General Best Practices in the Concurrency Runtime"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Concurrency Runtime, general best practices"]
 ms.assetid: ce5c784c-051e-44a6-be84-8b3e1139c18b
+ms.topic: best-practice
 ---
 # General Best Practices in the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md
index 296c70f128..b1eca2fb42 100644
--- a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md
+++ b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: How to: Send a Message at a Regular Interval"
 title: "How to: Send a Message at a Regular Interval"
-ms.date: "11/04/2016"
+description: "Learn more about: How to: Send a Message at a Regular Interval"
+ms.date: 11/04/2016
 helpviewer_keywords: ["timer class, example", "sending messages at regular intervals [Concurrency Runtime]"]
-ms.assetid: 4b60ea6c-97c8-4d69-9f7b-ad79f3548026
 ---
 # How to: Send a Message at a Regular Interval
 
-This example shows how to use the concurrency::[timer class](../../parallel/concrt/reference/timer-class.md) to send a message at a regular interval.
+This example shows how to use the [concurrency::timer class](../../parallel/concrt/reference/timer-class.md) to send a message at a regular interval.
 
 ## Example
 
diff --git a/docs/parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md b/docs/parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md
index bf77fcfa78..19797cae52 100644
--- a/docs/parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md
+++ b/docs/parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: How to: Use Exception Handling to Break from a Parallel Loop"
 title: "How to: Use Exception Handling to Break from a Parallel Loop"
-ms.date: "11/04/2016"
+description: "Learn more about: How to: Use Exception Handling to Break from a Parallel Loop"
+ms.date: 11/04/2016
 helpviewer_keywords: ["search algorithm, writing [Concurrency Runtime]", "writing a search algorithm [Concurrency Runtime]"]
-ms.assetid: 16d7278c-2d10-4014-9f58-f1899e719ff9
 ---
 # How to: Use Exception Handling to Break from a Parallel Loop
 
@@ -23,7 +22,7 @@ The following example shows the `for_all` method. It uses the [concurrency::para
 
 [!code-cpp[concrt-task-tree-search#1](../../parallel/concrt/codesnippet/cpp/how-to-use-exception-handling-to-break-from-a-parallel-loop_2.cpp)]
 
-## Example:  Search the tree for a value
+## Example: Search the tree for a value
 
 The following example shows the `search_for_value` function, which searches for a value in the provided `tree` object. This function passes to the `for_all` method a work function that throws when it finds a tree node that contains the provided value.
 
diff --git a/docs/parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md b/docs/parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md
index 15d2ff642b..8cce219c99 100644
--- a/docs/parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md
+++ b/docs/parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 helpviewer_keywords: ["Concurrency Runtime, migrating from OpenMP", "OpenMP, migrating to the Concurrency Runtime"]
 ms.assetid: 9bab7bb1-e45d-44b2-8509-3b226be2c93b
 ms.custom: intro-migration
+ms.topic: upgrade-and-migration-article
 ---
 # Migrating from OpenMP to the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/overview-of-the-concurrency-runtime.md b/docs/parallel/concrt/overview-of-the-concurrency-runtime.md
index e36669177c..5c24163149 100644
--- a/docs/parallel/concrt/overview-of-the-concurrency-runtime.md
+++ b/docs/parallel/concrt/overview-of-the-concurrency-runtime.md
@@ -4,6 +4,7 @@ title: "Overview of the Concurrency Runtime"
 ms.date: "11/19/2018"
 helpviewer_keywords: ["Concurrency Runtime, requirements", "Concurrency Runtime, architecture", "Concurrency Runtime, overview", "Concurrency Runtime, lambda expressions"]
 ms.assetid: 56237d96-10b0-494a-9cb4-f5c5090436c5
+ms.topic: concept-article
 ---
 # Overview of the Concurrency Runtime
 
diff --git a/docs/parallel/concrt/parallel-algorithms.md b/docs/parallel/concrt/parallel-algorithms.md
index b9f60473e1..8fb96cb02d 100644
--- a/docs/parallel/concrt/parallel-algorithms.md
+++ b/docs/parallel/concrt/parallel-algorithms.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Parallel Algorithms"
 title: "Parallel Algorithms"
-ms.date: "11/19/2018"
+description: "Learn more about: Parallel Algorithms"
+ms.date: 11/19/2018
 helpviewer_keywords: ["parallel algorithms [Concurrency Runtime]"]
-ms.assetid: 045dca7b-4d73-4558-a44c-383b88a28473
+ms.topic: how-to
 ---
 # Parallel Algorithms
 
@@ -143,7 +143,7 @@ You can use the `parallel transform` algorithm to perform many data parallelizat
 
 - Perform 3-D ray tracing, where each iteration refers to one pixel that must be rendered.
 
-The following example shows the basic structure that is used to call the `parallel_transform` algorithm. This example negates each element of a std::[vector](../../standard-library/vector-class.md) object in two ways. The first way uses a lambda expression. The second way uses [std::negate](../../standard-library/negate-struct.md), which derives from [std::unary_function](../../standard-library/unary-function-struct.md).
+The following example shows the basic structure that is used to call the `parallel_transform` algorithm. This example negates each element of a [std::vector](../../standard-library/vector-class.md) object in two ways. The first way uses a lambda expression. The second way uses [std::negate](../../standard-library/negate-struct.md), which derives from [std::unary_function](../../standard-library/unary-function-struct.md).
 
 [!code-cpp[concrt-basic-parallel-transform#1](../../parallel/concrt/codesnippet/cpp/parallel-algorithms_4.cpp)]
 
@@ -206,7 +206,7 @@ Divides work into ranges such that each range has at least the number of iterati
 Divides work into a fixed number of ranges (typically the number of worker threads that are available to work on the loop). This partitioner type can improve performance because it does not use work-stealing and therefore has less overhead. Use this partitioner type when each iteration of a parallel loop performs a fixed and uniform amount of work and you do not require support for cancellation or forward cooperative blocking.
 
 > [!WARNING]
-> The `parallel_for_each` and `parallel_transform` algorithms support only containers that use random access iterators (such as std::[vector](../../standard-library/vector-class.md)) for the static, simple, and affinity partitioners. The use of containers that use bidirectional and forward iterators produces a compile-time error. The default partitioner, `auto_partitioner`, supports all three of these iterator types.
+> The `parallel_for_each` and `parallel_transform` algorithms support only containers that use random access iterators (such as [std::vector](../../standard-library/vector-class.md)) for the static, simple, and affinity partitioners. The use of containers that use bidirectional and forward iterators produces a compile-time error. The default partitioner, `auto_partitioner`, supports all three of these iterator types.
 
 Typically, these partitioners are used in the same way, except for `affinity_partitioner`. Most partitioner types do not maintain state and are not modified by the runtime. Therefore you can create these partitioner objects at the call site, as shown in the following example.
 
@@ -262,7 +262,7 @@ This example shows how to provide a hash function to the `parallel_radixsort` al
 
 For illustration, this example uses a relatively small data set. You can increase the initial size of the vector to experiment with performance improvements over larger sets of data.
 
-This example uses a lambda expression as the hash function. You can also use one of the built-in implementations of the std::[hash class](../../standard-library/hash-class.md) or define your own specialization. You can also use a custom hash function object, as shown in this example:
+This example uses a lambda expression as the hash function. You can also use one of the built-in implementations of the [std::hash class](../../standard-library/hash-class.md) or define your own specialization. You can also use a custom hash function object, as shown in this example:
 
 [!code-cpp[concrt-parallel-sort-points#2](../../parallel/concrt/codesnippet/cpp/parallel-algorithms_13.cpp)]
 &nbsp;
diff --git a/docs/parallel/concrt/reference/concurrency-namespace-functions.md b/docs/parallel/concrt/reference/concurrency-namespace-functions.md
index f1aea9adb8..10f4a1627f 100644
--- a/docs/parallel/concrt/reference/concurrency-namespace-functions.md
+++ b/docs/parallel/concrt/reference/concurrency-namespace-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: concurrency namespace functions"
 title: "concurrency namespace functions"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrency namespace functions"
+ms.date: 11/04/2016
 f1_keywords: ["concrt/concurrency::Alloc", "concrt/concurrency::DisableTracing", "concrt/concurrency::EnableTracing", "concrtrm/concurrency::GetExecutionContextId", "concrtrm/concurrency::GetOSVersion", "concrtrm/concurrency::GetProcessorNodeCount", "concrtrm/concurrency::GetSchedulerId", "agents/concurrency::asend", "ppltasks/concurrency::cancel_current_task", "ppltasks/concurrency::create_async", "ppltasks/concurrency::create_task", "concurrent_vector/concurrency::internal_assign_iterators", "ppl/concurrency::interruption_point", "agents/concurrency::make_choice", "agents/concurrency::make_greedy_join", "ppl/concurrency::make_task", "ppl/concurrency::parallel_buffered_sort", "ppl/concurrency::parallel_for_each", "ppl/concurrency::parallel_invoke", "ppl/concurrency::parallel_reduce", "ppl/concurrency::parallel_sort", "agents/concurrency::receive", "ppl/concurrency::run_with_cancellation_token", "pplconcrt/concurrency::set_ambient_scheduler", "concrt/concurrency::set_task_execution_resources", "ppltasks/concurrency::task_from_exception", "ppltasks/concurrency::task_from_result", "concrt/concurrency::wait", "ppltasks/concurrency::when_all", "ppltasks/concurrency::when_any"]
-ms.assetid: 520a6dff-9324-4df2-990d-302e3050af6a
 ---
 # concurrency namespace functions
 
@@ -175,7 +174,7 @@ The lambda may take either zero, one or two arguments. The valid arguments are `
 
 If the body of the lambda or function object returns a result (and not a task\<TResult>), the lamdba will be executed asynchronously within the process MTA in the context of a task the Runtime implicitly creates for it. The `IAsyncInfo::Cancel` method will cause cancellation of the implicit task.
 
-If the body of the lambda returns a task, the lamba executes inline, and by declaring the lambda to take an argument of type `cancellation_token` you can trigger cancellation of any tasks you create within the lambda by passing that token in when you create them. You may also use the `register_callback` method on the token to cause the Runtime to invoke a callback when you call `IAsyncInfo::Cancel` on the async operation or action produced..
+If the body of the lambda returns a task, the lambda executes inline, and by declaring the lambda to take an argument of type `cancellation_token` you can trigger cancellation of any tasks you create within the lambda by passing that token in when you create them. You may also use the `register_callback` method on the token to cause the Runtime to invoke a callback when you call `IAsyncInfo::Cancel` on the async operation or action produced.
 
 This function is only available to Windows Runtime apps.
 
@@ -1532,7 +1531,7 @@ The concurrent vector providing the elements to be swapped, or the vector whose
 
 ### Remarks
 
-The template function is an algorithm specialized on the container class `concurrent_vector` to execute the member function `_A`. [concurrent_vector::swap](concurrent-vector-class.md#swap)( `_B`). These are instances of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, `template <class T> void swap(T&, T&)`, in the algorithm class works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
+The template function is an algorithm specialized on the container class `concurrent_vector` to execute the member function `_A`. [concurrent_vector::swap](concurrent-vector-class.md#swap)(`_B`). These are instances of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, `template <class T> void swap(T&, T&)`, in the algorithm class works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
 
 This method is not concurrency-safe. You must ensure that no other threads are performing operations on either of the concurrent vectors when you call this method.
 
diff --git a/docs/parallel/concrt/reference/concurrent-priority-queue-class.md b/docs/parallel/concrt/reference/concurrent-priority-queue-class.md
index 8e190a3606..5a6ba9ae4e 100644
--- a/docs/parallel/concrt/reference/concurrent-priority-queue-class.md
+++ b/docs/parallel/concrt/reference/concurrent-priority-queue-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_priority_queue Class"
 title: "concurrent_priority_queue Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_priority_queue Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_priority_queue", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::concurrent_priority_queue", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::clear", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::empty", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::get_allocator", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::push", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::size", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::swap", "CONCURRENT_PRIORITY_QUEUE/concurrency::concurrent_priority_queue::try_pop"]
 helpviewer_keywords: ["concurrent_priority_queue class"]
-ms.assetid: 3e740381-0f4e-41fc-8b66-ad0bb55f17a3
 ---
 # concurrent_priority_queue Class
 
@@ -14,10 +13,9 @@ The `concurrent_priority_queue` class is a container that allows multiple thread
 
 ```cpp
 template <typename T,
-    typename _Compare= std::less<T>,
-    typename _Ax = std::allocator<T>
->,
-    typename _Ax = std::allocator<T>> class concurrent_priority_queue;
+    typename _Compare = std::less<T>,
+    typename _Ax = std::allocator<T>>
+class concurrent_priority_queue;
 ```
 
 ### Parameters
diff --git a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md
index c9e47fc292..b777495b54 100644
--- a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md
+++ b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_unordered_map Class"
 title: "concurrent_unordered_map Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_unordered_map Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::at", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::hash_function", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::insert", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::key_eq", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::swap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::unsafe_erase"]
 helpviewer_keywords: ["concurrent_unordered_map class"]
-ms.assetid: b2d879dd-87ef-4af9-a266-a5443fd538b8
 ---
 # concurrent_unordered_map Class
 
@@ -17,18 +16,8 @@ template <typename K,
     typename _Element_type,
     typename _Hasher = std::hash<K>,
     typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<std::pair<const K,
-    _Element_type>>
->,
-typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<std::pair<const K,
-    _Element_type>>> class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
-    _Element_type,
-details::_Hash_compare<K,
-    _Hasher,
-key_equality>,
-    _Allocator_type,
-false>>;
+    typename _Allocator_type = std::allocator<std::pair<const K, _Element_type>>>
+class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K, _Element_type, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, false>>;
 ```
 
 ### Parameters
@@ -81,7 +70,7 @@ The type that represents the stored allocator object that encapsulates details a
 
 |Name|Description|
 |----------|-----------------|
-|[at](#at)|Overloaded. Finds an element in a `concurrent_unordered_map` with a specified key value.. This method is concurrency-safe.|
+|[at](#at)|Overloaded. Finds an element in a `concurrent_unordered_map` with a specified key value. This method is concurrency-safe.|
 |[hash_function](#hash_function)|Gets the stored hash function object.|
 |[insert](#insert)|Overloaded. Adds elements to the `concurrent_unordered_map` object.|
 |[key_eq](#key_eq)|Gets the stored equality comparison function object.|
@@ -115,7 +104,7 @@ For detailed information on the `concurrent_unordered_map` class, see [Parallel
 
 ## <a name="at"></a> at
 
-Finds an element in a `concurrent_unordered_map` with a specified key value.. This method is concurrency-safe.
+Finds an element in a `concurrent_unordered_map` with a specified key value. This method is concurrency-safe.
 
 ```cpp
 mapped_type& at(const key_type& KVal);
@@ -430,7 +419,7 @@ A pair that contains an iterator and a boolean value. See the Remarks section fo
 
 The first member function determines whether an element X exists in the sequence whose key has equivalent ordering to that of `value`. If not, it creates such an element X and initializes it with `value`. The function then determines the iterator `where` that designates X. If an insertion occurred, the function returns `std::pair(where, true)`. Otherwise, it returns `std::pair(where, false)`.
 
-The second member function returns insert( `value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
+The second member function returns insert(`value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
 
 The third member function inserts the sequence of element values from the range [ `first`, `last`).
 
@@ -476,7 +465,7 @@ void max_load_factor(float _Newmax);
 
 ### Return Value
 
-The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid..
+The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.
 
 ## <a name="max_size"></a> max_size
 
@@ -766,5 +755,5 @@ The maximum number of buckets in this container.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md)
diff --git a/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md b/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md
index 9ede5be1d2..a28357a21e 100644
--- a/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md
+++ b/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_unordered_multimap Class"
 title: "concurrent_unordered_multimap Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_unordered_multimap Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::hash_function", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::insert", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::key_eq", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::swap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::unsafe_erase"]
 helpviewer_keywords: ["concurrent_unordered_multimap class"]
-ms.assetid: 4dada5d7-15df-4382-b9c9-348e75b2f3c1
 ---
 # concurrent_unordered_multimap Class
 
@@ -17,18 +16,8 @@ template <typename K,
     typename _Element_type,
     typename _Hasher = std::hash<K>,
     typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<std::pair<const K,
-    _Element_type>>
->,
-typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<std::pair<const K,
-    _Element_type>>> class concurrent_unordered_multimap : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
-    _Element_type,
-details::_Hash_compare<K,
-    _Hasher,
-key_equality>,
-    _Allocator_type,
-true>>;
+    typename _Allocator_type = std::allocator<std::pair<const K, _Element_type>>>
+class concurrent_unordered_multimap : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K, _Element_type, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, true>>;
 ```
 
 ### Parameters
@@ -403,7 +392,7 @@ An iterator pointing to the insertion location.
 
 The first member function inserts the element `value` in the controlled sequence, then returns the iterator that designates the inserted element.
 
-The second member function returns insert( `value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
+The second member function returns insert(`value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
 
 The third member function inserts the sequence of element values from the range [ `first`, `last`).
 
@@ -449,7 +438,7 @@ void max_load_factor(float _Newmax);
 
 ### Return Value
 
-The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid..
+The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.
 
 ## <a name="max_size"></a> max_size
 
@@ -708,5 +697,5 @@ The maximum number of buckets in this container.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md)
diff --git a/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md b/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md
index 3684631591..487bba1780 100644
--- a/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md
+++ b/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_unordered_multiset Class"
 title: "concurrent_unordered_multiset Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_unordered_multiset Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::hash_function", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::insert", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::key_eq", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::swap", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::unsafe_erase"]
 helpviewer_keywords: ["concurrent_unordered_multiset class"]
-ms.assetid: 219d7d67-1ff0-45f4-9400-e9cc272991a4
 ---
 # concurrent_unordered_multiset Class
 
@@ -16,15 +15,8 @@ The `concurrent_unordered_multiset` class is an concurrency-safe container that
 template <typename K,
     typename _Hasher = std::hash<K>,
     typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<K>
->,
-    typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<K>> class concurrent_unordered_multiset : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
-    details::_Hash_compare<K,
-_Hasher,
-    key_equality>,
-_Allocator_type,
-    true>>;
+    typename _Allocator_type = std::allocator<K>>
+class concurrent_unordered_multiset : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, true>>;
 ```
 
 ### Parameters
@@ -391,7 +383,7 @@ An iterator pointing to the insertion location.
 
 The first member function inserts the element `value` in the controlled sequence, then returns the iterator that designates the inserted element.
 
-The second member function returns insert( `value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
+The second member function returns insert(`value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
 
 The third member function inserts the sequence of element values from the range [ `first`, `last`).
 
@@ -437,7 +429,7 @@ void max_load_factor(float _Newmax);
 
 ### Return Value
 
-The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid..
+The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.
 
 ## <a name="max_size"></a> max_size
 
@@ -694,5 +686,5 @@ The maximum number of buckets in this container.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md)
diff --git a/docs/parallel/concrt/reference/concurrent-unordered-set-class.md b/docs/parallel/concrt/reference/concurrent-unordered-set-class.md
index 52f91b4cfa..5265d958e5 100644
--- a/docs/parallel/concrt/reference/concurrent-unordered-set-class.md
+++ b/docs/parallel/concrt/reference/concurrent-unordered-set-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_unordered_set Class"
 title: "concurrent_unordered_set Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_unordered_set Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::hash_function", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::insert", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::key_eq", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::swap", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::unsafe_erase"]
 helpviewer_keywords: ["concurrent_unordered_set class"]
-ms.assetid: c61f9a9a-4fd9-491a-9251-e300737ecf4b
 ---
 # concurrent_unordered_set Class
 
@@ -16,15 +15,8 @@ The `concurrent_unordered_set` class is an concurrency-safe container that contr
 template <typename K,
     typename _Hasher = std::hash<K>,
     typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<K>
->,
-    typename key_equality = std::equal_to<K>,
-    typename _Allocator_type = std::allocator<K>> class concurrent_unordered_set : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
-    details::_Hash_compare<K,
-_Hasher,
-    key_equality>,
-_Allocator_type,
-    false>>;
+    typename _Allocator_type = std::allocator<K>>
+class concurrent_unordered_set : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, false>>;
 ```
 
 ### Parameters
@@ -393,7 +385,7 @@ A pair that contains an iterator and a boolean value. See the Remarks section fo
 
 The first member function determines whether an element X exists in the sequence whose key has equivalent ordering to that of `value`. If not, it creates such an element X and initializes it with `value`. The function then determines the iterator `where` that designates X. If an insertion occurred, the function returns `std::pair(where, true)`. Otherwise, it returns `std::pair(where, false)`.
 
-The second member function returns insert( `value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
+The second member function returns insert(`value`), using `_Where` as a starting place within the controlled sequence to search for the insertion point.
 
 The third member function inserts the sequence of element values from the range [ `first`, `last`).
 
@@ -439,7 +431,7 @@ void max_load_factor(float _Newmax);
 
 ### Return Value
 
-The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid..
+The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.
 
 ## <a name="max_size"></a> max_size
 
@@ -698,5 +690,5 @@ The maximum number of buckets in this container.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md)
diff --git a/docs/parallel/concrt/reference/concurrent-vector-class.md b/docs/parallel/concrt/reference/concurrent-vector-class.md
index af0edeecb8..1bdeb6f2c0 100644
--- a/docs/parallel/concrt/reference/concurrent-vector-class.md
+++ b/docs/parallel/concrt/reference/concurrent-vector-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: concurrent_vector Class"
 title: "concurrent_vector Class"
-ms.date: "11/04/2016"
+description: "Learn more about: concurrent_vector Class"
+ms.date: 11/04/2016
 f1_keywords: ["concurrent_vector", "CONCURRENT_VECTOR/concurrency::concurrent_vector", "CONCURRENT_VECTOR/concurrency::concurrent_vector::concurrent_vector", "CONCURRENT_VECTOR/concurrency::concurrent_vector::assign", "CONCURRENT_VECTOR/concurrency::concurrent_vector::at", "CONCURRENT_VECTOR/concurrency::concurrent_vector::back", "CONCURRENT_VECTOR/concurrency::concurrent_vector::begin", "CONCURRENT_VECTOR/concurrency::concurrent_vector::capacity", "CONCURRENT_VECTOR/concurrency::concurrent_vector::cbegin", "CONCURRENT_VECTOR/concurrency::concurrent_vector::cend", "CONCURRENT_VECTOR/concurrency::concurrent_vector::clear", "CONCURRENT_VECTOR/concurrency::concurrent_vector::crbegin", "CONCURRENT_VECTOR/concurrency::concurrent_vector::crend", "CONCURRENT_VECTOR/concurrency::concurrent_vector::empty", "CONCURRENT_VECTOR/concurrency::concurrent_vector::end", "CONCURRENT_VECTOR/concurrency::concurrent_vector::front", "CONCURRENT_VECTOR/concurrency::concurrent_vector::get_allocator", "CONCURRENT_VECTOR/concurrency::concurrent_vector::grow_by", "CONCURRENT_VECTOR/concurrency::concurrent_vector::grow_to_at_least", "CONCURRENT_VECTOR/concurrency::concurrent_vector::max_size", "CONCURRENT_VECTOR/concurrency::concurrent_vector::push_back", "CONCURRENT_VECTOR/concurrency::concurrent_vector::rbegin", "CONCURRENT_VECTOR/concurrency::concurrent_vector::rend", "CONCURRENT_VECTOR/concurrency::concurrent_vector::reserve", "CONCURRENT_VECTOR/concurrency::concurrent_vector::resize", "CONCURRENT_VECTOR/concurrency::concurrent_vector::shrink_to_fit", "CONCURRENT_VECTOR/concurrency::concurrent_vector::size", "CONCURRENT_VECTOR/concurrency::concurrent_vector::swap"]
 helpviewer_keywords: ["concurrent_vector class"]
-ms.assetid: a217b4ac-af2b-4d41-94eb-09a75ee28622
 ---
 # concurrent_vector Class
 
@@ -318,9 +317,9 @@ The second and third constructors specify a copy of the concurrent vector `_Vect
 
 The fourth constructor specifies a move of the concurrent vector `_Vector`.
 
-The fifth constructor specifies a repetition of a specified number ( `_N`) of elements of the default value for class `T`.
+The fifth constructor specifies a repetition of a specified number (`_N`) of elements of the default value for class `T`.
 
-The sixth constructor specifies a repetition of ( `_N`) elements of value `_Item`.
+The sixth constructor specifies a repetition of (`_N`) elements of value `_Item`.
 
 The last constructor specifies values supplied by the iterator range [ `_Begin`, `_End`).
 
diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md
index b88cbe2494..eb5b16e095 100644
--- a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md
+++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: invalid_scheduler_policy_thread_specification Class"
 title: "invalid_scheduler_policy_thread_specification Class"
+description: "Learn more about: invalid_scheduler_policy_thread_specification Class"
 ms.date: "11/04/2016"
 f1_keywords: ["concrt/concurrency::invalid_scheduler_policy_thread_specification"]
 helpviewer_keywords: ["invalid_scheduler_policy_thread_specification class"]
-ms.assetid: 2d0fafb2-18f8-4284-8040-3db640d33303
 ---
 # invalid_scheduler_policy_thread_specification Class
 
@@ -22,7 +21,7 @@ class invalid_scheduler_policy_thread_specification : public std::exception;
 
 |Name|Description|
 |----------|-----------------|
-|[invalid_scheduler_policy_thread_specification](invalid-scheduler-policy-value-class.md#ctor|Overloaded. Constructs an `invalid_scheduler_policy_value` object.|
+|[invalid_scheduler_policy_thread_specification](#ctor)|Overloaded. Constructs an `invalid_scheduler_policy_thread_specification` object.|
 
 ## Inheritance Hierarchy
 
@@ -48,10 +47,10 @@ invalid_scheduler_policy_thread_specification() throw();
 
 ### Parameters
 
-*_Message*<br/>
+*_Message*\
 A descriptive message of the error.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [SchedulerPolicy Class](schedulerpolicy-class.md)
diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md
index 111cc7fea2..8fbbc42ddf 100644
--- a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md
+++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: invalid_scheduler_policy_value Class"
 title: "invalid_scheduler_policy_value Class"
+description: "Learn more about: invalid_scheduler_policy_value Class"
 ms.date: "11/04/2016"
 f1_keywords: ["concrt/concurrency::invalid_scheduler_policy_value"]
 helpviewer_keywords: ["invalid_scheduler_policy_value class"]
-ms.assetid: 8c533e3f-2774-4192-8616-b2313b859bf7
 ---
 # invalid_scheduler_policy_value Class
 
@@ -22,7 +21,7 @@ class invalid_scheduler_policy_value : public std::exception;
 
 |Name|Description|
 |----------|-----------------|
-|[invalid_scheduler_policy_value](invalid-scheduler-policy-thread-specification-class.md#ctor|Overloaded. Constructs an `invalid_scheduler_policy_value` object.|
+|[invalid_scheduler_policy_value](#ctor)|Overloaded. Constructs an `invalid_scheduler_policy_value` object.|
 
 ## Inheritance Hierarchy
 
@@ -48,10 +47,10 @@ invalid_scheduler_policy_value() throw();
 
 ### Parameters
 
-*_Message*<br/>
+*_Message*\
 A descriptive message of the error.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [SchedulerPolicy Class](schedulerpolicy-class.md)
diff --git a/docs/parallel/concrt/reference/task-class.md b/docs/parallel/concrt/reference/task-class.md
index 5f90e1fb29..18fabb896c 100644
--- a/docs/parallel/concrt/reference/task-class.md
+++ b/docs/parallel/concrt/reference/task-class.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: task Class (Concurrency Runtime)"
 title: "task Class (Concurrency Runtime)"
-ms.date: "07/30/2019"
+description: "Learn more about: task Class (Concurrency Runtime)"
+ms.date: 07/30/2019
 f1_keywords: ["task", "PPLTASKS/concurrency::task", "PPLTASKS/concurrency::task::task", "PPLTASKS/concurrency::task::get", "PPLTASKS/concurrency::task::is_apartment_aware", "PPLTASKS/concurrency::task::is_done", "PPLTASKS/concurrency::task::scheduler", "PPLTASKS/concurrency::task::then", "PPLTASKS/concurrency::task::wait"]
 helpviewer_keywords: ["task class"]
-ms.assetid: cdc3a8c0-5cbe-45a0-b5d5-e9f81d94df1a
 ---
 # task Class (Concurrency Runtime)
 
-The Parallel Patterns Library (PPL) `task` class. A `task` object represents work that can be executed asynchronously and concurrently with other tasks and parallel work produced by parallel algorithms in the Concurrency Runtime. It produces a result of type `_ResultType` on successful completion. Tasks of type `task<void>` produce no result. A task can be waited upon and canceled independently of other tasks. It can also be composed with other tasks using continuations( `then`), and join( `when_all`) and choice( `when_any`) patterns. When a task object is assigned to a new variable, the behavior is that of `std::shared_ptr`; in other words, both objects represent the same underlying task.
+The Parallel Patterns Library (PPL) `task` class. A `task` object represents work that can be executed asynchronously and concurrently with other tasks and parallel work produced by parallel algorithms in the Concurrency Runtime. It produces a result of type `_ResultType` on successful completion. Tasks of type `task<void>` produce no result. A task can be waited upon and canceled independently of other tasks. It can also be composed with other tasks using continuations(`then`), and join(`when_all`) and choice(`when_any`) patterns. When a task object is assigned to a new variable, the behavior is that of `std::shared_ptr`; in other words, both objects represent the same underlying task.
 
 ## Syntax
 
@@ -91,7 +90,7 @@ The result of the task.
 If the task is canceled, a call to `get` will throw a [task_canceled](task-canceled-class.md) exception. If the task encountered an different exception or an exception was propagated to it from an antecedent task, a call to `get` will throw that exception.
 
 > [!IMPORTANT]
-> In a Universal Windows Platform (UWP) app, do not call [concurrency::task::wait](#wait) or `get` ( `wait` calls `get`) in code that runs on the user-interface thread. Otherwise, the runtime throws [concurrency::invalid_operation](invalid-operation-class.md) because these methods block the current thread and can cause the app to become unresponsive. However, you can call the `get` method to receive the result of the antecedent task in a task-based continuation because the result is immediately available.
+> In a Universal Windows Platform (UWP) app, do not call [concurrency::task::wait](#wait) or `get` (`wait` calls `get`) in code that runs on the user-interface thread. Otherwise, the runtime throws [concurrency::invalid_operation](invalid-operation-class.md) because these methods block the current thread and can cause the app to become unresponsive. However, you can call the `get` method to receive the result of the antecedent task in a task-based continuation because the result is immediately available.
 
 ## <a name="is_apartment_aware"></a> is_apartment_aware
 
diff --git a/docs/parallel/concrt/reference/transformer-class.md b/docs/parallel/concrt/reference/transformer-class.md
index b5e9aa9241..f5674f3eea 100644
--- a/docs/parallel/concrt/reference/transformer-class.md
+++ b/docs/parallel/concrt/reference/transformer-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: transformer Class"
 title: "transformer Class"
+description: "Learn more about: transformer Class"
 ms.date: "11/04/2016"
 f1_keywords: ["transformer", "AGENTS/concurrency::transformer", "AGENTS/concurrency::transformer::transformer", "AGENTS/concurrency::transformer::accept_message", "AGENTS/concurrency::transformer::consume_message", "AGENTS/concurrency::transformer::link_target_notification", "AGENTS/concurrency::transformer::propagate_message", "AGENTS/concurrency::transformer::propagate_to_any_targets", "AGENTS/concurrency::transformer::release_message", "AGENTS/concurrency::transformer::reserve_message", "AGENTS/concurrency::transformer::resume_propagation", "AGENTS/concurrency::transformer::send_message", "AGENTS/concurrency::transformer::supports_anonymous_source"]
 helpviewer_keywords: ["transformer class"]
-ms.assetid: eea71925-7043-4a92-bfd4-dbc0ece5d081
 ---
 # transformer Class
 
@@ -13,17 +12,17 @@ A `transformer` messaging block is a single-target, multi-source, ordered `propa
 ## Syntax
 
 ```cpp
-template<class _Input, class _Output>
+template <class _Input, class _Output>
 class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
     multi_link_registry<ISource<_Input>>>;
 ```
 
 ### Parameters
 
-*_Input*<br/>
+*`_Input`*\
 The payload type of the messages accepted by the buffer.
 
-*_Output*<br/>
+*`_Output`*\
 The payload type of the messages stored and propagated out by the buffer.
 
 ## Members
@@ -32,27 +31,27 @@ The payload type of the messages stored and propagated out by the buffer.
 
 |Name|Description|
 |----------|-----------------|
-|[transformer](#ctor)|Overloaded. Constructs a `transformer` messaging block.|
-|[~transformer Destructor](#dtor)|Destroys the `transformer` messaging block.|
+|[`transformer`](#ctor)|Overloaded. Constructs a `transformer` messaging block.|
+|[`~transformer`](#dtor)|Destroys the `transformer` messaging block.|
 
 ### Protected Methods
 
 |Name|Description|
 |----------|-----------------|
-|[accept_message](#accept_message)|Accepts a message that was offered by this `transformer` messaging block, transferring ownership to the caller.|
-|[consume_message](#consume_message)|Consumes a message previously offered by the `transformer` and reserved by the target, transferring ownership to the caller.|
-|[link_target_notification](#link_target_notification)|A callback that notifies that a new target has been linked to this `transformer` messaging block.|
-|[propagate_message](#propagate_message)|Asynchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `propagate` method, when called by a source block.|
-|[propagate_to_any_targets](#propagate_to_any_targets)|Executes the transformer function on the input messages.|
-|[release_message](#release_message)|Releases a previous message reservation. (Overrides [source_block::release_message](source-block-class.md#release_message).)|
-|[reserve_message](#reserve_message)|Reserves a message previously offered by this `transformer` messaging block. (Overrides [source_block::reserve_message](source-block-class.md#reserve_message).)|
-|[resume_propagation](#resume_propagation)|Resumes propagation after a reservation has been released. (Overrides [source_block::resume_propagation](source-block-class.md#resume_propagation).)|
-|[send_message](#send_message)|Synchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `send` method, when called by a source block.|
-|[supports_anonymous_source](#supports_anonymous_source)|Overrides the `supports_anonymous_source` method to indicate that this block can accept messages offered to it by a source that is not linked. (Overrides [ITarget::supports_anonymous_source](itarget-class.md#supports_anonymous_source).)|
+|[`accept_message`](#accept_message)|Accepts a message that was offered by this `transformer` messaging block, transferring ownership to the caller.|
+|[`consume_message`](#consume_message)|Consumes a message previously offered by the `transformer` and reserved by the target, transferring ownership to the caller.|
+|[`link_target_notification`](#link_target_notification)|A callback that notifies that a new target has been linked to this `transformer` messaging block.|
+|[`propagate_message`](#propagate_message)|Asynchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `propagate` method, when called by a source block.|
+|[`propagate_to_any_targets`](#propagate_to_any_targets)|Executes the transformer function on the input messages.|
+|[`release_message`](#release_message)|Releases a previous message reservation. (Overrides [`source_block::release_message`](source-block-class.md#release_message).)|
+|[`reserve_message`](#reserve_message)|Reserves a message previously offered by this `transformer` messaging block. (Overrides [`source_block::reserve_message`](source-block-class.md#reserve_message).)|
+|[`resume_propagation`](#resume_propagation)|Resumes propagation after a reservation has been released. (Overrides [`source_block::resume_propagation`](source-block-class.md#resume_propagation).)|
+|[`send_message`](#send_message)|Synchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `send` method, when called by a source block.|
+|[`supports_anonymous_source`](#supports_anonymous_source)|Overrides the `supports_anonymous_source` method to indicate that this block can accept messages offered to it by a source that is not linked. (Overrides [`ITarget::supports_anonymous_source`](itarget-class.md#supports_anonymous_source).)|
 
 ## Remarks
 
-For more information, see [Asynchronous Message Blocks](../../../parallel/concrt/asynchronous-message-blocks.md).
+For more information, see [Asynchronous Message Blocks](../asynchronous-message-blocks.md).
 
 ## Inheritance Hierarchy
 
@@ -72,7 +71,7 @@ For more information, see [Asynchronous Message Blocks](../../../parallel/concrt
 
 **Namespace:** concurrency
 
-## <a name="accept_message"></a> accept_message
+## <a name="accept_message"></a> `accept_message`
 
 Accepts a message that was offered by this `transformer` messaging block, transferring ownership to the caller.
 
@@ -82,14 +81,14 @@ virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
 
 ### Parameters
 
-*_MsgId*<br/>
+*`_MsgId`*\
 The `runtime_object_identity` of the offered `message` object.
 
 ### Return Value
 
 A pointer to the `message` object that the caller now has ownership of.
 
-## <a name="consume_message"></a> consume_message
+## <a name="consume_message"></a> `consume_message`
 
 Consumes a message previously offered by the `transformer` and reserved by the target, transferring ownership to the caller.
 
@@ -99,7 +98,7 @@ virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
 
 ### Parameters
 
-*_MsgId*<br/>
+*`_MsgId`*\
 The `runtime_object_identity` of the `message` object being consumed.
 
 ### Return Value
@@ -110,7 +109,7 @@ A pointer to the `message` object that the caller now has ownership of.
 
 Similar to `accept`, but is always preceded by a call to `reserve`.
 
-## <a name="link_target_notification"></a> link_target_notification
+## <a name="link_target_notification"></a> `link_target_notification`
 
 A callback that notifies that a new target has been linked to this `transformer` messaging block.
 
@@ -118,7 +117,7 @@ A callback that notifies that a new target has been linked to this `transformer`
 virtual void link_target_notification(_Inout_ ITarget<_Output> *);
 ```
 
-## <a name="propagate_message"></a> propagate_message
+## <a name="propagate_message"></a> `propagate_message`
 
 Asynchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `propagate` method, when called by a source block.
 
@@ -130,17 +129,17 @@ virtual message_status propagate_message(
 
 ### Parameters
 
-*_PMessage*<br/>
+*`_PMessage`*\
 A pointer to the `message` object.
 
-*_PSource*<br/>
+*`_PSource`*\
 A pointer to the source block offering the message.
 
 ### Return Value
 
 A [message_status](concurrency-namespace-enums.md) indication of what the target decided to do with the message.
 
-## <a name="propagate_to_any_targets"></a> propagate_to_any_targets
+## <a name="propagate_to_any_targets"></a> `propagate_to_any_targets`
 
 Executes the transformer function on the input messages.
 
@@ -148,7 +147,7 @@ Executes the transformer function on the input messages.
 virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
 ```
 
-## <a name="release_message"></a> release_message
+## <a name="release_message"></a> `release_message`
 
 Releases a previous message reservation.
 
@@ -158,10 +157,10 @@ virtual void release_message(runtime_object_identity _MsgId);
 
 ### Parameters
 
-*_MsgId*<br/>
+*`_MsgId`*\
 The `runtime_object_identity` of the `message` object being released.
 
-## <a name="reserve_message"></a> reserve_message
+## <a name="reserve_message"></a> `reserve_message`
 
 Reserves a message previously offered by this `transformer` messaging block.
 
@@ -171,7 +170,7 @@ virtual bool reserve_message(runtime_object_identity _MsgId);
 
 ### Parameters
 
-*_MsgId*<br/>
+*`_MsgId`*\
 The `runtime_object_identity` of the `message` object being reserved.
 
 ### Return Value
@@ -182,7 +181,7 @@ The `runtime_object_identity` of the `message` object being reserved.
 
 After `reserve` is called, if it returns **`true`**, either `consume` or `release` must be called to either take or release ownership of the message.
 
-## <a name="resume_propagation"></a> resume_propagation
+## <a name="resume_propagation"></a> `resume_propagation`
 
 Resumes propagation after a reservation has been released.
 
@@ -190,7 +189,7 @@ Resumes propagation after a reservation has been released.
 virtual void resume_propagation();
 ```
 
-## <a name="send_message"></a> send_message
+## <a name="send_message"></a> `send_message`
 
 Synchronously passes a message from an `ISource` block to this `transformer` messaging block. It is invoked by the `send` method, when called by a source block.
 
@@ -202,17 +201,17 @@ virtual message_status send_message(
 
 ### Parameters
 
-*_PMessage*<br/>
+*`_PMessage`*\
 A pointer to the `message` object.
 
-*_PSource*<br/>
+*`_PSource`*\
 A pointer to the source block offering the message.
 
 ### Return Value
 
 A [message_status](concurrency-namespace-enums.md) indication of what the target decided to do with the message.
 
-## <a name="supports_anonymous_source"></a> supports_anonymous_source
+## <a name="supports_anonymous_source"></a> `supports_anonymous_source`
 
 Overrides the `supports_anonymous_source` method to indicate that this block can accept messages offered to it by a source that is not linked.
 
@@ -224,7 +223,7 @@ virtual bool supports_anonymous_source();
 
 **`true`** because the block does not postpone offered messages.
 
-## <a name="ctor"></a> transformer
+## <a name="ctor"></a> `transformer`
 
 Constructs a `transformer` messaging block.
 
@@ -263,19 +262,19 @@ transformer(
 
 ### Parameters
 
-*_Func*<br/>
+*`_Func`*\
 A function that will be invoked for each accepted message.
 
-*_PTarget*<br/>
+*`_PTarget`*\
 A pointer to a target block to link with the transformer.
 
-*_Filter*<br/>
+*`_Filter`*\
 A filter function which determines whether offered messages should be accepted.
 
-*_PScheduler*<br/>
+*`_PScheduler`*\
 The `Scheduler` object within which the propagation task for the `transformer` messaging block is scheduled.
 
-*_PScheduleGroup*<br/>
+*`_PScheduleGroup`*\
 The `ScheduleGroup` object within which the propagation task for the `transformer` messaging block is scheduled. The `Scheduler` object used is implied by the schedule group.
 
 ### Remarks
@@ -286,7 +285,7 @@ The type `_Transform_method` is a functor with signature `_Output (_Input const
 
 The type `filter_method` is a functor with signature `bool (_Input const &)` which is invoked by this `transformer` messaging block to determine whether or not it should accept an offered message.
 
-## <a name="dtor"></a> ~transformer
+## <a name="dtor"></a> `~transformer`
 
 Destroys the `transformer` messaging block.
 
@@ -296,5 +295,5 @@ Destroys the `transformer` messaging block.
 
 ## See also
 
-[concurrency Namespace](concurrency-namespace.md)<br/>
+[concurrency Namespace](concurrency-namespace.md)\
 [call Class](call-class.md)
diff --git a/docs/parallel/concrt/schedule-groups.md b/docs/parallel/concrt/schedule-groups.md
index 72566cc711..b50caaa599 100644
--- a/docs/parallel/concrt/schedule-groups.md
+++ b/docs/parallel/concrt/schedule-groups.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Schedule Groups"
 title: "Schedule Groups"
-ms.date: "11/04/2016"
+description: "Learn more about: Schedule Groups"
+ms.date: 11/04/2016
 helpviewer_keywords: ["schedule groups"]
-ms.assetid: 03523572-5891-4d17-89ce-fa795605f28b
 ---
 # Schedule Groups
 
@@ -18,7 +17,7 @@ The `SchedulingProtocol` scheduler policy influences the order in which the sche
 
 The runtime uses the [concurrency::ScheduleGroup](../../parallel/concrt/reference/schedulegroup-class.md) class to represent schedule groups. To create a `ScheduleGroup` object, call the [concurrency::CurrentScheduler::CreateScheduleGroup](reference/currentscheduler-class.md#createschedulegroup) or [concurrency::Scheduler::CreateScheduleGroup](reference/scheduler-class.md#createschedulegroup) method. The runtime uses a reference-counting mechanism to control the lifetime of `ScheduleGroup` objects, just as it does with `Scheduler` objects. When you create a `ScheduleGroup` object, the runtime sets the reference counter to one. The [concurrency::ScheduleGroup::Reference](reference/schedulegroup-class.md#reference) method increments the reference counter by one. The [concurrency::ScheduleGroup::Release](reference/schedulegroup-class.md#release) method decrements the reference counter by one.
 
-Many types in the Concurrency Runtime let you associate an object together with a schedule group. For example, the [concurrency::agent](../../parallel/concrt/reference/agent-class.md) class and message block classes such as [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md), [concurrency::join](../../parallel/concrt/reference/join-class.md), and concurrency::[timer](reference/timer-class.md), provide overloaded versions of the constructor that take a `ScheduleGroup` object. The runtime uses the `Scheduler` object that is associated with this `ScheduleGroup` object to schedule the task.
+Many types in the Concurrency Runtime let you associate an object together with a schedule group. For example, the [concurrency::agent](../../parallel/concrt/reference/agent-class.md) class and message block classes such as [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md), [concurrency::join](../../parallel/concrt/reference/join-class.md), and [concurrency::timer](reference/timer-class.md), provide overloaded versions of the constructor that take a `ScheduleGroup` object. The runtime uses the `Scheduler` object that is associated with this `ScheduleGroup` object to schedule the task.
 
 You can also use the [concurrency::ScheduleGroup::ScheduleTask](reference/schedulegroup-class.md#scheduletask) method to schedule a lightweight task. For more information about lightweight tasks, see [Lightweight Tasks](../../parallel/concrt/lightweight-tasks.md).
 
diff --git a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md
index 0670648675..23e2ad4573 100644
--- a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md
+++ b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md
@@ -1,9 +1,9 @@
 ---
-description: "Learn more about: Task Parallelism (Concurrency Runtime)"
 title: "Task Parallelism (Concurrency Runtime)"
-ms.date: "11/04/2016"
+description: "Learn more about: Task Parallelism (Concurrency Runtime)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["structured task groups [Concurrency Runtime]", "structured tasks [Concurrency Runtime]", "task groups [Concurrency Runtime]", "task parallelism", "tasks [Concurrency Runtime]"]
-ms.assetid: 42f05ac3-2098-494a-ba84-737fcdcad077
+ms.topic: how-to
 ---
 # Task Parallelism (Concurrency Runtime)
 
@@ -150,7 +150,7 @@ This section describes the [concurrency::when_all](reference/concurrency-namespa
 
 ### <a name="when-all"></a> The when_all Function
 
-The `when_all` function produces a task that completes after a set of tasks complete. This function returns a std::[vector](../../standard-library/vector-class.md) object that contains the result of each task in the set. The following basic example uses `when_all` to create a task that represents the completion of three other tasks.
+The `when_all` function produces a task that completes after a set of tasks complete. This function returns a [std::vector](../../standard-library/vector-class.md) object that contains the result of each task in the set. The following basic example uses `when_all` to create a task that represents the completion of three other tasks.
 
 [!code-cpp[concrt-join-tasks#1](../../parallel/concrt/codesnippet/cpp/task-parallelism-concurrency-runtime_8.cpp)]
 
@@ -269,7 +269,7 @@ Unstructured task groups and structured task groups work with task handles in di
 
 [!code-cpp[concrt-make-task-structure#1](../../parallel/concrt/codesnippet/cpp/task-parallelism-concurrency-runtime_16.cpp)]
 
-To manage task handles for cases where you have a variable number of tasks, use a stack-allocation routine such as [_malloca](../../c-runtime-library/reference/malloca.md) or a container class, such as std::[vector](../../standard-library/vector-class.md).
+To manage task handles for cases where you have a variable number of tasks, use a stack-allocation routine such as [_malloca](../../c-runtime-library/reference/malloca.md) or a container class, such as [std::vector](../../standard-library/vector-class.md).
 
 Both `task_group` and `structured_task_group` support cancellation. For more information about cancellation, see [Cancellation in the PPL](cancellation-in-the-ppl.md).
 
diff --git a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md
index debf678980..c34f0946a6 100644
--- a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md
+++ b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Walkthrough: Creating a Custom Message Block"
 title: "Walkthrough: Creating a Custom Message Block"
-ms.date: "04/25/2019"
+description: "Learn more about: Walkthrough: Creating a Custom Message Block"
+ms.date: 04/25/2019
 helpviewer_keywords: ["creating custom message blocks Concurrency Runtime]", "custom message blocks, creating [Concurrency Runtime]"]
-ms.assetid: 4c6477ad-613c-4cac-8e94-2c9e63cd43a1
 ---
 # Walkthrough: Creating a Custom Message Block
 
@@ -57,7 +56,7 @@ The runtime calls the `propagate_message` method to asynchronously transfer a me
 
 The `priority_buffer` class is a custom message block type that orders incoming messages first by priority, and then by the order in which messages are received. The `priority_buffer` class resembles the [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md) class because it holds a queue of messages, and also because it acts as both a source and a target message block and can have both multiple sources and multiple targets. However, `unbounded_buffer` bases message propagation only on the order in which it receives messages from its sources.
 
-The `priority_buffer` class receives messages of type std::[tuple](../../standard-library/tuple-class.md) that contain `PriorityType` and `Type` elements. `PriorityType` refers to the type that holds the priority of each message; `Type` refers to the data portion of the message. The `priority_buffer` class sends messages of type `Type`. The `priority_buffer` class also manages two message queues: a [std::priority_queue](../../standard-library/priority-queue-class.md) object for incoming messages and a std::[queue](../../standard-library/queue-class.md) object for outgoing messages. Ordering messages by priority is useful when a `priority_buffer` object receives multiple messages simultaneously or when it receives multiple messages before any messages are read by consumers.
+The `priority_buffer` class receives messages of type [std::tuple](../../standard-library/tuple-class.md) that contain `PriorityType` and `Type` elements. `PriorityType` refers to the type that holds the priority of each message; `Type` refers to the data portion of the message. The `priority_buffer` class sends messages of type `Type`. The `priority_buffer` class also manages two message queues: a [std::priority_queue](../../standard-library/priority-queue-class.md) object for incoming messages and a [std::queue](../../standard-library/queue-class.md) object for outgoing messages. Ordering messages by priority is useful when a `priority_buffer` object receives multiple messages simultaneously or when it receives multiple messages before any messages are read by consumers.
 
 In addition to the seven methods that a class that derives from `propagator_block` must implement, the `priority_buffer` class also overrides the `link_target_notification` and `send_message` methods. The `priority_buffer` class also defines two public helper methods, `enqueue` and `dequeue`, and a private helper method, `propagate_priority_order`.
 
@@ -71,7 +70,7 @@ The following procedure describes how to implement the `priority_buffer` class.
 
     [!code-cpp[concrt-priority-buffer#1](../../parallel/concrt/codesnippet/cpp/walkthrough-creating-a-custom-message-block_2.h)]
 
-1. In the `std` namespace, define specializations of [std::less](../../standard-library/less-struct.md) and [std::greater](../../standard-library/greater-struct.md) that act on concurrency::[message](../../parallel/concrt/reference/message-class.md) objects.
+1. In the `std` namespace, define specializations of [std::less](../../standard-library/less-struct.md) and [std::greater](../../standard-library/greater-struct.md) that act on [concurrency::message](../../parallel/concrt/reference/message-class.md) objects.
 
     [!code-cpp[concrt-priority-buffer#2](../../parallel/concrt/codesnippet/cpp/walkthrough-creating-a-custom-message-block_3.h)]
 
diff --git a/docs/parallel/concrt/walkthrough-implementing-futures.md b/docs/parallel/concrt/walkthrough-implementing-futures.md
index 0eeeb8f2e6..0634c431d4 100644
--- a/docs/parallel/concrt/walkthrough-implementing-futures.md
+++ b/docs/parallel/concrt/walkthrough-implementing-futures.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Walkthrough: Implementing Futures"
 title: "Walkthrough: Implementing Futures"
-ms.date: "04/25/2019"
+description: "Learn more about: Walkthrough: Implementing Futures"
+ms.date: 04/25/2019
 helpviewer_keywords: ["implementing futures [Concurrency Runtime]", "futures, implementing [Concurrency Runtime]"]
-ms.assetid: 82ea75cc-aaec-4452-b10d-8abce0a87e5b
 ---
 # Walkthrough: Implementing Futures
 
@@ -42,7 +41,7 @@ To implement futures, this topic defines the `async_future` class. The `async_fu
 
 ### Description
 
-The following example shows the complete `async_future` class and an example of its usage. The `wmain` function creates a std::[vector](../../standard-library/vector-class.md) object that contains 10,000 random integer values. It then uses `async_future` objects to find the smallest and largest values that are contained in the `vector` object.
+The following example shows the complete `async_future` class and an example of its usage. The `wmain` function creates a [std::vector](../../standard-library/vector-class.md) object that contains 10,000 random integer values. It then uses `async_future` objects to find the smallest and largest values that are contained in the `vector` object.
 
 ### Code
 
diff --git a/docs/parallel/multithreading-and-locales.md b/docs/parallel/multithreading-and-locales.md
index 8df3ba928e..2cdb9b4db2 100644
--- a/docs/parallel/multithreading-and-locales.md
+++ b/docs/parallel/multithreading-and-locales.md
@@ -4,6 +4,7 @@ title: "Multithreading and Locales"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["locales [C++], multithreading", "multithreading [C++], locales", "threading [C++], locales", "per-thread locale"]
 ms.assetid: d6fb159a-eaca-4130-a51a-f95d62f71485
+ms.topic: concept-article
 ---
 # Multithreading and Locales
 
diff --git a/docs/parallel/multithreading-creating-user-interface-threads.md b/docs/parallel/multithreading-creating-user-interface-threads.md
index fa1abe4c06..093e592a9a 100644
--- a/docs/parallel/multithreading-creating-user-interface-threads.md
+++ b/docs/parallel/multithreading-creating-user-interface-threads.md
@@ -5,6 +5,7 @@ ms.date: "08/27/2018"
 f1_keywords: ["CREATE_SUSPENDED", "SECURITY_ATTRIBUTES"]
 helpviewer_keywords: ["multithreading [C++], user interface threads", "threading [C++], creating threads", "threading [C++], user interface threads", "user interface threads [C++]", "threading [MFC], user interface threads"]
 ms.assetid: 446925c1-db59-46ea-ae5b-d5ae5d5b91d8
+ms.topic: how-to
 ---
 # Multithreading: Creating MFC User-Interface Threads
 
diff --git a/docs/parallel/multithreading-creating-worker-threads.md b/docs/parallel/multithreading-creating-worker-threads.md
index c967eda95e..00d5e3f342 100644
--- a/docs/parallel/multithreading-creating-worker-threads.md
+++ b/docs/parallel/multithreading-creating-worker-threads.md
@@ -4,6 +4,7 @@ title: "Multithreading: Creating Worker Threads in MFC"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["multithreading [C++], worker threads", "background tasks [C++]", "threading [C++], worker threads", "worker threads [C++]", "threading [C++], creating threads", "threading [MFC], worker threads", "threading [C++], user input not required"]
 ms.assetid: 670adbfe-041c-4450-a3ed-be14aab15234
+ms.topic: how-to
 ---
 # Multithreading: Creating Worker Threads in MFC
 
diff --git a/docs/parallel/multithreading-how-to-use-the-synchronization-classes.md b/docs/parallel/multithreading-how-to-use-the-synchronization-classes.md
index af8f3e3a13..ffbc5183f2 100644
--- a/docs/parallel/multithreading-how-to-use-the-synchronization-classes.md
+++ b/docs/parallel/multithreading-how-to-use-the-synchronization-classes.md
@@ -4,6 +4,7 @@ title: "Multithreading: How to Use the MFC Synchronization Classes"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["MFC [C++], multithreading", "threading [MFC], synchronization classes", "resources [C++], multithreading", "thread-safe classes [C++]", "synchronization classes [C++]", "synchronization [C++], multithreading", "threading [MFC], thread-safe class design", "threading [C++], synchronization", "multithreading [C++], synchronization classes", "threading [C++], thread-safe class design"]
 ms.assetid: f266d4c6-0454-4bda-9758-26157ef74cc5
+ms.topic: how-to
 ---
 # Multithreading: How to Use the MFC Synchronization Classes
 
diff --git a/docs/parallel/multithreading-programming-tips.md b/docs/parallel/multithreading-programming-tips.md
index 1017d68873..8048068fc7 100644
--- a/docs/parallel/multithreading-programming-tips.md
+++ b/docs/parallel/multithreading-programming-tips.md
@@ -4,6 +4,7 @@ title: "Multithreading: MFC Programming Tips"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["multithreading [C++], programming tips", "handle maps [C++]", "access control [C++], multithreading", "objects [C++], multiple threads and", "non-MFC threads [C++]", "threading [MFC], programming tips", "critical sections [C++]", "synchronization [C++], multithreading", "programming [C++], multithreaded", "communications [C++], between threads", "threading [C++], best practices", "troubleshooting [C++], multithreading", "Windows handle maps [C++]"]
 ms.assetid: ad14cc70-c91c-4c24-942f-13a75e58bf8a
+ms.topic: concept-article
 ---
 # Multithreading: MFC Programming Tips
 
diff --git a/docs/parallel/multithreading-support-for-older-code-visual-cpp.md b/docs/parallel/multithreading-support-for-older-code-visual-cpp.md
index 43071cb689..b2c9fea835 100644
--- a/docs/parallel/multithreading-support-for-older-code-visual-cpp.md
+++ b/docs/parallel/multithreading-support-for-older-code-visual-cpp.md
@@ -4,6 +4,7 @@ title: "Multithreading Support for Older Code (Visual C++)"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["threading [C++]", "multiple threads", "concurrent programming [C++]", "programming [C++], multithreaded", "multithreading [C++], about multithreading", "multiple concurrent threads", "multithreading [C++]"]
 ms.assetid: 24425b1f-5031-4c6b-aac7-017115a40e7c
+ms.topic: concept-article
 ---
 # Multithreading Support for Older Code (Visual C++)
 
diff --git a/docs/parallel/multithreading-terminating-threads.md b/docs/parallel/multithreading-terminating-threads.md
index 5f530d673a..64fb21623d 100644
--- a/docs/parallel/multithreading-terminating-threads.md
+++ b/docs/parallel/multithreading-terminating-threads.md
@@ -4,6 +4,7 @@ title: "Multithreading: Terminating Threads in MFC"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["premature thread termination", "starting threads", "threading [MFC], terminating threads", "multithreading [C++], terminating threads", "threading [C++], stopping threads", "terminating threads", "stopping threads", "AfxEndThread method"]
 ms.assetid: 4c0a8c6d-c02f-456d-bd02-0a8c8d006ecb
+ms.topic: how-to
 ---
 # Multithreading: Terminating Threads in MFC
 
diff --git a/docs/parallel/multithreading-when-to-use-the-synchronization-classes.md b/docs/parallel/multithreading-when-to-use-the-synchronization-classes.md
index 7fad93900e..0a7c3a15d8 100644
--- a/docs/parallel/multithreading-when-to-use-the-synchronization-classes.md
+++ b/docs/parallel/multithreading-when-to-use-the-synchronization-classes.md
@@ -4,6 +4,7 @@ title: "Multithreading: When to Use the MFC Synchronization Classes"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["threading [MFC], synchronization classes", "resources [C++], multithreading", "synchronization classes [C++]", "synchronization [C++], multithreading", "controlled resource access [C++]", "synchronization access classes [C++]", "threading [C++], synchronization", "multithreading [C++], synchronization classes"]
 ms.assetid: 4914f54e-68ac-438f-93c9-c013455a657e
+ms.topic: how-to
 ---
 # Multithreading: When to Use the MFC Synchronization Classes
 
diff --git a/docs/parallel/multithreading-with-c-and-win32.md b/docs/parallel/multithreading-with-c-and-win32.md
index 6381e9ba55..e3f2f9335b 100644
--- a/docs/parallel/multithreading-with-c-and-win32.md
+++ b/docs/parallel/multithreading-with-c-and-win32.md
@@ -4,6 +4,7 @@ title: "Multithreading with C and Win32"
 ms.date: "08/09/2019"
 helpviewer_keywords: ["Windows API [C++], multithreading", "multithreading [C++], C and Win32", "Visual C, multithreading", "Win32 applications [C++], multithreading", "threading [C++], C and Win32", "Win32 [C++], multithreading", "threading [C]"]
 ms.assetid: 67cdc99e-1ad9-452b-a042-ed246b70040e
+ms.topic: concept-article
 ---
 # Multithreading with C and Win32
 
diff --git a/docs/parallel/multithreading-with-cpp-and-mfc.md b/docs/parallel/multithreading-with-cpp-and-mfc.md
index 9421b44d6b..7fc4d93386 100644
--- a/docs/parallel/multithreading-with-cpp-and-mfc.md
+++ b/docs/parallel/multithreading-with-cpp-and-mfc.md
@@ -4,6 +4,7 @@ title: "Multithreading with C++ and MFC"
 ms.date: "08/27/2018"
 helpviewer_keywords: ["MFC [C++], multithreading", "threading [C++], MFC", "worker threads [C++]", "synchronization classes [C++]", "synchronization [C++], multithreading", "threading [MFC], about threading", "CWinThread class, purpose of", "multithreading [C++], MFC", "threading [MFC]", "user interface threads [C++]"]
 ms.assetid: 979605f8-3988-44b5-ac9c-b8cce7fcce14
+ms.topic: concept-article
 ---
 # Multithreading with C++ and MFC
 
diff --git a/docs/parallel/openmp/1-introduction.md b/docs/parallel/openmp/1-introduction.md
index 577e1556d9..3e819472bd 100644
--- a/docs/parallel/openmp/1-introduction.md
+++ b/docs/parallel/openmp/1-introduction.md
@@ -3,6 +3,7 @@ description: "Learn more about: 1. Introduction"
 title: "1. Introduction"
 ms.date: "01/16/2019"
 ms.assetid: c42e72bc-0e31-4b1c-b670-cd82673c0c5a
+ms.topic: concept-article
 ---
 # 1. Introduction
 
diff --git a/docs/parallel/openmp/a-examples.md b/docs/parallel/openmp/a-examples.md
index dabdf0bc97..43499f5d10 100644
--- a/docs/parallel/openmp/a-examples.md
+++ b/docs/parallel/openmp/a-examples.md
@@ -1,8 +1,7 @@
 ---
-description: "Learn more about: A. Examples"
 title: "A. Examples"
-ms.date: "01/18/2019"
-ms.assetid: c0f6192f-a205-449b-b84c-cb30dbcc8b8f
+description: "Learn more about: A. Examples"
+ms.date: 01/18/2019
 ---
 # A. Examples
 
@@ -854,7 +853,7 @@ The following example demonstrates the [num_threads](2-directives.md#23-parallel
 
 ```cpp
 #include <omp.h>
-main()
+int main()
 {
     omp_set_dynamic(1);
     ...
diff --git a/docs/parallel/openmp/c-openmp-c-and-cpp-grammar.md b/docs/parallel/openmp/c-openmp-c-and-cpp-grammar.md
index 0fc7ddabdf..3e5249b640 100644
--- a/docs/parallel/openmp/c-openmp-c-and-cpp-grammar.md
+++ b/docs/parallel/openmp/c-openmp-c-and-cpp-grammar.md
@@ -1,15 +1,13 @@
 ---
-description: "Learn more about: C. OpenMP C and C++ grammar"
 title: "C. OpenMP C and C++ grammar"
-ms.date: "01/16/2019"
-ms.assetid: 97a878ce-1533-47f7-a134-66fcbff48524
+description: "Learn more about: C. OpenMP C and C++ grammar"
+ms.date: 01/16/2019
 ---
 # C. OpenMP C and C++ grammar
 
-[C.1 Notation](#c1-notation)<br/>
-[C.2 Rules](#c2-rules)
+Learn about the grammar rules and syntax extensions in C and C++ for OpenMP, a parallel programming framework.
 
-## C.1 Notation
+## C.1 notation
 
 The grammar rules consist of the name for a non-terminal, followed by a colon, followed by replacement alternatives on separate lines.
 
@@ -22,7 +20,7 @@ The syntactic expression *term*<sub>optseq</sub> is equivalent to *term-seq*<sub
 &emsp;*term-seq* *term*\
 &emsp;*term-seq*   `,` *term*
 
-## C.2 Rules
+## C.2 rules
 
 The notation is described in section 6.1 of the C standard. This grammar appendix shows the extensions to the base language grammar for the OpenMP C and C++ directives.
 
diff --git a/docs/parallel/openmp/reference/openmp-directives.md b/docs/parallel/openmp/reference/openmp-directives.md
index 2e841d2138..ef1fd1944d 100644
--- a/docs/parallel/openmp/reference/openmp-directives.md
+++ b/docs/parallel/openmp/reference/openmp-directives.md
@@ -28,7 +28,7 @@ For main thread and synchronization:
 |[master](#master)|Specifies that only the main thread should execute a section of the program.|
 |[critical](#critical)|Specifies that code is only executed on one thread at a time.|
 |[barrier](#barrier)|Synchronizes all threads in a team; all threads pause at the barrier, until all threads execute the barrier.|
-|[atomic](#atomic)|Specifies that a memory location that will be updated atomically.|
+|[atomic](#atomic)|Specifies that a memory location will be updated atomically.|
 |[flush](#flush-openmp)|Specifies that all threads have the same view of memory for all shared objects.|
 |[ordered](#ordered-openmp-directives)|Specifies that code under a parallelized `for` loop should be executed like a sequential loop.|
 
diff --git a/docs/parallel/sample-multithread-c-program.md b/docs/parallel/sample-multithread-c-program.md
index f76e104bd1..7be0bc3381 100644
--- a/docs/parallel/sample-multithread-c-program.md
+++ b/docs/parallel/sample-multithread-c-program.md
@@ -2,6 +2,7 @@
 description: "Learn more about: Sample Multithread C Program"
 title: "Sample Multithread C Program"
 ms.date: 04/07/2022
+ms.topic: how-to
 ---
 # Sample Multithread C Program
 
diff --git a/docs/parallel/thread-local-storage-tls.md b/docs/parallel/thread-local-storage-tls.md
index 42ccaa7277..fbcd5b93e3 100644
--- a/docs/parallel/thread-local-storage-tls.md
+++ b/docs/parallel/thread-local-storage-tls.md
@@ -4,6 +4,7 @@ title: "Thread Local Storage (TLS)"
 ms.date: "08/09/2019"
 helpviewer_keywords: ["multithreading [C++], Thread Local Storage", "TLS [C++]", "threading [C++], Thread Local Storage", "storing thread-specific data", "thread attribute", "Thread Local Storage [C++]"]
 ms.assetid: 80801907-d792-45ca-b776-df0cf2e9f197
+ms.topic: how-to
 ---
 # Thread Local Storage (TLS)
 
diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md
index 112a736a14..86ad895775 100644
--- a/docs/porting/binary-compat-2015-2017.md
+++ b/docs/porting/binary-compat-2015-2017.md
@@ -39,4 +39,6 @@ This error is by design. We recommend you keep the newest version installed. Mak
 ## See also
 
 [Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md)\
-[The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md)
+[The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md)\
+[How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md)\
+[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)
diff --git a/docs/porting/build-system-changes.md b/docs/porting/build-system-changes.md
index 257ad65325..bcd58b4a3d 100644
--- a/docs/porting/build-system-changes.md
+++ b/docs/porting/build-system-changes.md
@@ -1,6 +1,6 @@
 ---
 title: "VCBuild vs. MSBuild"
-description: "The VIsual Studio C++ build system changed from VCBuild to MSBuild in Visual Studio 2010."
+description: "The Visual Studio C++ build system changed from VCBuild to MSBuild in Visual Studio 2010."
 ms.date: "10/25/2019"
 helpviewer_keywords: ["Build system changes, project file (.vcxprog)", "Build system changes, custom build rules", "Build system changes, MSBuild", "MSBuild, build system changes", "Build system changes, .vsprops", "Build system changes, $(Inherit)", "Build system changes, $(NoInherit)"]
 ms.assetid: e564d95f-a6cc-4d97-b57e-1a71daf66f4a
diff --git a/docs/porting/fix-your-dependencies-on-library-internals.md b/docs/porting/fix-your-dependencies-on-library-internals.md
index da55c80f3c..432dff02a0 100644
--- a/docs/porting/fix-your-dependencies-on-library-internals.md
+++ b/docs/porting/fix-your-dependencies-on-library-internals.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Fix your dependencies on C++ library internals"
 title: "Fix your dependencies on C++ library internals"
-ms.date: "05/24/2017"
+description: "Learn more about: Fix your dependencies on C++ library internals"
+ms.date: 05/24/2017
 helpviewer_keywords: ["library internals in an upgraded Visual Studio C++ project", "_Hash_seq in an upgraded Visual Studio C++ project"]
-ms.assetid: 493e0452-6ecb-4edc-ae20-b6fce2d7d3c5
 ---
 # Fix your dependencies on C++ library internals
 
@@ -13,13 +12,13 @@ In most cases, the What's New or Breaking Changes document for each release of V
 
 ## _Hash_seq
 
-The internal hash function `std::_Hash_seq(const unsigned char *, size_t)`, used to implement `std::hash` on some string types, was visible in recent versions of the Standard Library. This function implemented an [FNV-1a hash]( https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) on a character sequence.
+The internal hash function `std::_Hash_seq(const unsigned char *, size_t)`, used to implement `std::hash` on some string types, was visible in recent versions of the Standard Library. This function implemented an [FNV-1a hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) on a character sequence.
 
 To remove this dependency, you have a couple of options.
 
 - If your intent is to put a `const char *` sequence into an unordered container by using the same hash code machinery as `basic_string`, you can do that by using the `std::hash` template overload that takes a `std::string_view`, which returns that hash code in a portable way. The string library code may or may not rely on use of an FNV-1a hash in the future, so this is the best way to avoid a dependency on a particular hash algorithm.
 
-- If your intent is to generate an FNV-1a hash over arbitrary memory, we've made that code available on GitHub in the [VCSamples]( https://github.com/Microsoft/vcsamples) repository in a stand-alone header file, [fnv1a.hpp](https://github.com/Microsoft/VCSamples/tree/master/VC2015Samples/_Hash_seq), under an [MIT license](https://github.com/Microsoft/VCSamples/blob/master/license.txt). We've also included a copy here for your convenience. You can copy this code into a header file, add the header to any affected code, and then find and replace `_Hash_seq` by `fnv1a_hash_bytes`. You'll get identical behavior to the internal implementation in `_Hash_seq`.
+- If your intent is to generate an FNV-1a hash over arbitrary memory, we've made that code available on GitHub in the [VCSamples](https://github.com/Microsoft/vcsamples) repository in a stand-alone header file, [fnv1a.hpp](https://github.com/Microsoft/VCSamples/tree/master/VC2015Samples/_Hash_seq), under an [MIT license](https://github.com/Microsoft/VCSamples/blob/master/license.txt). We've also included a copy here for your convenience. You can copy this code into a header file, add the header to any affected code, and then find and replace `_Hash_seq` by `fnv1a_hash_bytes`. You'll get identical behavior to the internal implementation in `_Hash_seq`.
 
 ```cpp
 /*
diff --git a/docs/porting/ide-tools-for-upgrading-code.md b/docs/porting/ide-tools-for-upgrading-code.md
index 1ce1e80527..13f9f48a5f 100644
--- a/docs/porting/ide-tools-for-upgrading-code.md
+++ b/docs/porting/ide-tools-for-upgrading-code.md
@@ -2,7 +2,7 @@
 title: "Visual Studio IDE tools for upgrading C++ code"
 description: "The C++ code editor and code analysis tools in Visual Studio help you to modernize your C++ code base."
 ms.date: "11/13/2019"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ---
 # Visual Studio IDE tools for upgrading C++ code
 
diff --git a/docs/porting/introduction-to-visual-cpp-for-unix-users.md b/docs/porting/introduction-to-visual-cpp-for-unix-users.md
index 87dc424588..4aa29e40e1 100644
--- a/docs/porting/introduction-to-visual-cpp-for-unix-users.md
+++ b/docs/porting/introduction-to-visual-cpp-for-unix-users.md
@@ -4,6 +4,7 @@ title: "Introduction to Microsoft C++ for UNIX Users"
 ms.date: 06/22/2021
 helpviewer_keywords: ["UNIX [C++]"]
 ms.assetid: 36108b31-e7fa-49a8-a1f7-7077fcbec873
+ms.topic: concept-article
 ---
 # Introduction to Microsoft C++ for UNIX Users
 
diff --git a/docs/porting/modifying-winver-and-win32-winnt.md b/docs/porting/modifying-winver-and-win32-winnt.md
index 6c6e1fe155..69ac9a1e52 100644
--- a/docs/porting/modifying-winver-and-win32-winnt.md
+++ b/docs/porting/modifying-winver-and-win32-winnt.md
@@ -4,6 +4,7 @@ description: "When and how to update WINVER and _WIN32_WINNT macros in upgraded
 ms.date: "06/19/2020"
 helpviewer_keywords: ["WINVER in an upgraded Visual Studio C++ project", "_WIN32_WINNT in an upgraded Visual Studio C++ project"]
 ms.assetid: 6a1f1d66-ae0e-48a7-81c3-524d8e8f3447
+ms.topic: how-to
 ---
 # Update WINVER and _WIN32_WINNT
 
diff --git a/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md b/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md
index d6167c1c63..fbae3e758a 100644
--- a/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md
+++ b/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md
@@ -3,6 +3,7 @@ description: "Learn more about: Overview of potential upgrade issues (Visual C++
 title: "Overview of potential upgrade issues (Visual C++)"
 ms.date: 10/22/2021
 ms.assetid: 2c99a8cb-098f-4a9d-bf2c-b80fd06ace43
+ms.topic: upgrade-and-migration-article
 ---
 # Overview of potential upgrade issues (Visual C++)
 
diff --git a/docs/porting/porting-and-upgrading-examples-and-case-studies.md b/docs/porting/porting-and-upgrading-examples-and-case-studies.md
index 84abafd2e4..d4e1d1b485 100644
--- a/docs/porting/porting-and-upgrading-examples-and-case-studies.md
+++ b/docs/porting/porting-and-upgrading-examples-and-case-studies.md
@@ -3,6 +3,7 @@ description: "Learn more about: Porting and Upgrading: Examples and Case Studies
 title: "Porting and Upgrading: Examples and Case Studies"
 ms.date: "11/04/2016"
 ms.assetid: d48bbff9-1ea7-467f-8c8b-758601f01573
+ms.topic: concept-article
 ---
 # Porting and Upgrading: Examples and Case Studies
 
diff --git a/docs/porting/porting-from-unix-to-win32.md b/docs/porting/porting-from-unix-to-win32.md
index db38c1d621..379d9fc43d 100644
--- a/docs/porting/porting-from-unix-to-win32.md
+++ b/docs/porting/porting-from-unix-to-win32.md
@@ -4,6 +4,7 @@ title: "Running Linux programs on Windows"
 ms.date: "07/31/2019"
 helpviewer_keywords: ["Linux [C++], porting to Win32"]
 ms.assetid: 3837e4fe-3f96-4f24-b2a1-7be94718a881
+ms.topic: concept-article
 ---
 # Running Linux programs on Windows
 
diff --git a/docs/porting/porting-guide-com-spy.md b/docs/porting/porting-guide-com-spy.md
index 787bf8c9a8..3df4ffa916 100644
--- a/docs/porting/porting-guide-com-spy.md
+++ b/docs/porting/porting-guide-com-spy.md
@@ -3,6 +3,7 @@ description: "Learn more about: Porting Guide: COM Spy"
 title: "Porting Guide: COM Spy"
 ms.date: "11/04/2016"
 ms.assetid: 24aa0d52-4014-4acb-8052-f4e2e4bbc3bb
+ms.topic: concept-article
 ---
 # Porting Guide: COM Spy
 
diff --git a/docs/porting/porting-guide-mfc-scribble.md b/docs/porting/porting-guide-mfc-scribble.md
index a2b0182ad9..8545e8fa71 100644
--- a/docs/porting/porting-guide-mfc-scribble.md
+++ b/docs/porting/porting-guide-mfc-scribble.md
@@ -3,6 +3,7 @@ description: "Learn more about: Porting Guide: MFC Scribble"
 title: "Porting Guide: MFC Scribble"
 ms.date: "10/23/2019"
 ms.assetid: 8ddb517d-89ba-41a1-ab0d-4d2c6d9047e8
+ms.topic: concept-article
 ---
 # Porting Guide: MFC Scribble
 
diff --git a/docs/porting/porting-guide-spy-increment.md b/docs/porting/porting-guide-spy-increment.md
index 208342a031..d216108360 100644
--- a/docs/porting/porting-guide-spy-increment.md
+++ b/docs/porting/porting-guide-spy-increment.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: Porting Guide: Spy++"
 title: "Porting Guide: Spy++"
-ms.date: "10/23/2019"
-ms.assetid: e558f759-3017-48a7-95a9-b5b779d5e51d
+description: "Learn more about: Porting Guide: Spy++"
+ms.date: 10/23/2019
+ms.topic: concept-article
 ---
 # Porting Guide: Spy++
 
@@ -14,7 +14,7 @@ Spy++ is a widely used GUI diagnostic tool for the Windows desktop that provides
 
 We considered this case to be typical for porting Windows desktop applications that use MFC and the Win32 API, especially for old projects that have not been updated with each release of Visual C++ since Visual C++ 6.0.
 
-## <a name="convert_project_file"></a> Step 1. Converting the project file.
+## <a name="convert_project_file"></a> Step 1. Converting the project file
 
 The project file, two old .dsw files from Visual C++ 6.0, converted easily with no issues that require further attention. One project is the Spy++ application. The other is SpyHk, written in C, a supporting DLL. More complex projects might not upgrade as easily, as discussed [here](../porting/visual-cpp-porting-and-upgrading-guide.md).
 
diff --git a/docs/porting/porting-third-party-libraries.md b/docs/porting/porting-third-party-libraries.md
index db6afa9358..6a569a0692 100644
--- a/docs/porting/porting-third-party-libraries.md
+++ b/docs/porting/porting-third-party-libraries.md
@@ -4,6 +4,7 @@ title: "Porting Third-Party Libraries"
 ms.date: 10/22/2021
 helpviewer_keywords: ["3rd-party libraries", "vspkg"]
 ms.assetid: b055ed20-8a9e-45b2-ac2a-e3d94271c009
+ms.topic: concept-article
 ---
 # Porting third-party libraries
 
diff --git a/docs/porting/porting-to-the-universal-windows-platform-cpp.md b/docs/porting/porting-to-the-universal-windows-platform-cpp.md
index d6ac9d6883..742390cf47 100644
--- a/docs/porting/porting-to-the-universal-windows-platform-cpp.md
+++ b/docs/porting/porting-to-the-universal-windows-platform-cpp.md
@@ -3,6 +3,7 @@ description: "Learn more about: Porting to the Universal Windows Platform (C++)"
 title: "Porting to the Universal Windows Platform (C++)"
 ms.date: "10/23/2019"
 ms.assetid: f662d2e4-8940-418d-8109-cb76cb8f8569
+ms.topic: how-to
 ---
 # Porting to the Universal Windows Platform (C++)
 
diff --git a/docs/porting/upgrade-your-code-to-the-universal-crt.md b/docs/porting/upgrade-your-code-to-the-universal-crt.md
index 03e27d4e2a..5c3ba784e2 100644
--- a/docs/porting/upgrade-your-code-to-the-universal-crt.md
+++ b/docs/porting/upgrade-your-code-to-the-universal-crt.md
@@ -3,6 +3,7 @@ description: "Learn more about: Upgrade your code to the Universal CRT"
 title: "Upgrade your code to the Universal CRT"
 ms.date: 06/28/2022
 ms.assetid: eaf34c1b-da98-4058-a059-a10db693a5ce
+ms.topic: upgrade-and-migration-article
 ---
 # Upgrade your code to the Universal CRT
 
diff --git a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md
index 53b9ef1a06..76f6dce84d 100644
--- a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md
+++ b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md
@@ -4,6 +4,7 @@ description: "How to upgrade Microsoft C++ projects from older versions of Visua
 ms.date: 04/07/2022
 helpviewer_keywords: ["32-bit code porting", "upgrading Visual C++ applications, 32-bit code"]
 ms.assetid: 18cdacaa-4742-43db-9e4c-2d9e73d8cc84
+ms.topic: upgrade-and-migration-article
 ---
 # Upgrade C++ projects from earlier versions of Visual Studio
 
diff --git a/docs/porting/visual-cpp-change-history-2003-2015.md b/docs/porting/visual-cpp-change-history-2003-2015.md
index 6e2a59a9fa..456a327ecc 100644
--- a/docs/porting/visual-cpp-change-history-2003-2015.md
+++ b/docs/porting/visual-cpp-change-history-2003-2015.md
@@ -1,7 +1,7 @@
 ---
 title: "Microsoft C/C++ change history 2003 - 2015"
 description: "Find all the breaking changes in Microsoft C/C++ from Visual Studio 2003 through Visual Studio 2015 here."
-ms.date: "5/25/2023"
+ms.date: 5/25/2023
 helpviewer_keywords: ["breaking changes [C++]"]
 ---
 # Microsoft C/C++ change history 2003 - 2015
@@ -622,7 +622,7 @@ Although these differences can affect your source code or other build artifacts,
 
 - **Adjacent string literals**
 
-   Similarly to the previous, due to related changes in string parsing, adjacent string literals (either wide or narrow character string literals) without any whitespace were interpreted as a single concatenated string in previous releases of Visaul C++. In Visual Studio 2015, you must now add whitespace between the two strings. For example, the following code must be changed:
+   Similarly to the previous, due to related changes in string parsing, adjacent string literals (either wide or narrow character string literals) without any whitespace were interpreted as a single concatenated string in previous releases of Visual C++. In Visual Studio 2015, you must now add whitespace between the two strings. For example, the following code must be changed:
 
     ```cpp
     char * str = "abc""def";
@@ -1650,10 +1650,10 @@ Although these differences can affect your source code or other build artifacts,
 
     //b.cpp
     // compile with cl.exe /nologo /LD /EHsc /Osx b.cpp
-    #pragma comment(lib, "A")
+    #pragma comment(lib, "A")
     class __declspec(dllimport) A
     {
-    public: A();
+    public: A();
             A(const A&);
             virtual ~A();
     private:
@@ -1667,7 +1667,7 @@ Although these differences can affect your source code or other build artifacts,
 
     //c.cpp
     #pragma comment(lib, "A")
-    #pragma comment(lib, "B")
+    #pragma comment(lib, "B")
     class __declspec(dllimport) A
     {
     public:
@@ -1974,7 +1974,7 @@ Although these differences can affect your source code or other build artifacts,
              case settings::bit0 | settings::bit1:  // warning C4063
                 break;
         }
-    };
+    }
     ```
 
    Example of C4063 (after)
@@ -3365,7 +3365,7 @@ The `SchedulerType` enumeration of `UmsThreadDefault` is deprecated. Specificati
 
 - The syntax for SAL Annotations has changed. For more information, see [SAL Annotations](../c-runtime-library/sal-annotations.md).
 
-- The IEEE filter now supports the SSE 4.1 instruction set. For more information, see [_fpieee_flt](../c-runtime-library/reference/fpieee-flt.md)_fpieee_flt.
+- The IEEE filter now supports the SSE 4.1 instruction set. For more information, see [`_fpieee_flt`](../c-runtime-library/reference/fpieee-flt.md).
 
 - The C Run-Time Libraries that ship with Visual Studio are no longer dependent on the system DLL msvcrt.dll.
 
diff --git a/docs/porting/visual-cpp-what-s-new-2003-through-2015.md b/docs/porting/visual-cpp-what-s-new-2003-through-2015.md
index e1f77ffdff..711377d790 100644
--- a/docs/porting/visual-cpp-what-s-new-2003-through-2015.md
+++ b/docs/porting/visual-cpp-what-s-new-2003-through-2015.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: Visual C++ What's New 2003 through 2015"
 title: "Visual C++ What's New 2003 through 2015"
-ms.date: "07/02/2019"
-ms.assetid: c4afde6f-3d75-40bf-986f-be57e3818e26
+description: "Learn more about: Visual C++ What's New 2003 through 2015"
+ms.date: 07/02/2019
+ms.topic: whats-new
 ---
 # Visual C++ What's New 2003 through 2015
 
@@ -227,14 +227,13 @@ Although these differences can affect your source code or other build artifacts,
    ```cpp
     error C3688: invalid literal suffix '_x'; literal operator or literal operator template 'operator ""_x' not found
     note: Did you forget a space between the string literal and the prefix of the following string literal?
-
    ```
 
    To fix this problem, add a space between the string literal and the macro.
 
 - **Adjacent string literals**
 
-   Similarly to the previous, due to related changes in string parsing, adjacent string literals (either wide or narrow character string literals) without any whitespace were interpreted as a single concatenated string in previous releases of Visaul C++. In Visual Studio 2015, you must now add whitespace between the two strings. For example, the following code must be changed:
+   Similarly to the previous, due to related changes in string parsing, adjacent string literals (either wide or narrow character string literals) without any whitespace were interpreted as a single concatenated string in previous releases of Visual C++. In Visual Studio 2015, you must now add whitespace between the two strings. For example, the following code must be changed:
 
    ```cpp
     char * str = "abc""def";
@@ -785,7 +784,7 @@ Although these differences can affect your source code or other build artifacts,
         case settings::bit0 | settings::bit1:  // warning C4063
             break;
         }
-    };
+    }
    ```
 
    Example of C4063 (after)
@@ -2206,7 +2205,7 @@ The compiler has breaking changes in this release.
 - In each function topic, a section on .NET Framework equivalents has been added.
 - Several string functions now have the option of truncating strings rather than failing when output buffers are too small; see **_TRUNCATE**.
 - `_set_se_translator` now requires the use of the `/EHa` compiler option.
-- `fpos_t` is now **`__int64`** under `/Za` (for C code) and when __STDC__ is set manually (for C++ code). It used to be a **`struct`**.
+- `fpos_t` is now **`__int64`** under `/Za` (for C code) and when `__STDC__` is set manually (for C++ code). It used to be a **`struct`**.
 - _CRT_DISABLE_PERFCRIT_LOCKS can improve the I/O performance of single-threaded programs.
 - POSIX names have been deprecated in favor of ISO C++ conformant names (for example, use `_getch` rather than `getch`).
 - New link options .obj files are available for pure mode
diff --git a/docs/preprocessor/check-stack.md b/docs/preprocessor/check-stack.md
index 33cf7b507f..546130842e 100644
--- a/docs/preprocessor/check-stack.md
+++ b/docs/preprocessor/check-stack.md
@@ -1,9 +1,9 @@
 ---
 description: "Learn more about the check_stack pragma directive in Microsoft C/C++"
 title: "check_stack pragma"
-ms.date: 01/22/2021
+ms.date: 2/7/2025
 f1_keywords: ["vc-pragma.check_stack", "check_stack_CPP"]
-helpviewer_keywords: ["check_stack pragma", "pragma, check_stack", "pragma, check_stack usage table"]
+helpviewer_keywords: ["check_stack pragma", "pragma, check_stack"]
 no-loc: ["pragma"]
 ---
 # `check_stack` pragma
@@ -12,24 +12,24 @@ Instructs the compiler to turn off stack probes if **`off`** (or **`-`**) is spe
 
 ## Syntax
 
-> **`#pragma check_stack(`** [{ **`on`** | **`off`** }] **`)`**\
+> **`#pragma check_stack(`** { **`on`** | **`off`** } **`)`**\
 > **`#pragma check_stack`** { **`+`** | **`-`** }
 
 ## Remarks
 
-This pragma takes effect at the first function defined after the pragma is seen. Stack probes are neither a part of macros nor of functions that are generated inline.
+This pragma only applies to 32-bit platforms (x86, ARM32). It has no effect on 64-bit platforms.
 
-If you don't give an argument for the **`check_stack`** pragma, stack checking reverts to the behavior specified on the command line. For more information, see [Compiler options](../build/reference/compiler-options.md). The interaction of the `#pragma check_stack` and the [`/Gs`](../build/reference/gs-control-stack-checking-calls.md) option is summarized in the following table.
+This pragma takes effect at the first function defined after the pragma is seen. Stack probes are not inserted for macros or functions that are generated inline.
 
-### Using the check_stack Pragma
+`#pragma check_stack(off)` / `#pragma Check_stack-` is ignored if the size of the function locals is larger than 4096 or the value specified by `/Gs`.
 
-| Syntax | Compiled with<br /><br /> `/Gs` option? | Action |
-|--|--|--|
-| `#pragma check_stack( )` or<br /><br /> `#pragma check_stack` | Yes | Turns off stack checking for functions that follow |
-| `#pragma check_stack( )` or<br /><br /> `#pragma check_stack` | No | Turns on stack checking for functions that follow |
-| `#pragma check_stack(on)`<br /><br /> or `#pragma check_stack +` | Yes or No | Turns on stack checking for functions that follow |
-| `#pragma check_stack(off)`<br /><br /> or `#pragma check_stack -` | Yes or No | Turns off stack checking for functions that follow |
+The default behavior of the compiler is to insert stack probes at the beginning of each function if the size of the locals exceeds 4096 or the value specified by `/Gs`.
+
+Use [/Gs (Control stack checking calls)](../build/reference/gs-control-stack-checking-calls.md) to change the threshold of the locals that trigger stack probes. Use with caution.
+
+Using `#pragma check_stack()` without arguments is deprecated.
 
 ## See also
 
+[Compiler options](../build/reference/compiler-options.md)\
 [Pragma directives and the `__pragma` and `_Pragma` keywords](./pragma-directives-and-the-pragma-keyword.md)
diff --git a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
index da2758a0ba..96a31c2983 100644
--- a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
+++ b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: Compiler warnings that are off by default"
 title: "Compiler warnings that are off by default"
+description: "Learn more about: Compiler warnings that are off by default"
 ms.date: 01/18/2024
 helpviewer_keywords: ["warnings, compiler", "cl.exe compiler, setting options"]
 ---
@@ -158,7 +158,7 @@ The following warnings are turned off by default in Visual Studio 2019 and later
 
 | Warning | Message |
 |--|--|
-| C5052 (level 3) | Keyword '*keyword-name*' was introduced in C++ *version* and requires use of the '*option*' command-line option` <sup>16.1</sup> |
+| C5052 (level 3) | Keyword '*keyword-name*' was introduced in C++ *version* and requires use of the '*option*' command-line option <sup>16.1</sup> |
 | C5204 (level 3) | A class with virtual functions has non-virtual trivial destructor. <sup>16.5</sup> |
 | C5214 (level 4) | applying '*keyword*' to an operand with a volatile qualified type is deprecated in C++20 <sup>16.7</sup> |
 | C5215 (level 4) | '*function-parameter*' a function parameter with a volatile qualified type is deprecated in C++20 <sup>16.7</sup> |
diff --git a/docs/preprocessor/hash-import-directive-cpp.md b/docs/preprocessor/hash-import-directive-cpp.md
index 82e8088116..83b1bc8afb 100644
--- a/docs/preprocessor/hash-import-directive-cpp.md
+++ b/docs/preprocessor/hash-import-directive-cpp.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: #import directive (C++)"
 title: "#import directive (C++)"
+description: "Learn more about: #import directive (C++)"
 ms.date: "08/29/2019"
 f1_keywords: ["#import"]
 helpviewer_keywords: [".tlh files", "#import directive", "import directive (#import)", "tlh files", "tlbid switch", "preprocessor, directives", "COM, type library header file"]
-ms.assetid: 787d1112-e543-40d7-ab15-a63d43f4030a
 ---
 # #import directive (C++)
 
@@ -130,7 +129,7 @@ The primary type library header file consists of seven sections:
 
    Type `IMyInterfacePtr` can then be used in place of the raw interface pointer `IMyInterface*`. Consequently, there's no need to call the various `IUnknown` member functions
 
-- Typeinfo declarations: Primarily consists of class definitions and other items exposing the individual typeinfo items returned by `ITypeLib:GetTypeInfo`. In this section, each typeinfo from the type library is reflected in the header in a form dependent on the `TYPEKIND` information.
+- Typeinfo declarations: Primarily consists of class definitions and other items exposing the individual typeinfo items returned by `ITypeLib::GetTypeInfo`. In this section, each typeinfo from the type library is reflected in the header in a form dependent on the `TYPEKIND` information.
 
 - Optional old-style GUID definition: Contains initializations of the named GUID constants. These names have the form `CLSID_CoClass` and `IID_Interface`, similar to the ones generated by the MIDL compiler.
 
diff --git a/docs/preprocessor/optimize.md b/docs/preprocessor/optimize.md
index ddcd04b833..f8dd4c9625 100644
--- a/docs/preprocessor/optimize.md
+++ b/docs/preprocessor/optimize.md
@@ -1,7 +1,7 @@
 ---
 description: "Learn more about: optimize pragma"
 title: "optimize pragma"
-ms.date: 01/22/2021
+ms.date: 07/25/2025
 f1_keywords: ["vc-pragma.optimize", "optimize_CPP"]
 helpviewer_keywords: ["pragma, optimize", "optimize pragma"]
 no-loc: ["pragma"]
@@ -25,8 +25,8 @@ The *optimization-list* can be zero or more of the parameters shown in the follo
 | Parameter(s) | Type of optimization |
 |--------------------|--------------------------|
 | **`g`** | Enable global optimizations. Deprecated. For more information, see [`/Og` (Global optimizations)](../build/reference/og-global-optimizations.md). |
-| **`s`** or **`t`** | Specify short or fast sequences of machine code. |
-| **`y`** | Generate frame pointers on the program stack. |
+| **`s`** or **`t`** | Favor short or fast sequences of machine code. |
+| **`y`** | Omit frame pointers on the program stack. |
 
 These parameters are the same letters used with the [`/O`](../build/reference/o-options-optimize-code.md) compiler options. For example, the following pragma is equivalent to the **`/Os`** compiler option:
 
diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md
index 40cceea515..501dfdd2be 100644
--- a/docs/preprocessor/predefined-macros.md
+++ b/docs/preprocessor/predefined-macros.md
@@ -2,7 +2,7 @@
 title: "Predefined macros"
 description: "Lists and describes the Microsoft C++ compiler predefined preprocessor macros."
 ms.custom: "update_every_version"
-ms.date: 06/11/2024
+ms.date: 06/18/2025
 f1_keywords: ["__ARM_ARCH", "_ATL_VER", "__ATOM__", "__AVX__", "__AVX2__", "__AVX512BW__", "__AVX512CD__", "__AVX512DQ__", "__AVX512F__", "__AVX512VL__", "_CHAR_UNSIGNED", "__CLR_VER", "_CONTROL_FLOW_GUARD", "__COUNTER__", "__cplusplus", "__cplusplus_cli", "__cplusplus_winrt", "_CPPRTTI", "_CPPUNWIND", "__DATE__", "_DEBUG", "_DLL", "__FILE__", "__FUNCDNAME__", "__FUNCSIG__", "__FUNCTION__", "_INTEGRAL_MAX_BITS", "_ISO_VOLATILE", "_KERNEL_MODE", "__LINE__", "_M_AMD64", "_M_ARM", "_M_ARM_ARMV7VE", "_M_ARM_FP", "_M_ARM64", "_M_CEE", "_M_CEE_PURE", "_M_CEE_SAFE", "_M_FP_EXCEPT", "_M_FP_FAST", "_M_FP_PRECISE", "_M_FP_STRICT", "_M_IX86", "_M_IX86_FP", "_M_X64", "_MANAGED", "_MFC_VER", "_MSC_BUILD", "_MSC_EXTENSIONS", "_MSC_FULL_VER", "_MSC_VER", "_MSVC_LANG", "__MSVC_RUNTIME_CHECKS", "_MT", "_NATIVE_WCHAR_T_DEFINED", "_NO_SIZED_DEALLOCATION", "_OPENMP", "_PREFAST_", "_RESUMABLE_FUNCTIONS_SUPPORTED", "_RTC_CONVERSION_CHECKS_ENABLED", "__SANITIZE_ADDRESS__", "__STDC__", "__STDC_HOSTED__", "__STDC_NO_ATOMICS__", "__STDC_NO_COMPLEX__", "__STDC_NO_THREADS__", "__STDC_NO_VLA__", "__STDC_VERSION__", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__", "__TIME__", "__TIMESTAMP__", "__VA_ARGS__", "_VC_NODEFAULTLIB", "_WCHAR_T_DEFINED", "_WIN32", "_WIN64", "_WINRT_DLL"]
 helpviewer_keywords: ["__ARM_ARCH macro", "timestamps, preprocessor macro", "cl.exe compiler, version number", "version numbers, C/C++ compiler (cl.exe)", "macros, predefined C++", "preprocessor, macros", "predefined macros", "_ATL_VER macro", "__ATOM__ macro", "__AVX__ macro", "__AVX2__ macro", "__AVX512BW__ macro", "__AVX512CD__ macro", "__AVX512DQ__ macro", "__AVX512F__ macro", "__AVX512VL__ macro", "_CHAR_UNSIGNED macro", "__CLR_VER macro", "_CONTROL_FLOW_GUARD macro", "__COUNTER__ macro", "__cplusplus macro", "__cplusplus_cli macro", "__cplusplus_winrt macro", "_CPPRTTI macro", "_CPPUNWIND macro", "__DATE__ macro", "_DEBUG macro", "_DLL macro", "__FILE__ macro", "__FUNCDNAME__ macro", "__FUNCSIG__ macro", "__FUNCTION__ macro", "_INTEGRAL_MAX_BITS macro", "_ISO_VOLATILE macro", "_KERNEL_MODE macro", "__LINE__ macro", "_M_AMD64 macro", "_M_ARM macro", "_M_ARM_ARMV7VE macro", "_M_ARM_FP macro", "_M_ARM64 macro", "_M_ARM64EC macro", "_M_CEE macro", "_M_CEE_PURE macro", "_M_CEE_SAFE macro", "_M_FP_EXCEPT macro", "_M_FP_FAST macro", "_M_FP_PRECISE macro", "_M_FP_STRICT macro", "_M_IX86 macro", "_M_IX86_FP macro", "_M_X64 macro", "_MANAGED macro", "_MFC_VER macro", "_MSC_BUILD macro", "_MSC_EXTENSIONS macro", "_MSC_FULL_VER macro", "_MSC_VER macro", "_MSVC_LANG macro", "__MSVC_RUNTIME_CHECKS macro", "_MT macro", "_NATIVE_WCHAR_T_DEFINED macro", "_NO_SIZED_DEALLOCATION macro", "_OPENMP macro", "_PREFAST_ macro", "_RESUMABLE_FUNCTIONS_SUPPORTED macro", "_RTC_CONVERSION_CHECKS_ENABLED macro", "__SANITIZE_ADDRESS__ macro", "__STDC__ macro", "__STDC_HOSTED__ macro", "__STDC_NO_ATOMICS__ macro", "__STDC_NO_COMPLEX__ macro", "__STDC_NO_THREADS__ macro", "__STDC_NO_VLA__ macro", "__STDC_VERSION__ macro", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__ macro", "__TIME__ macro", "__TIMESTAMP__ macro", "__VA_ARGS__ macro", "_VC_NODEFAULTLIB macro", "_WCHAR_T_DEFINED macro", "_WIN32 macro", "_WIN64 macro", "_WINRT_DLL macro", "__func__ identifier"]
 ms.assetid: 1cc5f70a-a225-469c-aed0-fe766238e23f
@@ -41,7 +41,7 @@ The compiler supports these predefined macros specified by the ISO C99, C11, C17
 
 - `__LINE__` Defined as the integer line number in the current source file. The value of this macro can be changed by using a `#line` directive. The integral type of the value of `__LINE__` can vary depending on context. This macro is always defined.
 
-- `__STDC__` Defined as 1 when compiled as C and if the [`/Za`](../build/reference/za-ze-disable-language-extensions.md) compiler option is specified. Starting in Visual Studio 2022 version 17.2, it's defined as 1 when compiled as C and if the [`/std:c11`](../build/reference/std-specify-language-standard-version.md) or [`/std:c17`](../build/reference/std-specify-language-standard-version.md) compiler option is specified. Otherwise, undefined.
+- `__STDC__` Defined as 1 when compiled as C and if the [`/Za`](../build/reference/za-ze-disable-language-extensions.md) compiler option is specified. Starting in Visual Studio 2022 version 17.2, it's defined as 1 when compiled as C and if the [`/Zc:__STDC__`](../build/reference/zc-stdc.md) compiler option is specified. Otherwise, undefined.
 
 - `__STDC_HOSTED__` Defined as 1 if the implementation is a *hosted implementation*, one that supports the entire required standard library. Otherwise, defined as 0.
 
@@ -312,9 +312,9 @@ MSVC supports other predefined macros:
 
 - `_WCHAR_T_DEFINED` Defined as 1 when the default [`/Zc:wchar_t`](../build/reference/zc-wchar-t-wchar-t-is-native-type.md) compiler option is set. The `_WCHAR_T_DEFINED` macro is defined but has no value if the **`/Zc:wchar_t-`** compiler option is set, and **`wchar_t`** is defined in a system header file included in your project. Otherwise, undefined.
 
-- `_WIN32` Defined as 1 when the compilation target is 32-bit ARM, 64-bit ARM, x86, or x64. Otherwise, undefined.
+- `_WIN32` Defined as 1 when the compilation target is 32-bit ARM, 64-bit ARM, x86, x64, or ARM64EC. Otherwise, undefined.
 
-- `_WIN64` Defined as 1 when the compilation target is 64-bit ARM or x64. Otherwise, undefined.
+- `_WIN64` Defined as 1 when the compilation target is 64-bit ARM, x64, or ARM64EC. Otherwise, undefined.
 
 - `_WINRT_DLL` Defined as 1 when compiled as C++ and both [**`/ZW`** (Windows Runtime Compilation)](../build/reference/zw-windows-runtime-compilation.md) and [**`/LD`** or **`/LDd`**](../build/reference/md-mt-ld-use-run-time-library.md) compiler options are set. Otherwise, undefined.
 
diff --git a/docs/preprocessor/toc.yml b/docs/preprocessor/toc.yml
index a2121985ad..4535a25eb6 100644
--- a/docs/preprocessor/toc.yml
+++ b/docs/preprocessor/toc.yml
@@ -7,7 +7,7 @@ items:
     - name: Preprocessor
       href: ../preprocessor/preprocessor.md
     - name: New preprocessor overview
-      href: ../preprocessor/preprocessor-experimental-overview.md                  
+      href: ../preprocessor/preprocessor-experimental-overview.md
     - name: Phases of translation
       href: ../preprocessor/phases-of-translation.md
     - name: Preprocessor directives
diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md
index da6d618984..8d6d994f0a 100644
--- a/docs/preprocessor/warning.md
+++ b/docs/preprocessor/warning.md
@@ -1,7 +1,7 @@
 ---
 title: "warning pragma"
 description: "Learn more about the warning pragma in Microsoft C/C++"
-ms.date: 01/22/2021
+ms.date: 4/30/2025
 f1_keywords: ["warning_CPP", "vc-pragma.warning"]
 helpviewer_keywords: ["pragma, warning", "push pragma warning", "pop warning pragma", "warning pragma"]
 no-loc: ["pragma"]
@@ -13,7 +13,7 @@ Enables selective modification of the behavior of compiler warning messages.
 ## Syntax
 
 > **`#pragma warning(`**\
-> &emsp;*`warning-specifier`* **`:`** *`warning-number-list`*\
+> &emsp;*`warning-specifier`* **`:`** *`warning-number-list`* [ **`,`** **`justification`** **`:`** *`string-literal`*]\
 > &emsp;[**`;`** *`warning-specifier`* **`:`** *`warning-number-list`* ... ] **`)`**\
 > **`#pragma warning( push`** [ **`,`** *n* ] **`)`**\
 > **`#pragma warning( pop )`**
@@ -24,30 +24,39 @@ The following warning-specifier parameters are available.
 
 | warning-specifier | Meaning |
 |--|--|
-| `1`, `2`, `3`, `4` | Apply the given level to the specified warnings. Also turns on a specified warning that is off by default. |
+| `1`, `2`, `3`, `4` | Apply the given level to the specified warnings. For example: `#pragma warning (3 : 5033)` turns off warning 5033 (normally a level 1 warning) unless the warning level is set to `/w3` or higher. Also can be used to turn on a specified warning that is off by default. |
 | `default` | Reset warning behavior to its default value. Also turns on a specified warning that is off by default. The warning will be generated at its default, documented, level.<br /><br /> For more information, see [Compiler warnings that are off by default](../preprocessor/compiler-warnings-that-are-off-by-default.md). |
-| `disable` | Don't issue the specified warning messages. |
+| `disable` | Don't issue the specified warning messages. The optional **`justification`** property is allowed. |
 | `error` | Report the specified warnings as errors. |
 | `once` | Display the specified message(s) only one time. |
-| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. |
+| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. The optional **`justification`** property is allowed. |
 
 The following code statement illustrates that a *`warning-number-list`* parameter can contain multiple warning numbers, and that multiple *`warning-specifier`* parameters can be specified in the same pragma directive.
 
 ```cpp
-#pragma warning( disable : 4507 34; once : 4385; error : 164 )
+#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
 ```
 
+However, when the **`justification`** field is present, only one warning number can be specified. The following code statement illustrates the use of the **`justification`** field.
+
+```cpp
+#pragma warning( disable : 4507, justification : "This warning is disabled" )
+```
+
+The **`justification`** fields allows you to explain why a warning is being disable or
+suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal.
+
 This directive is functionally equivalent to the following code:
 
 ```cpp
 // Disable warning messages 4507 and 4034.
-#pragma warning( disable : 4507 34 )
+#pragma warning(disable : 4507 4034)
 
 // Issue warning C4385 only once.
-#pragma warning( once : 4385 )
+#pragma warning(once : 4385)
 
 // Report warning C4164 as an error.
-#pragma warning( error : 164 )
+#pragma warning(error : 164)
 ```
 
 The compiler adds 4000 to any warning number that is between 0 and 999.
@@ -58,15 +67,17 @@ Warning numbers in the range 4700-4999 are associated with code generation. For
 // pragma_warning.cpp
 // compile with: /W1
 #pragma warning(disable:4700)
-void Test() {
+void Test()
+{
    int x;
-   int y = x;   // no C4700 here
-   #pragma warning(default:4700)   // C4700 enabled after Test ends
+   int y = x; // no C4700 here
+   #pragma warning(default:4700)   // C4700 enabled after compiling Test()
 }
 
-int main() {
+int main()
+{
    int x;
-   int y = x;   // C4700
+   int y = x; // C4700
 }
 ```
 
diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md
index e1255cb13f..003492cbbb 100644
--- a/docs/sanitizers/asan-building.md
+++ b/docs/sanitizers/asan-building.md
@@ -7,9 +7,9 @@ helpviewer_keywords: ["ASan reference", "AddressSanitizer reference", "Address S
 ---
 # AddressSanitizer language, build, and debugging reference
 
-The sections in this article describe the AddressSanitizer language specification, compiler options, and linker options. They also describe the options that control Visual Studio debugger integration specific to the AddressSanitizer.
+This article describes the AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the AddressSanitizer.
 
-For more information on the AddressSanitizer runtime, see the [runtime reference](./asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from AddressSanitizer failures, see the [crash dump reference](./asan-offline-crash-dumps.md).
+For more information on the AddressSanitizer runtime, see the [runtime reference](asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from AddressSanitizer failures, see the [crash dump reference](asan-offline-crash-dumps.md).
 
 ## Language specification
 
@@ -56,9 +56,9 @@ void test3() {
 
 ### `/fsanitize=address` compiler option
 
-The [**`/fsanitize=address`**](../build/reference/fsanitize.md) compiler option instruments memory references in your code to catch memory safety errors at runtime. The instrumentation hooks loads, stores, scopes, `alloca`, and CRT functions. It can detect hidden bugs such as out-of-bounds, use-after-free, use-after-scope, and so on. For a nonexhaustive list of errors detected at runtime, see [AddressSanitizer error examples](./asan-error-examples.md).
+The [**`/fsanitize=address`**](../build/reference/fsanitize.md) compiler option instruments memory references in your code to catch memory safety errors at runtime. The instrumentation hooks loads, stores, scopes, `alloca`, and CRT functions. It can detect hidden bugs such as out-of-bounds, use-after-free, use-after-scope, and so on. For a nonexhaustive list of errors detected at runtime, see [AddressSanitizer error examples](asan-error-examples.md).
 
-**`/fsanitize=address`** is compatible with all existing C++ or C optimization levels (for example, **`/Od`**, **`/O1`**, **`/O2`**, and **`/O2 /GL`**). The code produced with this option works with static and dynamic CRTs (for example, **`/MD`**, **`/MDd`**, **`/MT`**, and **`/MTd`**). This compiler option can be used to create an .EXE or .DLL targeting x86 or x64. Debug information is required for optimal formatting of call stacks. This compiler option is not supported with profile guided optimization.
+**`/fsanitize=address`** is compatible with all existing C++ or C optimization levels (for example, **`/Od`**, **`/O1`**, **`/O2`**, and **`/O2 /GL`**). The code produced with this option works with static and dynamic CRTs (for example, **`/MD`**, **`/MDd`**, **`/MT`**, and **`/MTd`**). This compiler option can be used to create an .EXE or .DLL targeting x86 or x64. Debug information is required for optimal formatting of call stacks. This compiler option isn't supported with profile guided optimization.
 
 For examples of code that demonstrates several kinds of error detection, see [AddressSanitizer error examples](asan-error-examples.md).
 
@@ -106,6 +106,16 @@ The dual stack frame in the heap remains after the return from the function that
 
 Stack frames are allocated in the heap and remain after functions return. The runtime uses garbage collection to asynchronously free these fake call-frame objects, after a certain time interval. Addresses of locals get transferred to persistent frames in the heap. It's how the system can detect when any locals get used after the defining function returns. For more information, see the [algorithm for stack use after return](https://github.com/google/sanitizers/wiki/AddressSanitizerUseAfterReturn) as documented by Google.
 
+### ASan intrinsic compatibility library
+
+When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program behaves as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supersedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it's imperative to link with the KASan library provided by the Windows SDK that matches the OS version you're targeting.
+
+The following options are supported in Visual Studio 2022 17.14 Preview 2 and later:
+- To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**.
+- To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option.
+
+Using **`/fsanitize-address-asan-compat-lib`** to link a newer compiler with an older user-mode ASan runtime isn't currently supported.
+
 ## <a name="linker"></a> Linker
 
 ### `/INFERASANLIBS[:NO]` linker option
@@ -141,7 +151,7 @@ Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`*
 
 ### `/fno-sanitize-address-vcasan-lib` compiler option
 
-The **`/fsanitize=address`** option links in extra libraries for an improved Visual Studio debugging experience when an AddressSanitizer exception is thrown. These libraries are called **VCAsan**. The libraries enable Visual Studio to display AddressSanitizer errors on your source code. They also enable the executable to generate crash dumps when an AddressSanitizer error report is created. For more information, see [Visual Studio AddressSanitizer extended functionality library](./asan-debugger-integration.md).
+The **`/fsanitize=address`** option links in extra libraries for an improved Visual Studio debugging experience when an AddressSanitizer exception is thrown. These libraries are called **VCAsan**. The libraries enable Visual Studio to display AddressSanitizer errors on your source code. They also enable the executable to generate crash dumps when an AddressSanitizer error report is created. For more information, see [Visual Studio AddressSanitizer extended functionality library](asan-debugger-integration.md).
 
 The library chosen depends on the compiler options, and is automatically linked in.
 
@@ -152,7 +162,7 @@ The library chosen depends on the compiler options, and is automatically linked
 | **`/MTd`**       | *`libvcasand.lib`* |
 | **`/MDd`**       | *`vcasand.lib`*    |
 
-However, if you compile using **`/Zl`** (Omit default library name), you must manually specify the library. If you don't, you'll get an unresolved external symbol link error. Here are some typical examples:
+However, if you compile using **`/Zl`** (Omit default library name), you must manually specify the library. If you don't, you get an unresolved external symbol link error. Here are some typical examples:
 
 ```Output
 error LNK2001: unresolved external symbol __you_must_link_with_VCAsan_lib
@@ -169,10 +179,10 @@ To enable this behavior, run the command `set ASAN_VCASAN_DEBUGGING=1` before yo
 
 ## See also
 
-[AddressSanitizer overview](./asan.md)\
-[AddressSanitizer known issues](./asan-known-issues.md)\
-[AddressSanitizer runtime reference](./asan-runtime.md)\
-[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\
-[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\
-[AddressSanitizer debugger integration](./asan-debugger-integration.md)\
-[AddressSanitizer error examples](./asan-error-examples.md)
+[AddressSanitizer overview](asan.md)\
+[AddressSanitizer known issues](asan-known-issues.md)\
+[AddressSanitizer runtime reference](asan-runtime.md)\
+[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\
+[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\
+[AddressSanitizer debugger integration](asan-debugger-integration.md)\
+[AddressSanitizer error examples](asan-error-examples.md)
diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md
index 0e5694dfc7..9d820f863e 100644
--- a/docs/sanitizers/asan-continue-on-error.md
+++ b/docs/sanitizers/asan-continue-on-error.md
@@ -20,7 +20,7 @@ It's a good practice to create a checked build of your C or C++ app with ASAN tu
 
 When your app finishes, you get a summary of the memory issues. With COE, you can compile and deploy an existing application into limited production to find memory safety issues. You can run the checked build for days to fully exercise the code, although the app will run slower due to the ASAN instrumentation.
 
-You can use this feature to create a new shipping gate. If all your existing tests pass, but COE reports a memory safety error or a leak, don’t ship the new code or integrate it into a parent branch.
+You can use this feature to create a new shipping gate. If all your existing tests pass, but COE reports a memory safety error or a leak, don't ship the new code or integrate it into a parent branch.
 
 Don't deploy a build with COE enabled into production! COE is intended to be used in testing and development environments only. You shouldn't use an ASAN enabled build in production because of the performance impact of the instrumentation added to detect memory errors, the risk of exposing the internal implementation if errors are reported, and to avoid increasing the surface area of possible security exploits by shipping the library functions that ASAN substitutes for memory allocation, freeing, and so on.
 
@@ -146,7 +146,7 @@ This sorting prioritizes memory safety issues that may be the most concerning. F
 
 File: D:\a\_work\1\s\src\vctools\asan\llvm\compiler-rt\lib\asan\asan_malloc_win_thunk.cpp Unique call stacks: 1
 File: C:\Users\xxx\Desktop\COE\doublefree.cpp Unique call stacks: 1
-``````
+```
 
 Finally, the report contains a summary of where the memory errors occurred:
 
@@ -196,7 +196,7 @@ Create the example:
     
     char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; 
     
-    void main()
+    int main()
     {   
         char* inverted_buf= func(buffer, 10); 
     }
@@ -317,7 +317,7 @@ int foo_redundant(unsigned long arg_var)
     return ret;
 }
 
-void main()
+int main()
 {
     int cnt = 0;
 
@@ -351,4 +351,4 @@ With the new ASAN runtime, no extra binaries need to be deployed with your app.
 [Example memory safety errors](asan.md#error-types)\
 [-Zi compiler flag](../build/reference/z7-zi-zi-debug-information-format.md#zi)\
 [-fsanitize=address compiler flag](../build/reference/fsanitize.md)\
-[Top 25 most dangerous software weaknesses](https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html)
\ No newline at end of file
+[Top 25 most dangerous software weaknesses](https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html)
diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md
index cbf822f6b8..f797f3006e 100644
--- a/docs/sanitizers/asan-known-issues.md
+++ b/docs/sanitizers/asan-known-issues.md
@@ -1,18 +1,18 @@
 ---
-title: "AddressSanitizer known issues"
+title: "AddressSanitizer known issues and limitations"
 description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues."
-ms.date: 12/1/2023
+ms.date: 5/21/2025
 helpviewer_keywords: ["AddressSanitizer known issues"]
 ---
 
-# AddressSanitizer known issues
+# AddressSanitizer known issues and limitations
 
 > [!NOTE]
 > Send us [feedback](https://aka.ms/vsfeedback/browsecpp) on what you'd like to see in future releases, and [report bugs](https://aka.ms/feedback/report?space=62) if you run into issues.
 
 ## <a name="incompatible-options"></a> Incompatible options and functionality
 
-These options and functionality are incompatible with [`/fsanitize=address`](../build/reference/fsanitize.md) and should be disabled or avoided.
+The following options and functionality are incompatible with [`/fsanitize=address`](../build/reference/fsanitize.md) and should be disabled or avoided.
 
 - The [`/RTC`](../build/reference/rtc-run-time-error-checks.md) options are incompatible with AddressSanitizer and should be disabled.
 - [Incremental linking](../build/reference/incremental-link-incrementally.md) is unsupported, and should be disabled.
@@ -23,13 +23,13 @@ These options and functionality are incompatible with [`/fsanitize=address`](../
 - [C++ AMP](../parallel/amp/cpp-amp-overview.md) is unsupported, and should be disabled.
 - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported.
 - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported.
-- [MFC](../mfc/mfc-concepts.md) using the optional [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) runtime option is unsupported.
+- [Precompiled headers built without `/fsanitize`address`](../build/creating-precompiled-header-files.md#consistency-rules-for-yc-and-yu) are unsupported.
 
 ## Standard library support
 
-The MSVC standard library (STL) is partially enlightened to understand the AddressSanitizer and provide other checks. For more information, see [container-overflow error](./error-container-overflow.md).
+The MSVC standard library (STL) makes partial use of the AddressSanitizer and provides other code safety checks. For more information, see [container-overflow error](./error-container-overflow.md).
 
-When annotations are disabled or in versions without support, AddressSanitizer exceptions raised in STL code do still identify true bugs. However, they aren't as precise as they could be.
+When annotations are disabled, or in versions of the Standard Library that don't support them, AddressSanitizer exceptions raised in STL code still identify real bugs. However, they're more precise if annotations are enabled and you use a version of the Standard Library that supports them.
 
 This example demonstrates the lack of precision and the benefits of enabling annotations:
 
@@ -55,30 +55,51 @@ int main() {
 }
 ```
 
-## Windows versions
+## Overriding operator new and delete
+
+AddressSanitizer (ASan) uses a custom version of `operator new` and `operator delete` to find allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that the linker chooses any `operator new` or `operator delete` overrides in other libraries over ASan's custom versions. When this happens, ASan may not be able to catch some errors that rely on its custom `operator new` and `operator delete`.
+
+[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and might miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md).
 
-As there are dependencies with specific Windows versions, support is focused on Windows 10. MSVC AddressSanitizer was tested on 10.0.14393 (RS1), and 10.0.21323 (prerelease insider build). [Report a bug](https://aka.ms/feedback/report?space=62) if you run into issues.
 
 ## Memory usage
 
-The AddressSanitizer runtime doesn't release memory back to the OS during execution. From the OS's point of view, it may look like there's a memory leak. This design decision is intentional, so as not to allocate all the required memory up front.
+The AddressSanitizer runtime doesn't release memory back to the OS during execution so that the memory isn't all allocated up front. From the OS's point of view, it may look like there's a memory leak.
 
 ## AddressSanitizer runtime DLL locations
 
-The *`clang_rt.asan*.dll`* runtime files are installed next to the compilers in *`%VSINSTALLDIR%\VC\Tools\MSVC\<version>\bin\<host-arch>\<target-arch>\`*. These locations are on the path in debugging sessions, and in Visual Studio developer command prompts. These files are never placed in *`C:\Windows\System32`* or *`C:\Windows\SysWOW64`*.
+The *`clang_rt.asan*.dll`* runtime files are installed next to the compilers in *`%VSINSTALLDIR%\VC\Tools\MSVC\<version>\bin\<host-arch>\<target-arch>\`*. These locations are on the path in debugging sessions and in Visual Studio developer command prompts. These files are never placed in *`C:\Windows\System32`* or *`C:\Windows\SysWOW64`*.
 
 ## Custom property sheet support
 
-The Property Manager window in the Visual Studio IDE allows you to add custom *`.props`* files to your projects. Even though the **Enable Address Sanitizer** property (`<EnableASAN>`) is shown, the build doesn't honor it. That's because the custom *`.props`* files get included after *`Microsoft.cpp.props`*, which uses the `<EnableASAN>` value to set other properties.
+The Visual Studio Property Manager window allows you to add custom *`.props`* files to your projects. Even though the **Enable Address Sanitizer** property (`<EnableASAN>`) is shown, the build doesn't honor it. The build doesn't honor it because the custom *`.props`* files are included after *`Microsoft.cpp.props`*, which uses the `<EnableASAN>` value to set other properties.
+
+As a workaround, create a *`Directory.Build.props`* file in the root of your project to define the `<EnableASAN>` property. For more information, see [Customize C++ builds](/visualstudio/msbuild/customize-your-build#customize-c-builds).
+
+## Thread local variables
+
+Thread local variables (global variables declared with `__declspec(thread)` or `thread_local`) aren't protected by AddressSanitizer. This limitation isn't specific to Windows or Microsoft Visual C++, but is a general limitation.
+
+## Custom code skips normal function return sequence
+
+Using custom code or assembly language to leave the current stack frame without honoring the usual return mechanisms isn't supported. For example, leaving the current stack frame via a long jump may generate false positives. 
+
+Instead, before invoking custom long jump-like code, call [`__asan_handle_no_return()`](https://github.com/llvm/llvm-project/blob/ba84d0c8d762f093c6ef6d5ef5a446a42a8548a5/compiler-rt/include/sanitizer/asan_interface.h#L325-L330) . This function clears all of the shadow bytes associated with the current thread's stack, which results in some lost coverage and introduces the risk of false negatives. But your program can then safely unwind the stack without running into false positives due to stale stack shadow bytes.
+
+## Issues with partially sanitized executables
+
+If all of the code in a process isn't compiled with `/fsanitize=address`, ASan may not be able to diagnose all memory safety errors. The most common example is when a DLL compiled with ASan is loaded into a process that contains code not compiled with ASan. In this case, ASan attempts to categorize allocations that took place before ASan initialization. Once those allocations are reallocated, ASan tries to own and monitor the lifetime of the memory.
+
+If all of the DLLs compiled with ASan are unloaded from the process before the process ends, there may be crashes due to dangling references to intercepted functions such as `memcmp`, `memcpy`, `memmove`, and so on. For the best results, compile all modules under test with `/fsanitize=address`, or don't unload modules compiled with ASan after they enter the process.
 
-As a workaround, you can create a *`Directory.Build.props`* file in the root of your project to define the `<EnableASAN>` property. For more information, see [Customize C++ builds](/visualstudio/msbuild/customize-your-build#customize-c-builds).
+Please report any bugs to our [Developer Community](https://aka.ms/feedback/report?space=62).
 
 ## See also
 
-[AddressSanitizer overview](./asan.md)\
-[AddressSanitizer build and language reference](./asan-building.md)\
-[AddressSanitizer runtime reference](./asan-runtime.md)\
-[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\
-[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\
-[AddressSanitizer debugger integration](./asan-debugger-integration.md)\
-[AddressSanitizer error examples](./asan-error-examples.md)
+[AddressSanitizer overview](asan.md)\
+[AddressSanitizer build and language reference](asan-building.md)\
+[AddressSanitizer runtime reference](asan-runtime.md)\
+[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\
+[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\
+[AddressSanitizer debugger integration](asan-debugger-integration.md)\
+[AddressSanitizer error examples](asan-error-examples.md)
diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md
index 88d62f6be7..52fac2efa2 100644
--- a/docs/sanitizers/asan-runtime.md
+++ b/docs/sanitizers/asan-runtime.md
@@ -90,15 +90,43 @@ For convenience, the [AddressSanitizer interface header file](https://github.com
 #define ASAN_UNPOISON_MEMORY_REGION(addr, size)
 ```
 
+> [!NOTE]
+> If you manually poison memory, you must unpoison it before reuse. This is especially important for stack addresses, such as for a local variable, which are frequently reused during program execution. You risk introducing `use-after-poison` false positives in manually poisoned stack addresses if you don't unpoison them before their stack frame is removed.
+
 ## Alignment requirements for AddressSanitizer poisoning
 
 Any manual poisoning of shadow bytes must consider the alignment requirements. The user must add padding if necessary so the shadow bytes end on a byte boundary in the shadow memory. Each bit in the AddressSanitizer shadow memory encodes the state of a single byte in the application's memory. This encoding means the total size of each allocation, including any padding, must align to an 8-byte boundary. If the alignment requirement isn't satisfied, it can lead to incorrect bug reporting. The incorrect reporting could manifest as missing reports (false negatives) or reports on non-errors (false-positives).
 
 For an illustration of the alignment requirement and potential issues, see the provided [ASan alignment examples](https://github.com/mcgov/asan_alignment_example). One is a small program to show what can go wrong with manual shadow memory poisoning. The second is an example implementation of manual poisoning using the `std::allocator` interface.
 
-## Run-time options
+## Runtime options
+
+The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of clang's ASan runtime options available in MSVC as well. [A complete list of the public Clang runtime options is available here](https://github.com/google/sanitizers/wiki/SanitizerCommonFlags). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62).
+
+### Configure runtime options
+
+ASan runtime options are set in one of two ways:
+- The `ASAN_OPTIONS` environment variable
+- The `__asan_default_options` user function
+
+If the environment variable and the user function specify conflicting options, the options in the `ASAN_OPTIONS` environment variable take precedence.
+
+Multiple options are specified by separating them with a colon (`:`). 
 
-Microsoft C/C++ (MSVC) uses a runtime based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most runtime options are shared between the two versions. [A complete list of the public Clang runtime options is available here](https://github.com/google/sanitizers/wiki/SanitizerCommonFlags). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62).
+The following example sets [`alloc_dealloc_mismatch`](./error-alloc-dealloc-mismatch.md) to one and `symbolize` to zero:
+
+```cmd
+set ASAN_OPTIONS=alloc_dealloc_mismatch=1:symbolize=0
+```
+
+Or add the following function to your code:
+
+```C++
+extern "C" const char* __asan_default_options()
+{
+  return "alloc_dealloc_mismatch=1:symbolize=0";
+}
+```
 
 ### Unsupported AddressSanitizer options
 
@@ -112,13 +140,9 @@ For more information, see the [Differences with Clang 12.0](asan.md#differences)
 
 ### MSVC-specific AddressSanitizer runtime options
 
-- `windows_hook_legacy_allocators`
-  Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators.
+- [`continue_on_error`](asan-continue-on-error.md) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports.
+
 
-  > [!NOTE]
-  > The option `windows_hook_legacy_allocators` wasn't available in the public llvm-project runtime when this article was written. The option may eventually be contributed back to the public project; however, it's dependent on code review and community acceptance.
-  >
-  > The option `windows_hook_rtl_allocators`, previously an opt-in feature while AddressSanitizer was experimental, is now enabled by default. In versions before Visual Studio 2022 version 17.4.6, the default option value is `false`. In Visual Studio 2022 version 17.4.6 and later versions, the option `windows_hook_rtl_allocators` defaults to `true`.
 
 - `iat_overwrite`
   String, set to `"error"` by default. Other possible values are `"protect"` and `"ignore"`. Some modules may overwrite the [`import address table`](/windows/win32/debug/pe-format#import-address-table) of other modules to customize implementations of certain functions. For example, drivers commonly provide custom implementations for specific hardware. The `iat_overwrite` option manages the AddressSanitizer runtime's protection against overwrites for specific [`memoryapi.h`](/windows/win32/api/memoryapi/) functions. The runtime currently tracks the [`VirtualAlloc`](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc), [`VirtualProtect`](/windows/win32/api/memoryapi/nf-memoryapi-virtualprotect), and [`VirtualQuery`](/windows/win32/api/memoryapi/nf-memoryapi-virtualquery) functions for protection. This option is available in Visual Studio 2022 version 17.5 Preview 1 and later versions. The following `iat_overwrite` values control how the runtime reacts when protected functions are overwritten:
@@ -132,6 +156,15 @@ Boolean (false by default), set to `true` to enable the process to terminate wit
 >[!NOTE]
 >When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail.
 
+- `windows_hook_legacy_allocators`
+  Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators.
+
+  > [!NOTE]
+  > The option `windows_hook_legacy_allocators` wasn't available in the public llvm-project runtime when this article was written. The option may eventually be contributed back to the public project; however, it's dependent on code review and community acceptance.
+  >
+  > The option `windows_hook_rtl_allocators`, previously an opt-in feature while AddressSanitizer was experimental, is now enabled by default. In versions before Visual Studio 2022 version 17.4.6, the default option value is `false`. In Visual Studio 2022 version 17.4.6 and later versions, the option `windows_hook_rtl_allocators` defaults to `true`.
+
+
 ## <a name="intercepted_functions"></a> AddressSanitizer list of intercepted functions (Windows)
 
 The AddressSanitizer runtime hotpatches many functions to enable memory safety checks at runtime. Here's a non-exhaustive list of the functions that the AddressSanitizer runtime monitors.
diff --git a/docs/sanitizers/asan-shadow-bytes.md b/docs/sanitizers/asan-shadow-bytes.md
index 9b6b747e24..a4d57f7c9f 100644
--- a/docs/sanitizers/asan-shadow-bytes.md
+++ b/docs/sanitizers/asan-shadow-bytes.md
@@ -7,7 +7,7 @@ helpviewer_keywords: ["Shadow bytes", "AddressSanitizer shadow bytes","Address S
 
 # AddressSanitizer shadow bytes
 
-We briefly summarize the concept of shadow bytes and how they can be used by the runtime implementation of [`/fsanitize=address`](../build/reference/fsanitize.md). For further details, we refer you to the initial research [AddressSanitizer -  Serebryany, et al](https://www.usenix.org/system/files/conference/atc12/atc12-final39.pdf) and the [current AddressSanitizer algorithm documentation](https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm).
+We briefly summarize the concept of shadow bytes and how they can be used by the runtime implementation of [`/fsanitize=address`](../build/reference/fsanitize.md). For further details, we refer you to the initial research [AddressSanitizer - Serebryany, et al](https://www.usenix.org/system/files/conference/atc12/atc12-final39.pdf) and the [current AddressSanitizer algorithm documentation](https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm).
 
 ## Core concept
 
diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md
index 3de64921d4..2868186341 100644
--- a/docs/sanitizers/asan.md
+++ b/docs/sanitizers/asan.md
@@ -84,7 +84,10 @@ This article covers the information you require to enable the three workflows li
 
 ## <a name="command-prompt"></a> Use AddressSanitizer from a developer command prompt
 
-Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with all existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, `/O2 /GL`, and `PGO`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line.
+Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, and `/O2 /GL`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line.
+
+> [!NOTE]
+> AddressSanitizer doesn't support Profile-guided optimization (PGO). AddressSanitizer shouldn't be used in production.
 
 The AddressSanitizer libraries (.lib files) are linked for you automatically. For more information, see [AddressSanitizer language, build, and debugging reference](asan-building.md).
 
diff --git a/docs/sanitizers/error-alloc-dealloc-mismatch.md b/docs/sanitizers/error-alloc-dealloc-mismatch.md
index 906017a981..22cf7f620f 100644
--- a/docs/sanitizers/error-alloc-dealloc-mismatch.md
+++ b/docs/sanitizers/error-alloc-dealloc-mismatch.md
@@ -1,7 +1,7 @@
 ---
 title: "Error: alloc-dealloc-mismatch"
-description: "Source examples and live debug screenshots for alloc-dealloc-mismatch errors."
-ms.date: 03/02/2021
+description: "Learn about the alloc-dealloc-mismatch Address Sanitizer error."
+ms.date: 05/28/2025
 f1_keywords: ["alloc-dealloc-mismatch"]
 helpviewer_keywords: ["alloc-dealloc-mismatch error", "AddressSanitizer error alloc-dealloc-mismatch"]
 ---
@@ -9,38 +9,42 @@ helpviewer_keywords: ["alloc-dealloc-mismatch error", "AddressSanitizer error al
 
 > Address Sanitizer Error: Mismatch between allocation and deallocation APIs
 
-The `alloc`/`dealloc` mismatch functionality in AddressSanitizer is off by default for Windows. To enable it, run `set ASAN_OPTIONS=alloc_dealloc_mismatch=1` before running the program. This environment variable is checked at runtime to report errors on `malloc`/`delete`, `new`/`free`, and `new`/`delete[]`.
+Enables runtime detection of mismatched memory operations that may lead to undefined behavior, such as:
+- `malloc` must be paired with `free`, not `delete` or `delete[]`.
+- `new` must be paired with `delete`, not `free` or `delete[]`.
+- `new[]` must be paired with `delete[]`, not `delete` or `free`.
+
+In Windows, `alloc-dealloc-mismatch` error detection is off by default. To enable it, set the environment variable `set ASAN_OPTIONS=alloc_dealloc_mismatch=1` before running your program.
 
 ## Example
 
 ```cpp
 // example1.cpp
-// alloc-dealloc-mismatch error
+// Demonstrate alloc-dealloc-mismatch error
 #include <stdio.h>
 #include <stdlib.h>
 
-int main(int argc, char* argv[]) {
-
+int main(int argc, char* argv[])
+{
     if (argc != 2) return -1;
 
-    switch (atoi(argv[1])) {
-
-    case 1:
-        delete[](new int[10]);
-        break;
-    case 2:
-        delete (new int[10]);      // Boom!
-        break;
-    default:
-        printf("arguments: 1: no error 2: runtime error\n");
-        return -1;
+    switch (atoi(argv[1]))
+    {
+        case 1:
+            delete[](new int[10]);
+            break;
+        case 2:
+            delete (new int[10]);      // Boom!
+            break;
+        default:
+            printf("arguments: 1: no error 2: runtime error\n");
+            return -1;
     }
-
     return 0;
 }
 ```
 
-To build and test this example, run these commands in a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts):
+In a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts), run the following commands to see an exampe of `alloc_dealloc_mismatch`:
 
 ```cmd
 cl example1.cpp /fsanitize=address /Zi
@@ -48,17 +52,17 @@ set ASAN_OPTIONS=alloc_dealloc_mismatch=1
 devenv /debugexe example1.exe 2
 ```
 
-### Resulting error
+### Output
 
-:::image type="content" source="media/alloc-dealloc-mismatch-example-1.png" alt-text="Screenshot of debugger displaying alloc-dealloc-mismatch error in example 1.":::
+:::image type="content" source="media/alloc-dealloc-mismatch-example-1.png" alt-text="Screenshot of debugger displaying alloc-dealloc-mismatch error in example 1." lightbox="media/alloc-dealloc-mismatch-example-1.png":::
 
 ## See also
 
-[AddressSanitizer overview](./asan.md)\
-[AddressSanitizer known issues](./asan-known-issues.md)\
-[AddressSanitizer build and language reference](./asan-building.md)\
-[AddressSanitizer runtime reference](./asan-runtime.md)\
-[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\
-[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\
-[AddressSanitizer debugger integration](./asan-debugger-integration.md)\
-[AddressSanitizer error examples](./asan-error-examples.md)
+[AddressSanitizer overview](asan.md)\
+[AddressSanitizer known issues](asan-known-issues.md)\
+[AddressSanitizer build and language reference](asan-building.md)\
+[AddressSanitizer runtime reference](asan-runtime.md)\
+[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\
+[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\
+[AddressSanitizer debugger integration](asan-debugger-integration.md)\
+[AddressSanitizer error examples](asan-error-examples.md)
diff --git a/docs/sanitizers/error-allocation-size-too-big.md b/docs/sanitizers/error-allocation-size-too-big.md
index 9e5e7a02d2..80638c6880 100644
--- a/docs/sanitizers/error-allocation-size-too-big.md
+++ b/docs/sanitizers/error-allocation-size-too-big.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: allocation-size-too-big"
-description: "Source examples and live debug screenshots for allocation-size-too-big errors."
+description: "Learn about the allocation-size-too-big Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["allocation-size-too-big"]
 helpviewer_keywords: ["allocation-size-too-big error", "AddressSanitizer error allocation-size-too-big"]
diff --git a/docs/sanitizers/error-calloc-overflow.md b/docs/sanitizers/error-calloc-overflow.md
index 5c7ee45059..5b944307d8 100644
--- a/docs/sanitizers/error-calloc-overflow.md
+++ b/docs/sanitizers/error-calloc-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: calloc-overflow"
-description: "Source examples and live debug screenshots for calloc overflow errors."
+description: "Learn about the calloc-overflow Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["calloc-overflow"]
 helpviewer_keywords: ["calloc-overflow error", "AddressSanitizer error calloc-overflow"]
diff --git a/docs/sanitizers/error-container-overflow.md b/docs/sanitizers/error-container-overflow.md
index b458180a05..b4c1e4c783 100644
--- a/docs/sanitizers/error-container-overflow.md
+++ b/docs/sanitizers/error-container-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: container-overflow"
-description: "Source examples and live debug screenshots for container overflow errors."
+description: "Learn about the container-overflow Address Sanitizer error."
 ms.date: 06/30/2023
 f1_keywords: ["container-overflow", "mismatch detected for 'annotate_vector'", "_DISABLE_VECTOR_ANNOTATION"]
 helpviewer_keywords: ["container-overflow error", "AddressSanitizer error container-overflow", "mismatch detected for 'annotate_vector'", "_DISABLE_VECTOR_ANNOTATION"]
diff --git a/docs/sanitizers/error-double-free.md b/docs/sanitizers/error-double-free.md
index c60b825c64..84b4dd4274 100644
--- a/docs/sanitizers/error-double-free.md
+++ b/docs/sanitizers/error-double-free.md
@@ -1,9 +1,10 @@
 ---
 title: "Error: double-free"
-description: "Source examples and live debug screenshots for double free errors."
+description: "Learn about the double-free Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["double-free"]
 helpviewer_keywords: ["double-free error", "AddressSanitizer error double-free"]
+ms.custom: sfi-image-nochange
 ---
 
 # Error: `double-free`
diff --git a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md
index 980851d524..4b0da9350d 100644
--- a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md
+++ b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: dynamic-stack-buffer-overflow"
-description: "Source examples and live debug screenshots for alloca errors."
+description: "Learn about the dynamic-stack-buffer-overflow Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["dynamic-stack-buffer-overflow"]
 helpviewer_keywords: ["dynamic-stack-buffer-overflow error", "AddressSanitizer error dynamic-stack-buffer-overflow"]
diff --git a/docs/sanitizers/error-global-buffer-overflow.md b/docs/sanitizers/error-global-buffer-overflow.md
index 9c94be6f3f..1f7885ddf8 100644
--- a/docs/sanitizers/error-global-buffer-overflow.md
+++ b/docs/sanitizers/error-global-buffer-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: global-buffer-overflow"
-description: "Source examples and live debug screenshots for global variable overflow errors."
+description: "Learn about the global-buffer-overflow Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["global-buffer-overflow"]
 helpviewer_keywords: ["global-buffer-overflow error", "AddressSanitizer error global-buffer-overflow"]
diff --git a/docs/sanitizers/error-heap-buffer-overflow.md b/docs/sanitizers/error-heap-buffer-overflow.md
index 10600d8807..497f9847db 100644
--- a/docs/sanitizers/error-heap-buffer-overflow.md
+++ b/docs/sanitizers/error-heap-buffer-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: heap-buffer-overflow"
-description: "Source examples and live debug screenshots for heap variable overflow errors."
+description: "Learn about the heap-buffer-overflow Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["heap-buffer-overflow"]
 helpviewer_keywords: ["heap-buffer-overflow error", "AddressSanitizer error heap-buffer-overflow"]
diff --git a/docs/sanitizers/error-heap-use-after-free.md b/docs/sanitizers/error-heap-use-after-free.md
index dd02ecf33b..f0c827d5d2 100644
--- a/docs/sanitizers/error-heap-use-after-free.md
+++ b/docs/sanitizers/error-heap-use-after-free.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: heap-use-after-free"
-description: "Source examples and live debug screenshots for heap use after free errors."
+description: "Learn about the heap-use-after-free Address Sanitizer error."
 ms.date: 04/06/2023
 f1_keywords: ["heap-use-after-free"]
 helpviewer_keywords: ["heap-use-after-free error", "AddressSanitizer error heap-use-after-free"]
diff --git a/docs/sanitizers/error-invalid-allocation-alignment.md b/docs/sanitizers/error-invalid-allocation-alignment.md
index 2197383c97..87b091b869 100644
--- a/docs/sanitizers/error-invalid-allocation-alignment.md
+++ b/docs/sanitizers/error-invalid-allocation-alignment.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: invalid-allocation-alignment"
-description: "Source examples and live debug screenshots for invalid _aligned_malloc errors."
+description: "Learn about the invalid-allocation-alignment Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["invalid-allocation-alignment"]
 helpviewer_keywords: ["invalid-allocation-alignment error", "AddressSanitizer error invalid-allocation-alignment"]
diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md
index 27c4cd8582..5c5c46173d 100644
--- a/docs/sanitizers/error-memcpy-param-overlap.md
+++ b/docs/sanitizers/error-memcpy-param-overlap.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: memcpy-param-overlap"
-description: "Source examples and live debug screenshots for memcpy parameter overlap errors."
+description: "Learn about the memcpy-param-overlap Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["memcpy-param-overlap"]
 helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memcpy-param-overlap"]
@@ -9,6 +9,9 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc
 
 > Address Sanitizer Error: memcpy-param-overlap
 
+> [!NOTE]
+> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md).
+
 The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md).
 
 A common error is to treat `memmove` as being semantically equivalent to `memcpy`.
@@ -39,8 +42,6 @@ cl example1.cpp /fsanitize=address /Zi /Oi
 devenv /debugexe example1.exe
 ```
 
-The [/Oi flag](../build/reference/oi-generate-intrinsic-functions.md) tells the compiler to treat `memcpy` and `memmove` as intrinsic functions. This is necessary because some versions of the standard library implement `memcpy` and `memmove` in the same way. Because ASAN is a dynamic analysis tool, it only detects errors with an observable runtime effect.
-
 ### Resulting error
 
 :::image type="content" source="media/memcpy-param-overlap-example-1.png" alt-text="Screenshot of debugger displaying memcpy-param-overlap error in example 1.":::
diff --git a/docs/sanitizers/error-new-delete-type-mismatch.md b/docs/sanitizers/error-new-delete-type-mismatch.md
index 5a72252cec..2c19b710af 100644
--- a/docs/sanitizers/error-new-delete-type-mismatch.md
+++ b/docs/sanitizers/error-new-delete-type-mismatch.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: new-delete-type-mismatch"
-description: "Source examples and live debug screenshots for new delete type mismatch errors."
+description: "Learn about the new-delete-type-mismatch Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["new-delete-type-mismatch"]
 helpviewer_keywords: ["new-delete-type-mismatch error", "AddressSanitizer error new-delete-type-mismatch"]
diff --git a/docs/sanitizers/error-stack-buffer-overflow.md b/docs/sanitizers/error-stack-buffer-overflow.md
index e11403ba25..c02011aaef 100644
--- a/docs/sanitizers/error-stack-buffer-overflow.md
+++ b/docs/sanitizers/error-stack-buffer-overflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: stack-buffer-overflow"
-description: "Source examples and live debug screenshots for Stack buffer overflow errors."
+description: "Learn about the stack-buffer-overflow Address Sanitizer error."
 ms.date: 09/29/2021
 f1_keywords: ["stack-buffer-overflow"]
 helpviewer_keywords: ["stack-buffer-overflow error", "AddressSanitizer error stack-buffer-overflow"]
diff --git a/docs/sanitizers/error-stack-buffer-underflow.md b/docs/sanitizers/error-stack-buffer-underflow.md
index c540483abf..a780be1f66 100644
--- a/docs/sanitizers/error-stack-buffer-underflow.md
+++ b/docs/sanitizers/error-stack-buffer-underflow.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: stack-buffer-underflow"
-description: "Source examples and live debug screenshots for Stack buffer underflow errors."
+description: "Learn about the stack-buffer-underflow Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["stack-buffer-underflow"]
 helpviewer_keywords: ["stack-buffer-underflow error", "AddressSanitizer error stack-buffer-underflow"]
@@ -74,7 +74,7 @@ cl example2.cpp /fsanitize=address /Zi
 devenv /debugexe example2.exe
 ```
 
-### Resulting error  - stack underflow on thread
+### Resulting error - stack underflow on thread
 
 :::image type="content" source="media/stack-buffer-underflow-example-2.png" alt-text="Screenshot of debugger displaying stack-buffer-underflow error in example 2.":::
 
diff --git a/docs/sanitizers/error-stack-use-after-return.md b/docs/sanitizers/error-stack-use-after-return.md
index 214f9d8ab5..5f6154e217 100644
--- a/docs/sanitizers/error-stack-use-after-return.md
+++ b/docs/sanitizers/error-stack-use-after-return.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: stack-use-after-return"
-description: "Source examples and live debug screenshots for Stack Use After Return errors."
+description: "Learn about the stack-use-after-return Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["stack-use-after-return"]
 helpviewer_keywords: ["stack-use-after-return error", "AddressSanitizer error stack-use-after-return"]
diff --git a/docs/sanitizers/error-stack-use-after-scope.md b/docs/sanitizers/error-stack-use-after-scope.md
index fa5a88daa9..fb2ff6df9c 100644
--- a/docs/sanitizers/error-stack-use-after-scope.md
+++ b/docs/sanitizers/error-stack-use-after-scope.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: stack-use-after-scope"
-description: "Source examples and live debug screenshots for stack use after scope errors."
+description: "Learn about the stack-use-after-scope Address Sanitizer error."
 ms.date: 02/05/2021
 f1_keywords: ["stack-use-after-scope"]
 helpviewer_keywords: ["stack-use-after-scope error", "AddressSanitizer error stack-use-after-scope"]
@@ -80,7 +80,7 @@ devenv /debugexe example2.exe
 struct IntHolder {
     explicit IntHolder(int* val = 0) : val_(val) { }
     ~IntHolder() {
-        printf("Value: %d\n", *val_);  // Bom!
+        printf("Value: %d\n", *val_);  // Boom!
     }
     void set(int* val) { val_ = val; }
     int* get() { return val_; }
@@ -138,7 +138,7 @@ void temp_from_conversion() {
     a.print();
 }
 
-void main() {
+int main() {
     explicit_temp();
     temp_from_conversion(); 
 }
diff --git a/docs/sanitizers/error-strncat-param-overlap.md b/docs/sanitizers/error-strncat-param-overlap.md
index 3e18395678..52c5f31142 100644
--- a/docs/sanitizers/error-strncat-param-overlap.md
+++ b/docs/sanitizers/error-strncat-param-overlap.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: strncat-param-overlap"
-description: "Source examples and live debug screenshots for strcat parameter overlap errors."
+description: "Learn about the strncat-param-overlap Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["strncat-param-overlap"]
 helpviewer_keywords: ["strncat-param-overlap error", "AddressSanitizer error strcat-param-overlap"]
diff --git a/docs/sanitizers/error-use-after-poison.md b/docs/sanitizers/error-use-after-poison.md
index 9ef09bd0dc..f6c58a8601 100644
--- a/docs/sanitizers/error-use-after-poison.md
+++ b/docs/sanitizers/error-use-after-poison.md
@@ -1,6 +1,6 @@
 ---
 title: "Error: use-after-poison"
-description: "Source examples and live debug screenshots for use after poison errors."
+description: "Learn about the use-after-poison Address Sanitizer error."
 ms.date: 03/02/2021
 f1_keywords: ["use-after-poison"]
 helpviewer_keywords: ["use-after-poison error", "AddressSanitizer error use-after-poison"]
diff --git a/docs/sanitizers/index.yml b/docs/sanitizers/index.yml
index f80ba43bed..8e8e85e21f 100644
--- a/docs/sanitizers/index.yml
+++ b/docs/sanitizers/index.yml
@@ -41,7 +41,7 @@ landingContent:
             url: ./asan-runtime.md
           - text: AddressSanitizer error examples
             url: ./asan-error-examples.md
-          - text: AddressSanitizer known issues
+          - text: AddressSanitizer known issues and limitations
             url: ./asan-known-issues.md
 
   # Card
diff --git a/docs/sanitizers/toc.yml b/docs/sanitizers/toc.yml
index 96ec14bf18..f46431207c 100644
--- a/docs/sanitizers/toc.yml
+++ b/docs/sanitizers/toc.yml
@@ -59,5 +59,5 @@ items:
           href: ../sanitizers/error-strncat-param-overlap.md
         - name: "use-after-poison error"
           href: ../sanitizers/error-use-after-poison.md
-    - name: "Known issues"
+    - name: "Known issues and limitations"
       href: ../sanitizers/asan-known-issues.md
diff --git a/docs/security/running-as-a-member-of-the-users-group.md b/docs/security/running-as-a-member-of-the-users-group.md
index 833678cb72..0fec514075 100644
--- a/docs/security/running-as-a-member-of-the-users-group.md
+++ b/docs/security/running-as-a-member-of-the-users-group.md
@@ -4,6 +4,7 @@ title: "Running as a Member of the Users Group"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Users Group [C++]", "security [C++], Users Group", "Windows accounts [C++]", "non administrator users [C++]", "user accounts [C++]", "administrator (not running as) [C++]"]
 ms.assetid: e48a03ec-d345-49f6-809a-1a291eecbc81
+ms.topic: concept-article
 ---
 # Running as a Member of the Users Group
 
diff --git a/docs/security/security-best-practices-for-cpp.md b/docs/security/security-best-practices-for-cpp.md
index 3774d17083..6cc6c47315 100644
--- a/docs/security/security-best-practices-for-cpp.md
+++ b/docs/security/security-best-practices-for-cpp.md
@@ -1,10 +1,10 @@
 ---
-description: "Learn more about: Security Best Practices for C++"
 title: "Security Best Practices for C++"
-ms.date: "05/08/2018"
+description: "Learn more about: Security Best Practices for C++"
+ms.date: 05/08/2018
 f1_keywords: ["securitybestpracticesVC"]
 helpviewer_keywords: ["Visual C++, security", "security [C++]", "security [C++], best practices"]
-ms.assetid: 86acaccf-cdb4-4517-bd58-553618e3ec42
+ms.topic: best-practice
 ---
 # Security Best Practices for C++
 
@@ -14,22 +14,22 @@ This article contains information about security tools and practices. Using them
 
 These security features are built into the Microsoft C++ compiler and linker:
 
-[`/guard` (Enable Control Flow Guard)](../build/reference/guard-enable-control-flow-guard.md)<br/>
+[`/guard` (Enable Control Flow Guard)](../build/reference/guard-enable-control-flow-guard.md)\
 Causes the compiler to analyze control flow for indirect call targets at compile time, and then to insert code to verify the targets at runtime.
 
-[`/GS` (Buffer Security Check)](../build/reference/gs-buffer-security-check.md)<br/>
+[`/GS` (Buffer Security Check)](../build/reference/gs-buffer-security-check.md)\
 Instructs the compiler to insert overrun detection code into functions that are at risk of being exploited. When an overrun is detected, execution is stopped. By default, this option is on.
 
-[`/SAFESEH` (Image has Safe Exception Handlers)](../build/reference/safeseh-image-has-safe-exception-handlers.md)<br/>
+[`/SAFESEH` (Image has Safe Exception Handlers)](../build/reference/safeseh-image-has-safe-exception-handlers.md)\
 Instructs the linker to include in the output image a table that contains the address of each exception handler. At run time, the operating system uses this table to make sure that only legitimate exception handlers are executed. This helps prevent the execution of exception handlers that are introduced by a malicious attack at run time. By default, this option is off.
 
-[`/NXCOMPAT`](../build/reference/nxcompat.md), [`/NXCOMPAT` (Compatible with Data Execution Prevention)](../build/reference/nxcompat-compatible-with-data-execution-prevention.md)
+[`/NXCOMPAT`](../build/reference/nxcompat.md), [`/NXCOMPAT` (Compatible with Data Execution Prevention)](../build/reference/nxcompat-compatible-with-data-execution-prevention.md)\
 These compiler and linker options enable Data Execution Prevention (DEP) compatibility. DEP guards the CPU against the execution of non-code pages.
 
-[`/analyze` (Code Analysis)](../build/reference/analyze-code-analysis.md)<br/>
+[`/analyze` (Code Analysis)](../build/reference/analyze-code-analysis.md)\
 This compiler option activates code analysis that reports potential security issues such as buffer overrun, un-initialized memory, null pointer dereferencing, and memory leaks. By default, this option is off. For more information, see [Code Analysis for C/C++ Overview](../code-quality/code-analysis-for-c-cpp-overview.md).
 
-[`/DYNAMICBASE` (Use address space layout randomization)](../build/reference/dynamicbase-use-address-space-layout-randomization.md)<br/>
+[`/DYNAMICBASE` (Use address space layout randomization)](../build/reference/dynamicbase-use-address-space-layout-randomization.md)\
 This linker option enables the building of an executable image that can be loaded at different locations in memory at the beginning of execution. This option also makes the stack location in memory much less predictable.
 
 ## Security-Enhanced CRT
@@ -86,6 +86,6 @@ For information about how to indentify and mitigate against speculative executio
 
 ## See also
 
-<xref:System.Security> <br/>
-[Security](/dotnet/standard/security/index)<br/>
+<xref:System.Security>\
+[Security in .NET](/dotnet/standard/security/index)\
 [How User Account Control (UAC) Affects Your Application](how-user-account-control-uac-affects-your-application.md)
diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md
index 2e049415f2..b243d2c1eb 100644
--- a/docs/standard-library/algorithm-functions.md
+++ b/docs/standard-library/algorithm-functions.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: <algorithm> functions"
 title: "<algorithm> functions"
+description: "Learn more about: <algorithm> functions"
 ms.date: 06/07/2022
 f1_keywords: ["algorithm/std::adjacent_find", "algorithm/std::all_of", "algorithm/std::any_of", "algorithm/std::binary_search", "algorithm/std::copy", "algorithm/std::copy_backward", "algorithm/std::copy_if", "algorithm/std::copy_n", "algorithm/std::equal", "algorithm/std::equal_range", "algorithm/std::fill", "algorithm/std::fill_n", "algorithm/std::find", "algorithm/std::find_end", "algorithm/std::find_first_of", "algorithm/std::find_if", "algorithm/std::find_if_not", "algorithm/std::for_each", "algorithm/std::generate", "algorithm/std::generate_n", "algorithm/std::includes", "algorithm/std::inplace_merge", "algorithm/std::is_heap", "algorithm/std::is_heap_until", "algorithm/std::is_partitioned", "algorithm/std::is_permutation", "algorithm/std::is_sorted", "algorithm/std::is_sorted_until", "algorithm/std::iter_swap", "algorithm/std::lexicographical_compare", "algorithm/std::lower_bound", "algorithm/std::make_heap", "algorithm/std::max", "algorithm/std::max_element", "algorithm/std::merge", "algorithm/std::min", "algorithm/std::minmax", "algorithm/std::minmax_element", "algorithm/std::min_element", "algorithm/std::mismatch", "algorithm/std::move", "algorithm/std::move_backward", "algorithm/std::next_permutation", "algorithm/std::none_of", "algorithm/std::nth_element", "algorithm/std::partial_sort", "algorithm/std::partial_sort_copy", "algorithm/std::partition", "algorithm/std::partition_point", "algorithm/std::pop_heap", "algorithm/std::prev_permutation", "algorithm/std::push_heap", "algorithm/std::random_shuffle", "algorithm/std::remove", "algorithm/std::remove_copy", "algorithm/std::remove_copy_if", "algorithm/std::remove_if", "algorithm/std::replace", "algorithm/std::replace_copy", "algorithm/std::replace_copy_if", "algorithm/std::replace_if", "algorithm/std::reverse", "algorithm/std::reverse_copy", "algorithm/std::rotate", "algorithm/std::rotate_copy", "algorithm/std::search", "algorithm/std::search_n", "algorithm/std::set_difference", "algorithm/std::set_intersection", "algorithm/std::set_symmetric_difference", "algorithm/std::set_union", "algorithm/std::shuffle", "algorithm/std::sort", "algorithm/std::sort_heap", "algorithm/std::stable_partition", "algorithm/std::stable_sort", "algorithm/std::swap_ranges", "algorithm/std::transform", "algorithm/std::unique", "algorithm/std::unique_copy", "algorithm/std::upper_bound", "xutility/std::copy", "xutility/std::copy_backward", "xutility/std::copy_n", "xutility/std::count", "xutility/std::equal", "xutility/std::fill", "xutility/std::fill_n", "xutility/std::find", "xutility/std::is_permutation", "xutility/std::lexicographical_compare", "xutility/std::move", "xutility/std::move_backward", "xutility/std::reverse", "xutility/std::rotate", "algorithm/std::count_if", "algorithm/std::partition_copy", "algorithm/std::swap"]
 helpviewer_keywords: ["std::adjacent_find [C++]", "std::all_of [C++]", "std::any_of [C++]", "std::binary_search [C++]", "std::copy [C++]", "std::copy_backward [C++]", "std::copy_if [C++]", "std::copy_n [C++]", "std::equal [C++]", "std::equal_range [C++]", "std::fill [C++]", "std::fill_n [C++]", "std::find [C++]", "std::find_end [C++]", "std::find_first_of [C++]", "std::find_if [C++]", "std::find_if_not [C++]", "std::for_each [C++]", "std::generate [C++]", "std::generate_n [C++]", "std::includes [C++]", "std::inplace_merge [C++]", "std::is_heap [C++]", "std::is_heap_until [C++]", "std::is_partitioned [C++]", "std::is_permutation [C++]", "std::is_sorted [C++]", "std::is_sorted_until [C++]", "std::iter_swap [C++]", "std::lexicographical_compare [C++]", "std::lower_bound [C++]", "std::make_heap [C++]", "std::max [C++]", "std::max_element [C++]", "std::merge [C++]", "std::min [C++]", "std::minmax [C++]", "std::minmax_element [C++]", "std::min_element [C++]", "std::mismatch [C++]", "std::move [C++]", "std::move_backward [C++]", "std::next_permutation [C++]", "std::none_of [C++]", "std::nth_element [C++]", "std::partial_sort [C++]", "std::partial_sort_copy [C++]", "std::partition [C++]", "std::partition_point [C++]", "std::pop_heap [C++]", "std::prev_permutation [C++]", "std::push_heap [C++]", "std::random_shuffle [C++]", "std::remove [C++]", "std::remove_copy [C++]", "std::remove_copy_if [C++]", "std::remove_if [C++]", "std::replace [C++]", "std::replace_copy [C++]", "std::replace_copy_if [C++]", "std::replace_if [C++]", "std::reverse [C++]", "std::reverse_copy [C++]", "std::rotate [C++]", "std::rotate_copy [C++]", "std::search [C++]", "std::search_n [C++]", "std::set_difference [C++]", "std::set_intersection [C++]", "std::set_symmetric_difference [C++]", "std::set_union [C++]", "std::shuffle [C++]", "std::sort [C++]", "std::sort_heap [C++]", "std::stable_partition [C++]", "std::stable_sort [C++]", "std::swap_ranges [C++]", "std::transform [C++]", "std::unique [C++]", "std::unique_copy [C++]", "std::upper_bound [C++]", "std::copy [C++]", "std::copy_backward [C++]", "std::copy_n [C++]", "std::count [C++]", "std::equal [C++]", "std::fill [C++]", "std::fill_n [C++]", "std::find [C++]", "std::is_permutation [C++]", "std::lexicographical_compare [C++]", "std::move [C++]", "std::move_backward [C++]", "std::reverse [C++]", "std::rotate [C++]", "std::count_if [C++]", "std::partition_copy [C++]", "std::swap [C++]"]
@@ -8,6 +8,8 @@ ms.custom: devdivchpfy22
 ---
 # `<algorithm>` functions
 
+The `<algorithm>` header provides the following functions:
+
 ## <a name="adjacent_find"></a> `adjacent_find`
 
 Searches for two adjacent elements that are either equal or satisfy a specified condition.
@@ -5583,7 +5585,7 @@ template<class RandomAccessIterator, class Compare>
 void partial_sort(
     RandomAccessIterator first,
     RandomAccessIterator sortEnd,
-    RandomAccessIterator last
+    RandomAccessIterator last,
     Compare pred);
 
 template<class ExecutionPolicy, class RandomAccessIterator>
@@ -7783,7 +7785,7 @@ ForwardIterator1 search(
     ForwardIterator1 first1,
     ForwardIterator1 last1,
     ForwardIterator2 first2,
-    ForwardIterator2 last2
+    ForwardIterator2 last2,
     BinaryPredicate pred);
 
 template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
diff --git a/docs/standard-library/allocators-functions.md b/docs/standard-library/allocators-functions.md
index adcaabbd4e..fafefa6034 100644
--- a/docs/standard-library/allocators-functions.md
+++ b/docs/standard-library/allocators-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <allocators> macros"
 title: "<allocators> macros"
-ms.date: "11/04/2016"
+description: "Learn more about: <allocators> macros"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/std::ALLOCATOR_DECL", "allocators/std::CACHE_CHUNKLIST", "allocators/std::CACHE_FREELIST", "allocators/std::CACHE_SUBALLOC", "allocators/std::SYNC_DEFAULT"]
-ms.assetid: 9cb5ee07-1ff9-4594-ae32-3c8c6efb511a
 helpviewer_keywords: ["std::ALLOCATOR_DECL [C++]", "std::CACHE_CHUNKLIST [C++]", "std::CACHE_FREELIST [C++]", "std::CACHE_SUBALLOC [C++]", "std::SYNC_DEFAULT [C++]"]
 ---
 # `<allocators>` macros
@@ -72,8 +71,6 @@ Yields `stdext::allocators::cache_chunklist<sizeof(Type)>`.
 #define CACHE_CHUNKLIST <cache_class>
 ```
 
-### Remarks
-
 ## <a name="cache_freelist"></a> CACHE_FREELIST
 
 Yields `stdext::allocators::cache_freelist<sizeof(Type), max>`.
@@ -82,8 +79,6 @@ Yields `stdext::allocators::cache_freelist<sizeof(Type), max>`.
 #define CACHE_FREELIST(max) <cache_class>
 ```
 
-### Remarks
-
 ## <a name="cache_suballoc"></a> CACHE_SUBALLOC
 
 Yields `stdext::allocators::cache_suballoc<sizeof(Type)>`.
@@ -92,8 +87,6 @@ Yields `stdext::allocators::cache_suballoc<sizeof(Type)>`.
 #define CACHE_SUBALLOC <cache_class>
 ```
 
-### Remarks
-
 ## <a name="sync_default"></a> SYNC_DEFAULT
 
 Yields a synchronization filter.
diff --git a/docs/standard-library/allocators-operators.md b/docs/standard-library/allocators-operators.md
index 90936ade68..8deacf8430 100644
--- a/docs/standard-library/allocators-operators.md
+++ b/docs/standard-library/allocators-operators.md
@@ -1,18 +1,14 @@
 ---
-description: "Learn more about: <allocators> operators"
 title: "<allocators> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <allocators> operators"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/std::operator!=", "allocators/std::operator=="]
-ms.assetid: b55d67cb-3c69-46bf-ad40-e845fb096c4e
 ---
 # `<allocators>` operators
 
 These are the global template operator functions defined in `<allocators>`. For class member operator functions, see the class documentation.
 
-[operator!=](#op_neq)\
-[operator==](#op_eq_eq)
-
-## <a name="op_neq"></a> operator!=
+## <a name="op_neq"></a> `operator!=`
 
 Tests for inequality between allocator objects of a specified class.
 
@@ -25,10 +21,10 @@ bool operator!=(
 
 ### Parameters
 
-*left*\
+*`left`*\
 One of the allocator objects to be tested for inequality.
 
-*right*\
+*`right`*\
 One of the allocator objects to be tested for inequality.
 
 ### Return Value
@@ -39,7 +35,7 @@ One of the allocator objects to be tested for inequality.
 
 The template operator returns `!(left == right)`.
 
-## <a name="op_eq_eq"></a> operator==
+## <a name="op_eq_eq"></a> `operator==`
 
 Tests for equality between allocator objects of a specified class.
 
@@ -52,10 +48,10 @@ bool operator==(
 
 ### Parameters
 
-*left*\
+*`left`*\
 One of the allocator objects to be tested for equality.
 
-*right*\
+*`right`*\
 One of the allocator objects to be tested for equality.
 
 ### Return Value
@@ -68,4 +64,4 @@ This template operator returns `left.equals(right)`.
 
 ## See also
 
-[\<allocators>](allocators-header.md)
+[`<allocators>`](allocators-header.md)
diff --git a/docs/standard-library/any-functions.md b/docs/standard-library/any-functions.md
index 27ebce791b..aa9ef35d53 100644
--- a/docs/standard-library/any-functions.md
+++ b/docs/standard-library/any-functions.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about the free functions for use with the std::any class in the C++ Standard Library."
 title: "<any> functions"
+description: "Learn more about the free functions for use with the std::any class in the C++ Standard Library."
 ms.date: 09/20/2021
 f1_keywords: ["any/std::any_cast", "any/std::make_any", "any/std::swap"]
 no-loc: ["any", "std", "class"]
@@ -11,7 +11,7 @@ The [`<any>`](any.md) header declares several free functions for working with th
 
 ## Functions
 
-| &nbsp; | &nbsp; |
+| Name | Description |
 |--|--|
 | [`any_cast`](#any_cast) | Makes an object into an `any`. |
 | [`make_any`](#make_any) | Takes values and creates an `any` object. |
diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md
index a670f42c5b..60e9c8027c 100644
--- a/docs/standard-library/array-functions.md
+++ b/docs/standard-library/array-functions.md
@@ -1,19 +1,15 @@
 ---
-description: "Learn more about: <array> functions"
 title: "<array> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <array> functions"
+ms.date: 11/04/2016
 f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap"]
-ms.assetid: e0700a33-a833-4655-8735-16e71175efc8
 helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]"]
 ---
 # `<array>` functions
 
-The \<array> header includes two non-member functions, `get` and `swap`, that operate on **array** objects.
-
-[get](#get)\
-[swap](#swap)
+The `<array>` header includes two non-member functions, `get` and `swap`, that operate on **array** objects.
 
-## <a name="get"></a> get
+## <a name="get"></a> `get`
 
 Returns a reference to the specified element of the array.
 
@@ -30,16 +26,16 @@ constexpr T&& get(array<T, N>&& arr) noexcept;
 
 ### Parameters
 
-*Index*\
+*`Index`*\
 The element offset.
 
-*T*\
+*`T`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The number of elements in the array.
 
-*arr*\
+*`arr`*\
 The array to select from.
 
 ### Example
@@ -74,7 +70,7 @@ int main()
 1 3
 ```
 
-## <a name="swap"></a> swap
+## <a name="swap"></a> `swap`
 
 A non-member template specialization of `std::swap` that swaps two **array** objects.
 
@@ -85,16 +81,16 @@ void swap(array<Ty, N>& left, array<Ty, N>& right);
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 The first array to swap.
 
-*right*\
+*`right`*\
 The second array to swap.
 
 ### Remarks
@@ -149,4 +145,4 @@ int main()
 
 ## See also
 
-[\<array>](../standard-library/array.md)
+[`<array>`](../standard-library/array.md)
diff --git a/docs/standard-library/array-operators.md b/docs/standard-library/array-operators.md
index 866d09f22e..64b0e538b9 100644
--- a/docs/standard-library/array-operators.md
+++ b/docs/standard-library/array-operators.md
@@ -1,27 +1,19 @@
 ---
-description: "Learn more about: <array> operators"
 title: "<array> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <array> operators"
+ms.date: 11/04/2016
 f1_keywords: ["array/std::array::operator!=", "array/std::array::operator<", "array/std::array::operator<=", "array/std::array::operator>", "array/std::array::operator>=", "array/std::array::operator=="]
-ms.assetid: c8f46282-f179-4909-9a01-639cb8e18c27
 ---
 # `<array>` operators
 
-The \<array> header includes these **array** non-member comparison template functions.
-
-[operator!=](#op_neq)\
-[`operator>`](#op_gt)\
-[`operator>=`](#op_gt_eq)\
-[`operator<`](#op_lt)\
-[`operator<=`](#op_lt_eq)\
-[operator==](#op_eq_eq)
+The `<array>` header includes these **array** non-member comparison template functions.
 
-## <a name="op_neq"></a> operator!=
+## <a name="op_neq"></a> `operator!=`
 
 Array comparison, not equal.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator!=(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -29,16 +21,16 @@ bool operator!=(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
@@ -94,7 +86,7 @@ true
 Array comparison, less than.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator<(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -102,21 +94,21 @@ bool operator<(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
 
-The template function overloads `operator<` to compare two objects of class template [array Class](../standard-library/array-class-stl.md). The function returns `lexicographical_compare(left.begin(), left.end(), right.begin())`.
+The template function overloads `operator<` to compare two objects of class template [`array`](../standard-library/array-class-stl.md). The function returns `lexicographical_compare(left.begin(), left.end(), right.begin())`.
 
 ### Example
 
@@ -167,7 +159,7 @@ true
 Array comparison, less than or equal.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator<=(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -175,16 +167,16 @@ bool operator<=(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
@@ -235,12 +227,12 @@ true
 false
 ```
 
-## <a name="op_eq_eq"></a> operator==
+## <a name="op_eq_eq"></a> `operator==`
 
 Array comparison, equal.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator==(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -248,21 +240,21 @@ bool operator==(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
 
-The template function overloads `operator==` to compare two objects of class template [array Class](../standard-library/array-class-stl.md). The function returns `equal(left.begin(), left.end(), right.begin())`.
+The template function overloads `operator==` to compare two objects of class template [`array`](../standard-library/array-class-stl.md). The function returns `equal(left.begin(), left.end(), right.begin())`.
 
 ### Example
 
@@ -313,7 +305,7 @@ false
 Array comparison, greater than.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator>(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -321,16 +313,16 @@ bool operator>(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
@@ -386,7 +378,7 @@ true
 Array comparison, greater than or equal.
 
 ```cpp
-template <Ty, std::size_t N>
+template <class Ty, std::size_t N>
 bool operator>=(
     const array<Ty, N>& left,
     const array<Ty, N>& right);
@@ -394,16 +386,16 @@ bool operator>=(
 
 ### Parameters
 
-*Ty*\
+*`Ty`*\
 The type of an element.
 
-*N*\
+*`N`*\
 The size of the array.
 
-*left*\
+*`left`*\
 Left container to compare.
 
-*right*\
+*`right`*\
 Right container to compare.
 
 ### Remarks
@@ -456,4 +448,4 @@ false
 
 ## See also
 
-[\<array>](../standard-library/array.md)
+[`<array>`](../standard-library/array.md)
diff --git a/docs/standard-library/atomic-functions.md b/docs/standard-library/atomic-functions.md
index a8a8db35d4..9dcd5b5bae 100644
--- a/docs/standard-library/atomic-functions.md
+++ b/docs/standard-library/atomic-functions.md
@@ -1,41 +1,13 @@
 ---
-description: "Learn more about: <atomic> functions"
 title: "<atomic> functions"
-ms.date: "07/11/2018"
+description: "Learn more about: <atomic> functions"
+ms.date: 07/11/2018
 f1_keywords: ["atomic/std::atomic_compare_exchange_strong", "atomic/std::atomic_compare_exchange_strong_explicit", "atomic/std::atomic_compare_exchange_weak", "atomic/std::atomic_compare_exchange_weak_explicit", "atomic/std::atomic_exchange", "atomic/std::atomic_exchange_explicit", "atomic/std::atomic_fetch_add", "atomic/std::atomic_fetch_add_explicit", "atomic/std::atomic_fetch_and", "atomic/std::atomic_fetch_and_explicit", "atomic/std::atomic_fetch_or", "atomic/std::atomic_fetch_or_explicit", "atomic/std::atomic_fetch_sub", "atomic/std::atomic_fetch_sub_explicit", "atomic/std::atomic_fetch_xor", "atomic/std::atomic_fetch_xor_explicit", "atomic/std::atomic_flag_clear", "atomic/std::atomic_flag_clear_explicit", "atomic/std::atomic_flag_test_and_set", "atomic/std::atomic_flag_test_and_set_explicit", "atomic/std::atomic_init", "atomic/std::atomic_is_lock_free", "atomic/std::atomic_load", "atomic/std::atomic_load_explicit", "atomic/std::atomic_signal_fence", "atomic/std::atomic_store", "atomic/std::atomic_store_explicit", "atomic/std::atomic_thread_fence", "atomic/std::kill_dependency"]
 helpviewer_keywords: ["std::atomic_compare_exchange_strong [C++]", "std::atomic_compare_exchange_strong_explicit [C++]", "std::atomic_compare_exchange_weak [C++]", "std::atomic_compare_exchange_weak_explicit [C++]", "std::atomic_exchange [C++]", "std::atomic_exchange_explicit [C++]", "std::atomic_fetch_add [C++]", "std::atomic_fetch_add_explicit [C++]", "std::atomic_fetch_and [C++]", "std::atomic_fetch_and_explicit [C++]", "std::atomic_fetch_or [C++]", "std::atomic_fetch_or_explicit [C++]", "std::atomic_fetch_sub [C++]", "std::atomic_fetch_sub_explicit [C++]", "std::atomic_fetch_xor [C++]", "std::atomic_fetch_xor_explicit [C++]", "std::atomic_flag_clear [C++]", "std::atomic_flag_clear_explicit [C++]", "std::atomic_flag_test_and_set [C++]", "std::atomic_flag_test_and_set_explicit [C++]", "std::atomic_init [C++]", "std::atomic_is_lock_free [C++]", "std::atomic_load [C++]", "std::atomic_load_explicit [C++]", "std::atomic_signal_fence [C++]", "std::atomic_store [C++]", "std::atomic_store_explicit [C++]", "std::atomic_thread_fence [C++]", "std::kill_dependency [C++]"]
 ---
 # `<atomic>` functions
 
-[atomic_compare_exchange_strong](#atomic_compare_exchange_strong)\
-[atomic_compare_exchange_strong_explicit](#atomic_compare_exchange_strong_explicit)\
-[atomic_compare_exchange_weak](#atomic_compare_exchange_weak)\
-[atomic_compare_exchange_weak_explicit](#atomic_compare_exchange_weak_explicit)\
-[atomic_exchange](#atomic_exchange)\
-[atomic_exchange_explicit](#atomic_exchange_explicit)\
-[atomic_fetch_add](#atomic_fetch_add)\
-[atomic_fetch_add_explicit](#atomic_fetch_add_explicit)\
-[atomic_fetch_and](#atomic_fetch_and)\
-[atomic_fetch_and_explicit](#atomic_fetch_and_explicit)\
-[atomic_fetch_or](#atomic_fetch_or)\
-[atomic_fetch_or_explicit](#atomic_fetch_or_explicit)\
-[atomic_fetch_sub](#atomic_fetch_sub)\
-[atomic_fetch_sub_explicit](#atomic_fetch_sub_explicit)\
-[atomic_fetch_xor](#atomic_fetch_xor)\
-[atomic_fetch_xor_explicit](#atomic_fetch_xor_explicit)\
-[atomic_flag_clear](#atomic_flag_clear)\
-[atomic_flag_clear_explicit](#atomic_flag_clear_explicit)\
-[atomic_flag_test_and_set](#atomic_flag_test_and_set)\
-[atomic_flag_test_and_set_explicit](#atomic_flag_test_and_set_explicit)\
-[atomic_init](#atomic_init)\
-[atomic_is_lock_free](#atomic_is_lock_free)\
-[atomic_load](#atomic_load)\
-[atomic_load_explicit](#atomic_load_explicit)\
-[atomic_signal_fence](#atomic_signal_fence)\
-[atomic_store](#atomic_store)\
-[atomic_store_explicit](#atomic_store_explicit)\
-[atomic_thread_fence](#atomic_thread_fence)\
-[kill_dependency](#kill_dependency)
+The `<atomic>` header provides the following functions:
 
 ## <a name="atomic_compare_exchange_strong"></a> `atomic_compare_exchange_strong`
 
@@ -676,8 +648,8 @@ A [`memory_order`](../standard-library/atomic-enums.md#memory_order_enum).
 Sets the **`bool`** flag in an [`atomic_flag`](../standard-library/atomic-flag-structure.md) object to **`true`**, within the constraints of the [`memory_order.memory_order_seq_cst`](../standard-library/atomic-enums.md#memory_order_enum).
 
 ```cpp
-inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag,) noexcept;
-inline bool atomic_flag_test_and_set(atomic_flag* Flag,) noexcept;
+inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag) noexcept;
+inline bool atomic_flag_test_and_set(atomic_flag* Flag) noexcept;
 ```
 
 ### Parameters
diff --git a/docs/standard-library/auto-ptr-class.md b/docs/standard-library/auto-ptr-class.md
index 1b22c6ef9b..69bdeb67bf 100644
--- a/docs/standard-library/auto-ptr-class.md
+++ b/docs/standard-library/auto-ptr-class.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: auto_ptr Class"
 title: "auto_ptr Class"
+description: "Learn more about: auto_ptr Class"
 ms.date: 11/1/2023
 f1_keywords: ["memory/std::auto_ptr", "memory/std::auto_ptr::element_type", "memory/std::auto_ptr::get", "memory/std::auto_ptr::release", "memory/std::auto_ptr::reset"]
 helpviewer_keywords: ["std::auto_ptr [C++]", "std::auto_ptr [C++], element_type", "std::auto_ptr [C++], get", "std::auto_ptr [C++], release", "std::auto_ptr [C++], reset"]
@@ -134,17 +134,17 @@ public:
       cout << "Constructing " << ( void* )this  << endl;
       x = i;
       bIsConstructed = true;
-   };
+   }
    ~Int( )
    {
       cout << "Destructing " << ( void* )this << endl;
       bIsConstructed = false;
-   };
+   }
    Int &operator++( )
    {
       x++;
       return *this;
-   };
+   }
    int x;
 private:
    bool bIsConstructed;
@@ -211,11 +211,11 @@ public:
    {
       x = i;
       cout << "Constructing " << ( void* )this  << " Value: " << x << endl;
-   };
+   }
    ~Int( )
    {
       cout << "Destructing " << ( void* )this << " Value: " << x << endl;
-   };
+   }
 
    int x;
 
@@ -377,7 +377,7 @@ public:
     int m_i;
 };
 void f(auto_ptr<C> arg) {
-};
+}
 int main()
 {
     const auto_ptr<C> ciap(new C(1));
@@ -433,10 +433,10 @@ public:
     {
         x = i;
         cout << "Constructing " << (void*)this << " Value: " << x << endl;
-    };
+    }
     ~Int() {
         cout << "Destructing " << (void*)this << " Value: " << x << endl;
-    };
+    }
 
     int x;
 
@@ -493,11 +493,11 @@ public:
     {
         x = i;
         cout << "Constructing " << (void*)this << " Value: " << x << endl;
-    };
+    }
     ~Int()
     {
         cout << "Destructing " << (void*)this << " Value: " << x << endl;
-    };
+    }
 
     int x;
 };
diff --git a/docs/standard-library/bad-alloc-class.md b/docs/standard-library/bad-alloc-class.md
index 9cd3cc8bd8..f18b4ca87e 100644
--- a/docs/standard-library/bad-alloc-class.md
+++ b/docs/standard-library/bad-alloc-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: bad_alloc Class"
 title: "bad_alloc Class"
+description: "Learn more about: bad_alloc Class"
 ms.date: "11/04/2016"
 f1_keywords: ["new/std::bad_alloc"]
 helpviewer_keywords: ["bad_alloc class"]
-ms.assetid: 6429a8e6-5a49-4907-8d56-f4a4ec8131d0
 ---
 # bad_alloc Class
 
@@ -31,8 +30,8 @@ The value returned by `what` is an implementation-defined C string. None of the
 ```cpp
 // bad_alloc.cpp
 // compile with: /EHsc
-#include<new>
-#include<iostream>
+#include <new>
+#include <iostream>
 using namespace std;
 
 int main() {
diff --git a/docs/standard-library/basic-fstream-class.md b/docs/standard-library/basic-fstream-class.md
index 7ddc445a51..3a9f9883a8 100644
--- a/docs/standard-library/basic-fstream-class.md
+++ b/docs/standard-library/basic-fstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_fstream Class"
 title: "basic_fstream Class"
-ms.date: "11/04/2016"
+description: "Learn more about: basic_fstream Class"
+ms.date: 11/04/2016
 f1_keywords: ["fstream/std::basic_fstream", "fstream/std::basic_fstream::close", "fstream/std::basic_fstream::is_open", "fstream/std::basic_fstream::open", "fstream/std::basic_fstream::rdbuf", "fstream/std::basic_fstream::swap"]
 helpviewer_keywords: ["std::basic_fstream [C++]", "std::basic_fstream [C++], close", "std::basic_fstream [C++], is_open", "std::basic_fstream [C++], open", "std::basic_fstream [C++], rdbuf", "std::basic_fstream [C++], swap"]
-ms.assetid: 8473817e-42a4-430b-82b8-b476c86bcf8a
 ---
 # basic_fstream Class
 
@@ -204,7 +203,7 @@ The default file opening protection, equivalent to the *shflag* parameter in [_f
 
 ### Remarks
 
-The member function calls [rdbuf](#rdbuf) **->** [open](../standard-library/basic-filebuf-class.md#open)(_ *Filename*, `_Mode`). If that function returns a null pointer, the function calls [setstate](../standard-library/basic-ios-class.md#setstate)( `failbit`).
+The member function calls [rdbuf](#rdbuf) **->** [open](../standard-library/basic-filebuf-class.md#open)(_ *Filename*, `_Mode`). If that function returns a null pointer, the function calls [setstate](../standard-library/basic-ios-class.md#setstate)(`failbit`).
 
 ### Example
 
diff --git a/docs/standard-library/basic-istream-class.md b/docs/standard-library/basic-istream-class.md
index f67eaa3dbf..a5ebefecce 100644
--- a/docs/standard-library/basic-istream-class.md
+++ b/docs/standard-library/basic-istream-class.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: basic_istream Class"
 title: "basic_istream Class"
+description: "Learn more about: basic_istream Class"
 ms.date: 06/10/2022
 f1_keywords: ["istream/std::basic_istream", "istream/std::basic_istream::gcount", "istream/std::basic_istream::get", "istream/std::basic_istream::getline", "istream/std::basic_istream::", "istream/std::basic_istream::peek", "istream/std::basic_istream::putback", "istream/std::basic_istream::read", "istream/std::basic_istream::readsome", "istream/std::basic_istream::seekg", "istream/std::basic_istream::sentry", "istream/std::basic_istream::swap", "istream/std::basic_istream::sync", "istream/std::basic_istream::tellg", "istream/std::basic_istream::unget"]
 helpviewer_keywords: ["std::basic_istream [C++]", "std::basic_istream [C++], gcount", "std::basic_istream [C++], get", "std::basic_istream [C++], getline", "std::basic_istream [C++], OVERWRITE", "std::basic_istream [C++], peek", "std::basic_istream [C++], putback", "std::basic_istream [C++], read", "std::basic_istream [C++], readsome", "std::basic_istream [C++], seekg", "std::basic_istream [C++], sentry", "std::basic_istream [C++], swap", "std::basic_istream [C++], sync", "std::basic_istream [C++], tellg", "std::basic_istream [C++], unget"]
@@ -410,7 +410,7 @@ Type 'abcdef': abcdef
 def
 ```
 
-## <a name="op_gt_gt"></a> `basic\_istream::operator>>`
+## <a name="op_gt_gt"></a> `basic_istream::operator>>`
 
 Calls a function on the input stream or reads formatted data from the input stream.
 
@@ -451,7 +451,7 @@ The stream (`*this`).
 
 ### Remarks
 
-The `<istream>` header also defines several global extraction operators. For more information, see [`operator>> (\<istream>)`](../standard-library/istream-operators.md#op_gt_gt).
+The `<istream>` header also defines several global extraction operators. For more information, see [`operator>> (<istream>)`](../standard-library/istream-operators.md#op_gt_gt).
 
 The first member function ensures that an expression of the form `istr >> ws` calls `ws(istr)`, and then returns `*this`. For more information, see [`ws`](../standard-library/istream-functions.md#ws).
 
diff --git a/docs/standard-library/basic-istream-view-class.md b/docs/standard-library/basic-istream-view-class.md
index bac05a4dd9..e1aa2cc293 100644
--- a/docs/standard-library/basic-istream-view-class.md
+++ b/docs/standard-library/basic-istream-view-class.md
@@ -117,7 +117,7 @@ The best way to create a `basic_istream_view` is by using the [`views::istream`]
 ### Example: `basic_istream_view`, `istream_view`, and `wistream_view`
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 #include <sstream>
diff --git a/docs/standard-library/basic-istringstream-class.md b/docs/standard-library/basic-istringstream-class.md
index 65784d3592..ddae99f87f 100644
--- a/docs/standard-library/basic-istringstream-class.md
+++ b/docs/standard-library/basic-istringstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_istringstream Class"
 title: "basic_istringstream Class"
+description: "Learn more about: basic_istringstream Class"
 ms.date: 06/10/2022
 f1_keywords: ["sstream/std::basic_istringstream", "sstream/std::basic_istringstream::allocator_type", "sstream/std::basic_istringstream::rdbuf", "sstream/std::basic_istringstream::str", "sstream/std::basic_istringstream::swap"]
 helpviewer_keywords: ["std::basic_istringstream [C++]", "std::basic_istringstream [C++], allocator_type", "std::basic_istringstream [C++], rdbuf", "std::basic_istringstream [C++], str", "std::basic_istringstream [C++], swap"]
-ms.assetid: 1d5bb4b5-793d-4833-98e5-14676c451915
 ms.custom: devdivchpfy22
 ---
 
@@ -103,7 +102,7 @@ An rvalue reference of a `basic_istringstream` object.
 
 ### Remarks
 
-The first constructor initializes the base class by calling `basic_istream]( sb )`, where `sb` is the stored object of class `basic_stringbuf< Elem, Tr, Alloc>`. It also initializes `sb` by calling `basic_stringbuf< Elem, Tr, Alloc >( _Mode | ios_base::in )`. For more information, see [`basic_istream`](../standard-library/basic-istream-class.md) and [`basic_stringbuf`](../standard-library/basic-stringbuf-class.md).
+The first constructor initializes the base class by calling `basic_istream( sb )`, where `sb` is the stored object of class `basic_stringbuf< Elem, Tr, Alloc>`. It also initializes `sb` by calling `basic_stringbuf< Elem, Tr, Alloc >( _Mode | ios_base::in )`. For more information, see [`basic_istream`](../standard-library/basic-istream-class.md) and [`basic_stringbuf`](../standard-library/basic-stringbuf-class.md).
 
 The second constructor initializes the base class by calling `basic_istream( sb )`. It also initializes `sb` by calling `basic_stringbuf< Elem, Tr, Alloc >( str, _Mode | ios_base::in )`.
 
@@ -164,7 +163,7 @@ Returns an object of class [basic_string](../standard-library/basic-string-class
 
 ### Remarks
 
-The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**( `_Newstr`).
+The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**(`_Newstr`).
 
 ### Example
 
diff --git a/docs/standard-library/basic-ostream-class.md b/docs/standard-library/basic-ostream-class.md
index 6365780620..a2b1b7e652 100644
--- a/docs/standard-library/basic-ostream-class.md
+++ b/docs/standard-library/basic-ostream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_ostream Class"
 title: "basic_ostream Class"
-ms.date: "03/27/2019"
+description: "Learn more about: basic_ostream Class"
+ms.date: 03/27/2019
 f1_keywords: ["ostream/std::basic_ostream", "ostream/std::basic_ostream::flush", "ostream/std::basic_ostream::put", "ostream/std::basic_ostream::seekp", "ostream/std::basic_ostream::sentry", "ostream/std::basic_ostream::swap", "ostream/std::basic_ostream::tellp", "ostream/std::basic_ostream::write"]
 helpviewer_keywords: ["std::basic_ostream [C++]", "std::basic_ostream [C++], flush", "std::basic_ostream [C++], put", "std::basic_ostream [C++], seekp", "std::basic_ostream [C++], sentry", "std::basic_ostream [C++], swap", "std::basic_ostream [C++], tellp", "std::basic_ostream [C++], write"]
-ms.assetid: 5baadc65-b662-4fab-8c9f-94457c58cda1
 ---
 # basic_ostream Class
 
@@ -449,12 +448,15 @@ int main()
 
 The nested class describes an object whose declaration structures the formatted output functions and the unformatted output functions.
 
-class sentry {
-   public:
-   explicit sentry(basic_ostream\<Elem, Tr>& _Ostr);
-   operator bool() const;
-   ~sentry();
-   };
+```cpp
+class sentry
+{
+public:
+    explicit sentry(basic_ostream<Elem, Tr>& _Ostr);
+    operator bool() const;
+    ~sentry();
+};
+```
 
 ### Remarks
 
diff --git a/docs/standard-library/basic-ostringstream-class.md b/docs/standard-library/basic-ostringstream-class.md
index 1b79c1a3d2..29ff6874a7 100644
--- a/docs/standard-library/basic-ostringstream-class.md
+++ b/docs/standard-library/basic-ostringstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_ostringstream Class"
 title: "basic_ostringstream Class"
+description: "Learn more about: basic_ostringstream Class"
 ms.date: 06/10/2022
 f1_keywords: ["sstream/std::basic_ostringstream", "sstream/std::basic_ostringstream::allocator_type", "sstream/std::basic_ostringstream::rdbuf", "sstream/std::basic_ostringstream::str"]
 helpviewer_keywords: ["std::basic_ostringstream [C++]", "std::basic_ostringstream [C++], allocator_type", "std::basic_ostringstream [C++], rdbuf", "std::basic_ostringstream [C++], str"]
-ms.assetid: aea699f7-350f-432a-acca-adbae7b483fb
 ms.custom: devdivchpfy22
 ---
 
@@ -133,7 +132,7 @@ Returns an object of class [basic_string](../standard-library/basic-string-class
 
 ### Remarks
 
-The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**( `_Newstr`).
+The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**(`_Newstr`).
 
 ### Example
 
diff --git a/docs/standard-library/basic-streambuf-class.md b/docs/standard-library/basic-streambuf-class.md
index e672081763..4a543f3fef 100644
--- a/docs/standard-library/basic-streambuf-class.md
+++ b/docs/standard-library/basic-streambuf-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_streambuf Class"
 title: "basic_streambuf Class"
+description: "Learn more about: basic_streambuf Class"
 ms.date: 06/10/2022
 f1_keywords: ["streambuf/std::basic_streambuf", "streambuf/std::basic_streambuf::char_type", "streambuf/std::basic_streambuf::int_type", "streambuf/std::basic_streambuf::off_type", "streambuf/std::basic_streambuf::pos_type", "streambuf/std::basic_streambuf::traits_type", "streambuf/std::basic_streambuf::eback", "streambuf/std::basic_streambuf::egptr", "streambuf/std::basic_streambuf::epptr", "streambuf/std::basic_streambuf::gbump", "streambuf/std::basic_streambuf::getloc", "streambuf/std::basic_streambuf::gptr", "streambuf/std::basic_streambuf::imbue", "streambuf/std::basic_streambuf::in_avail", "streambuf/std::basic_streambuf::overflow", "streambuf/std::basic_streambuf::pbackfail", "streambuf/std::basic_streambuf::pbase", "streambuf/std::basic_streambuf::pbump", "streambuf/std::basic_streambuf::pptr", "streambuf/std::basic_streambuf::pubimbue", "streambuf/std::basic_streambuf::pubseekoff", "streambuf/std::basic_streambuf::pubseekpos", "streambuf/std::basic_streambuf::pubsetbuf", "streambuf/std::basic_streambuf::pubsync", "streambuf/std::basic_streambuf::sbumpc", "streambuf/std::basic_streambuf::seekoff", "streambuf/std::basic_streambuf::seekpos", "streambuf/std::basic_streambuf::setbuf", "streambuf/std::basic_streambuf::setg", "streambuf/std::basic_streambuf::setp", "streambuf/std::basic_streambuf::sgetc", "streambuf/std::basic_streambuf::sgetn", "streambuf/std::basic_streambuf::showmanyc", "streambuf/std::basic_streambuf::snextc", "streambuf/std::basic_streambuf::sputbackc", "streambuf/std::basic_streambuf::sputc", "streambuf/std::basic_streambuf::sputn", "streambuf/std::basic_streambuf::stossc", "streambuf/std::basic_streambuf::sungetc", "streambuf/std::basic_streambuf::swap", "streambuf/std::basic_streambuf::sync", "streambuf/std::basic_streambuf::uflow", "streambuf/std::basic_streambuf::underflow", "streambuf/std::basic_streambuf::xsgetn", "streambuf/std::basic_streambuf::xsputn"]
 helpviewer_keywords: ["std::basic_streambuf [C++]", "std::basic_streambuf [C++], char_type", "std::basic_streambuf [C++], int_type", "std::basic_streambuf [C++], off_type", "std::basic_streambuf [C++], pos_type", "std::basic_streambuf [C++], traits_type", "std::basic_streambuf [C++], eback", "std::basic_streambuf [C++], egptr", "std::basic_streambuf [C++], epptr", "std::basic_streambuf [C++], gbump", "std::basic_streambuf [C++], getloc", "std::basic_streambuf [C++], gptr", "std::basic_streambuf [C++], imbue", "std::basic_streambuf [C++], in_avail", "std::basic_streambuf [C++], overflow", "std::basic_streambuf [C++], pbackfail", "std::basic_streambuf [C++], pbase", "std::basic_streambuf [C++], pbump", "std::basic_streambuf [C++], pptr", "std::basic_streambuf [C++], pubimbue", "std::basic_streambuf [C++], pubseekoff", "std::basic_streambuf [C++], pubseekpos", "std::basic_streambuf [C++], pubsetbuf", "std::basic_streambuf [C++], pubsync", "std::basic_streambuf [C++], sbumpc", "std::basic_streambuf [C++], seekoff", "std::basic_streambuf [C++], seekpos", "std::basic_streambuf [C++], setbuf", "std::basic_streambuf [C++], setg", "std::basic_streambuf [C++], setp", "std::basic_streambuf [C++], sgetc", "std::basic_streambuf [C++], sgetn", "std::basic_streambuf [C++], showmanyc", "std::basic_streambuf [C++], snextc", "std::basic_streambuf [C++], sputbackc", "std::basic_streambuf [C++], sputc", "std::basic_streambuf [C++], sputn", "std::basic_streambuf [C++], stossc", "std::basic_streambuf [C++], sungetc", "std::basic_streambuf [C++], swap", "std::basic_streambuf [C++], sync", "std::basic_streambuf [C++], uflow", "std::basic_streambuf [C++], underflow", "std::basic_streambuf [C++], xsgetn", "std::basic_streambuf [C++], xsputn"]
-ms.assetid: 136af6c3-13bf-4501-9288-b93da26efac7
 ms.custom: devdivchpfy22
 ---
 
@@ -550,7 +549,7 @@ The size of the buffer.
 
 ### Return Value
 
-Returns [setbuf](#setbuf)( `_Buffer`, `count`).
+Returns [setbuf](#setbuf)(`_Buffer`, `count`).
 
 ## <a name="pubsync"></a> basic_streambuf::pubsync
 
@@ -750,7 +749,7 @@ The current element.
 
 ### Remarks
 
-If a read position is available, the member function returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)( `*`[gptr](#gptr)). Otherwise, it returns [underflow](#underflow).
+If a read position is available, the member function returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)(`*`[gptr](#gptr)). Otherwise, it returns [underflow](#underflow).
 
 ### Example
 
@@ -798,7 +797,7 @@ The number of elements read. For more information, see [streamsize](../standard-
 
 ### Remarks
 
-The member function returns [xsgetn](#xsgetn)( `ptr`, `count`).
+The member function returns [xsgetn](#xsgetn)(`ptr`, `count`).
 
 ### Example
 
@@ -898,7 +897,7 @@ Returns the character or failure.
 
 ### Remarks
 
-If a putback position is available and *_Ch* compares equal to the character stored in that position, the member function decrements the next pointer for the input buffer and returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)( `_Ch`). Otherwise, it returns [pbackfail](#pbackfail)( `_Ch`).
+If a putback position is available and *_Ch* compares equal to the character stored in that position, the member function decrements the next pointer for the input buffer and returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)(`_Ch`). Otherwise, it returns [pbackfail](#pbackfail)(`_Ch`).
 
 ### Example
 
@@ -946,7 +945,7 @@ Returns the character, if successful.
 
 ### Remarks
 
-If a `write position` is available, the member function stores *_Ch* in the write position, increments the next pointer for the output buffer, and returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)( `_Ch`). Otherwise, it returns [overflow](#overflow)( `_Ch`).
+If a `write position` is available, the member function stores *_Ch* in the write position, increments the next pointer for the output buffer, and returns **traits_type::**[to_int_type](../standard-library/char-traits-struct.md#to_int_type)(`_Ch`). Otherwise, it returns [overflow](#overflow)(`_Ch`).
 
 ### Example
 
@@ -992,7 +991,7 @@ The number of characters inserted into the stream.
 
 ### Remarks
 
-The member function returns [xsputn](#xsputn)( `ptr`, `count`). For more information, see the Remarks section of this member for more information.
+The member function returns [xsputn](#xsputn)(`ptr`, `count`). For more information, see the Remarks section of this member for more information.
 
 ### Example
 
@@ -1061,7 +1060,7 @@ Returns either the character or failure.
 
 ### Remarks
 
-If a putback position is available, the member function decrements the next pointer for the input buffer and returns `traits_type::`[to_int_type](../standard-library/char-traits-struct.md#to_int_type)( `*`[gptr](#gptr)). However, it isn't always possible to determine the last character read so that it can be captured in the state of the current buffer. If this is true, then the function returns [pbackfail](#pbackfail). To avoid this situation, keep track of the character to put back and call `sputbackc(ch)`, which won't fail provided you don't call it at the beginning of the stream and you don't try to put back more than one character.
+If a putback position is available, the member function decrements the next pointer for the input buffer and returns `traits_type::`[to_int_type](../standard-library/char-traits-struct.md#to_int_type)(`*`[gptr](#gptr)). However, it isn't always possible to determine the last character read so that it can be captured in the state of the current buffer. If this is true, then the function returns [pbackfail](#pbackfail). To avoid this situation, keep track of the character to put back and call `sputbackc(ch)`, which won't fail provided you don't call it at the beginning of the stream and you don't try to put back more than one character.
 
 ### Example
 
diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md
index 43c1e29f5c..4cfe39831e 100644
--- a/docs/standard-library/basic-string-class.md
+++ b/docs/standard-library/basic-string-class.md
@@ -61,7 +61,7 @@ The type that represents the stored allocator object that encapsulates details a
 |[`append`](#append)|Adds characters to the end of a string.|
 |[`assign`](#assign)|Assigns new character values to the contents of a string.|
 |[`at`](#at)|Returns a reference to the element at a specified location in the string.|
-|[`back`](#back)||
+|[`back`](#back)|Returns a reference to the last element in the string.|
 |[`begin`](#begin)|Returns an iterator addressing the first element in the string.|
 |[`c_str`](#c_str)|Converts the contents of a string as a C-style, null-terminated, string.|
 |[`capacity`](#capacity)|Returns the largest number of elements that could be stored in a string without increasing the memory allocation of the string.|
@@ -284,7 +284,7 @@ int main( )
    cout << "The appended string str1d is: "
         << str1d << "." << endl;
    str1d += str3d;
-   cout << "The doubly appended strig str1 is: "
+   cout << "The doubly appended string str1 is: "
         << str1d << "." << endl << endl;
 
    // The fifth member function
@@ -318,7 +318,7 @@ The appended string str1 is: Hello World.
 
 The  string str2d is: Wide
 The appended string str1d is: Hello Wide .
-The doubly appended strig str1 is: Hello Wide World .
+The doubly appended string str1 is: Hello Wide World .
 
 The string str1 appended with exclamations is: Hello !!!!
 
@@ -569,8 +569,6 @@ reference back();
 
 A reference to the last element of the string, which must be non-empty.
 
-### Remarks
-
 ## <a name="basic_string"></a> `basic_string::basic_string`
 
 Constructs a string that is empty, initialized by specific characters, or is a copy of all or part of another string object or C style (null-terminated) string.
@@ -1473,8 +1471,6 @@ const_reverse_iterator crend() const;
 
 A `const` reverse iterator that addresses the location succeeding the last element in a reversed string (the location that had preceded the first element in the unreversed string).
 
-### Remarks
-
 ## <a name="copy_s"></a> `basic_string::_Copy_s`
 
 Copies at most a specified number of characters from an indexed position in a source string to a target character array.
@@ -1830,7 +1826,7 @@ See [`starts_with`](#starts_with) to check if a string starts with the specified
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <string>
 #include <iostream>
 
@@ -2885,8 +2881,6 @@ reference front();
 
 A reference to the first element of the string, which must be non-empty.
 
-### Remarks
-
 ## <a name="get_allocator"></a> `basic_string::get_allocator`
 
 Returns a copy of the allocator object used to construct the string.
@@ -2959,12 +2953,10 @@ basic_string<CharType, Traits, Allocator>& insert(
     size_type count,
     value_type char_value);
 
-iterator insert(
-    iterator iter);
-
 iterator insert(
     iterator iter,
-    value_type char_value)l
+    value_type char_value);
+
 template <class InputIterator>
 void insert(
     iterator iter,
@@ -3352,7 +3344,7 @@ int main( )
    cout << "The appended string str1d is: "
         << str1d << "." << endl;
    str1d += str3d;
-   cout << "The doubly appended strig str1 is: "
+   cout << "The doubly appended string str1 is: "
         << str1d << "." << endl << endl;
 }
 ```
@@ -3366,7 +3358,7 @@ Appending the C-string cstr1b to string str1 gives: Hello Out There.
 
 The string str2d is: Wide
 The appended string str1d is: Hello Wide .
-The doubly appended strig str1 is: Hello Wide World.
+The doubly appended string str1 is: Hello Wide World.
 ```
 
 ## <a name="op_eq"></a> `basic_string::operator=`
@@ -4203,7 +4195,7 @@ Specifies a new size for a string, appending or erasing elements as required.
 
 ```cpp
 void resize(
-    size_type count,);
+    size_type count);
 
 void resize(
     size_type count,
@@ -4654,7 +4646,7 @@ See [`ends_with`](#ends_with) to see if a string ends with the specified suffix.
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <string>
 #include <iostream>
 
diff --git a/docs/standard-library/basic-string-view-class.md b/docs/standard-library/basic-string-view-class.md
index fda26ef3f8..d1b682c1a9 100644
--- a/docs/standard-library/basic-string-view-class.md
+++ b/docs/standard-library/basic-string-view-class.md
@@ -1,7 +1,7 @@
 ---
 title: "basic_string_view Class"
 description: "API reference for `basic_string_view`, which refers to a constant contiguous sequence of char-like objects."
-ms.date: "9/8/2020"
+ms.date: 9/8/2020
 f1_keywords: ["xstring/std::basic_string_view", "xstring/std::basic_string_view::allocator_type", "xstring/std::basic_string_view::const_iterator", "xstring/std::basic_string_view::const_pointer", "xstring/std::basic_string_view::const_reference", "xstring/std::basic_string_view::const_reverse_iterator", "xstring/std::basic_string_view::difference_type", "xstring/std::basic_string_view::ends_with", "xstring/std::basic_string_view::starts_with", "xstring/std::basic_string_view::iterator", "xstring/std::basic_string_view::npos", "xstring/std::basic_string_view::pointer", "xstring/std::basic_string_view::reference", "xstring/std::basic_string_view::reverse_iterator", "xstring/std::basic_string_view::size_type", "xstring/std::basic_string_view::traits_type", "xstring/std::basic_string_view::value_type", "xstring/std::basic_string_view::append", "xstring/std::basic_string_view::assign", "xstring/std::basic_string_view::at", "xstring/std::basic_string_view::back", "xstring/std::basic_string_view::begin", "xstring/std::basic_string_view::c_str", "xstring/std::basic_string_view::capacity", "xstring/std::basic_string_view::cbegin", "xstring/std::basic_string_view::cend", "xstring/std::basic_string_view::clear", "xstring/std::basic_string_view::compare", "xstring/std::basic_string_view::copy", "xstring/std::basic_string_view::_Copy_s", "xstring/std::basic_string_view::crbegin", "xstring/std::basic_string_view::crend", "xstring/std::basic_string_view::data", "xstring/std::basic_string_view::empty", "xstring/std::basic_string_view::end", "xstring/std::basic_string_view::erase", "xstring/std::basic_string_view::find", "xstring/std::basic_string_view::find_first_not_of", "xstring/std::basic_string_view::find_first_of", "xstring/std::basic_string_view::find_last_not_of", "xstring/std::basic_string_view::find_last_of", "xstring/std::basic_string_view::front", "xstring/std::basic_string_view::get_allocator", "xstring/std::basic_string_view::insert", "xstring/std::basic_string_view::length", "xstring/std::basic_string_view::max_size", "xstring/std::basic_string_view::pop_back", "xstring/std::basic_string_view::push_back", "xstring/std::basic_string_view::rbegin", "xstring/std::basic_string_view::rend", "xstring/std::basic_string_view::remove_prefix","xstring/std::basic_string_view::remove_suffix", "xstring/std::basic_string_view::replace", "xstring/std::basic_string_view::reserve", "xstring/std::basic_string_view::resize", "xstring/std::basic_string_view::rfind", "xstring/std::basic_string_view::shrink_to_fit", "xstring/std::basic_string_view::size", "xstring/std::basic_string_view::substr", "xstring/std::basic_string_view::swap"]
 helpviewer_keywords: ["std::basic_string_view", "std::basic_string_view, allocator_type", "std::basic_string_view, const_iterator", "std::basic_string_view, const_pointer", "std::basic_string_view, const_reference", "std::basic_string_view, const_reverse_iterator", "std::basic_string_view, difference_type", "std::basic_string_view, iterator", "std::basic_string_view, npos", "std::basic_string_view, pointer", "std::basic_string_view, reference", "std::basic_string_view, reverse_iterator", "std::basic_string_view, size_type", "std::basic_string_view, traits_type", "std::basic_string_view, value_type", "std::basic_string_view, append", "std::basic_string_view, assign", "std::basic_string_view, at", "std::basic_string_view, back", "std::basic_string_view, begin", "std::basic_string_view, c_str", "std::basic_string_view, capacity", "std::basic_string_view, cbegin", "std::basic_string_view, cend", "std::basic_string_view, clear", "std::basic_string_view, compare", "std::basic_string_view, copy", "std::basic_string_view, crbegin", "std::basic_string_view, crend", "std::basic_string_view, data", "std::basic_string_view, empty", "std::basic_string_view, end",  "std::basic_string_view, ends_with", "std::basic_string_view, erase", "std::basic_string_view, find", "std::basic_string_view, find_first_not_of", "std::basic_string_view, find_first_of", "std::basic_string_view, find_last_not_of", "std::basic_string_view, find_last_of", "std::basic_string_view, front", "std::basic_string_view, get_allocator", "std::basic_string_view, insert", "std::basic_string_view, length", "std::basic_string_view, max_size", "std::basic_string_view, pop_back", "std::basic_string_view, push_back", "std::basic_string_view, rbegin", "std::basic_string_view, rend", "std::basic_string_view, remove_prefix","std::basic_string_view, remove_suffix","std::basic_string_view, replace", "std::basic_string_view, reserve", "std::basic_string_view, resize", "std::basic_string_view, rfind", "std::basic_string_view, shrink_to_fit", "std::basic_string_view, size",  "std::basic_string_view, starts_with", "std::basic_string_view, substr", "std::basic_string_view, swap"]
 ---
@@ -138,7 +138,7 @@ If a function is asked to generate a sequence longer than [`max_size`](#max_size
 
 ## Requirements
 
-[`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.
+[`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.
 
 **Header:** `<string_view>`
 
@@ -610,7 +610,7 @@ See [`starts_with`](#starts_with) to check if a string view starts with the spec
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <string>
 #include <iostream>
 
@@ -1013,14 +1013,14 @@ Null-terminated character string containing the prefix to look for.
 
 ### Remarks
 
-`starts_with()` is new in C++20. To use it, specify the [`std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option.
+`starts_with()` is new in C++20. To use it, specify the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option.
 
 See [`ends_with`](#ends_with) to see if a string ends with a suffix.
 
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <string>
 #include <iostream>
 
diff --git a/docs/standard-library/basic-stringbuf-class.md b/docs/standard-library/basic-stringbuf-class.md
index 465e997c4f..7fde918659 100644
--- a/docs/standard-library/basic-stringbuf-class.md
+++ b/docs/standard-library/basic-stringbuf-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_stringbuf Class"
 title: "basic_stringbuf Class"
+description: "Learn more about: basic_stringbuf Class"
 ms.date: 06/10/2022
 f1_keywords: ["sstream/std::basic_stringbuf", "sstream/std::basic_stringbuf::allocator_type", "sstream/std::basic_stringbuf::char_type", "sstream/std::basic_stringbuf::int_type", "sstream/std::basic_stringbuf::off_type", "sstream/std::basic_stringbuf::pos_type", "sstream/std::basic_stringbuf::traits_type", "sstream/std::basic_stringbuf::overflow", "sstream/std::basic_stringbuf::pbackfail", "sstream/std::basic_stringbuf::seekoff", "sstream/std::basic_stringbuf::seekpos", "sstream/std::basic_stringbuf::str", "sstream/std::basic_stringbuf::underflow"]
 helpviewer_keywords: ["std::basic_stringbuf [C++]", "std::basic_stringbuf [C++], allocator_type", "std::basic_stringbuf [C++], char_type", "std::basic_stringbuf [C++], int_type", "std::basic_stringbuf [C++], off_type", "std::basic_stringbuf [C++], pos_type", "std::basic_stringbuf [C++], traits_type", "std::basic_stringbuf [C++], overflow", "std::basic_stringbuf [C++], pbackfail", "std::basic_stringbuf [C++], seekoff", "std::basic_stringbuf [C++], seekpos", "std::basic_stringbuf [C++], str", "std::basic_stringbuf [C++], underflow"]
-ms.assetid: 40c85f9e-42a5-4a65-af5c-23c8e3bf8113
 ms.custom: devdivchpfy22
 ---
 
@@ -365,8 +364,6 @@ void basic_stringbuf<T>::swap(basic_stringbuf& other)
 *other*\
 The basic_stringbuf whose contents will be swapped with this basic_stringbuf.
 
-### Remarks
-
 ## <a name="op_eq"></a> basic_stringbuf::operator=
 
 Assigns the contents of the basic_stringbuf on the right side of the operator to the basic_stringbuf on the left side.
@@ -380,8 +377,6 @@ basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
 *other*\
 A basic_stringbuf whose contents, including locale traits, will be assigned to the stringbuf on the left side of the operator.
 
-### Remarks
-
 ## See also
 
 [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\
diff --git a/docs/standard-library/basic-stringstream-class.md b/docs/standard-library/basic-stringstream-class.md
index 998bc38cb2..6b834225d7 100644
--- a/docs/standard-library/basic-stringstream-class.md
+++ b/docs/standard-library/basic-stringstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: basic_stringstream Class"
 title: "basic_stringstream Class"
+description: "Learn more about: basic_stringstream Class"
 ms.date: 06/10/2022
 f1_keywords: ["sstream/std::basic_stringstream", "sstream/std::basic_stringstream::allocator_type", "sstream/std::basic_stringstream::rdbuf", "sstream/std::basic_stringstream::str"]
 helpviewer_keywords: ["std::basic_stringstream [C++]", "std::basic_stringstream [C++], allocator_type", "std::basic_stringstream [C++], rdbuf", "std::basic_stringstream [C++], str"]
-ms.assetid: 49629814-ca37-45c5-931b-4ff894e6ebd2
 ms.custom: devdivchpfy22
 ---
 
@@ -87,7 +86,7 @@ An object of type `basic_string`.
 
 ### Remarks
 
-The first constructor initializes the base class by calling [basic_iostream](../standard-library/basic-iostream-class.md)( **sb**), where `sb` is the stored object of class [basic_stringbuf](../standard-library/basic-stringbuf-class.md)< **Elem**, **Tr**, `Alloc`>. It also initializes `sb` by calling basic_stringbuf< **Elem**, **Tr**, `Alloc`>( `_Mode`).
+The first constructor initializes the base class by calling [basic_iostream](../standard-library/basic-iostream-class.md)( **sb**), where `sb` is the stored object of class [basic_stringbuf](../standard-library/basic-stringbuf-class.md)< **Elem**, **Tr**, `Alloc`>. It also initializes `sb` by calling basic_stringbuf< **Elem**, **Tr**, `Alloc`>(`_Mode`).
 
 The second constructor initializes the base class by calling basic_iostream( **sb**). It also initializes `sb` by calling basic_stringbuf< **Elem**, **Tr**, `Alloc`>(_ *Str*, `_Mode`).
 
@@ -129,7 +128,7 @@ Returns an object of class [basic_string](../standard-library/basic-string-class
 
 ### Remarks
 
-The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**( `_Newstr`).
+The first member function returns [rdbuf](#rdbuf) -> [str](../standard-library/basic-stringbuf-class.md#str). The second member function calls `rdbuf` -> **str**(`_Newstr`).
 
 ### Example
 
diff --git a/docs/standard-library/bernoulli-distribution-class.md b/docs/standard-library/bernoulli-distribution-class.md
index 0737a964d0..bd94744c71 100644
--- a/docs/standard-library/bernoulli-distribution-class.md
+++ b/docs/standard-library/bernoulli-distribution-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: bernoulli_distribution Class"
 title: "bernoulli_distribution Class"
-ms.date: "11/04/2016"
+description: "Learn more about: bernoulli_distribution Class"
+ms.date: 11/04/2016
 f1_keywords: ["random/std::bernoulli_distribution", "random/std::bernoulli_distribution::reset", "random/std::bernoulli_distribution::p", "random/std::bernoulli_distribution::param", "random/std::bernoulli_distribution::min", "random/std::bernoulli_distribution::max", "random/std::bernoulli_distribution::operator()", "random/std::bernoulli_distribution::param_type", "random/std::bernoulli_distribution::param_type::p", "random/std::bernoulli_distribution::param_type::operator==", "random/std::bernoulli_distribution::param_type::operator!="]
 helpviewer_keywords: ["std::bernoulli_distribution [C++]", "std::bernoulli_distribution [C++], reset", "std::bernoulli_distribution [C++], p", "std::bernoulli_distribution [C++], param", "std::bernoulli_distribution [C++], min", "std::bernoulli_distribution [C++], max", "std::bernoulli_distribution [C++], param_type", "std::bernoulli_distribution [C++], param_type"]
-ms.assetid: 586bcde1-95ca-411a-bf17-4aaf19482f34
 ---
 # bernoulli_distribution Class
 
@@ -14,30 +13,30 @@ Generates a Bernoulli distribution.
 
 ```cpp
 class bernoulli_distribution
-   {
+{
 public:
-   // types
-   typedef bool result_type;
-   struct param_type;
-
-   // constructors and reset functions
-   explicit bernoulli_distribution(double p = 0.5);
-   explicit bernoulli_distribution(const param_type& parm);
-   void reset();
-
-   // generating functions
-   template <class URNG>
-   result_type operator()(URNG& gen);
-   template <class URNG>
-   result_type operator()(URNG& gen, const param_type& parm);
-
-   // property functions
-   double p() const;
-   param_type param() const;
-   void param(const param_type& parm);
-   result_type min() const;
-   result_type max() const;
-   };
+    // types
+    typedef bool result_type;
+    struct param_type;
+
+    // constructors and reset functions
+    explicit bernoulli_distribution(double p = 0.5);
+    explicit bernoulli_distribution(const param_type& parm);
+    void reset();
+
+    // generating functions
+    template <class URNG>
+    result_type operator()(URNG& gen);
+    template <class URNG>
+    result_type operator()(URNG& gen, const param_type& parm);
+
+    // property functions
+    double p() const;
+    param_type param() const;
+    void param(const param_type& parm);
+    result_type min() const;
+    result_type max() const;
+};
 ```
 
 ### Parameters
@@ -161,6 +160,7 @@ The second constructor constructs an object whose stored parameters are initiali
 
 Contains the parameters of the distribution.
 
+```cpp
 struct param_type {
    typedef bernoulli_distribution distribution_type;
    param_type(double p = 0.5);
@@ -169,6 +169,7 @@ struct param_type {
    bool operator==(const param_type& right) const;
    bool operator!=(const param_type& right) const;
    };
+```
 
 ### Parameters
 
diff --git a/docs/standard-library/bit-functions.md b/docs/standard-library/bit-functions.md
index 9563428d96..a989e550d7 100644
--- a/docs/standard-library/bit-functions.md
+++ b/docs/standard-library/bit-functions.md
@@ -1,7 +1,7 @@
 ---
 title: "<bit> functions"
 description: "Functions to access, manipulate, and process individual bits and sequences of bits"
-ms.date: "08/28/2020"
+ms.date: 08/28/2020
 f1_keywords: ["bit/std::bit_cast", "bit/std::has_single_bit", "bit/std::bit_ceil", "bit/std::bit_floor", "bit/std::bit_width", "bit/std::rotl", "bit/std::rotr", "bit/std::countl_zero", "bit/std::countl_one","bit/std::countr_zero","bit/std::countr_one","bit/std::popcount"]
 helpviewer_keywords: ["std::bit [C++], bit_cast", "std::bit [C++], has_single_bit", "std::bit [C++], bit_ceil", "std::bit [C++], bit_floor", "std::bit [C++], bit_width", "std::bit [C++], rotl", "std::bit [C++], rotr", "std::bit [C++], countl_zero", "std::bit [C++], countl_one", "std::bit [C++], countr_zero", "std::bit [C++], countr_one", "std::bit [C++], popcount"]
 ---
@@ -24,7 +24,7 @@ The `<bit>` header includes the following non-member template functions:
 |[`rotl`](#rotl) | Compute the result of a bitwise left rotation. |
 |[`rotr`](#rotr) | Compute the result of a bitwise right rotation. |
 
-## <a name="bit_cast"></a>`bit_cast`
+## <a name="bit_cast"></a> `bit_cast`
 
 Copy a bit pattern from an object of type `From` to a new object of type `To`.
 
@@ -92,7 +92,7 @@ This function template is `constexpr` if and only if `To`, `From`, and the types
 - Not volatile-qualified
 - Have no non-static data member that is a reference type
 
-## <a name="bit_ceil"></a>`bit_ceil`
+## <a name="bit_ceil"></a> `bit_ceil`
 
 Find the smallest power of two greater than or equal to a value. For example, given `3`, returns `4`.
 
@@ -142,7 +142,7 @@ bit_ceil(0b0101) = 0b1000
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="bit_floor"></a>`bit_floor`
+## <a name="bit_floor"></a> `bit_floor`
 
 Find the largest power of two not greater than a value. For example, given `5`, returns `4`.
 
@@ -193,7 +193,7 @@ bit_floor(0b0101) = 0b0100
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="bit_width"></a>`bit_width`
+## <a name="bit_width"></a> `bit_width`
 
 Find the smallest number of bits needed to represent a value.
 
@@ -247,7 +247,7 @@ bit_width(8) = 4
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="countl_zero"></a>`countl_zero`
+## <a name="countl_zero"></a> `countl_zero`
 
 Count the number of consecutive bits set to zero, starting from the most significant bit.
 
@@ -300,7 +300,7 @@ countl_zero(0b10000000) = 0
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="countl_one"></a>`countl_one`
+## <a name="countl_one"></a> `countl_one`
 
 Count the number of consecutive bits set to one, starting from the most significant bit.
 
@@ -353,7 +353,7 @@ countl_one(0b11111111) = 8
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="countr_zero"></a>`countr_zero`
+## <a name="countr_zero"></a> `countr_zero`
 
 Count the number of consecutive bits set to zero, starting from the least significant bit.
 
@@ -407,7 +407,7 @@ countr_zero(0b10000000) = 7
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="countr_one"></a>`countr_one`
+## <a name="countr_one"></a> `countr_one`
 
 Count the number of consecutive bits set to one, starting from the least significant bit.
 
@@ -460,7 +460,7 @@ countr_one(0b11111111) = 8
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="has_single_bit"></a>`has_single_bit`
+## <a name="has_single_bit"></a> `has_single_bit`
 
 Check if a value has only one bit set.This is the same as testing whether a value is a power of two.
 
@@ -514,7 +514,7 @@ has_single_bit(0b1001) = false
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="popcount"></a>`popcount`
+## <a name="popcount"></a> `popcount`
 
 Count the number of bits set to one in an unsigned integer value.
 
@@ -573,7 +573,7 @@ popcount(0b1111) = 4
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="rotl"></a>`rotl`
+## <a name="rotl"></a> `rotl`
 
 Rotates the bits of  an unsigned integer value left the specified number of times. Bits that "fall out" of the leftmost bit are rotated into the rightmost bit.
 
@@ -635,7 +635,7 @@ rotl(0b00000001,-1) = 0b10000000
 
 This template function only participates in overload resolution if `T` is an unsigned integer type. For example: `unsigned int`, `unsigned long`, `unsigned short`, `unsigned char`, and so on.
 
-## <a name="rotr"></a>`rotr`
+## <a name="rotr"></a> `rotr`
 
 Rotates the bits of `value` right the specified number of times. Bits that 'fall out' of the rightmost bit are rotated back into the leftmost bit.
 
diff --git a/docs/standard-library/bitset-class.md b/docs/standard-library/bitset-class.md
index d5fbac7df4..a70a5b0f93 100644
--- a/docs/standard-library/bitset-class.md
+++ b/docs/standard-library/bitset-class.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: bitset Class"
 title: "bitset Class"
+description: "Learn more about: bitset Class"
 ms.date: 06/10/2022
 f1_keywords: ["bitset/std::bitset", "bitset/std::bitset::element_type", "bitset/std::bitset::all", "bitset/std::bitset::any", "bitset/std::bitset::count", "bitset/std::bitset::flip", "bitset/std::bitset::none", "bitset/std::bitset::reset", "bitset/std::bitset::set", "bitset/std::bitset::size", "bitset/std::bitset::test", "bitset/std::bitset::to_string", "bitset/std::bitset::to_ullong", "bitset/std::bitset::to_ulong", "bitset/std::bitset::reference"]
 helpviewer_keywords: ["std::bitset [C++]", "std::bitset [C++], element_type", "std::bitset [C++], all", "std::bitset [C++], any", "std::bitset [C++], count", "std::bitset [C++], flip", "std::bitset [C++], none", "std::bitset [C++], reset", "std::bitset [C++], set", "std::bitset [C++], size", "std::bitset [C++], test", "std::bitset [C++], to_string", "std::bitset [C++], to_ullong", "std::bitset [C++], to_ulong", "std::bitset [C++], reference"]
 ms.custom: devdivchpfy22
-
 ---
 # `bitset` class
 
diff --git a/docs/standard-library/cache-chunklist-class.md b/docs/standard-library/cache-chunklist-class.md
index 914921951d..e2de788bc7 100644
--- a/docs/standard-library/cache-chunklist-class.md
+++ b/docs/standard-library/cache-chunklist-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: cache_chunklist Class"
 title: "cache_chunklist Class"
-ms.date: "11/04/2016"
+description: "Learn more about: cache_chunklist Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::cache_chunklist", "allocators/stdext::cache_chunklist::allocate", "allocators/stdext::cache_chunklist::deallocate"]
 helpviewer_keywords: ["stdext::cache_chunklist", "stdext::cache_chunklist [C++], allocate", "stdext::cache_chunklist [C++], deallocate"]
-ms.assetid: af19eccc-4ae7-4a34-bbb2-81e397424cb9
 ---
 # cache_chunklist Class
 
@@ -64,8 +63,6 @@ The number of elements in the array to be allocated.
 
 A pointer to the allocated object.
 
-### Remarks
-
 ## <a name="cache_chunklist"></a> cache_chunklist::cache_chunklist
 
 Constructs an object of type `cache_chunklist`.
@@ -74,8 +71,6 @@ Constructs an object of type `cache_chunklist`.
 cache_chunklist();
 ```
 
-### Remarks
-
 ## <a name="deallocate"></a> cache_chunklist::deallocate
 
 Frees a specified number of objects from storage beginning at a specified position.
@@ -92,8 +87,6 @@ A pointer to the first object to be deallocated from storage.
 *count*\
 The number of objects to be deallocated from storage.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/cache-freelist-class.md b/docs/standard-library/cache-freelist-class.md
index 1df5612d0d..71faf8ebc0 100644
--- a/docs/standard-library/cache-freelist-class.md
+++ b/docs/standard-library/cache-freelist-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: cache_freelist Class"
 title: "cache_freelist Class"
-ms.date: "11/04/2016"
+description: "Learn more about: cache_freelist Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::cache_freelist", "allocators/stdext::cache_freelist::allocate", "allocators/stdext::cache_freelist::deallocate"]
 helpviewer_keywords: ["stdext::cache_freelist", "stdext::cache_freelist [C++], allocate", "stdext::cache_freelist [C++], deallocate"]
-ms.assetid: 840694de-36ba-470f-8dae-2b723d5a8cd9
 ---
 # cache_freelist Class
 
@@ -67,8 +66,6 @@ The number of elements in the array to be allocated.
 
 A pointer to the allocated object.
 
-### Remarks
-
 ## <a name="cache_freelist"></a> cache_freelist::cache_freelist
 
 Constructs an object of type `cache_freelist`.
@@ -77,8 +74,6 @@ Constructs an object of type `cache_freelist`.
 cache_freelist();
 ```
 
-### Remarks
-
 ## <a name="deallocate"></a> cache_freelist::deallocate
 
 Frees a specified number of objects from storage beginning at a specified position.
@@ -95,8 +90,6 @@ A pointer to the first object to be deallocated from storage.
 *count*\
 The number of objects to be deallocated from storage.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/cache-suballoc-class.md b/docs/standard-library/cache-suballoc-class.md
index 26c070fcad..12f111137d 100644
--- a/docs/standard-library/cache-suballoc-class.md
+++ b/docs/standard-library/cache-suballoc-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: cache_suballoc Class"
 title: "cache_suballoc Class"
-ms.date: "11/04/2016"
+description: "Learn more about: cache_suballoc Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::cache_suballoc", "allocators/stdext::cache_suballoc::allocate", "allocators/stdext::cache_suballoc::deallocate"]
 helpviewer_keywords: ["stdext::cache_suballoc", "stdext::cache_suballoc [C++], allocate", "stdext::cache_suballoc [C++], deallocate"]
-ms.assetid: 9ea9c5e9-1dcc-45d0-b3a7-a56a93d88898
 ---
 # cache_suballoc Class
 
@@ -64,8 +63,6 @@ The number of elements in the array to be allocated.
 
 A pointer to the allocated object.
 
-### Remarks
-
 ## <a name="cache_suballoc"></a> cache_suballoc::cache_suballoc
 
 Constructs an object of type `cache_suballoc`.
@@ -74,8 +71,6 @@ Constructs an object of type `cache_suballoc`.
 cache_suballoc();
 ```
 
-### Remarks
-
 ## <a name="deallocate"></a> cache_suballoc::deallocate
 
 Frees a specified number of objects from storage beginning at a specified position.
@@ -92,8 +87,6 @@ A pointer to the first object to be deallocated from storage.
 *count*\
 The number of objects to be deallocated from storage.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/char-traits-char-struct.md b/docs/standard-library/char-traits-char-struct.md
index 22aa1ee35d..fbdc3d0c80 100644
--- a/docs/standard-library/char-traits-char-struct.md
+++ b/docs/standard-library/char-traits-char-struct.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: char_traits<char> Struct"
 title: "char_traits<char> Struct"
-ms.date: "11/04/2016"
+description: "Learn more about: char_traits<char> Struct"
+ms.date: 11/04/2016
 f1_keywords: ["iosfwd/std::char_traits<char>", "char_traits<char >"]
 helpviewer_keywords: ["char_traits<char> class"]
-ms.assetid: abd9373a-77db-4031-bf4b-f8ac15087581
 ---
 # `char_traits<char>` Struct
 
@@ -23,4 +22,4 @@ Specialization allows the struct to take advantage of library functions that man
 
 ## Example
 
-See the typedefs and member functions of the class template [char_traits Class](../standard-library/char-traits-struct.md)
+See the typedefs and member functions of the class template [`char_traits`](../standard-library/char-traits-struct.md)
diff --git a/docs/standard-library/char-traits-struct.md b/docs/standard-library/char-traits-struct.md
index dcbd8702db..065c8cf7d2 100644
--- a/docs/standard-library/char-traits-struct.md
+++ b/docs/standard-library/char-traits-struct.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: char_traits Struct"
 title: "char_traits Struct"
-ms.date: "05/07/2019"
+description: "Learn more about: char_traits Struct"
+ms.date: 05/07/2019
 f1_keywords: ["iosfwd/std::char_traits", "iosfwd/std::char_traits::char_type", "iosfwd/std::char_traits::int_type", "iosfwd/std::char_traits::off_type", "iosfwd/std::char_traits::pos_type", "iosfwd/std::char_traits::state_type", "iosfwd/std::char_traits::assign", "iosfwd/std::char_traits::compare", "iosfwd/std::char_traits::copy", "iosfwd/std::char_traits::_Copy_s", "iosfwd/std::char_traits::eof", "iosfwd/std::char_traits::eq", "iosfwd/std::char_traits::eq_int_type", "iosfwd/std::char_traits::find", "iosfwd/std::char_traits::length", "iosfwd/std::char_traits::lt", "iosfwd/std::char_traits::move", "iosfwd/std::char_traits::_Move_s", "iosfwd/std::char_traits::not_eof", "iosfwd/std::char_traits::to_char_type", "iosfwd/std::char_traits::to_int_type"]
 helpviewer_keywords: ["char_traits struct", "char_traits class"]
-ms.assetid: 568e59f0-4521-4207-9223-9dcf6a16d620
 ---
 # char_traits Struct
 
@@ -1010,11 +1009,11 @@ A value of *_Ch* that cannot be represented as such yields an unspecified result
 
 The conversion operations [to_int_type](#to_int_type) and `to_char_type` are inverse to each other, so that:
 
-`to_int_type` ( `to_char_type` ( *x* ) ) == *x*
+`to_int_type`(`to_char_type`(*x*)) == *x*
 
 for any `int_type` *x* and
 
-`to_char_type` ( `to_int_type` ( *x* ) ) == *x*
+`to_char_type`(`to_int_type`(*x*)) == *x*
 
 for any `char_type` *x*.
 
@@ -1114,11 +1113,11 @@ The `int_type` character corresponding to the `char_type` character.
 
 The conversion operations `to_int_type` and [to_char_type](#to_char_type) are inverse to each other, so that:
 
-`to_int_type` ( `to_char_type` ( *x* ) ) == *x*
+`to_int_type`(`to_char_type`(*x*)) == *x*
 
 for any `int_type` *x*, and
 
-`to_char_type` ( `to_int_type` ( *x* ) ) == *x*
+`to_char_type`(`to_int_type`(*x*)) == *x*
 
 for any `char_type` *x*.
 
diff --git a/docs/standard-library/charconv-functions.md b/docs/standard-library/charconv-functions.md
index 296364799d..8f601eef05 100644
--- a/docs/standard-library/charconv-functions.md
+++ b/docs/standard-library/charconv-functions.md
@@ -236,6 +236,6 @@ int main()
 
 ## See also
 
-[\<charconv>](charconv.md)  
-[The shortest decimal string that round-trips](https://www.exploringbinary.com/the-shortest-decimal-string-that-round-trips-examples/)
+[\<charconv>](charconv.md)\
+[The shortest decimal string that round-trips](https://www.exploringbinary.com/the-shortest-decimal-string-that-round-trips-examples/)\
 [printf() format specifiers](..\c-runtime-library\format-specification-syntax-printf-and-wprintf-functions.md)
diff --git a/docs/standard-library/checked-iterators.md b/docs/standard-library/checked-iterators.md
index 719992a7af..3022398c42 100644
--- a/docs/standard-library/checked-iterators.md
+++ b/docs/standard-library/checked-iterators.md
@@ -1,29 +1,28 @@
 ---
-description: "Learn more about: Checked Iterators"
 title: "Checked Iterators"
-ms.date: "11/04/2016"
+description: "Learn more about: Checked Iterators"
+ms.date: 11/04/2016
 f1_keywords: ["_SECURE_SCL_THROWS"]
 helpviewer_keywords: ["Safe Libraries", "Safe Libraries, C++ Standard Library", "Safe C++ Standard Library", "iterators, checked", "checked iterators"]
-ms.assetid: cfc87df8-e3d9-403b-ab78-e9483247d940
 ---
 # Checked Iterators
 
-Checked iterators ensure that the bounds of your container are not overwritten. Checked iterators apply to both release builds and debug builds. For more information about how to use debug iterators when you compile in debug mode, see [Debug Iterator Support](../standard-library/debug-iterator-support.md).
+Checked iterators ensure that the bounds of your container are not overwritten. Checked iterators apply to both release builds and debug builds. For more information about how to use debug iterators when you compile in debug mode, see [Debug Iterator Support](debug-iterator-support.md).
 
 ## Remarks
 
-For information about how to disable warnings that are generated by checked iterators, see [_SCL_SECURE_NO_WARNINGS](../standard-library/scl-secure-no-warnings.md).
+For information about how to disable warnings that are generated by checked iterators, see [`_SCL_SECURE_NO_WARNINGS`](scl-secure-no-warnings.md).
 
-You can use the [\_ITERATOR\_DEBUG\_LEVEL](../standard-library/iterator-debug-level.md) preprocessor macro to enable or disable the checked iterators feature. If _ITERATOR_DEBUG_LEVEL is defined as 1 or 2, unsafe use of iterators causes a runtime error and the program is terminated. If defined as 0, checked iterators are disabled. By default, the value for _ITERATOR_DEBUG_LEVEL is 0 for release builds and 2 for debug builds.
+You can use the [`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md) preprocessor macro to enable or disable the checked iterators feature. If `_ITERATOR_DEBUG_LEVEL` is defined as 1 or 2, unsafe use of iterators causes a runtime error and the program is terminated. If defined as 0, checked iterators are disabled. By default, the value for `_ITERATOR_DEBUG_LEVEL` is 0 for release builds and 2 for debug builds.
 
 > [!IMPORTANT]
-> Older documentation and source code may refer to the [_SECURE_SCL](../standard-library/secure-scl.md) macro. Use _ITERATOR_DEBUG_LEVEL to control _SECURE_SCL. For more information, see [_ITERATOR_DEBUG_LEVEL](../standard-library/iterator-debug-level.md).
+> Older documentation and source code may refer to the [`_SECURE_SCL`](secure-scl.md) macro. Use `_ITERATOR_DEBUG_LEVEL` to control `_SECURE_SCL`. For more information, see [`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md).
 
-When _ITERATOR_DEBUG_LEVEL is defined as 1 or 2, these iterator checks are performed:
+When `_ITERATOR_DEBUG_LEVEL` is defined as 1 or 2, these iterator checks are performed:
 
-- All standard iterators (for example, [vector::iterator](../standard-library/vector-class.md#iterator)) are checked.
+- All standard iterators (for example, [`vector::iterator`](vector-class.md#iterator)) are checked.
 
-- If an output iterator is a checked iterator, calls to standard library functions such as [std::copy](../standard-library/algorithm-functions.md#copy) get checked behavior.
+- If an output iterator is a checked iterator, calls to standard library functions such as [`std::copy`](algorithm-functions.md#copy) get checked behavior.
 
 - If an output iterator is an unchecked iterator, calls to standard library functions cause compiler warnings.
 
@@ -31,26 +30,26 @@ When _ITERATOR_DEBUG_LEVEL is defined as 1 or 2, these iterator checks are perfo
 
 :::row:::
    :::column span="":::
-      &emsp;&emsp;[`basic_string::operator[]`](../standard-library/basic-string-class.md#op_at)\
-      &emsp;&emsp;[`bitset::operator[]`](../standard-library/bitset-class.md#op_at)\
-      &emsp;&emsp;[`deque::back`](../standard-library/deque-class.md#back)\
-      &emsp;&emsp;[`deque::front`](../standard-library/deque-class.md#front)
+      [`basic_string::operator[]`](basic-string-class.md#op_at)\
+      [`bitset::operator[]`](bitset-class.md#op_at)\
+      [`deque::back`](deque-class.md#back)\
+      [`deque::front`](deque-class.md#front)
    :::column-end:::
    :::column span="":::
-      [`deque::operator[]`](../standard-library/deque-class.md#op_at)\
-      [`list::back`](../standard-library/list-class.md#back)\
-      [`list::front`](../standard-library/list-class.md#front)\
-      [`queue::back`](../standard-library/queue-class.md#back)
+      [`deque::operator[]`](deque-class.md#op_at)\
+      [`list::back`](list-class.md#back)\
+      [`list::front`](list-class.md#front)\
+      [`queue::back`](queue-class.md#back)
    :::column-end:::
    :::column span="":::
-      [`queue::front`](../standard-library/queue-class.md#front)\
-      [`vector::back`](../standard-library/vector-class.md#back)\
-      [`vector::front`](../standard-library/vector-class.md#front)\
-      [`vector::operator[]`](../standard-library/vector-class.md#op_at)
+      [`queue::front`](queue-class.md#front)\
+      [`vector::back`](vector-class.md#back)\
+      [`vector::front`](vector-class.md#front)\
+      [`vector::operator[]`](vector-class.md#op_at)
    :::column-end:::
 :::row-end:::
 
-When _ITERATOR_DEBUG_LEVEL is defined as 0:
+When `_ITERATOR_DEBUG_LEVEL` is defined as 0:
 
 - All standard iterators are unchecked. Iterators can move beyond the container boundaries, which leads to undefined behavior.
 
@@ -60,11 +59,11 @@ When _ITERATOR_DEBUG_LEVEL is defined as 0:
 
 A checked iterator refers to an iterator that calls `invalid_parameter_handler` if you attempt to move past the boundaries of the container. For more information about `invalid_parameter_handler`, see [Parameter Validation](../c-runtime-library/parameter-validation.md).
 
-The iterator adaptors that support checked iterators are [checked_array_iterator Class](../standard-library/checked-array-iterator-class.md) and [unchecked_array_iterator Class](../standard-library/unchecked-array-iterator-class.md).
+The iterator adaptors that support checked iterators are [`checked_array_iterator` Class](checked-array-iterator-class.md) and [`unchecked_array_iterator` Class](unchecked-array-iterator-class.md).
 
 ## Examples
 
-When you compile by using _ITERATOR_DEBUG_LEVEL set to 1 or 2, a runtime error will occur if you attempt to access an element that is outside the bounds of the container by using the indexing operator of certain classes.
+When you compile by using `_ITERATOR_DEBUG_LEVEL` set to 1 or 2, a runtime error will occur if you attempt to access an element that is outside the bounds of the container by using the indexing operator of certain classes.
 
 ```cpp
 // checked_iterators_1.cpp
@@ -79,19 +78,19 @@ using namespace std;
 
 int main()
 {
-   vector<int> v;
-   v.push_back(67);
+    vector<int> v;
+    v.push_back(67);
 
-   int i = v[0];
-   cout << i << endl;
+    int i = v[0];
+    cout << i << endl;
 
-   i = v[1]; //triggers invalid parameter handler
+    i = v[1]; //triggers invalid parameter handler
 }
 ```
 
 This program prints "67" then pops up an assertion failure dialog box with additional information about the failure.
 
-Similarly, when you compile by using _ITERATOR_DEBUG_LEVEL set to 1 or 2, a runtime error will occur if you attempt to access an element by using `front` or `back` in container classes when the container is empty.
+Similarly, when you compile by using `_ITERATOR_DEBUG_LEVEL` set to 1 or 2, a runtime error will occur if you attempt to access an element by using `front` or `back` in container classes when the container is empty.
 
 ```cpp
 // checked_iterators_2.cpp
@@ -105,15 +104,15 @@ using namespace std;
 
 int main()
 {
-   vector<int> v;
+    vector<int> v;
 
-   int& i = v.front(); // triggers invalid parameter handler
+    int& i = v.front(); // triggers invalid parameter handler
 }
 ```
 
 This program pops up an assertion failure dialog box with additional information about the failure.
 
-The following code demonstrates various iterator use-case scenarios with comments about each. By default, _ITERATOR_DEBUG_LEVEL is set to 2 in Debug builds, and to 0 in Retail builds.
+The following code demonstrates various iterator use-case scenarios with comments about each. By default, `_ITERATOR_DEBUG_LEVEL` is set to 2 in Debug builds, and to 0 in Retail builds.
 
 ```cpp
 // checked_iterators_3.cpp
@@ -134,7 +133,8 @@ void print(const string& s, const C& c)
 {
     cout << s;
 
-    for (const auto& e : c) {
+    for (const auto& e : c)
+    {
         cout << e << " ";
     }
 
@@ -219,5 +219,5 @@ a8: 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120
 
 ## See also
 
-[C++ Standard Library Overview](../standard-library/cpp-standard-library-overview.md)\
-[Debug Iterator Support](../standard-library/debug-iterator-support.md)
+[C++ Standard Library Overview](cpp-standard-library-overview.md)\
+[Debug Iterator Support](debug-iterator-support.md)
diff --git a/docs/standard-library/chrono-functions.md b/docs/standard-library/chrono-functions.md
index 5f4e4a2587..e1812b1d34 100644
--- a/docs/standard-library/chrono-functions.md
+++ b/docs/standard-library/chrono-functions.md
@@ -563,7 +563,7 @@ int main()
 
 ### Remarks
 
-**7)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev `if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null.
+**7)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev` if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null.
 
 **12)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev` if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null.
 
@@ -674,7 +674,7 @@ In ISO 8601, weeks begin with Monday. The first week of the year must include Ja
 | `utc_time` | Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
 | [`weekday`](weekday-class.md) | a, A, u, w |
 | [`weekday_indexed`](weekdayindexed-class.md) | a, A, u, w |
-| [`weekday_last`]() | a, A, u, w |
+| [`weekday_last`](weekdaylast-class.md) | a, A, u, w |
 | [`year`](year-class.md) | Y, y, C |
 | `year_month` | Y, y, B, g, G, h, C, b, m |
 | `year_month_day` | D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
@@ -987,4 +987,4 @@ Unless `ToDuration` is a specialization of [`duration`](../standard-library/dura
 [`chrono` operators](./chrono-operators.md)\
 [`duration` class](./duration-class.md)\
 [`time_point` class](./time-point-class.md)\
-[`time_zone` class](./time-zone-class.md)
\ No newline at end of file
+[`time_zone` class](./time-zone-class.md)
diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md
index b585b8ad91..64931b7607 100644
--- a/docs/standard-library/chrono-operators.md
+++ b/docs/standard-library/chrono-operators.md
@@ -668,7 +668,7 @@ The right object to compare.
 1\) Returns **`true`** if the number of ticks for the type common to *`Left`* and *`Right`* are equal. Otherwise, returns **`false`**.\
 2\) Returns **`true`** if *`Left`* and *`Right`* represent the same point in time. Otherwise, returns **`false`**.\
 3-17\) Returns **`true`** if *`Left`* and *`Right`* have the same value. Otherwise, returns **`false`**.\
-18\) Returns **`true`** if `Left.name() == Right.name()`. Otherwise, returns `*false*`.\
+18\) Returns **`true`** if `Left.name() == Right.name()`. Otherwise, returns **`false`**.\
 19\) Returns **`true`** if `Left.get_time_zone() == _Right.get_time_zone() && Left.get_sys_time() == Right.get_sys_time();`
 
 ## <a name="op_gt"></a> `operator>`
diff --git a/docs/standard-library/clock-time-conversion-struct.md b/docs/standard-library/clock-time-conversion-struct.md
index a014ea0308..188c50e8ea 100644
--- a/docs/standard-library/clock-time-conversion-struct.md
+++ b/docs/standard-library/clock-time-conversion-struct.md
@@ -94,14 +94,14 @@ utc_time<Duration> operator()(const sys_time<Duration>& t) const;
 
 ### Parameters
 
-**`t`**
+*`t`*\
 The `time_point` to convert.
 
 ### Return value
 
 1-3\) Identity conversions. No conversion. Returns `t` without any changes.\
 4\) Returns `utc_clock::to_sys(t)`.\
-5\) Returns` utc_clock::from_sys(t)`.
+5\) Returns `utc_clock::from_sys(t)`.
 
 ### Deduction guides
 
diff --git a/docs/standard-library/codecvt-class.md b/docs/standard-library/codecvt-class.md
index 72eeb2d1cb..43d007c8bb 100644
--- a/docs/standard-library/codecvt-class.md
+++ b/docs/standard-library/codecvt-class.md
@@ -4,7 +4,6 @@ description: "describes the Microsoft C runtime `codecvt` class API"
 ms.date: "11/09/2020"
 f1_keywords: ["xlocale/std::codecvt", "xlocale/std::codecvt::extern_type", "xlocale/std::codecvt::intern_type", "xlocale/std::codecvt::state_type", "xlocale/std::codecvt::always_noconv", "xlocale/std::codecvt::do_always_noconv", "xlocale/std::codecvt::do_encoding", "xlocale/std::codecvt::do_in", "xlocale/std::codecvt::do_length", "xlocale/std::codecvt::do_max_length", "xlocale/std::codecvt::do_out", "xlocale/std::codecvt::do_unshift", "xlocale/std::codecvt::encoding", "xlocale/std::codecvt::in", "xlocale/std::codecvt::length", "xlocale/std::codecvt::max_length", "xlocale/std::codecvt::out", "xlocale/std::codecvt::unshift"]
 helpviewer_keywords: ["std::codecvt [C++]", "std::codecvt [C++], extern_type", "std::codecvt [C++], intern_type", "std::codecvt [C++], state_type", "std::codecvt [C++], always_noconv", "std::codecvt [C++], do_always_noconv", "std::codecvt [C++], do_encoding", "std::codecvt [C++], do_in", "std::codecvt [C++], do_length", "std::codecvt [C++], do_max_length", "std::codecvt [C++], do_out", "std::codecvt [C++], do_unshift", "std::codecvt [C++], encoding", "std::codecvt [C++], in", "std::codecvt [C++], length", "std::codecvt [C++], max_length", "std::codecvt [C++], out", "std::codecvt [C++], unshift"]
-ms.assetid: 37d3efa1-2b7f-42b6-b04f-7a972c8c2c86
 ---
 # `codecvt` Class
 
@@ -228,7 +227,7 @@ virtual result do_in(
     const Byte*& next1,
     CharType* first2,
     CharType* last2,
-    CharType*& next2,) const;
+    CharType*& next2) const;
 ```
 
 ### Parameters
@@ -517,7 +516,7 @@ result in(
     const Byte*& next1,
     CharType* first2,
     CharType* last2,
-    CharType*& next2,) const;
+    CharType*& next2) const;
 ```
 
 ### Parameters
diff --git a/docs/standard-library/collate-byname-class.md b/docs/standard-library/collate-byname-class.md
index 3c79d0aaad..c63a9c2526 100644
--- a/docs/standard-library/collate-byname-class.md
+++ b/docs/standard-library/collate-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: collate_byname Class"
 title: "collate_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: collate_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["locale/std::collate_byname"]
 helpviewer_keywords: ["collate_byname class"]
-ms.assetid: 3dc380df-867c-4763-b60e-ba62a8e63ca7
 ---
 # collate_byname Class
 
@@ -40,7 +39,7 @@ An initial reference count.
 
 ## Remarks
 
-The class template describes an object that can serve as a [locale facet](../standard-library/locale-class.md#facet_class) of type [collate](../standard-library/collate-class.md#collate)\<CharType>. Its behavior is determined by the [named](../standard-library/locale-class.md#name) locale *_Locname*. Each constructor initializes its base object with [collate](../standard-library/collate-class.md#collate)\<CharType>( `_Refs`).
+The class template describes an object that can serve as a [locale facet](../standard-library/locale-class.md#facet_class) of type [collate](../standard-library/collate-class.md#collate)\<CharType>. Its behavior is determined by the [named](../standard-library/locale-class.md#name) locale *_Locname*. Each constructor initializes its base object with [collate](../standard-library/collate-class.md#collate)\<CharType>(`_Refs`).
 
 ## Requirements
 
diff --git a/docs/standard-library/collate-class.md b/docs/standard-library/collate-class.md
index fd516200e4..b391fc83bc 100644
--- a/docs/standard-library/collate-class.md
+++ b/docs/standard-library/collate-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: collate Class"
 title: "collate Class"
-ms.date: "11/04/2016"
+description: "Learn more about: collate Class"
+ms.date: 11/04/2016
 f1_keywords: ["locale/std::collate", "locale/std::collate::char_type", "locale/std::collate::string_type", "locale/std::collate::compare", "locale/std::collate::do_compare", "locale/std::collate::do_hash", "locale/std::collate::do_transform", "locale/std::collate::hash", "locale/std::collate::transform"]
 helpviewer_keywords: ["std::collate [C++]", "std::collate [C++], char_type", "std::collate [C++], string_type", "std::collate [C++], compare", "std::collate [C++], do_compare", "std::collate [C++], do_hash", "std::collate [C++], do_transform", "std::collate [C++], hash", "std::collate [C++], transform"]
-ms.assetid: 92168798-9628-4a2e-be6e-fa62dcd4d6a6
 ---
 # collate Class
 
@@ -142,7 +141,7 @@ The member function returns:
 
 The first sequence compares less if it has the smaller element in the earliest unequal pair in the sequences, or, if no unequal pairs exist, but the first sequence is shorter.
 
-The member function returns [do_compare](#do_compare)( `first1`, `last1`, `first2`, `last2`).
+The member function returns [do_compare](#do_compare)(`first1`, `last1`, `first2`, `last2`).
 
 ### Example
 
@@ -290,7 +289,7 @@ A hash value of type **`long`** for the sequence.
 
 ### Remarks
 
-The member function returns [do_hash](#do_hash)( `first`, `last`).
+The member function returns [do_hash](#do_hash)(`first`, `last`).
 
 A hash value can be useful, for example, in distributing sequences pseudo-randomly across an array of lists.
 
diff --git a/docs/standard-library/complex-double.md b/docs/standard-library/complex-double.md
index 386c66d380..a2dd59629c 100644
--- a/docs/standard-library/complex-double.md
+++ b/docs/standard-library/complex-double.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: complex<double>"
 title: "complex<double>"
-ms.date: "11/04/2016"
+description: "Learn more about: complex<double>"
+ms.date: 11/04/2016
 f1_keywords: ["complex/std::complex<double>"]
 helpviewer_keywords: ["complex<double> function"]
-ms.assetid: 0d0b9d2a-9b9b-410b-82a0-86b6df127e47
 ---
 # `complex<double>`
 
@@ -29,13 +28,13 @@ constexpr explicit complex(const complex<long double>& complexNum);
 
 ### Parameters
 
-*RealVal*\
+*`RealVal`*\
 The value of type **`double`** for the real part of the complex number being constructed.
 
-*ImagVal*\
+*`ImagVal`*\
 The value of type **`double`** for the imaginary part of the complex number being constructed.
 
-*complexNum*\
+*`complexNum`*\
 The complex number of type **`float`** or of type **`long double`** whose real and imaginary parts are used to initialize a complex number of type **`double`** being constructed.
 
 ## Return Value
@@ -46,7 +45,7 @@ A complex number of type **`double`**.
 
 The explicit specialization of the class template complex to a complex class of type **`double`** differs from the class template only in the constructors it defines. The conversion from **`float`** to **`double`** is allowed to be implicit, but the conversion from **`long double`** to **`double`** is required to be **`explicit`**. The use of **`explicit`** rules out the initiation with type conversion using assignment syntax.
 
-For more information on the class template `complex`, see [complex Class](../standard-library/complex-class.md). For a list of members of the class template `complex`, see .
+For more information on the class template `complex` and its members, see [`complex` Class](complex-class.md).
 
 ## Example
 
@@ -105,11 +104,11 @@ arg ( c3 ) = 0.896055 radians, which is 51.3402 degrees.
 
 ## Requirements
 
-**Header**: \<complex>
+**Header**: `<complex>`
 
-**Namespace:** std
+**Namespace:** `std`
 
 ## See also
 
-[complex Class](../standard-library/complex-class.md)\
-[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)
+[`complex` Class](complex-class.md)\
+[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md)
diff --git a/docs/standard-library/complex-float.md b/docs/standard-library/complex-float.md
index d6672b4dfb..3a2537bc63 100644
--- a/docs/standard-library/complex-float.md
+++ b/docs/standard-library/complex-float.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: complex<float>"
 title: "complex<float>"
-ms.date: "11/04/2016"
+description: "Learn more about: complex<float>"
+ms.date: 11/04/2016
 f1_keywords: ["complex/std::complex<float>"]
 helpviewer_keywords: ["complex<float> function"]
-ms.assetid: 1178eb1e-39bd-4017-89cd-aea95f813939
 ---
 # `complex<float>`
 
@@ -34,13 +33,13 @@ constexpr complex(
 
 ### Parameters
 
-*_RealVal*\
+*`_RealVal`*\
 The value of type **`float`** for the real part of the complex number being constructed.
 
-*_ImagVal*\
+*`_ImagVal`*\
 The value of type **`float`** for the imaginary part of the complex number being constructed.
 
-*complexNum*\
+*`complexNum`*\
 The complex number of type **`double`** or of type **`long double`** whose real and imaginary parts are used to initialize a complex number of type **`float`** being constructed.
 
 ## Return Value
@@ -51,7 +50,7 @@ A complex number of type **`float`**.
 
 The explicit specialization of the class template complex to a complex class of type **`float`** differs from the class template only in the constructors it defines. The conversion from **`float`** to **`double`** is allowed to be implicit, but the less safe conversion from **`float`** to **`long double`** is required to be **`explicit`**. The use of **`explicit`** rules out the initiation with type conversion using assignment syntax.
 
-For more information on the class template `complex`, see [complex Class](../standard-library/complex-class.md). For a list of members of the class template `complex`, see .
+For more information on the class template `complex` and its members, see [`complex` Class](complex-class.md).
 
 ## Example
 
@@ -111,11 +110,11 @@ arg ( c3 ) = 0.927295 radians, which is 53.1301 degrees.
 
 ## Requirements
 
-**Header**: \<complex>
+**Header**: `<complex>`
 
-**Namespace:** std
+**Namespace:** `std`
 
 ## See also
 
-[complex Class](../standard-library/complex-class.md)\
-[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)
+[`complex` Class](complex-class.md)\
+[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md)
diff --git a/docs/standard-library/complex-long-double.md b/docs/standard-library/complex-long-double.md
index b84606143b..1ef6688847 100644
--- a/docs/standard-library/complex-long-double.md
+++ b/docs/standard-library/complex-long-double.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: complex<long double>"
 title: "complex<long double>"
-ms.date: "11/04/2016"
+description: "Learn more about: complex<long double>"
+ms.date: 11/04/2016
 f1_keywords: ["std::complex<long double>", "complex<long double>", "std.complex<long double>"]
 helpviewer_keywords: ["complex<long double> function"]
-ms.assetid: 37591991-b385-46e9-b727-d534dbc10432
 ---
 # `complex<long double>`
 
@@ -29,13 +28,13 @@ complex(
 
 ### Parameters
 
-*_RealVal*\
+*`_RealVal`*\
 The value of type **`long double`** for the real part of the complex number being constructed.
 
-*_ImagVal*\
+*`_ImagVal`*\
 The value of type **`long double`** for the imaginary part of the complex number being constructed.
 
-*complexNum*\
+*`complexNum`*\
 The complex number of type **`double`** or of type **`float`** whose real and imaginary parts are used to initialize a complex number of type **`long double`** being constructed.
 
 ## Return Value
@@ -46,7 +45,7 @@ A complex number of type **`long double`**.
 
 The explicit specialization of the class template `complex` to a complex class of type **`long double`** differs from the class template only in the constructors it defines. The conversion from **`long double`** to **`float`** is allowed to be implicit, but the conversion from **`double`** to **`long double`** is required to be **`explicit`**. The use of **`explicit`** rules out the initiation with type conversion using assignment syntax.
 
-For more information on the class template `complex` and its members, see [complex Class](../standard-library/complex-class.md).
+For more information on the class template `complex` and its members, see [`complex` Class](complex-class.md).
 
 **Microsoft-specific**: The **`long double`** and **`double`** types have the same representation, but are distinct types. For more information, see [Built-in types](../cpp/fundamental-types-cpp.md).
 
@@ -108,11 +107,11 @@ arg( c3 ) = 0.927295 radians, which is 53.1301 degrees.
 
 ## Requirements
 
-**Header**: \<complex>
+**Header**: `<complex>`
 
-**Namespace:** std
+**Namespace:** `std`
 
 ## See also
 
-[complex Class](../standard-library/complex-class.md)\
-[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)
+[`complex` Class](complex-class.md)\
+[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md)
diff --git a/docs/standard-library/condition-variable-enums.md b/docs/standard-library/condition-variable-enums.md
index 2f2e3e650b..23501c7ec3 100644
--- a/docs/standard-library/condition-variable-enums.md
+++ b/docs/standard-library/condition-variable-enums.md
@@ -1,17 +1,21 @@
 ---
-description: "Learn more about: <condition_variable> enums"
 title: "<condition_variable> enums"
-ms.date: "11/04/2016"
+description: "Learn more about: <condition_variable> enums"
+ms.date: 11/04/2016
 f1_keywords: ["condition_variable/std::cv_status"]
-ms.assetid: f261ad79-e25b-4afa-9f8a-909ce697e0d8
 ---
 # `<condition_variable>` enums
 
-## <a name="cv_status"></a> cv_status
+The `<condition_variable>` header provides the following enums:
+
+## <a name="cv_status"></a> `cv_status`
 
-Supplies symbolic names for the return values of the methods of class template [condition_variable](../standard-library/condition-variable-class.md).
+Supplies symbolic names for the return values of the methods of class template [`condition_variable`](condition-variable-class.md).
 
-class cv_status {
-   no_timeout
-   timeout
+```cpp
+enum class cv_status
+{
+    no_timeout,
+    timeout
 };
+```
diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md
index 42ef673a99..a0eaf3e463 100644
--- a/docs/standard-library/cpp-standard-library-header-files.md
+++ b/docs/standard-library/cpp-standard-library-header-files.md
@@ -1,9 +1,8 @@
 ---
 title: "C++ standard library header files"
 description: "C++ standard library header files, categorized"
-ms.date: "08/31/2020"
+ms.date: 08/31/2020
 helpviewer_keywords: ["header files, C++ Standard Library", "C++ Standard Library, header files"]
-ms.assetid: e7bf497a-0f63-48d0-9b54-cb0eef4073c4
 ---
 # C++ standard library header files
 
@@ -15,26 +14,26 @@ Header files for the C++ standard library and extensions, by category.
 
 | Category | Headers |
 | - | - |
-| [Algorithms](./algorithms.md) | [`<algorithm>`](algorithm.md), [`<cstdlib>`](cstdlib.md), [`<numeric>`](numeric.md) |
+| [Algorithms](algorithms.md) | [`<algorithm>`](algorithm.md), [`<cstdlib>`](cstdlib.md), [`<numeric>`](numeric.md) |
 | Atomic operations |  [`<atomic>`](atomic.md)<sup>11</sup> |
 | C library wrappers | [`<cassert>`](cassert.md), [`<ccomplex>`](ccomplex.md)<sup>11 a b</sup>, [`<cctype>`](cctype.md), [`<cerrno>`](cerrno.md), [`<cfenv>`](cfenv.md)<sup>11</sup>, [`<cfloat>`](cfloat.md), [`<cinttypes>`](cinttypes.md)<sup>11</sup>, [`<ciso646>`](ciso646.md)<sup>b</sup>, [`<climits>`](climits.md), [`<clocale>`](clocale.md), [`<cmath>`](cmath.md), [`<csetjmp>`](csetjmp.md), [`<csignal>`](csignal.md), [`<cstdalign>`](cstdalign.md)<sup>11 a b</sup>, [`<cstdarg>`](cstdarg.md), [`<cstdbool>`](cstdbool.md)<sup>11 a b</sup>, [`<cstddef>`](cstddef.md), [`<cstdint>`](cstdint.md)<sup>11</sup>, [`<cstdio>`](cstdio.md), [`<cstdlib>`](cstdlib.md), [`<cstring>`](cstring.md), [`<ctgmath>`](ctgmath.md)<sup>11 a b</sup>, [`<ctime>`](ctime.md), [`<cuchar>`](cuchar.md)<sup>11</sup>, [`<cwchar>`](cwchar.md), [`<cwctype>`](cwctype.md) |
 | Concepts | `<concepts>`<sup>20</sup> |
-| [Containers](./stl-containers.md) | |
+| [Containers](stl-containers.md) | |
 | Sequence containers | [`<array>`](array.md)<sup>11</sup>, [`<deque>`](deque.md), [`<forward_list>`](forward-list.md)<sup>11</sup>, [`<list>`](list.md), [`<vector>`](vector.md) |
 | Ordered associative containers| [`<map>`](map.md), [`<set>`](set.md) |
 | Unordered associative containers | [`<unordered_map>`](unordered-map.md)<sup>11</sup>, [`<unordered_set>`](unordered-set.md)<sup>11</sup> |
 | Container adaptors | [`<queue>`](queue.md), [`<stack>`](stack.md) |
 | Container views | [`<span>`](span.md)<sup>20</sup> |
 | [Errors and exception handling](../cpp/errors-and-exception-handling-modern-cpp.md) | [`<cassert>`](cassert.md), [`<exception>`](exception.md), [`<stdexcept>`](stdexcept.md), [`<system_error>`](system-error.md)<sup>11</sup> |
-| General utilities | `<any>`<sup>17</sup>, [`<bit>`](bit.md)<sup>20</sup>, [`<bitset>`](bitset.md), [`<cstdlib>`](cstdlib.md), `<execution>`<sup>17</sup>, [`<functional>`](functional.md), [`<memory>`](memory.md), `<memory_resource>`<sup>17</sup>, `<optional>`<sup>17</sup>, [`<ratio>`](ratio.md)<sup>11</sup>, [`<scoped_allocator>`](scoped-allocator.md)<sup>11</sup>, [`<tuple>`](tuple.md)<sup>11</sup>, [`<type_traits>`](type-traits.md)<sup>11</sup>, [`<typeindex>`](typeindex.md)<sup>11</sup>, [`<utility>`](utility.md), `<variant>`<sup>17</sup> |
+| General utilities | [`<any>`](any.md)<sup>17</sup>, [`<bit>`](bit.md)<sup>20</sup>, [`<bitset>`](bitset.md), [`<cstdlib>`](cstdlib.md), [`<execution>`](execution.md)<sup>17</sup>, [`<functional>`](functional.md), [`<memory>`](memory.md), [`<memory_resource>`](memory-resource.md)<sup>17</sup>, [`<optional>`](optional.md)<sup>17</sup>, [`<ratio>`](ratio.md)<sup>11</sup>, [`<scoped_allocator>`](scoped-allocator.md)<sup>11</sup>, [`<tuple>`](tuple.md)<sup>11</sup>, [`<type_traits>`](type-traits.md)<sup>11</sup>, [`<typeindex>`](typeindex.md)<sup>11</sup>, [`<utility>`](utility.md), [`<variant>`](variant.md)<sup>17</sup> |
 | [I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md) | [`<cinttypes>`](cinttypes.md)<sup>11</sup>, [`<cstdio>`](cstdio.md), [`<filesystem>`](filesystem.md)<sup>17</sup>, [`<fstream>`](fstream.md), [`<iomanip>`](iomanip.md), [`<ios>`](ios.md), [`<iosfwd>`](iosfwd.md), [`<iostream>`](iostream.md), [`<istream>`](istream.md), [`<ostream>`](ostream.md), [`<sstream>`](sstream.md), [`<streambuf>`](streambuf.md), [`<strstream>`](strstream.md)<sup>c</sup>, `<syncstream>`<sup>20</sup> |
 | Iterators | [`<iterator>`](iterator.md) |
 | Language support | [`<cfloat>`](cfloat.md), [`<climits>`](climits.md), [`<codecvt>`](codecvt.md)<sup>11 a</sup>, `<compare>`<sup>20</sup>, `<contract>`<sup>20</sup>, `<coroutine>`<sup>20</sup>, [`<csetjmp>`](csetjmp.md), [`<csignal>`](csignal.md), [`<cstdarg>`](cstdarg.md), [`<cstddef>`](cstddef.md), [`<cstdint>`](cstdint.md)<sup>11</sup>, [`<cstdlib>`](cstdlib.md), [`<exception>`](exception.md), [`<initializer_list>`](initializer-list.md)<sup>11</sup>, [`<limits>`](limits.md), [`<new>`](new.md), [`<typeinfo>`](typeinfo.md), `<version>`<sup>20</sup> |
 | Localization | [`<clocale>`](clocale.md), [`<codecvt>`](codecvt.md)<sup>11 a</sup>, [`<cvt/wbuffer>`](cvt-wbuffer.md), [`<cvt/wstring>`](cvt-wstring.md), [`<locale>`](locale.md) |
-| Math and numerics | `<bit>`<sup>20</sup>, [`<cfenv>`](cfenv.md)<sup>11</sup>, [`<cmath>`](cmath.md), [`<complex>`](complex.md), [`<cstdlib>`](cstdlib.md), [`<limits>`](limits.md), [`<numeric>`](numeric.md), [`<random>`](random.md)<sup>11</sup>, [`<ratio>`](ratio.md)<sup>11</sup>, [`<valarray>`](valarray.md) |
-| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [`<allocators>`](allocators-header.md), [`<memory>`](memory.md), `<memory_resource>`<sup>17</sup>, [`<new>`](new.md), [`<scoped_allocator>`](scoped-allocator.md)<sup>11</sup> |
+| Math and numerics | [`<bit>`](bit.md)<sup>20</sup>, [`<cfenv>`](cfenv.md)<sup>11</sup>, [`<cmath>`](cmath.md), [`<complex>`](complex.md), [`<cstdlib>`](cstdlib.md), [`<limits>`](limits.md), [`<numeric>`](numeric.md), [`<random>`](random.md)<sup>11</sup>, [`<ratio>`](ratio.md)<sup>11</sup>, [`<valarray>`](valarray.md) |
+| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [`<allocators>`](allocators-header.md), [`<memory>`](memory.md), [`<memory_resource>`](memory-resource.md)<sup>17</sup>, [`<new>`](new.md), [`<scoped_allocator>`](scoped-allocator.md)<sup>11</sup> |
 | Multithreading | [`<atomic>`](atomic.md)<sup>11</sup>, [`<condition_variable>`](condition-variable.md)<sup>11</sup>, [`<future>`](future.md)<sup>11</sup>, [`<mutex>`](mutex.md)<sup>11</sup>, [`<shared_mutex>`](shared-mutex.md)<sup>14</sup>, [`<thread>`](thread.md)<sup>11</sup> |
-| Ranges | `<ranges>`<sup>20</sup> |
+| Ranges | [`<ranges>`](ranges.md)<sup>20</sup> |
 | Regular expressions | [`<regex>`](regex.md)<sup>11</sup> |
 | Strings and character data | [`<charconv>`](charconv.md)<sup>17</sup>, [`<cctype>`](cctype.md), [`<cstdlib>`](cstdlib.md), [`<cstring>`](cstring.md), [`<cuchar>`](cuchar.md)<sup>11</sup>, [`<cwchar>`](cwchar.md), [`<cwctype>`](cwctype.md), [`<regex>`](regex.md)<sup>11</sup>, [`<string>`](string.md), [`<string_view>`](string-view.md)<sup>17</sup> |
 | Time | [`<chrono>`](chrono.md)<sup>11</sup>, [`<ctime>`](ctime.md) |
@@ -53,9 +52,9 @@ Header files for the C++ standard library and extensions, by category.
 
 |Category|Headers|
 |-|-|
-|[Algorithms](./algorithms.md)|[`<algorithm>`](algorithm.md)|
+|[Algorithms](algorithms.md)|[`<algorithm>`](algorithm.md)|
 |C library wrappers|[`<cassert>`](cassert.md), [`<cctype>`](cctype.md), [`<cerrno>`](cerrno.md), [`<cfenv>`](cfenv.md), [`<cfloat>`](cfloat.md), [`<cinttypes>`](cinttypes.md), [`<ciso646>`](ciso646.md), [`<climits>`](climits.md), [`<clocale>`](clocale.md), [`<cmath>`](cmath.md), [`<csetjmp>`](csetjmp.md), [`<csignal>`](csignal.md), [`<cstdarg>`](cstdarg.md), [`<cstdbool>`](cstdbool.md), [`<cstddef>`](cstddef.md), [`<cstdint>`](cstdint.md), [`<cstdio>`](cstdio.md), [`<cstdlib>`](cstdlib.md), [`<cstring>`](cstring.md), [`<ctgmath>`](ctgmath.md), [`<ctime>`](ctime.md), [`<cwchar>`](cwchar.md), [`<cwctype>`](cwctype.md)|
-|[Containers](./stl-containers.md)||
+|[Containers](stl-containers.md)||
 |Sequence containers|[`<array>`](array.md), [`<deque>`](deque.md), [`<forward_list>`](forward-list.md), [`<list>`](list.md), [`<vector>`](vector.md)|
 |Ordered associative containers| [`<map>`](map.md), [`<set>`](set.md)|
 |Unordered associative containers|[`<unordered_map>`](unordered-map.md), [`<unordered_set>`](unordered-set.md)|
diff --git a/docs/standard-library/cpp-standard-library-reference.md b/docs/standard-library/cpp-standard-library-reference.md
index acc476cecf..6ae574d37e 100644
--- a/docs/standard-library/cpp-standard-library-reference.md
+++ b/docs/standard-library/cpp-standard-library-reference.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: C++ Standard Library Reference (STL)"
 title: "C++ Standard Library Reference"
-ms.date: "3/5/2021"
+description: "Learn more about: C++ Standard Library Reference (STL)"
+ms.date: 3/5/2021
 helpviewer_keywords: ["C++ Standard Library, reference", "C++ Standard Library", "template libraries", "libraries, Standard C++", "Microsoft standard template library, reference", "Microsoft STL, reference"]
 ---
 
@@ -18,11 +18,11 @@ From a historical perspective, "STL" originally referred to the Standard Templat
 
 ## In this section
 
-[C++ Standard Library overview](../standard-library/cpp-standard-library-overview.md)
+[C++ Standard Library overview](cpp-standard-library-overview.md)\
 Provides an overview of the Microsoft implementation of the C++ Standard Library.
 
-[`iostream` programming](../standard-library/iostream-programming.md)
+[`iostream` programming](iostream-programming.md)\
 Provides an overview of `iostream` programming.
 
-[Header files reference](../standard-library/cpp-standard-library-header-files.md)
+[Header files reference](cpp-standard-library-header-files.md)\
 Provides links to reference topics about the C++ Standard Library header files, with code examples.
diff --git a/docs/standard-library/ctype-byname-class.md b/docs/standard-library/ctype-byname-class.md
index f8c4a59667..b959d0f601 100644
--- a/docs/standard-library/ctype-byname-class.md
+++ b/docs/standard-library/ctype-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: ctype_byname Class"
 title: "ctype_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: ctype_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocale/std::ctype_byname"]
 helpviewer_keywords: ["ctype_byname class"]
-ms.assetid: a5cec021-a1f8-425f-8757-08e6f064b604
 ---
 # ctype_byname Class
 
@@ -33,7 +32,7 @@ protected:
 
 ## Remarks
 
-Its behavior is determined by the named locale `_Locname`. Each constructor initializes its base object with [ctype](../standard-library/ctype-class.md)\<CharType>( `_Refs`) or the equivalent for base class `ctype<char>`.
+Its behavior is determined by the named locale `_Locname`. Each constructor initializes its base object with [ctype](../standard-library/ctype-class.md)\<CharType>(`_Refs`) or the equivalent for base class `ctype<char>`.
 
 ## Requirements
 
diff --git a/docs/standard-library/ctype-char-class.md b/docs/standard-library/ctype-char-class.md
index 32beff1c35..8a0c452ec9 100644
--- a/docs/standard-library/ctype-char-class.md
+++ b/docs/standard-library/ctype-char-class.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: ctype<char> Class"
 title: "ctype<char> Class"
-ms.date: "11/04/2016"
+description: "Learn more about: ctype<char> Class"
+ms.date: 11/04/2016
 f1_keywords: ["ctype<char>", "locale/std::ctype<char>"]
 helpviewer_keywords: ["ctype<char> class"]
-ms.assetid: ee30acb4-a743-405e-b3d4-13602092da84
 ---
 # `ctype<char>` Class
 
-The class is an explicit specialization of class template `ctype\<CharType>` to type **`char`**, describing an object that can serve as a locale facet to characterize various properties of a character of type **`char`**.
+The class is an explicit specialization of class template `ctype<CharType>` to type **`char`**, describing an object that can serve as a locale facet to characterize various properties of a character of type **`char`**.
 
 ## Syntax
 
@@ -108,7 +107,7 @@ The explicit specialization differs from the class template in several ways:
 
 - The static member object `table_size` specifies the minimum number of elements in a ctype mask table.
 
-- The protected static member function `classic_table`( returns the ctype mask table appropriate to the "C" locale.
+- The protected static member function `classic_table` returns the ctype mask table appropriate to the "C" locale.
 
 - There are no protected virtual member functions [do_is](../standard-library/ctype-class.md#do_is), [do_scan_is](../standard-library/ctype-class.md#do_scan_is), or [do_scan_not](../standard-library/ctype-class.md#do_scan_not). The corresponding public member functions perform the equivalent operations themselves.
 
diff --git a/docs/standard-library/ctype-class.md b/docs/standard-library/ctype-class.md
index 3a43c74acf..4d69b95936 100644
--- a/docs/standard-library/ctype-class.md
+++ b/docs/standard-library/ctype-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: ctype Class"
 title: "ctype Class"
-ms.date: "11/04/2016"
+description: "Learn more about: ctype Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocale/std::ctype", "xlocale/std::ctype::char_type", "xlocale/std::ctype::do_is", "xlocale/std::ctype::do_narrow", "xlocale/std::ctype::do_scan_is", "xlocale/std::ctype::do_scan_not", "xlocale/std::ctype::do_tolower", "xlocale/std::ctype::do_toupper", "xlocale/std::ctype::do_widen", "xlocale/std::ctype::is", "xlocale/std::ctype::narrow", "xlocale/std::ctype::scan_is", "xlocale/std::ctype::scan_not", "xlocale/std::ctype::tolower", "xlocale/std::ctype::toupper", "xlocale/std::ctype::widen"]
 helpviewer_keywords: ["std::ctype [C++]", "std::ctype [C++], char_type", "std::ctype [C++], do_is", "std::ctype [C++], do_narrow", "std::ctype [C++], do_scan_is", "std::ctype [C++], do_scan_not", "std::ctype [C++], do_tolower", "std::ctype [C++], do_toupper", "std::ctype [C++], do_widen", "std::ctype [C++], is", "std::ctype [C++], narrow", "std::ctype [C++], scan_is", "std::ctype [C++], scan_not", "std::ctype [C++], tolower", "std::ctype [C++], toupper", "std::ctype [C++], widen"]
-ms.assetid: 3627154c-49d9-47b5-b28f-5bbedee38e3b
 ---
 # ctype Class
 
@@ -118,7 +117,7 @@ The possible values for the *_Refs* parameter and their significance are:
 
 No direct examples are possible, because the destructor is protected.
 
-The constructor initializes its `locale::facet` base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)( `_Refs`).
+The constructor initializes its `locale::facet` base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)(`_Refs`).
 
 ## <a name="do_is"></a> ctype::do_is
 
@@ -207,7 +206,7 @@ The second protected member function returns a pointer to the destination range
 
 ### Remarks
 
-The second protected member template function stores in `dest`[ `I`] the value `do_narrow`( `first` [ `I`], `default`), for `I` in the interval [0, `last` - `first`).
+The second protected member template function stores in `dest`[ `I`] the value `do_narrow`(`first` [ `I`], `default`), for `I` in the interval [0, `last` - `first`).
 
 ### Example
 
@@ -241,7 +240,7 @@ A pointer to the first character in a range that does match a specified mask. If
 
 ### Remarks
 
-The protected member function returns the smallest pointer `ptr` in the range [ `first`, `last`) for which [do_is](#do_is)( `maskVal`, \* `ptr`) is true.
+The protected member function returns the smallest pointer `ptr` in the range [ `first`, `last`) for which [do_is](#do_is)(`maskVal`, \* `ptr`) is true.
 
 ### Example
 
@@ -275,7 +274,7 @@ A pointer to the first character in a range that doesn't match a specified mask.
 
 ### Remarks
 
-The protected member function returns the smallest pointer `ptr` in the range [ `first`, `last`) for which [do_is](#do_is)( `maskVal`, \* `ptr`) is false.
+The protected member function returns the smallest pointer `ptr` in the range [ `first`, `last`) for which [do_is](#do_is)(`maskVal`, \* `ptr`) is false.
 
 ### Example
 
@@ -310,7 +309,7 @@ The first protected member function returns the lowercase form of the parameter
 
 ### Remarks
 
-The second protected member template function replaces each element `first` [ `I`], for `I` in the interval [0, `last` - `first`), with `do_tolower`( `first` [ `I`]).
+The second protected member template function replaces each element `first` [ `I`], for `I` in the interval [0, `last` - `first`), with `do_tolower`(`first` [ `I`]).
 
 ### Example
 
@@ -345,7 +344,7 @@ The first protected member function returns the uppercase form of the parameter
 
 ### Remarks
 
-The second protected member template function replaces each element `first` [ `I`], for `I` in the interval [0, `last` - `first`), with `do_toupper`( `first` [ `I`]).
+The second protected member template function replaces each element `first` [ `I`], for `I` in the interval [0, `last` - `first`), with `do_toupper`(`first` [ `I`]).
 
 ### Example
 
@@ -386,7 +385,7 @@ The second protected member function returns a pointer to the destination range
 
 ### Remarks
 
-The second protected member template function stores in `dest`[ `I`] the value `do_widen`( `first`[ `I`]), for `I` in the interval [0, `last` - `first`).
+The second protected member template function stores in `dest`[ `I`] the value `do_widen`(`first`[ `I`]), for `I` in the interval [0, `last` - `first`).
 
 ### Example
 
@@ -466,8 +465,8 @@ int main() {
       cout << string[i] << ": "
            << (maskarray[i] & ctype_base::alpha  "alpha"
                                                 : "not alpha")
-           << endl;;
-   };
+           << endl;
+   }
 }
 ```
 
@@ -734,7 +733,7 @@ The second member function returns *last*.
 
 ### Remarks
 
-The first member function returns [do_toupper](#do_toupper)(`ch`). The second member function returns [do_toupper](#do_toupper)( `first`, `last`).
+The first member function returns [do_toupper](#do_toupper)(`ch`). The second member function returns [do_toupper](#do_toupper)(`first`, `last`).
 
 ### Example
 
diff --git a/docs/standard-library/cvt-wbuffer.md b/docs/standard-library/cvt-wbuffer.md
index 58d5cc7cc3..09f8a4bcb6 100644
--- a/docs/standard-library/cvt-wbuffer.md
+++ b/docs/standard-library/cvt-wbuffer.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: <cvt/wbuffer>"
 title: "<cvt/wbuffer>"
-ms.date: "11/04/2016"
+description: "Learn more about: <cvt/wbuffer>"
+ms.date: 11/04/2016
 f1_keywords: ["stdext.cvt.<cvt/wbuffer>", "stdext::cvt::<cvt/wbuffer>", "<cvt/wbuffer>"]
 helpviewer_keywords: ["cvt/wbuffer header"]
-ms.assetid: 6e6eb44c-1bc4-4d8c-a4bd-b39c753ce725
 ---
 # `<cvt/wbuffer>`
 
-The header `<cvt/wstring>` in previous versions of Visual Studio defined the class template [wbuffer_convert Class](../standard-library/wbuffer-convert-class.md) in the stdext::cvt namespace. The header is maintained for backward compatibility. New code should use the version of the class that is defined in [\<locale>](../standard-library/locale.md) in the `std` namespace
+The header `<cvt/wstring>` in previous versions of Visual Studio defined the class template [`wbuffer_convert`](../standard-library/wbuffer-convert-class.md) in the stdext::cvt namespace. The header is maintained for backward compatibility. New code should use the version of the class that is defined in [\<locale>](../standard-library/locale.md) in the `std` namespace
 
 ## Syntax
 
diff --git a/docs/standard-library/cvt-wstring.md b/docs/standard-library/cvt-wstring.md
index 3ce22b8c32..c2ca25ac7e 100644
--- a/docs/standard-library/cvt-wstring.md
+++ b/docs/standard-library/cvt-wstring.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: <cvt/wstring>"
 title: "<cvt/wstring>"
-ms.date: "11/04/2016"
+description: "Learn more about: <cvt/wstring>"
+ms.date: 11/04/2016
 f1_keywords: ["stdext.cvt.<cvt/wstring>", "<cvt/wstring>", "stdext::cvt::<cvt/wstring>"]
 helpviewer_keywords: ["cvt/wstring header"]
-ms.assetid: d78b04bb-9ac0-4adb-8ffe-3aefb9b14c2d
 ---
 # `<cvt/wstring>`
 
-The header `<cvt/wstring>` in previous versions of Visual Studio defined the class template [wstring_convert Class](../standard-library/wstring-convert-class.md) in the stdext::cvt namespace. The header is maintained for backward compatibility. New code should use the version of the class that is defined in [\<locale>](../standard-library/locale.md) in the `std` namespace
+The header `<cvt/wstring>` in previous versions of Visual Studio defined the class template [`wstring_convert`](wstring-convert-class.md) in the `stdext::cvt` namespace. The header is maintained for backward compatibility. New code should use the version of the class that is defined in [`<locale>`](locale.md) in the `std` namespace.
 
 ## Syntax
 
@@ -16,8 +15,6 @@ The header `<cvt/wstring>` in previous versions of Visual Studio defined the cla
 #include <cvt/wstring>
 ```
 
-## Requirements
-
 ## See also
 
 [Header Files Reference](../standard-library/cpp-standard-library-header-files.md)
diff --git a/docs/standard-library/day-class.md b/docs/standard-library/day-class.md
index 411f71aeac..e97739f948 100644
--- a/docs/standard-library/day-class.md
+++ b/docs/standard-library/day-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: day Class"
 title: "day class"
+description: "Learn more about: day Class"
 ms.date: 09/07/2021
-f1_keywords: ["chrono/std::chrono::day", "chrono/std::chrono::day::ok", "chrono/std::chrono::day:operator++", "chrono/std::chrono::day::operator--", "chrono/std::chrono::day::operator unsigned"]
+f1_keywords: ["chrono/std::chrono::day", "chrono/std::chrono::day::ok", "chrono/std::chrono::day::operator++", "chrono/std::chrono::day::operator--", "chrono/std::chrono::day::operator unsigned"]
 helpviewer_keywords: ["std::chrono [C++], day"]
 dev_langs: ["C++"]
 ---
-# `day` class  
+# `day` class
 
 Represents a day of the month. For example, the 25th day of the month.
 
@@ -270,4 +270,4 @@ int main()
 [`month_day_last` class](month-day-last-class.md)\
 [`year_month_day`](year-month-day-class.md)\
 [`year_month_day_last`](year-month-day-last-class.md)\
-[Header Files Reference](../standard-library/cpp-standard-library-header-files.md)
\ No newline at end of file
+[Header Files Reference](../standard-library/cpp-standard-library-header-files.md)
diff --git a/docs/standard-library/deque-class.md b/docs/standard-library/deque-class.md
index ab5e723a02..8e82314f40 100644
--- a/docs/standard-library/deque-class.md
+++ b/docs/standard-library/deque-class.md
@@ -11,9 +11,9 @@ Arranges elements of a given type in a linear arrangement and, like a vector, en
 
 ## Syntax
 
-```unstlib
-template <class Type, class Allocator =allocator<Type>>
-class deque
+```cpp
+template <class Type, class Allocator = allocator<Type>>
+class deque;
 ```
 
 ### Parameters
@@ -720,7 +720,7 @@ None of the constructors perform any interim reallocations.
 ### Example
 
 ```cpp
-/ compile with: /EHsc
+// compile with: /EHsc
 #include <deque>
 #include <iostream>
 #include <forward_list>
@@ -1634,7 +1634,7 @@ int main( )
 
 Provides a pointer to an element in a [`deque`](../standard-library/deque-class.md).
 
-```unstlib
+```cpp
 typedef typename Allocator::pointer pointer;
 ```
 
diff --git a/docs/standard-library/deque-functions.md b/docs/standard-library/deque-functions.md
index db96fab993..ed6244dc98 100644
--- a/docs/standard-library/deque-functions.md
+++ b/docs/standard-library/deque-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <deque> functions"
 title: "<deque> functions"
+description: "Learn more about: <deque> functions"
 ms.date: "11/04/2016"
 f1_keywords: ["deque/std::swap"]
-ms.assetid: 1d14be53-b0b7-4f66-90cc-65bdeac563fd
 ---
 # `<deque>` functions
 
@@ -14,7 +13,7 @@ Exchanges the elements of two deques.
 ```cpp
 void swap(
     deque<Type, Allocator>& left,
-    deque<Type, Allocator>& right,);
+    deque<Type, Allocator>& right);
 ```
 
 ### Parameters
diff --git a/docs/standard-library/drop-view-class.md b/docs/standard-library/drop-view-class.md
index 84984d30b4..337a2b4cd4 100644
--- a/docs/standard-library/drop-view-class.md
+++ b/docs/standard-library/drop-view-class.md
@@ -85,7 +85,7 @@ If you specify more elements to drop than exist in the underlying range, then an
 
 The best way to create a `drop_view` is by using the [`views::drop`](range-adaptors.md#drop) range adaptor. Range adaptors are the intended way to create view classes. The view types are exposed in case you want to create your own custom view type.
 
-### Example:  `drop_view`
+### Example: `drop_view`
 
 ```cpp
 // requires /std:c++20 or later
diff --git a/docs/standard-library/elements-view-class.md b/docs/standard-library/elements-view-class.md
index 4197bcf215..86cbc8b57e 100644
--- a/docs/standard-library/elements-view-class.md
+++ b/docs/standard-library/elements-view-class.md
@@ -95,7 +95,7 @@ The best way to create an `elements_view` is by using the [`elements`](range-ada
 1\) Create an `elements_view` from the specified view.\
 2\) Default construct an `elements_view`.
 
-### Example:  `elements_view`
+### Example: `elements_view`
 
 ```cpp
 // requires /std:c++20 or later
diff --git a/docs/standard-library/empty-view-class.md b/docs/standard-library/empty-view-class.md
index 6d64eedb50..8811f1dd2f 100644
--- a/docs/standard-library/empty-view-class.md
+++ b/docs/standard-library/empty-view-class.md
@@ -91,7 +91,7 @@ The best way to create a `empty_view` is by using the [`empty`](range-adaptors.m
 ### Example `empty_view`
 
 ```cpp
-// requires /std:c++20 or higher
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 
@@ -256,7 +256,7 @@ Returns `false`.
 ### Example `(bool)`
 
 ```cpp
-// requires /std:c++20 or higher
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 
diff --git a/docs/standard-library/error-category-class.md b/docs/standard-library/error-category-class.md
index 953f7753f9..0eabf941a9 100644
--- a/docs/standard-library/error-category-class.md
+++ b/docs/standard-library/error-category-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: error_category Class"
 title: "error_category Class"
+description: "Learn more about: error_category Class"
 ms.date: 06/15/2022
 f1_keywords: ["system_error/std::error_category", "system_error/std::error_category::value_type", "system_error/std::error_category::default_error_condition", "system_error/std::error_category::equivalent", "system_error/std::error_category::message", "system_error/std::error_category::name"]
 helpviewer_keywords: ["std::error_category", "std::error_category::value_type", "std::error_category::default_error_condition", "std::error_category::equivalent", "std::error_category::message", "std::error_category::name"]
-ms.assetid: e0a71e14-852d-4905-acd6-5f8ed426706d
 ms.custom: devdivchpfy22
 ---
 
@@ -71,8 +70,6 @@ The error code value to store in the [error_condition](../standard-library/error
 
 Returns `error_condition(_Errval, *this)`.
 
-### Remarks
-
 ### <a name="equivalent"></a> equivalent
 
 Returns a value that specifies whether error objects are equivalent.
@@ -129,8 +126,6 @@ The error code value to describe.
 
 Returns a descriptive name of the error code *val* for the category. If the error code is unrecognized, returns `"unknown error"`.
 
-#### Remarks
-
 ### <a name="name"></a> name
 
 Returns the name of the category.
diff --git a/docs/standard-library/error-code-class.md b/docs/standard-library/error-code-class.md
index 9026b35dca..f7cc93b6fb 100644
--- a/docs/standard-library/error-code-class.md
+++ b/docs/standard-library/error-code-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: error_code Class"
 title: "error_code Class"
-ms.date: "11/04/2016"
+description: "Learn more about: error_code Class"
+ms.date: 11/04/2016
 f1_keywords: ["system_error/std::error_code", "system_error/std::error_code::value_type", "system_error/std::error_code::assign", "system_error/std::error_code::category", "system_error/std::error_code::clear", "system_error/std::error_code::default_error_condition", "system_error/std::error_code::message", "system_error/std::error_code::operator bool"]
 helpviewer_keywords: ["std::error_code", "std::error_code::value_type", "std::error_code::assign", "std::error_code::category", "std::error_code::clear", "std::error_code::default_error_condition", "std::error_code::message"]
-ms.assetid: c09b4a96-cb14-4281-a319-63543f9b2b4a
 ---
 # error_code Class
 
@@ -82,8 +81,6 @@ Returns the error category.
 const error_category& category() const;
 ```
 
-#### Remarks
-
 ### <a name="clear"></a> clear
 
 Clears the error code value and category.
diff --git a/docs/standard-library/error-condition-class.md b/docs/standard-library/error-condition-class.md
index 71767a0471..ffa0030a44 100644
--- a/docs/standard-library/error-condition-class.md
+++ b/docs/standard-library/error-condition-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: error_condition Class"
 title: "error_condition Class"
-ms.date: "11/04/2016"
+description: "Learn more about: error_condition Class"
+ms.date: 11/04/2016
 f1_keywords: ["system_error/std::error_condition", "system_error/std::error_condition::value_type", "system_error/std::error_condition::assign", "system_error/std::error_condition::category", "system_error/std::error_condition::clear", "system_error/std::error_condition::message", "system_error/std::error_condition::operator bool"]
 helpviewer_keywords: ["std::error_condition", "std::error_condition::value_type", "std::error_condition::assign", "std::error_condition::category", "std::error_condition::clear", "std::error_condition::message"]
-ms.assetid: 6690f481-97c9-4554-a0ff-851dc96b7a06
 ---
 # error_condition Class
 
@@ -85,8 +84,6 @@ const error_category& category() const;
 
 A reference to the stored error category
 
-#### Remarks
-
 ### <a name="clear"></a> clear
 
 Clears the error code value and category.
@@ -160,7 +157,7 @@ bool operator==(const error_condition& right) const;
 #### Parameters
 
 *right*\
-The ojbect to be tested for equality.
+The object to be tested for equality.
 
 #### Return Value
 
@@ -265,8 +262,6 @@ value_type value() const;
 
 The stored error code value of type [value_type](#value_type).
 
-#### Remarks
-
 ### <a name="value_type"></a> value_type
 
 A type that represents the stored error code value.
diff --git a/docs/standard-library/exception-typedefs.md b/docs/standard-library/exception-typedefs.md
index 2385a80355..f25b44b6dd 100644
--- a/docs/standard-library/exception-typedefs.md
+++ b/docs/standard-library/exception-typedefs.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <exception> typedefs"
 title: "<exception> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <exception> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["exception/std::exception_ptr", "exception/std::terminate_handler", "exception/std::unexpected_handler"]
-ms.assetid: 2a338480-35e2-46f7-b223-52d4e84a5768
 ---
 # `<exception>` typedefs
 
@@ -25,11 +24,11 @@ When you declare an `exception_ptr` variable, the variable is not associated wit
 
 Use the `current_exception` or `make_exception_ptr` function to assign an exception to an `exception_ptr` object. When you assign an exception to an `exception_ptr` variable, the variable's exception reference field points to a copy of the exception. If there is insufficient memory to copy the exception, the exception reference field points to a copy of a [std::bad_alloc](../standard-library/bad-alloc-class.md) exception. If the `current_exception` or `make_exception_ptr` function cannot copy the exception for any other reason, the function calls the `terminate` CRT function to exit the current process.
 
-Despite its name, an `exception_ptr` object is not itself a pointer. It does not obey pointer semantics and cannot be used with the pointer member access ( `->`) or indirection (*) operators. The `exception_ptr` object has no public data members or member functions.
+Despite its name, an `exception_ptr` object is not itself a pointer. It does not obey pointer semantics and cannot be used with the pointer member access (`->`) or indirection (*) operators. The `exception_ptr` object has no public data members or member functions.
 
 **Comparisons:**
 
-You can use the equal ( `==`) and not-equal ( `!=`) operators to compare two `exception_ptr` objects. The operators do not compare the binary value (bit pattern) of the `EXCEPTION_RECORD` structures that represent the exceptions. Instead, the operators compare the addresses in the exception reference field of the `exception_ptr` objects. Consequently, a null `exception_ptr` and the NULL value compare as equal.
+You can use the equal (`==`) and not-equal (`!=`) operators to compare two `exception_ptr` objects. The operators do not compare the binary value (bit pattern) of the `EXCEPTION_RECORD` structures that represent the exceptions. Instead, the operators compare the addresses in the exception reference field of the `exception_ptr` objects. Consequently, a null `exception_ptr` and the NULL value compare as equal.
 
 ## <a name="terminate_handler"></a> terminate_handler
 
diff --git a/docs/standard-library/filesystem-functions.md b/docs/standard-library/filesystem-functions.md
index eef418109a..2c642f3180 100644
--- a/docs/standard-library/filesystem-functions.md
+++ b/docs/standard-library/filesystem-functions.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: <filesystem> functions"
 title: "<filesystem> functions"
+description: "Learn more about: <filesystem> functions"
 ms.date: "03/27/2019"
 f1_keywords: ["FILESYSTEM/std::experimental::filesystem::absolute", "FILESYSTEM/std::experimental::filesystem::canonical", "FILESYSTEM/std::experimental::filesystem::copy", "FILESYSTEM/std::experimental::filesystem::copy_file", "FILESYSTEM/std::experimental::filesystem::copy_symlink", "FILESYSTEM/std::experimental::filesystem::create_directories", "FILESYSTEM/std::experimental::filesystem::create_directory", "FILESYSTEM/std::experimental::filesystem::create_directory_symlink", "FILESYSTEM/std::experimental::filesystem::create_hard_link", "FILESYSTEM/std::experimental::filesystem::create_symlink", "FILESYSTEM/std::experimental::filesystem::current_path", "FILESYSTEM/std::experimental::filesystem::equivalent", "FILESYSTEM/std::experimental::filesystem::exists", "FILESYSTEM/std::experimental::filesystem::file_size", "FILESYSTEM/std::experimental::filesystem::hard_link_count", "FILESYSTEM/std::experimental::filesystem::hash_value", "FILESYSTEM/std::experimental::filesystem::is_block_file", "FILESYSTEM/std::experimental::filesystem::is_character_file", "FILESYSTEM/std::experimental::filesystem::is_directory", "FILESYSTEM/std::experimental::filesystem::is_empty", "FILESYSTEM/std::experimental::filesystem::is_fifo", "FILESYSTEM/std::experimental::filesystem::is_other", "FILESYSTEM/std::experimental::filesystem::is_regular_file", "FILESYSTEM/std::experimental::filesystem::is_socket", "FILESYSTEM/std::experimental::filesystem::is_symlink", "FILESYSTEM/std::experimental::filesystem::last_write_time", "FILESYSTEM/std::experimental::filesystem::permissions", "FILESYSTEM/std::experimental::filesystem::read_symlink", "FILESYSTEM/std::experimental::filesystem::remove", "FILESYSTEM/std::experimental::filesystem::remove_all", "FILESYSTEM/std::experimental::filesystem::rename", "FILESYSTEM/std::experimental::filesystem::resize_file", "FILESYSTEM/std::experimental::filesystem::space", "FILESYSTEM/std::experimental::filesystem::status", "FILESYSTEM/std::experimental::filesystem::status_known", "FILESYSTEM/std::experimental::filesystem::swap", "FILESYSTEM/std::experimental::filesystem::symlink_status", "FILESYSTEM/std::experimental::filesystem::system_complete", "FILESYSTEM/std::experimental::filesystem::temp_directory_path", "FILESYSTEM/std::experimental::filesystem::u8path"]
 helpviewer_keywords: ["std::experimental::filesystem::absolute", "std::experimental::filesystem::canonical", "std::experimental::filesystem::copy", "std::experimental::filesystem::copy_file", "std::experimental::filesystem::copy_symlink", "std::experimental::filesystem::create_directories", "std::experimental::filesystem::create_directory", "std::experimental::filesystem::create_directory_symlink", "std::experimental::filesystem::create_hard_link", "std::experimental::filesystem::create_symlink", "std::experimental::filesystem::current_path", "std::experimental::filesystem::equivalent", "std::experimental::filesystem::exists", "std::experimental::filesystem::file_size", "std::experimental::filesystem::hard_link_count", "std::experimental::filesystem::hash_value", "std::experimental::filesystem::is_block_file", "std::experimental::filesystem::is_character_file", "std::experimental::filesystem::is_directory", "std::experimental::filesystem::is_empty", "std::experimental::filesystem::is_fifo", "std::experimental::filesystem::is_other", "std::experimental::filesystem::is_regular_file", "std::experimental::filesystem::is_socket", "std::experimental::filesystem::is_symlink", "std::experimental::filesystem::last_write_time", "std::experimental::filesystem::permissions", "std::experimental::filesystem::read_symlink", "std::experimental::filesystem::remove", "std::experimental::filesystem::remove_all", "std::experimental::filesystem::rename", "std::experimental::filesystem::resize_file", "std::experimental::filesystem::space", "std::experimental::filesystem::status", "std::experimental::filesystem::status_known", "std::experimental::filesystem::swap", "std::experimental::filesystem::symlink_status", "std::experimental::filesystem::system_complete", "std::experimental::filesystem::temp_directory_path", "std::experimental::filesystem::u8path"]
@@ -129,7 +129,7 @@ The functions all possibly copy the file at *from* to *to* under control of *`op
 
 If `exists(to) && !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing))`, then report as an error that the file already exists.
 
-Otherwise, if `!exists(to) || opts & copy_options::overwrite_existing || opts & copy_options::update_existing&& last_write_time(to) < last_write_time(from) || !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options:update_existing))`, then attempt to copy the contents and attributes of the file *from* to the file *to*. Report as an error if the copy attempt fails.
+Otherwise, if `!exists(to) || opts & copy_options::overwrite_existing || opts & copy_options::update_existing&& last_write_time(to) < last_write_time(from) || !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing))`, then attempt to copy the contents and attributes of the file *from* to the file *to*. Report as an error if the copy attempt fails.
 
 The functions return **`true`** if the copy is attempted and succeeds, otherwise **`false`**.
 
diff --git a/docs/standard-library/forward-list-class.md b/docs/standard-library/forward-list-class.md
index ecca392abd..65e5db6042 100644
--- a/docs/standard-library/forward-list-class.md
+++ b/docs/standard-library/forward-list-class.md
@@ -7,7 +7,7 @@ helpviewer_keywords: ["std::forward_list", "std::forward_list::allocator_type",
 ms.custom: devdivchpfy22
 ---
 
-# forward_list Class
+# `forward_list` Class
 
 Describes an object that controls a varying-length sequence of elements. The sequence is stored as a singly-linked list of nodes, each containing a member of type `Type`.
 
@@ -21,22 +21,22 @@ class forward_list
 
 ### Parameters
 
-Type*\
-The element data type to be stored in the forward_list.
+*`Type`*\
+The element data type to be stored in the `forward_list`.
 
-*Allocator*\
-The stored allocator object that encapsulates details about the  forward_list allocation and deallocation of memory. This parameter is optional. The default value is allocator<`Type`>.
+*`Allocator`*\
+The stored allocator object that encapsulates details about the `forward_list` allocation and deallocation of memory. This parameter is optional. The default value is allocator<`Type`>.
 
 ## Remarks
 
-A `forward_list` object allocates and frees storage for the sequence it controls through a stored object of class *Allocator* that is based on [allocator Class](../standard-library/allocator-class.md) (commonly known as `std::allocator)`. For more information, see [Allocators](../standard-library/allocators.md). An allocator object must have the same external interface as an object of type `allocator`.
+A `forward_list` object allocates and frees storage for the sequence it controls through a stored object of class *`Allocator`* that is based on [`allocator` Class](../standard-library/allocator-class.md) (commonly known as `std::allocator`). For more information, see [Allocators](../standard-library/allocators.md). An allocator object must have the same external interface as an object of type `allocator`.
 
 > [!NOTE]
 > The stored allocator object is not copied when the container object is assigned.
 
 Iterators, pointers and references might become invalid when elements of their controlled sequence are erased through `forward_list`. Insertions and splices performed on the controlled sequence through `forward_list` don't invalidate iterators.
 
-Additions to the controlled sequence might occur by calls to [forward_list::insert_after](#insert_after), which is the only member function that calls the constructor `Type(const  T&)`. `forward_list` might also call move constructors. If such an expression throws an exception, the container object inserts no new elements and rethrows the exception. Thus, an object of type `forward_list` is left in a known state when such exceptions occur.
+Additions to the controlled sequence might occur by calls to [`forward_list::insert_after`](#insert_after), which is the only member function that calls the constructor `Type(const  T&)`. `forward_list` might also call move constructors. If such an expression throws an exception, the container object inserts no new elements and rethrows the exception. Thus, an object of type `forward_list` is left in a known state when such exceptions occur.
 
 ## Members
 
@@ -44,62 +44,62 @@ Additions to the controlled sequence might occur by calls to [forward_list::inse
 
 |Name|Description|
 |-|-|
-|[forward_list](#forward_list)|Constructs an object of type `forward_list`.|
+|[`forward_list`](#forward_list)|Constructs an object of type `forward_list`.|
 
 ### Typedefs
 
 |Name|Description|
 |-|-|
-|[allocator_type](#allocator_type)|A type that represents the allocator class for a forward list object.|
-|[const_iterator](#const_iterator)|A type that provides a constant iterator for the forward list.|
-|[const_pointer](#const_pointer)|A type that provides a pointer to a **`const`** element in a forward list.|
-|[const_reference](#const_reference)|A type that provides a constant reference to an element in the forward list.|
-|[difference_type](#difference_type)|A signed integer type that can be used to represent the number of elements of a forward list in a range between elements pointed to by iterators.|
-|[iterator](#iterator)|A type that provides an iterator for the forward list.|
-|[pointer](#pointer)|A type that provides a pointer to an element in the forward list.|
-|[reference](#reference)|A type that provides a reference to an element in the forward list.|
-|[size_type](#size_type)|A type that represents the unsigned distance between two elements.|
-|[value_type](#value_type)|A type that represents the type of element stored in a forward list.|
+|[`allocator_type`](#allocator_type)|A type that represents the allocator class for a forward list object.|
+|[`const_iterator`](#const_iterator)|A type that provides a constant iterator for the forward list.|
+|[`const_pointer`](#const_pointer)|A type that provides a pointer to a **`const`** element in a forward list.|
+|[`const_reference`](#const_reference)|A type that provides a constant reference to an element in the forward list.|
+|[`difference_type`](#difference_type)|A signed integer type that can be used to represent the number of elements of a forward list in a range between elements pointed to by iterators.|
+|[`iterator`](#iterator)|A type that provides an iterator for the forward list.|
+|[`pointer`](#pointer)|A type that provides a pointer to an element in the forward list.|
+|[`reference`](#reference)|A type that provides a reference to an element in the forward list.|
+|[`size_type`](#size_type)|A type that represents the unsigned distance between two elements.|
+|[`value_type`](#value_type)|A type that represents the type of element stored in a forward list.|
 
 ### Functions
 
 |Name|Description|
 |-|-|
-|[assign](#assign)|Erases elements from a forward list and copies a new set of elements to a target forward list.|
-|[before_begin](#before_begin)|Returns an iterator addressing the position before the first element in a forward list.|
-|[begin](#begin)|Returns an iterator addressing the first element in a forward list.|
-|[cbefore_begin](#cbefore_begin)|Returns a const iterator addressing the position before the first element in a forward list.|
-|[cbegin](#cbegin)|Returns a const iterator addressing the first element in a forward list.|
-|[cend](#cend)|Returns a const iterator that addresses the location succeeding the last element in a forward list.|
-|[clear](#clear)|Erases all the elements of a forward list.|
-|[emplace_after](#emplace_after)|Move constructs a new element after a specified position.|
-|[emplace_front](#emplace_front)|Adds an element constructed in place to the beginning of the list.|
-|[empty](#empty)|Tests whether a forward list is empty.|
-|[end](#end)|Returns an iterator that addresses the location succeeding the last element in a forward list.|
-|[erase_after](#erase_after)|Removes elements from the forward list after a specified position.|
-|[front](#front)|Returns a reference to the first element in a forward list.|
-|[get_allocator](#get_allocator)|Returns a copy of the allocator object used to construct a forward list.|
-|[insert_after](#insert_after)|Adds elements to the forward list after a specified position.|
-|[max_size](#max_size)|Returns the maximum length of a forward list.|
-|[merge](#merge)|Removes the elements from the argument list, inserts them into the target forward list, and orders the new, combined set of elements in ascending order or in some other specified order.|
-|[pop_front](#pop_front)|Deletes the element at the beginning of a forward list.|
-|[push_front](#push_front)|Adds an element to the beginning of a forward list.|
-|[remove](#remove)|Erases elements in a forward list that matches a specified value.|
-|[remove_if](#remove_if)|Erases elements from a forward list for which a specified predicate is satisfied.|
-|[resize](#resize)|Specifies a new size for a forward list.|
-|[reverse](#reverse)|Reverses the order in which the elements occur in a forward list.|
-|[sort](#sort)|Arranges the elements in ascending order or with an order specified by a predicate.|
-|[splice_after](#splice_after)|Restitches links between nodes.|
-|[swap](#swap)|Exchanges the elements of two forward lists.|
-|[unique](#unique)|Removes adjacent elements that pass a specified test.|
+|[`assign`](#assign)|Erases elements from a forward list and copies a new set of elements to a target forward list.|
+|[`before_begin`](#before_begin)|Returns an iterator addressing the position before the first element in a forward list.|
+|[`begin`](#begin)|Returns an iterator addressing the first element in a forward list.|
+|[`cbefore_begin`](#cbefore_begin)|Returns a const iterator addressing the position before the first element in a forward list.|
+|[`cbegin`](#cbegin)|Returns a const iterator addressing the first element in a forward list.|
+|[`cend`](#cend)|Returns a const iterator that addresses the location succeeding the last element in a forward list.|
+|[`clear`](#clear)|Erases all the elements of a forward list.|
+|[`emplace_after`](#emplace_after)|Move constructs a new element after a specified position.|
+|[`emplace_front`](#emplace_front)|Adds an element constructed in place to the beginning of the list.|
+|[`empty`](#empty)|Tests whether a forward list is empty.|
+|[`end`](#end)|Returns an iterator that addresses the location succeeding the last element in a forward list.|
+|[`erase_after`](#erase_after)|Removes elements from the forward list after a specified position.|
+|[`front`](#front)|Returns a reference to the first element in a forward list.|
+|[`get_allocator`](#get_allocator)|Returns a copy of the allocator object used to construct a forward list.|
+|[`insert_after`](#insert_after)|Adds elements to the forward list after a specified position.|
+|[`max_size`](#max_size)|Returns the maximum length of a forward list.|
+|[`merge`](#merge)|Removes the elements from the argument list, inserts them into the target forward list, and orders the new, combined set of elements in ascending order or in some other specified order.|
+|[`pop_front`](#pop_front)|Deletes the element at the beginning of a forward list.|
+|[`push_front`](#push_front)|Adds an element to the beginning of a forward list.|
+|[`remove`](#remove)|Erases elements in a forward list that matches a specified value.|
+|[`remove_if`](#remove_if)|Erases elements from a forward list for which a specified predicate is satisfied.|
+|[`resize`](#resize)|Specifies a new size for a forward list.|
+|[`reverse`](#reverse)|Reverses the order in which the elements occur in a forward list.|
+|[`sort`](#sort)|Arranges the elements in ascending order or with an order specified by a predicate.|
+|[`splice_after`](#splice_after)|Restitches links between nodes.|
+|[`swap`](#swap)|Exchanges the elements of two forward lists.|
+|[`unique`](#unique)|Removes adjacent elements that pass a specified test.|
 
 ### Operators
 
 |Name|Description|
 |-|-|
-|[operator=](#op_eq)|Replaces the elements of the forward list with a copy of another forward list.|
+|[`operator=`](#op_eq)|Replaces the elements of the forward list with a copy of another forward list.|
 
-## <a name="allocator_type"></a> allocator_type
+## <a name="allocator_type"></a> `allocator_type`
 
 A type that represents the allocator class for a forward list object.
 
@@ -109,9 +109,9 @@ typedef Allocator allocator_type;
 
 ### Remarks
 
-`allocator_type` is a synonym for the template parameter Allocator.
+`allocator_type` is a synonym for the template parameter `Allocator`.
 
-## <a name="assign"></a> assign
+## <a name="assign"></a> `assign`
 
 Erases elements from a forward list and copies a new set of elements to a target forward list.
 
@@ -129,33 +129,33 @@ void assign(InputIterator First, InputIterator Last);
 
 ### Parameters
 
-*first*\
+*`first`*\
 The beginning of the replacement range.
 
-*last*\
+*`last`*\
 The end of the replacement range.
 
-*count*\
+*`count`*\
 The number of elements to assign.
 
-*val*\
+*`val`*\
 The value to assign each element.
 
-*Type*\
+*`Type`*\
 The type of the value.
 
-*IList*\
-The initializer_list to copy.
+*`IList`*\
+The `initializer_list` to copy.
 
 ### Remarks
 
-If the forward_list is an integer type, the first member function behaves the same as `assign((size_type)First, (Type)Last)`. Otherwise, the first member function replaces the sequence controlled by **`*this`** with the sequence [ `First, Last)`, which must not overlap the initial controlled sequence.
+If the `forward_list` is an integer type, the first member function behaves the same as `assign((size_type)First, (Type)Last)`. Otherwise, the first member function replaces the sequence controlled by **`*this`** with the sequence [ `First, Last)`, which must not overlap the initial controlled sequence.
 
 The second member function replaces the sequence controlled by **`*this`** with a repetition of `Count` elements of value `Val`.
 
-The third member function copies the elements of the initializer_list into the forward_list.
+The third member function copies the elements of the `initializer_list` into the `forward_list`.
 
-## <a name="before_begin"></a> before_begin
+## <a name="before_begin"></a> `before_begin`
 
 Returns an iterator addressing the position before the first element in a forward list.
 
@@ -168,9 +168,7 @@ iterator before_begin();
 
 A forward iterator that points just before the first element of the sequence (or just before the end of an empty sequence).
 
-### Remarks
-
-## <a name="begin"></a> begin
+## <a name="begin"></a> `begin`
 
 Returns an iterator addressing the first element in a forward list.
 
@@ -183,9 +181,7 @@ iterator begin();
 
 A forward iterator that points at the first element of the sequence (or just beyond the end of an empty sequence).
 
-### Remarks
-
-## <a name="cbefore_begin"></a> cbefore_begin
+## <a name="cbefore_begin"></a> `cbefore_begin`
 
 Returns a const iterator addressing the position before the first element in a forward list.
 
@@ -197,9 +193,7 @@ const_iterator cbefore_begin() const;
 
 A forward iterator that points just before the first element of the sequence (or just before the end of an empty sequence).
 
-### Remarks
-
-## <a name="cbegin"></a> cbegin
+## <a name="cbegin"></a> `cbegin`
 
 Returns a **`const`** iterator that addresses the first element in the range.
 
@@ -215,7 +209,7 @@ A **`const`** forward-access iterator that points at the first element of the ra
 
 With the return value of `cbegin`, the elements in the range can't be modified.
 
-You can use this member function in place of the `begin()` member function to guarantee that the return value is `const_iterator`. Typically, it's used with the [auto](../cpp/auto-cpp.md) type deduction keyword, as shown in the following example. In the example, consider `Container` to be a modifiable (non- **`const`**) container of any kind that supports `begin()` and `cbegin()`.
+You can use this member function in place of the `begin()` member function to guarantee that the return value is `const_iterator`. Typically, it's used with the [`auto`](../cpp/auto-cpp.md) type deduction keyword, as shown in the following example. In the example, consider `Container` to be a modifiable (non- **`const`**) container of any kind that supports `begin()` and `cbegin()`.
 
 ```cpp
 auto i1 = Container.begin();
@@ -224,7 +218,7 @@ auto i2 = Container.cbegin();
 // i2 is Container<T>::const_iterator
 ```
 
-## <a name="cend"></a> cend
+## <a name="cend"></a> `cend`
 
 Returns a **`const`** iterator that addresses the location just beyond the last element in a range.
 
@@ -240,7 +234,7 @@ A forward-access iterator that points just beyond the end of the range.
 
 `cend` is used to test whether an iterator has passed the end of its range.
 
-You can use this member function in place of the `end()` member function to guarantee that the return value is `const_iterator`. Typically, it's used with the [auto](../cpp/auto-cpp.md) type deduction keyword, as shown in the following example. In the example, consider `Container` to be a modifiable (non- **`const`**) container of any kind that supports `end()` and `cend()`.
+You can use this member function in place of the `end()` member function to guarantee that the return value is `const_iterator`. Typically, it's used with the [`auto`](../cpp/auto-cpp.md) type deduction keyword, as shown in the following example. In the example, consider `Container` to be a modifiable (non- **`const`**) container of any kind that supports `end()` and `cend()`.
 
 ```cpp
 auto i1 = Container.end();
@@ -252,7 +246,7 @@ auto i2 = Container.cend();
 
 The value returned by `cend` shouldn't be dereferenced.
 
-## <a name="clear"></a> clear
+## <a name="clear"></a> `clear`
 
 Erases all the elements of a forward list.
 
@@ -264,7 +258,7 @@ void clear();
 
 This member function calls `erase_after(before_begin(), end())`.
 
-## <a name="const_iterator"></a> const_iterator
+## <a name="const_iterator"></a> `const_iterator`
 
 A type that provides a constant iterator for the forward list.
 
@@ -276,7 +270,7 @@ typedef implementation-defined const_iterator;
 
 `const_iterator` describes an object that can serve as a constant forward iterator for the controlled sequence. It's described here as a synonym for an implementation-defined type.
 
-## <a name="const_pointer"></a> const_pointer
+## <a name="const_pointer"></a> `const_pointer`
 
 A type that provides a pointer to a **`const`** element in a forward list.
 
@@ -285,9 +279,7 @@ typedef typename Allocator::const_pointer
     const_pointer;
 ```
 
-### Remarks
-
-## <a name="const_reference"></a> const_reference
+## <a name="const_reference"></a> `const_reference`
 
 A type that provides a constant reference to an element in the forward list.
 
@@ -295,9 +287,7 @@ A type that provides a constant reference to an element in the forward list.
 typedef typename Allocator::const_reference const_reference;
 ```
 
-### Remarks
-
-## <a name="difference_type"></a> difference_type
+## <a name="difference_type"></a> `difference_type`
 
 A signed integer type that can be used to represent the number of elements of a forward list in a range between elements pointed to by iterators.
 
@@ -309,7 +299,7 @@ typedef typename Allocator::difference_type difference_type;
 
 `difference_type` describes an object that can represent the difference between the addresses of any two elements in the controlled sequence.
 
-## <a name="emplace_after"></a> emplace_after
+## <a name="emplace_after"></a> `emplace_after`
 
 Move constructs a new element after a specified position.
 
@@ -320,10 +310,10 @@ iterator emplace_after(const_iterator Where, Type&& val);
 
 ### Parameters
 
-*Where*\
+*`Where`*\
 The position in the target forward list where the new element is constructed.
 
-*val*\
+*`val`*\
 The constructor argument.
 
 ### Return Value
@@ -332,9 +322,9 @@ An iterator that designates the newly inserted element.
 
 ### Remarks
 
-This member function inserts an element with the constructor arguments *val* just after the element pointed to by *Where* in the controlled sequence. Its behavior is otherwise the same as [forward_list::insert_after](#insert_after).
+This member function inserts an element with the constructor arguments *`val`* just after the element pointed to by *`Where`* in the controlled sequence. Its behavior is otherwise the same as [`forward_list::insert_after`](#insert_after).
 
-## <a name="emplace_front"></a> emplace_front
+## <a name="emplace_front"></a> `emplace_front`
 
 Adds an element constructed in place to the beginning of the list.
 
@@ -345,16 +335,16 @@ template <class Type>
 
 ### Parameters
 
-*val*\
+*`val`*\
 The element added to the beginning of the forward list.
 
 ### Remarks
 
-This member function inserts an element with the constructor arguments `_ val` at the end of the controlled sequence.
+This member function inserts an element with the constructor arguments `val` at the beginning of the controlled sequence.
 
 If an exception is thrown, the container is left unaltered and the exception is rethrown.
 
-## <a name="empty"></a> empty
+## <a name="empty"></a> `empty`
 
 Tests whether a forward list is empty.
 
@@ -366,7 +356,7 @@ bool empty() const;
 
 **`true`** if the forward list is empty; otherwise, **`false`**.
 
-## <a name="end"></a> end
+## <a name="end"></a> `end`
 
 Returns an iterator that addresses the location succeeding the last element in a forward list.
 
@@ -379,7 +369,7 @@ iterator end();
 
 A forward iterator that points just beyond the end of the sequence.
 
-## <a name="erase_after"></a> erase_after
+## <a name="erase_after"></a> `erase_after`
 
 Removes elements from the forward list after a specified position.
 
@@ -390,22 +380,22 @@ iterator erase_after(const_iterator first, const_iterator last);
 
 ### Parameters
 
-*Where*\
+*`Where`*\
 The position in the target forward list where the element is erased.
 
-*first*\
+*`first`*\
 The beginning of the range to erase.
 
-*last*\
+*`last`*\
 The end of the range to erase.
 
 ### Return Value
 
-An iterator that designates the first element remaining beyond any elements removed, or [forward_list::end](#end) if no such element exists.
+An iterator that designates the first element remaining beyond any elements removed, or [`forward_list::end`](#end) if no such element exists.
 
 ### Remarks
 
-The first member function removes the element of the controlled sequence just after *Where*.
+The first member function removes the element of the controlled sequence just after *`Where`*.
 
 The second member function removes the elements of the controlled sequence in the range `( first,  last)` (neither end point is included).
 
@@ -413,7 +403,7 @@ Erasing `N` elements causes `N` destructor calls. [Reallocation](../standard-lib
 
 The member functions never throw an exception.
 
-## <a name="forward_list"></a> forward_list
+## <a name="forward_list"></a> `forward_list`
 
 Constructs an object of type `forward_list`.
 
@@ -436,36 +426,36 @@ forward_list(InputIterator First, InputIterator Last, const Allocator& Al);
 
 ### Parameters
 
-*Al*\
+*`Al`*\
 The allocator class to use with this object.
 
-*Count*\
+*`Count`*\
 The number of elements in the list constructed.
 
-*Val*\
+*`Val`*\
 The value of the elements in the list constructed.
 
-*Right*\
+*`Right`*\
 The list of which the constructed list is to be a copy.
 
-*First*\
+*`First`*\
 The position of the first element in the range of elements to be copied.
 
-*Last*\
+*`Last`*\
 The position of the first element beyond the range of elements to be copied.
 
-*IList*\
-The initializer_list to copy.
+*`IList`*\
+The `initializer_list` to copy.
 
 ### Remarks
 
-All constructors store an [allocator](../standard-library/allocator-class.md) and initialize the controlled sequence. The allocator object is the argument *Al*, if present. For the copy constructor, it's `right.get_allocator()`. Otherwise, it's `Allocator()`.
+All constructors store an [`allocator`](../standard-library/allocator-class.md) and initialize the controlled sequence. The allocator object is the argument *`Al`*, if present. For the copy constructor, it's `right.get_allocator()`. Otherwise, it's `Allocator()`.
 
 The first two constructors specify an empty initial controlled sequence.
 
-The third constructor specifies a repetition of *Count* elements of value `Type()`.
+The third constructor specifies a repetition of *`Count`* elements of value `Type()`.
 
-The fourth and fifth constructors specify a repetition of *Count* elements of value *Val*.
+The fourth and fifth constructors specify a repetition of *`Count`* elements of value *`Val`*.
 
 The sixth constructor specifies a copy of the sequence controlled by *Right*. If `InputIterator` is an integer type, the next two constructors specify a repetition of `(size_type)First` elements of value `(Type)Last`. Otherwise, the next two constructors specify the sequence `[First, Last)`.
 
@@ -473,7 +463,7 @@ The ninth and tenth constructors are the same as the sixth, but with an [rvalue]
 
 The last constructor specifies the initial controlled sequence with an object of class `initializer_list<Type>`.
 
-## <a name="front"></a> front
+## <a name="front"></a> `front`
 
 Returns a reference to the first element in a forward list.
 
@@ -486,7 +476,7 @@ const_reference front() const;
 
 A reference to the first element of the controlled sequence, which must be non-empty.
 
-## <a name="get_allocator"></a> get_allocator
+## <a name="get_allocator"></a> `get_allocator`
 
 Returns a copy of the allocator object used to construct a forward list.
 
@@ -496,9 +486,9 @@ allocator_type get_allocator() const;
 
 ### Return Value
 
-The stored [allocator](../standard-library/allocator-class.md) object.
+The stored [`allocator`](../standard-library/allocator-class.md) object.
 
-## <a name="insert_after"></a> insert_after
+## <a name="insert_after"></a> `insert_after`
 
 Adds elements to the forward list after a specified position.
 
@@ -513,23 +503,23 @@ template <class InputIterator>
 
 ### Parameters
 
-*Where*\
+*`Where`*\
 The position in the target forward list where the first element is inserted.
 
-*Count*\
+*`Count`*\
 The number of elements to insert.
 
-*First*\
+*`First`*\
 The beginning of the insertion range.
 
-*Last*\
+*`Last`*\
 The end of the insertion range.
 
-*Val*\
+*`Val`*\
 The element added to the forward list.
 
-*IList*\
-The initializer_list to insert.
+*`IList`*\
+The `initializer_list` to insert.
 
 ### Return Value
 
@@ -537,11 +527,11 @@ An iterator that designates the newly inserted element (first and last member fu
 
 ### Remarks
 
-Each of the member functions inserts—just after the element pointed to by *Where* in the controlled sequence—a sequence that' specified by the remaining operands.
+Each of the member functions inserts—just after the element pointed to by *`Where`* in the controlled sequence—a sequence that' specified by the remaining operands.
 
-The first member function inserts an element that has value *Val* and returns an iterator that designates the newly inserted element.
+The first member function inserts an element that has value *`Val`* and returns an iterator that designates the newly inserted element.
 
-The second member function inserts a repetition of *Count* elements of value *Val*.
+The second member function inserts a repetition of *`Count`* elements of value *`Val`*.
 
 If `InputIterator` is an integer type, the third member function behaves the same as `insert(it, (size_type)First, (Type)Last)`. Otherwise, it inserts the sequence `[First, Last)`, which must not overlap the initial controlled sequence.
 
@@ -553,7 +543,7 @@ Inserting `N` elements causes `N` constructor calls. [Reallocation](../standard-
 
 If an exception is thrown during the insertion of one or more elements, the container is left unaltered and the exception is rethrown.
 
-## <a name="iterator"></a> iterator
+## <a name="iterator"></a> `iterator`
 
 A type that provides an iterator for the forward list.
 
@@ -565,7 +555,7 @@ typedef implementation-defined iterator;
 
 `iterator` describes an object that can serve as a forward iterator for the controlled sequence. It's described here as a synonym for an implementation-defined type.
 
-## <a name="max_size"></a> max_size
+## <a name="max_size"></a> `max_size`
 
 Returns the maximum length of a forward list.
 
@@ -577,9 +567,7 @@ size_type max_size() const;
 
 The length of the longest sequence that the object can control.
 
-### Remarks
-
-## <a name="merge"></a> merge
+## <a name="merge"></a> `merge`
 
 Combines two sorted sequences into a single sorted sequence in linear time. Removes the elements from the argument list, and inserts them into this `forward_list`. The two lists should be sorted by the same compare function object before the call to `merge`. The combined list will be sorted by that compare function object.
 
@@ -591,10 +579,10 @@ template <class Predicate>
 
 ### Parameters
 
-*right*\
+*`right`*\
 The forward list to merge from.
 
-*comp*\
+*`comp`*\
 The compare function object that is used to sort elements.
 
 ### Remarks
@@ -603,11 +591,11 @@ The compare function object that is used to sort elements.
 
 For the iterators `Pi` and `Pj` designating elements at positions `i` and `j`, the first member function imposes the order `!(*Pj < *Pi)` whenever `i < j`. (The elements are sorted in `ascending` order.) The second member function imposes the order `! comp(*Pj, *Pi)` whenever `i < j`.
 
-No pairs of elements in the original controlled sequence are reversed in the resulting controlled sequence. If a pair of elements in the resulting controlled sequence compares equal ( `!(*Pi < *Pj) && !(*Pj < *Pi)`), an element from the original controlled sequence appears before an element from the sequence controlled by `right`.
+No pairs of elements in the original controlled sequence are reversed in the resulting controlled sequence. If a pair of elements in the resulting controlled sequence compares equal (`!(*Pi < *Pj) && !(*Pj < *Pi)`), an element from the original controlled sequence appears before an element from the sequence controlled by `right`.
 
 An exception occurs only if `comp` throws an exception. In that case, the controlled sequence is left in unspecified order and the exception is rethrown.
 
-## <a name="op_eq"></a> operator=
+## <a name="op_eq"></a> `operator=`
 
 Replaces the elements of the forward list with a copy of another forward list.
 
@@ -619,21 +607,21 @@ forward_list& operator=(forward_list&& right);
 
 ### Parameters
 
-*right*\
+*`right`*\
 The forward list being copied into the forward list.
 
-*IList*\
+*`IList`*\
 A brace-enclosed initializer list, which behaves just like a sequence of elements of type `Type`.
 
 ### Remarks
 
-The first member operator replaces the controlled sequence with a copy of the sequence controlled by *right*.
+The first member operator replaces the controlled sequence with a copy of the sequence controlled by *`right`*.
 
 The second member operator replaces the controlled sequence from an object of class `initializer_list<Type>`.
 
 The third member operator is the same as the first, but with an [rvalue](../cpp/rvalue-reference-declarator-amp-amp.md) reference.
 
-## <a name="pointer"></a> pointer
+## <a name="pointer"></a> `pointer`
 
 A type that provides a pointer to an element in the forward list.
 
@@ -641,7 +629,7 @@ A type that provides a pointer to an element in the forward list.
 typedef typename Allocator::pointer pointer;
 ```
 
-## <a name="pop_front"></a> pop_front
+## <a name="pop_front"></a> `pop_front`
 
 Deletes the element at the beginning of a forward list.
 
@@ -655,7 +643,7 @@ The first element of the forward list must be non-empty.
 
 The member function never throws an exception.
 
-## <a name="push_front"></a> push_front
+## <a name="push_front"></a> `push_front`
 
 Adds an element to the beginning of a forward list.
 
@@ -666,14 +654,14 @@ void push_front(Type&& val);
 
 ### Parameters
 
-*val*\
+*`val`*\
 The element added to the beginning of the forward list.
 
 ### Remarks
 
 If an exception is thrown, the container is left unaltered and the exception is rethrown.
 
-## <a name="reference"></a> reference
+## <a name="reference"></a> `reference`
 
 A type that provides a reference to an element in the forward list.
 
@@ -681,7 +669,7 @@ A type that provides a reference to an element in the forward list.
 typedef typename Allocator::reference reference;
 ```
 
-## <a name="remove"></a> remove
+## <a name="remove"></a> `remove`
 
 Erases elements in a forward list that matches a specified value.
 
@@ -691,7 +679,7 @@ void remove(const Type& val);
 
 ### Parameters
 
-*val*\
+*`val`*\
 The value which, if held by an element, will result in that element's removal from the list.
 
 ### Remarks
@@ -700,7 +688,7 @@ The member function removes from the controlled sequence all elements, designate
 
 The member function never throws an exception.
 
-## <a name="remove_if"></a> remove_if
+## <a name="remove_if"></a> `remove_if`
 
 Erases elements from a forward list for which a specified predicate is satisfied.
 
@@ -711,16 +699,16 @@ template <class Predicate>
 
 ### Parameters
 
-*pred*\
+*`pred`*\
 The unary predicate which, if satisfied by an element, results in the deletion of that element from the list.
 
 ### Remarks
 
 The member function removes from the controlled sequence all elements, designated by the iterator `P`, for which `pred(*P)` is true.
 
-An exception occurs only if *pred* throws an exception. In that case, the controlled sequence is left in an unspecified state and the exception is rethrown.
+An exception occurs only if *`pred`* throws an exception. In that case, the controlled sequence is left in an unspecified state and the exception is rethrown.
 
-## <a name="resize"></a> resize
+## <a name="resize"></a> `resize`
 
 Specifies a new size for a forward list.
 
@@ -731,17 +719,17 @@ void resize(size_type _Newsize, const Type& val);
 
 ### Parameters
 
-*_Newsize*\
+*`_Newsize`*\
 The number of elements in the resized forward list.
 
-*val*\
+*`val`*\
 The value to use for padding.
 
 ### Remarks
 
-The member functions both ensure that the number of elements in the list henceforth is *_Newsize*. If it must make the controlled sequence longer, the first member function appends elements with value `Type()`, while the second member function appends elements with value *val*. To make the controlled sequence shorter, both member functions effectively call `erase_after(begin() + _Newsize - 1, end())`.
+The member functions both ensure that the number of elements in the list henceforth is *`_Newsize`*. If it must make the controlled sequence longer, the first member function appends elements with value `Type()`, while the second member function appends elements with value *`val`*. To make the controlled sequence shorter, both member functions effectively call `erase_after(begin() + _Newsize - 1, end())`.
 
-## <a name="reverse"></a> reverse
+## <a name="reverse"></a> `reverse`
 
 Reverses the order in which the elements occur in a forward list.
 
@@ -749,7 +737,7 @@ Reverses the order in which the elements occur in a forward list.
 void reverse();
 ```
 
-## <a name="size_type"></a> size_type
+## <a name="size_type"></a> `size_type`
 
 A type that represents the unsigned distance between two elements.
 
@@ -761,7 +749,7 @@ typedef typename Allocator::size_type size_type;
 
 The unsigned integer type describes an object that can represent the length of any controlled sequence.
 
-## <a name="sort"></a> sort
+## <a name="sort"></a> `sort`
 
 Arranges the elements in ascending order or with an order specified by a predicate.
 
@@ -773,7 +761,7 @@ void sort(Predicate pred);
 
 ### Parameters
 
-*pred*\
+*`pred`*\
 The ordering predicate.
 
 ### Remarks
@@ -782,11 +770,11 @@ Both member functions order the elements in the controlled sequence by a predica
 
 For the iterators `Pi` and `Pj` designating elements at positions `i` and `j`, the first member function imposes the order `!(*Pj < *Pi)` whenever `i < j`. (The elements are sorted in `ascending` order.) The member template function imposes the order `! pred(*Pj, *Pi)` whenever `i < j`. No ordered pairs of elements in the original controlled sequence are reversed in the resulting controlled sequence. (The sort is stable.)
 
-An exception occurs only if *pred* throws an exception. In that case, the controlled sequence is left in unspecified order and the exception is rethrown.
+An exception occurs only if *`pred`* throws an exception. In that case, the controlled sequence is left in unspecified order and the exception is rethrown.
 
-## <a name="splice_after"></a> splice_after
+## <a name="splice_after"></a> `splice_after`
 
-Removes elements from a source forward_list and inserts them into a destination forward_list.
+Removes elements from a source `forward_list` and inserts them into a destination `forward_list`.
 
 ```cpp
 // insert the entire source forward_list
@@ -813,30 +801,30 @@ void splice_after(
 
 ### Parameters
 
-*Where*\
-The position in the destination forward_list after which to insert.
+*`Where`*\
+The position in the destination `forward_list` after which to insert.
 
-*Source*\
-The source forward_list that is to be inserted into the destination forward_list.
+*`Source`*\
+The source `forward_list` that is to be inserted into the destination `forward_list`.
 
-*Iter*\
-The element to be inserted from the source forward_list.
+*`Iter`*\
+The element to be inserted from the source `forward_list`.
 
-*First*\
-The first element in the range to be inserted from source forward_list.
+*`First`*\
+The first element in the range to be inserted from source `forward_list`.
 
-*Last*\
-The first position beyond the range to be inserted from the source forward_list.
+*`Last`*\
+The first position beyond the range to be inserted from the source `forward_list`.
 
 ### Remarks
 
-The first pair of member functions inserts the sequence controlled by *Source* just after the element in the controlled sequence pointed to by *Where*. It also removes all elements from *Source*. (`&Source` must not equal **`this`**.)
+The first pair of member functions inserts the sequence controlled by *`Source`* just after the element in the controlled sequence pointed to by *`Where`*. It also removes all elements from *`Source`*. (`&Source` must not equal **`this`**.)
 
-The second pair of member functions removes the element just after *Iter* in the sequence controlled by *Source* and inserts it just after the element in the controlled sequence pointed to by *Where*. (If `Where == Iter || Where == ++Iter`, no change occurs.)
+The second pair of member functions removes the element just after *`Iter`* in the sequence controlled by *`Source`* and inserts it just after the element in the controlled sequence pointed to by *`Where`*. (If `Where == Iter || Where == ++Iter`, no change occurs.)
 
-The third pair of member functions (ranged splice) inserts the subrange designated by `(First, Last)` from the sequence controlled by *Source* just after the element in the controlled sequence pointed to by *Where*. It also removes the original subrange from the sequence controlled by *Source*. (If `&Source == this`, the range `(First, Last)` must not include the element pointed to by *Where*.)
+The third pair of member functions (ranged splice) inserts the subrange designated by `(First, Last)` from the sequence controlled by *`Source`* just after the element in the controlled sequence pointed to by *`Where`*. It also removes the original subrange from the sequence controlled by *`Source`*. (If `&Source == this`, the range `(First, Last)` must not include the element pointed to by *`Where`*.)
 
-If the ranged splice inserts `N` elements, and `&Source != this`, an object of class [iterator](#iterator) is incremented `N` times.
+If the ranged splice inserts `N` elements, and `&Source != this`, an object of class [`iterator`](#iterator) is incremented `N` times.
 
 No iterators, pointers, or references that designate spliced elements become invalid.
 
@@ -913,7 +901,7 @@ int main()
 Beginning state of lists:c1 = (10) (11)c2 = (20) (21) (22)c3 = (30) (31)c4 = (40) (41) (42) (43)After splicing c1 into c2:c1 =c2 = (20) (21) (10) (11) (22)After splicing the first element of c3 into c2:c3 = (30)c2 = (20) (21) (31) (10) (11) (22)After splicing a range of c4 into c2:c4 = (40) (41)c2 = (20) (21) (42) (43) (31) (10) (11) (22)
 ```
 
-## <a name="swap"></a> swap
+## <a name="swap"></a> `swap`
 
 Exchanges the elements of two forward lists.
 
@@ -923,14 +911,14 @@ void swap(forward_list& right);
 
 ### Parameters
 
-*right*\
+*`right`*\
 The forward list providing the elements to be exchanged.
 
 ### Remarks
 
-The member function swaps the controlled sequences between **`*this`** and *right*. If `get_allocator() ==  right.get_allocator()`, it does so in constant time, it throws no exceptions, and it invalidates no references, pointers, or iterators that designate elements in the two controlled sequences. Otherwise, it performs element assignments and constructor calls proportional to the number of elements in the two controlled sequences.
+The member function swaps the controlled sequences between **`*this`** and *`right`*. If `get_allocator() ==  right.get_allocator()`, it does so in constant time, it throws no exceptions, and it invalidates no references, pointers, or iterators that designate elements in the two controlled sequences. Otherwise, it performs element assignments and constructor calls proportional to the number of elements in the two controlled sequences.
 
-## <a name="unique"></a> unique
+## <a name="unique"></a> `unique`
 
 Eliminates all but the first element from every consecutive group of equal elements.
 
@@ -942,7 +930,7 @@ void unique(BinaryPredicate comp);
 
 ### Parameters
 
-*comp*\
+*`comp`*\
 The binary predicate used to compare successive elements.
 
 ### Remarks
@@ -955,7 +943,7 @@ For a controlled sequence of length `N` (> 0), the predicate `comp(*Pi, *Pj)` is
 
 An exception occurs only if `comp` throws an exception. In that case, the controlled sequence is left in an unspecified state and the exception is rethrown.
 
-## <a name="value_type"></a> value_type
+## <a name="value_type"></a> `value_type`
 
 A type that represents the type of element stored in a forward list.
 
diff --git a/docs/standard-library/forward-list-operators.md b/docs/standard-library/forward-list-operators.md
index 333f3280e6..f221e37576 100644
--- a/docs/standard-library/forward-list-operators.md
+++ b/docs/standard-library/forward-list-operators.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: <forward_list> operators"
 title: "<forward_list> operators"
-ms.date: "11/04/2016"
-f1_keywords: ["forward_list/std::operator!=", "forward_list/std::operator==", "forward_list/std::operator>", "forward_list/std::operator&gt=;", "forward_list/std::operator<", "forward_list/std::operator<="]
-ms.assetid: 57492e09-3836-4dbc-9ae5-78ecf506c190
-helpviewer_keywords: ["std::operator!= (forward_list)", "std::operator== (forward_list)", "std::operator> (forward_list)", "std::operator&gt=; (forward_list)", "std::operator< (forward_list)", "std::operator<= (forward_list)"]
+description: "Learn more about: <forward_list> operators"
+ms.date: 11/04/2016
+f1_keywords: ["forward_list/std::operator!=", "forward_list/std::operator==", "forward_list/std::operator>", "forward_list/std::operator>=;", "forward_list/std::operator<", "forward_list/std::operator<="]
+helpviewer_keywords: ["std::operator!= (forward_list)", "std::operator== (forward_list)", "std::operator> (forward_list)", "std::operator>=; (forward_list)", "std::operator< (forward_list)", "std::operator<= (forward_list)"]
 ---
 # `<forward_list>` operators
 
diff --git a/docs/standard-library/freelist-class.md b/docs/standard-library/freelist-class.md
index 743dececd8..2d3d4286e5 100644
--- a/docs/standard-library/freelist-class.md
+++ b/docs/standard-library/freelist-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: freelist Class"
 title: "freelist Class"
-ms.date: "11/04/2016"
+description: "Learn more about: freelist Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::freelist", "allocators/stdext::freelist::pop", "allocators/stdext::freelist::push"]
 helpviewer_keywords: ["stdext::freelist", "stdext::freelist [C++], pop", "stdext::freelist [C++], push"]
-ms.assetid: 8ad7e35c-4c80-4479-8ede-1a2497b06d71
 ---
 # freelist Class
 
@@ -56,8 +55,6 @@ Constructs an object of type `freelist`.
 freelist();
 ```
 
-### Remarks
-
 ## <a name="pop"></a> freelist::pop
 
 Removes the first memory block from the free list.
diff --git a/docs/standard-library/fstream-typedefs.md b/docs/standard-library/fstream-typedefs.md
index 0676590e45..4006ded8a5 100644
--- a/docs/standard-library/fstream-typedefs.md
+++ b/docs/standard-library/fstream-typedefs.md
@@ -1,20 +1,12 @@
 ---
-description: "Learn more about: <fstream> typedefs"
 title: "<fstream> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <fstream> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["fstream/std::filebuf", "fstream/std::fstream", "fstream/std::ifstream", "fstream/std::ofstream", "fstream/std::wfilebuf", "fstream/std::wfstream", "fstream/std::wifstream", "fstream/std::wofstream"]
-ms.assetid: 8dddef2d-7f17-42a6-ba08-6f6f20597d23
 ---
 # `<fstream>` typedefs
 
-[`filebuf`](#filebuf)\
-[`fstream`](#fstream)\
-[`ifstream`](#ifstream)\
-[`ofstream`](#ofstream)\
-[`wfilebuf`](#wfilebuf)\
-[`wfstream`](#wfstream)\
-[`wifstream`](#wifstream)\
-[`wofstream`](#wofstream)
+The `<fstream>` header provides the following typedefs:
 
 ## <a name="filebuf"></a> `filebuf`
 
diff --git a/docs/standard-library/function-objects-in-the-stl.md b/docs/standard-library/function-objects-in-the-stl.md
index e1055bf6f6..4289ec032e 100644
--- a/docs/standard-library/function-objects-in-the-stl.md
+++ b/docs/standard-library/function-objects-in-the-stl.md
@@ -1,25 +1,24 @@
 ---
-description: "Learn more about: Function Objects in the C++ Standard Library"
 title: "Function Objects in the C++ Standard Library"
-ms.date: "03/15/2019"
+description: "Learn more about: Function Objects in the C++ Standard Library"
+ms.date: 06/22/2025
 helpviewer_keywords: ["functors", "C++ Standard Library, functors", "C++ Standard Library, function objects", "function objects"]
-ms.assetid: 85f8a735-2c7b-4f10-9c4d-95c666ec4192
 ---
 # Function Objects in the C++ Standard Library
 
-A *function object*, or *functor*, is any type that implements operator(). This operator is referred to as the *call operator* or sometimes the *application operator*. The C++ Standard Library uses function objects primarily as sorting criteria for containers and in algorithms.
+A *function object*, or *functor*, is any type that implements `operator()`. This operator is referred to as the *call operator* or sometimes the *application operator*. The C++ Standard Library uses function objects primarily as sorting criteria for containers and in algorithms.
 
-Function objects provide two main advantages over a straight function call. The first is that a function object can contain state. The second is that a function object is a type and therefore can be used as a template parameter.
+Function objects provide two main advantages over a regular function call. The first is that a function object can contain state. The second is that a function object is a type and therefore can be used as a template parameter.
 
 ## Creating a Function Object
 
-To create a function object, create a type and implement operator(), such as:
+To create a function object, create a type and implement `operator()`, such as:
 
 ```cpp
-class Functor
+class LessThanFunctor
 {
 public:
-    int operator()(int a, int b)
+    bool operator()(int a, int b)
     {
         return a < b;
     }
@@ -27,42 +26,42 @@ public:
 
 int main()
 {
-    Functor f;
+    LessThanFunctor less_than;
     int a = 5;
     int b = 7;
-    int ans = f(a, b);
+    bool ans = less_than(a, b);
 }
 ```
 
-The last line of the `main` function shows how you call the function object. This call looks like a call to a function, but it's actually calling operator() of the Functor type. This similarity between calling a function object and a function is how the term function object came about.
+The last line of the `main` function shows how you call the function object. This call looks like a call to a function, but it's actually calling `operator()` of the `LessThanFunctor` type. This similarity between calling a function object and a function is how the term function object came about.
 
 ## Function Objects and Containers
 
-The C++ Standard Library contains several function objects in the [`<functional>`](../standard-library/functional.md) header file. One use of these function objects is as a sorting criterion for containers. For example, the `set` container is declared as follows:
+The C++ Standard Library contains several function objects in the [`<functional>`](functional.md) header file. One use of these function objects is as a sorting criterion for containers. For example, the [`set`](set-class.md) container is declared as follows:
 
 ```cpp
 template <class Key,
-    class Traits=less<Key>,
-    class Allocator=allocator<Key>>
-class set
+    class Compare = std::less<Key>,
+    class Allocator = std::allocator<Key>>
+class set;
 ```
 
-The second template argument is the function object `less`. This function object returns **`true`** if the first parameter is less than the second parameter. Since some containers sort their elements, the container needs a way of comparing two elements. The comparison is done by using the function object. You can define your own sorting criteria for containers by creating a function object and specifying it in the template list for the container.
+The second template argument is the function object [`less`](less-struct.md). This function object returns **`true`** if the first parameter is less than the second parameter. Since some containers sort their elements, the container needs a way of comparing two elements. The comparison is done by using the function object. You can define your own sorting criteria for containers by creating a function object and specifying it in the template list for the container.
 
 ## Function Objects and Algorithms
 
-Another use of functional objects is in algorithms. For example, the `remove_if` algorithm is declared as follows:
+Another use of function objects is in algorithms. For example, the [`remove_if`](algorithm-functions.md#remove_if) algorithm is declared as follows:
 
 ```cpp
-template <class ForwardIterator, class Predicate>
+template <class ForwardIterator, class UnaryPredicate>
 ForwardIterator remove_if(
     ForwardIterator first,
     ForwardIterator last,
-    Predicate pred);
+    UnaryPredicate pred);
 ```
 
-The last argument to `remove_if` is a function object that returns a boolean value (a *predicate*). If the result of the function object is **`true`**, then the element is removed from the container being accessed by the iterators `first` and `last`. You can use any of the function objects declared in the [`<functional>`](../standard-library/functional.md) header for the argument `pred` or you can create your own.
+The last argument to `remove_if` is a function object that returns a boolean value (a *predicate*). If the result of the function object is **`true`**, then the element is shifted such that it's beyond the new end returned by `remove_if`. You can use any of the function objects declared in the [`<functional>`](functional.md) header for the argument `pred` or you can create your own.
 
 ## See also
 
-[C++ Standard Library Reference](../standard-library/cpp-standard-library-reference.md)
+[C++ Standard Library Reference](cpp-standard-library-reference.md)
diff --git a/docs/standard-library/future-enums.md b/docs/standard-library/future-enums.md
index 087f829180..565311c064 100644
--- a/docs/standard-library/future-enums.md
+++ b/docs/standard-library/future-enums.md
@@ -1,19 +1,16 @@
 ---
-description: "Learn more about: <future> enums"
 title: "<future> enums"
-ms.date: "11/04/2016"
+description: "Learn more about: <future> enums"
+ms.date: 11/04/2016
 f1_keywords: ["future/std::future_errc", "future/std::future_status", "future/std::launch"]
-ms.assetid: 8c675645-db47-4cab-bc0e-7b87f8a302df
 ---
 # `<future>` enums
 
-[future_errc](#future_errc)\
-[future_status](#future_status)\
-[launch](#launch)
+The `<future>` header provides the following enums:
 
-## <a name="future_errc"></a> future_errc Enumeration
+## <a name="future_errc"></a> `future_errc` enumeration
 
-Supplies symbolic names for all of the errors that are reported by the [future_error](../standard-library/future-error-class.md) class.
+Supplies symbolic names for all of the errors that are reported by the [`future_error`](../standard-library/future-error-class.md) class.
 
 ```cpp
 class future_errc {
@@ -24,7 +21,7 @@ class future_errc {
    };
 ```
 
-## <a name="future_status"></a> future_status Enumeration
+## <a name="future_status"></a> `future_status` enumeration
 
 Supplies symbolic names for the reasons that a timed wait function can return.
 
@@ -36,9 +33,9 @@ enum future_status{
 };
 ```
 
-## <a name="launch"></a> launch Enumeration
+## <a name="launch"></a> `launch` enumeration
 
-Represents a bitmask type that describes the possible modes for the template function [async](../standard-library/future-functions.md#async).
+Represents a bitmask type that describes the possible modes for the template function [`async`](../standard-library/future-functions.md#async).
 
 ```cpp
 class launch{
@@ -49,4 +46,4 @@ class launch{
 
 ## See also
 
-[\<future>](../standard-library/future.md)
+[\<future>](future.md)
diff --git a/docs/standard-library/future-functions.md b/docs/standard-library/future-functions.md
index 0608bf9ba7..24e91bd0bf 100644
--- a/docs/standard-library/future-functions.md
+++ b/docs/standard-library/future-functions.md
@@ -1,17 +1,13 @@
 ---
-description: "Learn more about: <future> functions"
 title: "<future> functions"
+description: "Learn more about: <future> functions"
 ms.date: 09/11/2024
 f1_keywords: ["future/std::async", "future/std::future_category", "future/std::make_error_code", "future/std::make_error_condition", "future/std::swap"]
 helpviewer_keywords: ["std::async [C++]", "std::future_category [C++]", "std::make_error_code [C++]", "std::make_error_condition [C++]", "std::swap [C++]"]
 ---
 # `<future>` functions
 
-[`async`](#async)\
-[`future_category`](#future_category)\
-[`make_error_code`](#make_error_code)\
-[`make_error_condition`](#make_error_condition)\
-[`swap`](#swap)|
+The `<future>` header provides the following functions:
 
 ## <a name="async"></a> `async`
 
diff --git a/docs/standard-library/hash-map-class.md b/docs/standard-library/hash-map-class.md
index adb3a1e83e..e7f121e554 100644
--- a/docs/standard-library/hash-map-class.md
+++ b/docs/standard-library/hash-map-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: hash_map Class"
 title: "hash_map Class"
-ms.date: "11/04/2016"
+description: "Learn more about: hash_map Class"
+ms.date: 11/04/2016
 f1_keywords: ["hash_map/stdext::hash_map", "hash_map/stdext::hash_map::allocator_type", "hash_map/stdext::hash_map::const_iterator", "hash_map/stdext::hash_map::const_pointer", "hash_map/stdext::hash_map::const_reference", "hash_map/stdext::hash_map::const_reverse_iterator", "hash_map/stdext::hash_map::difference_type", "hash_map/stdext::hash_map::iterator", "hash_map/stdext::hash_map::key_compare", "hash_map/stdext::hash_map::key_type", "hash_map/stdext::hash_map::mapped_type", "hash_map/stdext::hash_map::pointer", "hash_map/stdext::hash_map::reference", "hash_map/stdext::hash_map::reverse_iterator", "hash_map/stdext::hash_map::size_type", "hash_map/stdext::hash_map::value_type", "hash_map/stdext::hash_map::at", "hash_map/stdext::hash_map::begin", "hash_map/stdext::hash_map::cbegin", "hash_map/stdext::hash_map::cend", "hash_map/stdext::hash_map::clear", "hash_map/stdext::hash_map::count", "hash_map/stdext::hash_map::crbegin", "hash_map/stdext::hash_map::crend", "hash_map/stdext::hash_map::emplace", "hash_map/stdext::hash_map::emplace_hint", "hash_map/stdext::hash_map::empty", "hash_map/stdext::hash_map::end", "hash_map/stdext::hash_map::equal_range", "hash_map/stdext::hash_map::erase", "hash_map/stdext::hash_map::find", "hash_map/stdext::hash_map::get_allocator", "hash_map/stdext::hash_map::insert", "hash_map/stdext::hash_map::key_comp", "hash_map/stdext::hash_map::lower_bound", "hash_map/stdext::hash_map::max_size", "hash_map/stdext::hash_map::rbegin", "hash_map/stdext::hash_map::rend", "hash_map/stdext::hash_map::size", "hash_map/stdext::hash_map::swap", "hash_map/stdext::hash_map::upper_bound", "hash_map/stdext::hash_map::value_comp"]
 helpviewer_keywords: ["stdext::hash_map", "stdext::hash_map::allocator_type", "stdext::hash_map::const_iterator", "stdext::hash_map::const_pointer", "stdext::hash_map::const_reference", "stdext::hash_map::const_reverse_iterator", "stdext::hash_map::difference_type", "stdext::hash_map::iterator", "stdext::hash_map::key_compare", "stdext::hash_map::key_type", "stdext::hash_map::mapped_type", "stdext::hash_map::pointer", "stdext::hash_map::reference", "stdext::hash_map::reverse_iterator", "stdext::hash_map::size_type", "stdext::hash_map::value_type", "stdext::hash_map::at", "stdext::hash_map::begin", "stdext::hash_map::cbegin", "stdext::hash_map::cend", "stdext::hash_map::clear", "stdext::hash_map::count", "stdext::hash_map::crbegin", "stdext::hash_map::crend", "stdext::hash_map::emplace", "stdext::hash_map::emplace_hint", "stdext::hash_map::empty", "stdext::hash_map::end", "stdext::hash_map::equal_range", "stdext::hash_map::erase", "stdext::hash_map::find", "stdext::hash_map::get_allocator", "stdext::hash_map::insert", "stdext::hash_map::key_comp", "stdext::hash_map::lower_bound", "stdext::hash_map::max_size", "stdext::hash_map::rbegin", "stdext::hash_map::rend", "stdext::hash_map::size", "stdext::hash_map::swap", "stdext::hash_map::upper_bound", "stdext::hash_map::value_comp"]
 ---
@@ -58,7 +58,7 @@ The choice of container type should be based in general on the type of searching
 
 The `hash_map` should be the associative container of choice when the conditions associating the values with their keys are satisfied by the application. A model for this type of structure is an ordered list of uniquely occurring keywords with associated string values providing, say, definitions. If, instead, the words had more than one correct definition, so that keys weren't unique, then a `hash_multimap` would be the container of choice. If, on the other hand, just the list of words were being stored, then a `hash_set` would be the correct container. If multiple occurrences of the words were allowed, then a `hash_multiset` would be the appropriate container structure.
 
-The `hash_map` orders the sequence it controls by calling a stored hash *`Traits`* object of class [`value_compare`](../standard-library/value-compare-class.md). This stored object may be accessed by calling the member function [`key_comp`](#key_comp). Such a function object must behave the same as an object of class `hash_compare<Key, less<Key>>`. Specifically, for all values *`Key`* of type *`Key`*, the call `Traits`( `Key` ) yields a distribution of values of type `size_t`. For more information, see [`hash_compare`](../standard-library/hash-compare-class.md).
+The `hash_map` orders the sequence it controls by calling a stored hash *`Traits`* object of class [`value_compare`](../standard-library/value-compare-class.md). This stored object may be accessed by calling the member function [`key_comp`](#key_comp). Such a function object must behave the same as an object of class `hash_compare<Key, less<Key>>`. Specifically, for all values *`Key`* of type *`Key`*, the call `Traits`(`Key`) yields a distribution of values of type `size_t`. For more information, see [`hash_compare`](../standard-library/hash-compare-class.md).
 
 In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. A binary predicate f(x y) is a function object that has two argument objects `x` and `y` and a return value of **`true`** or **`false`**. An ordering imposed on a `hash_map` is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive and if equivalence is transitive, where two objects `x` and `y` are defined to be equivalent when both f(x, y) and f(y, x) are `false`. If the stronger condition of equality between keys replaces that of equivalence, then the ordering becomes total (in the sense that all the elements are ordered with respect to each other) and the keys matched will be indiscernible from each other.
 
@@ -371,8 +371,6 @@ Erases all the elements of a `hash_map`.
 void clear();
 ```
 
-### Remarks
-
 ### Example
 
 The following example demonstrates the use of the `hash_map::clear` member function.
@@ -463,8 +461,6 @@ A type that provides a reference to a **`const`** element stored in a `hash_map`
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -516,7 +512,7 @@ The data value of the first element in the hash_map is 10.
 A type that provides a bidirectional iterator that can read any **`const`** element in the `hash_map`.
 
 ```cpp
-typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse)iterator const_reverse_iterator;
+typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse_iterator const_reverse_iterator;
 ```
 
 ### Remarks
@@ -817,8 +813,8 @@ The [`hash_map::value_type`](#value_type) of an element is a pair, so that the v
 ```cpp
 // hash_map_emplace.cpp
 // compile with: /EHsc
-#include<hash_map>
-#include<iostream>
+#include <hash_map>
+#include <iostream>
 #include <string>
 
 int main()
@@ -878,8 +874,8 @@ Insertion can occur in amortized constant time, instead of logarithmic time, if
 ```cpp
 // hash_map_emplace_hint.cpp
 // compile with: /EHsc
-#include<hash_map>
-#include<iostream>
+#include <hash_map>
+#include <iostream>
 #include <string>
 
 int main()
@@ -917,8 +913,6 @@ bool empty() const;
 
 **`true`** if the `hash_map` is empty; **`false`** if the `hash_map` is nonempty.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1048,8 +1042,6 @@ A pair of iterators such that the first is the [`lower_bound`](#lower_bound) of
 
 To access the first iterator of a pair `pr` returned by the member function, use `pr.first` and to dereference the lower bound iterator, use `*(pr.first)`. To access the second iterator of a pair `pr` returned by the member function, use `pr.second` and to dereference the upper bound iterator, use `*(pr.second)`.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1526,7 +1518,7 @@ The position just beyond the last element to be copied from a `hash_map`.
 
 The first `insert` member function returns a pair whose `bool` component returns `true` if an insertion was made and `false` if the `hash_map` already contained an element whose key had an equivalent value in the ordering, and whose iterator component returns the address where a new element was inserted or where the element was already located.
 
-To access the iterator component of a pair `pr` returned by this member function, use `pr.first`, and to dereference it, use `(pr.first)`. To access the **`bool`** component of a pair `pr` returned by this member function, use `pr.second`, and to dereference it, use `\(pr.second)`.
+To access the iterator component of a pair `pr` returned by this member function, use `pr.first`, and to dereference it, use `(pr.first)`. To access the **`bool`** component of a pair `pr` returned by this member function, use `pr.second`, and to dereference it, use `(pr.second)`.
 
 The second `insert` member function, the hint version, returns an iterator that points to the position where the new element was inserted into the `hash_map`.
 
@@ -1545,8 +1537,8 @@ The third member function inserts the sequence of element values into a `hash_ma
 ```cpp
 // hash_map_insert.cpp
 // compile with: /EHsc
-#include<hash_map>
-#include<iostream>
+#include <hash_map>
+#include <iostream>
 #include <string>
 
 int main()
@@ -1815,8 +1807,6 @@ An [`iterator`](#iterator) or [`const_iterator`](#const_iterator) that addresses
 
 If the return value of `lower_bound` is assigned to a `const_iterator`, the `hash_map` object can't be modified. If the return value of `lower_bound` is assigned to a `iterator`, the `hash_map` object can be modified.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1904,8 +1894,6 @@ size_type max_size() const;
 
 The maximum possible length of the `hash_map`.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2196,8 +2184,6 @@ A type that provides a reference to an element stored in a `hash_map`.
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2378,8 +2364,6 @@ size_type size() const;
 
 The current length of the `hash_map`.
 
-### Remarks
-
 ### Example
 
 The following example demonstrates the use of the `hash_map::size` member function.
@@ -2424,8 +2408,6 @@ An unsigned integer type that can represent the number of elements in a `hash_ma
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;
 ```
 
-### Remarks
-
 ### Example
 
 See example for [`size`](#size) for an example of how to declare and use `size_type`
@@ -2528,8 +2510,6 @@ An [`iterator`](#iterator) or [`const_iterator`](#const_iterator) that addresses
 
 If the return value is assigned to a `const_iterator`, the `hash_map` object can't be modified. If the return value is assigned to an `iterator`, the `hash_map` object can be modified.
 
-### Remarks
-
 ### Example
 
 ```cpp
diff --git a/docs/standard-library/hash-map-functions.md b/docs/standard-library/hash-map-functions.md
index 8cfca3016b..023610dd7e 100644
--- a/docs/standard-library/hash-map-functions.md
+++ b/docs/standard-library/hash-map-functions.md
@@ -1,16 +1,14 @@
 ---
-description: "Learn more about: <hash_map> functions"
 title: "<hash_map> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <hash_map> functions"
+ms.date: 11/04/2016
 f1_keywords: ["hash_map/std::swap", "hash_map/std::swap (hash_map)"]
-ms.assetid: 28748cd0-71f7-41b9-b068-579183645fba
 ---
 # `<hash_map>` functions
 
-[swap](#swap)\
-[swap (hash_map)](#swap_hash_map)
+The `<hash_map>` header provides the following functions:
 
-## <a name="swap_hash_map"></a> swap (hash_map)
+## <a name="swap_hash_map"></a> `swap` (`hash_map`)
 
 > [!NOTE]
 > This API is obsolete. The alternative is [unordered_map Class](../standard-library/unordered-map-class.md).
@@ -19,23 +17,23 @@ Exchanges the elements of two hash_maps.
 
 ```cpp
 void swap(
-    hash_map <Key, Type, Traits, Alloctor>& left,
+    hash_map <Key, Type, Traits, Allocator>& left,
     hash_map <Key, Type, Traits, Allocator>& right);
 ```
 
 ### Parameters
 
-*right*\
-The hash_map whose elements are to be exchanged with those of the map *left*.
+*`right`*\
+The hash_map whose elements are to be exchanged with those of the map *`left`*.
 
-*left*\
-The hash_map whose elements are to be exchanged with those of the map *right*.
+*`left`*\
+The hash_map whose elements are to be exchanged with those of the map *`right`*.
 
 ### Remarks
 
-The template function is an algorithm specialized on the container class hash_map to execute the member function `left.`[swap](../standard-library/basic-ios-class.md#swap)*(right*). This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **template \<class T> void swap(T&, T&)**, in the algorithm header file works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
+The template function is an algorithm specialized on the container class hash_map to execute the member function `left.`[`swap`](../standard-library/basic-ios-class.md#swap)(`right`). This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **`template <class T> void swap(T&, T&)`**, in the algorithm header file works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
 
-## <a name="swap"></a> swap
+## <a name="swap"></a> `swap`
 
 > [!NOTE]
 > This API is obsolete. The alternative is [unordered_multimap Class](../standard-library/unordered-multimap-class.md).
@@ -44,22 +42,22 @@ Exchanges the elements of two hash_multimaps.
 
 ```cpp
 void swap(
-    hash_multimap <Key, Type, Traits, Alloctor>& left,
+    hash_multimap <Key, Type, Traits, Allocator>& left,
     hash_multimap <Key, Type, Traits, Allocator>& right);
 ```
 
 ### Parameters
 
-*right*\
-The hash_multimap whose elements are to be exchanged with those of the map *left*.
+*`right`*\
+The `hash_multimap` whose elements are to be exchanged with those of the map *`left`*.
 
-*left*\
-The hash_multimap whose elements are to be exchanged with those of the map *right*.
+*`left`*\
+The `hash_multimap` whose elements are to be exchanged with those of the map *`right`*.
 
 ### Remarks
 
-The template function is an algorithm specialized on the container class hash_multimap to execute the member function `left.`[swap](../standard-library/hash-multimap-class.md#swap)*(right*`)`. This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **template \<class T> void swap(T&, T&)**, in the algorithm header file works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
+The template function is an algorithm specialized on the container class hash_multimap to execute the member function `left.`[`swap`](../standard-library/hash-multimap-class.md#swap)(`right`). This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **`template <class T> void swap(T&, T&)`**, in the algorithm header file works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
 
 ## See also
 
-[<hash_map>](../standard-library/hash-map.md)
+[`<hash_map>`](../standard-library/hash-map.md)
diff --git a/docs/standard-library/hash-map-operators.md b/docs/standard-library/hash-map-operators.md
index 4367ddecbe..e3da872696 100644
--- a/docs/standard-library/hash-map-operators.md
+++ b/docs/standard-library/hash-map-operators.md
@@ -1,16 +1,12 @@
 ---
-description: "Learn more about: <hash_map> operators"
 title: "<hash_map> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <hash_map> operators"
+ms.date: 11/04/2016
 f1_keywords: ["hash_map/std::operator!=", "hash_map/std::operator=="]
-ms.assetid: 24b9bb9e-e983-4060-bce5-2c7c8161ee61
 ---
 # `<hash_map>` operators
 
-[operator!=](#op_neq)\
-[operator!= (multimap)](#op_neq_mm)\
-[operator==](#op_eq_eq)\
-[operator== (multimap)](#op_eq_eq_mm)
+The `<hash_map>` header provides the following operators:
 
 ## <a name="op_neq"></a> operator!=
 
@@ -215,7 +211,7 @@ The hash_multimaps hm1 and hm2 are not equal.
 The hash_multimaps hm1 and hm3 are equal.
 ```
 
-## <a name="op_eq_eq_mm"></a> operator==  (hash_multimap)
+## <a name="op_eq_eq_mm"></a> operator== (hash_multimap)
 
 > [!NOTE]
 > This API is obsolete. The alternative is [unordered_multimap Class](unordered-multimap-class.md).
diff --git a/docs/standard-library/hash-multimap-class.md b/docs/standard-library/hash-multimap-class.md
index ca2f5e5b1f..eaa3fad497 100644
--- a/docs/standard-library/hash-multimap-class.md
+++ b/docs/standard-library/hash-multimap-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: hash_multimap Class"
 title: "hash_multimap Class"
-ms.date: "10/18/2018"
+description: "Learn more about: hash_multimap Class"
+ms.date: 10/18/2018
 f1_keywords: ["hash_map/stdext::hash_multimap", "hash_map/stdext::hash_multimap::allocator_type", "hash_map/stdext::hash_multimap::const_iterator", "hash_map/stdext::hash_multimap::const_pointer", "hash_map/stdext::hash_multimap::const_reference", "hash_map/stdext::hash_multimap::const_reverse_iterator", "hash_map/stdext::hash_multimap::difference_type", "hash_map/stdext::hash_multimap::iterator", "hash_map/stdext::hash_multimap::key_compare", "hash_map/stdext::hash_multimap::key_type", "hash_map/stdext::hash_multimap::mapped_type", "hash_map/stdext::hash_multimap::pointer", "hash_map/stdext::hash_multimap::reference", "hash_map/stdext::hash_multimap::reverse_iterator", "hash_map/stdext::hash_multimap::size_type", "hash_map/stdext::hash_multimap::value_type", "hash_map/stdext::hash_multimap::begin", "hash_map/stdext::hash_multimap::cbegin", "hash_map/stdext::hash_multimap::cend", "hash_map/stdext::hash_multimap::clear", "hash_map/stdext::hash_multimap::count", "hash_map/stdext::hash_multimap::crbegin", "hash_map/stdext::hash_multimap::crend", "hash_map/stdext::hash_multimap::emplace", "hash_map/stdext::hash_multimap::emplace_hint", "hash_map/stdext::hash_multimap::empty", "hash_map/stdext::hash_multimap::end", "hash_map/stdext::hash_multimap::equal_range", "hash_map/stdext::hash_multimap::erase", "hash_map/stdext::hash_multimap::find", "hash_map/stdext::hash_multimap::get_allocator", "hash_map/stdext::hash_multimap::insert", "hash_map/stdext::hash_multimap::key_comp", "hash_map/stdext::hash_multimap::lower_bound", "hash_map/stdext::hash_multimap::max_size", "hash_map/stdext::hash_multimap::rbegin", "hash_map/stdext::hash_multimap::rend", "hash_map/stdext::hash_multimap::size", "hash_map/stdext::hash_multimap::swap", "hash_map/stdext::hash_multimap::upper_bound", "hash_map/stdext::hash_multimap::value_comp"]
 helpviewer_keywords: ["stdext::hash_multimap", "stdext::hash_multimap::allocator_type", "stdext::hash_multimap::const_iterator", "stdext::hash_multimap::const_pointer", "stdext::hash_multimap::const_reference", "stdext::hash_multimap::const_reverse_iterator", "stdext::hash_multimap::difference_type", "stdext::hash_multimap::iterator", "stdext::hash_multimap::key_compare", "stdext::hash_multimap::key_type", "stdext::hash_multimap::mapped_type", "stdext::hash_multimap::pointer", "stdext::hash_multimap::reference", "stdext::hash_multimap::reverse_iterator", "stdext::hash_multimap::size_type", "stdext::hash_multimap::value_type", "stdext::hash_multimap::begin", "stdext::hash_multimap::cbegin", "stdext::hash_multimap::cend", "stdext::hash_multimap::clear", "stdext::hash_multimap::count", "stdext::hash_multimap::crbegin", "stdext::hash_multimap::crend", "stdext::hash_multimap::emplace", "stdext::hash_multimap::emplace_hint", "stdext::hash_multimap::empty", "stdext::hash_multimap::end", "stdext::hash_multimap::equal_range", "stdext::hash_multimap::erase", "stdext::hash_multimap::find", "stdext::hash_multimap::get_allocator", "stdext::hash_multimap::insert", "stdext::hash_multimap::key_comp", "stdext::hash_multimap::lower_bound", "stdext::hash_multimap::max_size", "stdext::hash_multimap::rbegin", "stdext::hash_multimap::rend", "stdext::hash_multimap::size", "stdext::hash_multimap::swap", "stdext::hash_multimap::upper_bound", "stdext::hash_multimap::value_comp"]
-ms.assetid: f41a6db9-67aa-43a3-a3c5-dbfe9ec3ae7d
 ---
 # hash_multimap Class
 
@@ -327,8 +326,6 @@ Erases all the elements of a hash_multimap.
 void clear();
 ```
 
-### Remarks
-
 ### Example
 
 The following example demonstrates the use of the hash_multimap::clear member function.
@@ -419,8 +416,6 @@ A type that provides a reference to a **`const`** element stored in a hash_multi
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -776,8 +771,8 @@ The [hash_multimap::value_type](#value_type) of an element is a pair, so that th
 ```cpp
 // hash_multimap_emplace.cpp
 // compile with: /EHsc
-#include<hash_multimap>
-#include<iostream>
+#include <hash_multimap>
+#include <iostream>
 #include <string>
 
 int main()
@@ -837,8 +832,8 @@ Insertion can occur in amortized constant time, instead of logarithmic time, if
 ```cpp
 // hash_multimap_emplace_hint.cpp
 // compile with: /EHsc
-#include<hash_multimap>
-#include<iostream>
+#include <hash_multimap>
+#include <iostream>
 #include <string>
 
 int main()
@@ -876,8 +871,6 @@ bool empty() const;
 
 **`true`** if the hash_multimap is empty; **`false`** if the hash_multimap is nonempty.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1005,9 +998,7 @@ The argument key to be compared with the sort key of an element from the hash_mu
 
 A pair of iterators such that the first is the [lower_bound](#lower_bound) of the key and the second is the [upper_bound](#upper_bound) of the key.
 
-To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first** and to dereference the lower bound iterator, use \*( `pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second** and to dereference the upper bound iterator, use \*( `pr`. **second**).
-
-### Remarks
+To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first** and to dereference the lower bound iterator, use \*(`pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second** and to dereference the upper bound iterator, use \*(`pr`. **second**).
 
 ### Example
 
@@ -1686,8 +1677,6 @@ An [iterator](#iterator) or [const_iterator](#const_iterator) that addresses the
 
 If the return value of `lower_bound` is assigned to a `const_iterator`, the hash_multimap object cannot be modified. If the return value of `lower_bound` is assigned to an `iterator`, the hash_multimap object can be modified.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1793,8 +1782,6 @@ size_type max_size() const;
 
 The maximum possible length of the hash_multimap.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1989,8 +1976,6 @@ A type that provides a reference to an element stored in a hash_multimap.
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2165,8 +2150,6 @@ size_type size() const;
 
 The current length of the hash_multimap.
 
-### Remarks
-
 ### Example
 
 The following example demonstrates the use of the hash_multimap::size member function.
@@ -2211,8 +2194,6 @@ An unsigned integer type that counts the number of elements in a hash_multimap.
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;
 ```
 
-### Remarks
-
 ### Example
 
 See the example for [size](#size) for an example of how to declare and use `size_type`
@@ -2313,8 +2294,6 @@ An [iterator](#iterator) or [const_iterator](#const_iterator) that addresses the
 
 If the return value of `upper_bound` is assigned to a `const_iterator`, the hash_multimap object cannot be modified. If the return value of `upper_bound` is assigned to a `iterator`, the hash_multimap object can be modified.
 
-### Remarks
-
 ### Example
 
 ```cpp
diff --git a/docs/standard-library/hash-multiset-class.md b/docs/standard-library/hash-multiset-class.md
index 4c18f9e9e5..8be4252e16 100644
--- a/docs/standard-library/hash-multiset-class.md
+++ b/docs/standard-library/hash-multiset-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: hash_multiset Class"
 title: "hash_multiset Class"
-ms.date: "11/04/2016"
+description: "Learn more about: hash_multiset Class"
+ms.date: 11/04/2016
 f1_keywords: ["hash_set/stdext::hash_multiset", "hash_set/stdext::hash_multiset::allocator_type", "hash_set/stdext::hash_multiset::const_iterator", "hash_set/stdext::hash_multiset::const_pointer", "hash_set/stdext::hash_multiset::const_reference", "hash_set/stdext::hash_multiset::const_reverse_iterator", "hash_set/stdext::hash_multiset::difference_type", "hash_set/stdext::hash_multiset::iterator", "hash_set/stdext::hash_multiset::key_compare", "hash_set/stdext::hash_multiset::key_type", "hash_set/stdext::hash_multiset::pointer", "hash_set/stdext::hash_multiset::reference", "hash_set/stdext::hash_multiset::reverse_iterator", "hash_set/stdext::hash_multiset::size_type", "hash_set/stdext::hash_multiset::value_compare", "hash_set/stdext::hash_multiset::value_type", "hash_set/stdext::hash_multiset::begin", "hash_set/stdext::hash_multiset::cbegin", "hash_set/stdext::hash_multiset::cend", "hash_set/stdext::hash_multiset::clear", "hash_set/stdext::hash_multiset::count", "hash_set/stdext::hash_multiset::crbegin", "hash_set/stdext::hash_multiset::crend", "hash_set/stdext::hash_multiset::emplace", "hash_set/stdext::hash_multiset::emplace_hint", "hash_set/stdext::hash_multiset::empty", "hash_set/stdext::hash_multiset::end", "hash_set/stdext::hash_multiset::equal_range", "hash_set/stdext::hash_multiset::erase", "hash_set/stdext::hash_multiset::find", "hash_set/stdext::hash_multiset::get_allocator", "hash_set/stdext::hash_multiset::insert", "hash_set/stdext::hash_multiset::key_comp", "hash_set/stdext::hash_multiset::lower_bound", "hash_set/stdext::hash_multiset::max_size", "hash_set/stdext::hash_multiset::rbegin", "hash_set/stdext::hash_multiset::rend", "hash_set/stdext::hash_multiset::size", "hash_set/stdext::hash_multiset::swap", "hash_set/stdext::hash_multiset::upper_bound", "hash_set/stdext::hash_multiset::value_comp"]
 helpviewer_keywords: ["stdext::hash_multiset", "stdext::hash_multiset::allocator_type", "stdext::hash_multiset::const_iterator", "stdext::hash_multiset::const_pointer", "stdext::hash_multiset::const_reference", "stdext::hash_multiset::const_reverse_iterator", "stdext::hash_multiset::difference_type", "stdext::hash_multiset::iterator", "stdext::hash_multiset::key_compare", "stdext::hash_multiset::key_type", "stdext::hash_multiset::pointer", "stdext::hash_multiset::reference", "stdext::hash_multiset::reverse_iterator", "stdext::hash_multiset::size_type", "stdext::hash_multiset::value_compare", "stdext::hash_multiset::value_type", "stdext::hash_multiset::begin", "stdext::hash_multiset::cbegin", "stdext::hash_multiset::cend", "stdext::hash_multiset::clear", "stdext::hash_multiset::count", "stdext::hash_multiset::crbegin", "stdext::hash_multiset::crend", "stdext::hash_multiset::emplace", "stdext::hash_multiset::emplace_hint", "stdext::hash_multiset::empty", "stdext::hash_multiset::end", "stdext::hash_multiset::equal_range", "stdext::hash_multiset::erase", "stdext::hash_multiset::find", "stdext::hash_multiset::get_allocator", "stdext::hash_multiset::insert", "stdext::hash_multiset::key_comp", "stdext::hash_multiset::lower_bound", "stdext::hash_multiset::max_size", "stdext::hash_multiset::rbegin", "stdext::hash_multiset::rend", "stdext::hash_multiset::size", "stdext::hash_multiset::swap", "stdext::hash_multiset::upper_bound", "stdext::hash_multiset::value_comp"]
-ms.assetid: 0580397a-a76e-40ad-aea2-5c6f3a9d0a21
 ---
 # hash_multiset Class
 
@@ -309,8 +308,6 @@ Erases all the elements of a hash_multiset.
 void clear();
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -389,8 +386,6 @@ A type that provides a reference to a **`const`** element stored in a hash_multi
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -713,8 +708,6 @@ The value of an element to be inserted into the [hash_multiset](../standard-libr
 
 The `emplace` member function returns an iterator that points to the position where the new element was inserted.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -812,8 +805,6 @@ bool empty() const;
 
 **`true`** if the hash_multiset is empty; **`false`** if the hash_multiset is nonempty.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -931,7 +922,7 @@ The argument key to be compared with the sort key of an element from the hash_mu
 
 A pair of iterators where the first is the [lower_bound](#lower_bound) of the key and the second is the [upper_bound](#upper_bound) of the key.
 
-To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first** and to dereference the lower bound iterator, use \*( `pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second** and to dereference the upper bound iterator, use \*( `pr`. **second**).
+To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first** and to dereference the lower bound iterator, use \*(`pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second** and to dereference the upper bound iterator, use \*(`pr`. **second**).
 
 ### Example
 
@@ -1295,11 +1286,11 @@ hash_multiset(
 
 hash_multiset(
     hash_multiset&& Right
-};
+);
 hash_multiset (initializer_list<Type> IList);
 
 hash_multiset(
-    initializer_list<Tu[e> IList, const Compare& Comp):
+    initializer_list<Type> IList, const Compare& Comp):
 hash_multiset(
     initializer_list<Type> IList, const Compare& Comp, const Allocator& Al);
 
@@ -1592,8 +1583,6 @@ The argument key to be compared with the sort key of an element from the hash_mu
 
 An [iterator](#iterator) or [const_iterator](#const_iterator) that addresses the location of the first element in a hash_multiset with a key that is equal to or greater than the argument key, or that addresses the location succeeding the last element in the hash_multiset if no match is found for the key.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1652,8 +1641,6 @@ size_type max_size() const;
 
 The maximum possible length of the hash_multiset.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1846,8 +1833,6 @@ A type that provides a reference to an element stored in a hash_multiset.
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2005,8 +1990,6 @@ size_type size() const;
 
 The current length of the hash_multiset.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2048,8 +2031,6 @@ An unsigned integer type that can represent the number of elements in a hash_mul
 typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;
 ```
 
-### Remarks
-
 ### Example
 
 See example for [size](#size) for an example of how to declare and use `size_type`
@@ -2150,8 +2131,6 @@ The argument key to be compared with the sort key of an element from the hash_mu
 
 An [iterator](#iterator) or [const_iterator](#const_iterator) that addresses the location of the first element in a hash_multiset with a key greater than the argument key, or that addresses the location succeeding the last element in the hash_multiset if no match is found for the key.
 
-### Remarks
-
 ### Example
 
 ```cpp
diff --git a/docs/standard-library/hash-set-class.md b/docs/standard-library/hash-set-class.md
index 703cd2f9c4..642b9a7199 100644
--- a/docs/standard-library/hash-set-class.md
+++ b/docs/standard-library/hash-set-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: hash_set Class"
 title: "hash_set Class"
-ms.date: "11/04/2016"
+description: "Learn more about: hash_set Class"
+ms.date: 11/04/2016
 f1_keywords: ["hash_set/stdext::hash_set", "hash_set/stdext::hash_set::allocator_type", "hash_set/stdext::hash_set::const_iterator", "hash_set/stdext::hash_set::const_pointer", "hash_set/stdext::hash_set::const_reference", "hash_set/stdext::hash_set::const_reverse_iterator", "hash_set/stdext::hash_set::difference_type", "hash_set/stdext::hash_set::iterator", "hash_set/stdext::hash_set::key_compare", "hash_set/stdext::hash_set::key_type", "hash_set/stdext::hash_set::pointer", "hash_set/stdext::hash_set::reference", "hash_set/stdext::hash_set::reverse_iterator", "hash_set/stdext::hash_set::size_type", "hash_set/stdext::hash_set::value_compare", "hash_set/stdext::hash_set::value_type", "hash_set/stdext::hash_set::begin", "hash_set/stdext::hash_set::cbegin", "hash_set/stdext::hash_set::cend", "hash_set/stdext::hash_set::clear", "hash_set/stdext::hash_set::count", "hash_set/stdext::hash_set::crbegin", "hash_set/stdext::hash_set::crend", "hash_set/stdext::hash_set::emplace", "hash_set/stdext::hash_set::emplace_hint", "hash_set/stdext::hash_set::empty", "hash_set/stdext::hash_set::end", "hash_set/stdext::hash_set::equal_range", "hash_set/stdext::hash_set::erase", "hash_set/stdext::hash_set::find", "hash_set/stdext::hash_set::get_allocator", "hash_set/stdext::hash_set::insert", "hash_set/stdext::hash_set::key_comp", "hash_set/stdext::hash_set::lower_bound", "hash_set/stdext::hash_set::max_size", "hash_set/stdext::hash_set::rbegin", "hash_set/stdext::hash_set::rend", "hash_set/stdext::hash_set::size", "hash_set/stdext::hash_set::swap", "hash_set/stdext::hash_set::upper_bound", "hash_set/stdext::hash_set::value_comp"]
 helpviewer_keywords: ["stdext::hash_set", "stdext::hash_set::allocator_type", "stdext::hash_set::const_iterator", "stdext::hash_set::const_pointer", "stdext::hash_set::const_reference", "stdext::hash_set::const_reverse_iterator", "stdext::hash_set::difference_type", "stdext::hash_set::iterator", "stdext::hash_set::key_compare", "stdext::hash_set::key_type", "stdext::hash_set::pointer", "stdext::hash_set::reference", "stdext::hash_set::reverse_iterator", "stdext::hash_set::size_type", "stdext::hash_set::value_compare", "stdext::hash_set::value_type", "stdext::hash_set::begin", "stdext::hash_set::cbegin", "stdext::hash_set::cend", "stdext::hash_set::clear", "stdext::hash_set::count", "stdext::hash_set::crbegin", "stdext::hash_set::crend", "stdext::hash_set::emplace", "stdext::hash_set::emplace_hint", "stdext::hash_set::empty", "stdext::hash_set::end", "stdext::hash_set::equal_range", "stdext::hash_set::erase", "stdext::hash_set::find", "stdext::hash_set::get_allocator", "stdext::hash_set::insert", "stdext::hash_set::key_comp", "stdext::hash_set::lower_bound", "stdext::hash_set::max_size", "stdext::hash_set::rbegin", "stdext::hash_set::rend", "stdext::hash_set::size", "stdext::hash_set::swap", "stdext::hash_set::upper_bound", "stdext::hash_set::value_comp"]
-ms.assetid: c765c06e-cbb6-48c2-93ca-d15468eb28d7
 ---
 # hash_set Class
 
@@ -317,8 +316,6 @@ Erases all the elements of a hash_set.
 void clear();
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -397,8 +394,6 @@ A type that provides a reference to a **`const`** element stored in a hash_set f
 typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reference const_reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -721,8 +716,6 @@ The value of an element to be inserted into the [hash_set](../standard-library/h
 
 The `emplace` member function returns a pair whose **`bool`** component returns **`true`** if an insertion was make and **`false`** if the `hash_set` already contained an element whose key had an equivalent value in the ordering, and whose iterator component returns the address where a new element was inserted or where the element was already located.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -820,8 +813,6 @@ bool empty() const;
 
 **`true`** if the hash_set is empty; **`false`** if the hash_set is nonempty.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -939,9 +930,7 @@ The argument key to be compared with the sort key of an element from the hash_se
 
 A pair of iterators where the first is the [lower_bound](../standard-library/set-class.md#lower_bound) of the key and the second is the [upper_bound](../standard-library/set-class.md#upper_bound) of the key.
 
-To access the first iterator of a pair pr returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*( `pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*( `pr`. **second**).
-
-### Remarks
+To access the first iterator of a pair pr returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*(`pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*(`pr`. **second**).
 
 ### Example
 
@@ -1355,7 +1344,7 @@ All constructors initialize their hash_sets.
 
 All constructors store a function object of type `Traits` that is used to establish an order among the keys of the `hash_set` and that can later be returned by calling [hash_set::key_comp](#key_comp). For more information on `Traits` see the [hash_set Class](../standard-library/hash-set-class.md) topic.
 
-The first constructor creates an empty initial `hash_set` The second specifies the type of comparison function ( `Comp`) to be used in establishing the order of the elements, and the third explicitly specifies the allocator type ( `Al`) to be used. The key word **`explicit`** suppresses certain kinds of automatic type conversion.
+The first constructor creates an empty initial `hash_set` The second specifies the type of comparison function (`Comp`) to be used in establishing the order of the elements, and the third explicitly specifies the allocator type (`Al`) to be used. The key word **`explicit`** suppresses certain kinds of automatic type conversion.
 
 The fourth and fifth constructors specify a copy of the `hash_set` `Right`.
 
@@ -1584,8 +1573,6 @@ The argument key to be compared with the sort key of an element from the hash_se
 
 An `iterator` or `const_iterator` that addresses the location of an element in a hash_set that with a key that is equal to or greater than the argument key or that addresses the location succeeding the last element in the hash_set if no match is found for the key.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1651,8 +1638,6 @@ size_type max_size() const;
 
 The maximum possible length of the hash_set.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -1845,8 +1830,6 @@ A type that provides a reference to an element stored in a hash_set.
 typedef list<typename Traits::value_type, typename Traits::allocator_type>::reference reference;
 ```
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2004,8 +1987,6 @@ size_type size() const;
 
 The current length of the hash_set.
 
-### Remarks
-
 ### Example
 
 ```cpp
@@ -2047,8 +2028,6 @@ An unsigned integer type that can represent the number of elements in a hash_set
 typedef list<typename Traits::value_type, typename Traits::allocator_type>::size_type size_type;
 ```
 
-### Remarks
-
 ### Example
 
 See the example for [size](#size) for an example of how to declare and use `size_type`
@@ -2149,8 +2128,6 @@ The argument key to be compared with the sort key of an element from the hash_se
 
 An `iterator` or `const_iterator` that addresses the location of an element in a hash_set that with a key that is equal to or greater than the argument key, or that addresses the location succeeding the last element in the hash_set if no match is found for the key.
 
-### Remarks
-
 ### Example
 
 ```cpp
diff --git a/docs/standard-library/hash-set-functions.md b/docs/standard-library/hash-set-functions.md
index 2dd96536c7..43faa5b306 100644
--- a/docs/standard-library/hash-set-functions.md
+++ b/docs/standard-library/hash-set-functions.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: <hash_set> functions"
 title: "<hash_set> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <hash_set> functions"
+ms.date: 11/04/2016
 f1_keywords: ["hash_set/std::swap", "hash_set/std::swap (hash_multiset)"]
-ms.assetid: 557a0162-3728-4537-97dc-f9f6cc7ece94
 ---
 # `<hash_set>` functions
 
-[swap](#swap)\
-[swap (hash_multiset)](#swap_hash_multiset)
+The `<hash_set>` header provides the following functions:
 
 ## <a name="swap"></a> swap
 
diff --git a/docs/standard-library/hash-set-operators.md b/docs/standard-library/hash-set-operators.md
index dc6d86cb06..3ed14584a2 100644
--- a/docs/standard-library/hash-set-operators.md
+++ b/docs/standard-library/hash-set-operators.md
@@ -1,16 +1,12 @@
 ---
-description: "Learn more about: <hash_set> operators"
 title: "<hash_set> operators"
-ms.date: "03/27/2019"
+description: "Learn more about: <hash_set> operators"
+ms.date: 03/27/2019
 f1_keywords: ["hash_set/std::operator!=", "hash_set/std::operator=="]
-ms.assetid: 403d8e4e-0b3f-43fb-bc5a-8100c4f331c5
 ---
 # `<hash_set>` operators
 
-[operator!=](#op_neq)\
-[operator!= (hash_multiset)](#op_neq_hash_multiset)\
-[operator==](#op_eq_eq)\
-[operator== (hash_multiset)](#op_eq_eq_hash_multiset)
+The `<hash_set>` header provides the following operators:
 
 ## <a name="op_neq"></a> operator!=
 
diff --git a/docs/standard-library/hash-set.md b/docs/standard-library/hash-set.md
index 9f11c05422..e058191584 100644
--- a/docs/standard-library/hash-set.md
+++ b/docs/standard-library/hash-set.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: <hash_set>"
 title: "<hash_set>"
-ms.date: "11/04/2016"
+description: "Learn more about: <hash_set>"
+ms.date: 11/04/2016
 f1_keywords: ["<hash_set>"]
 helpviewer_keywords: ["hash_set header"]
-ms.assetid: 6b556967-c808-4869-9b4d-f9e030864435
 ---
 # `<hash_set>`
 
@@ -19,8 +18,6 @@ Defines the container class templates hash_set and hash_multiset and their suppo
 #include <hash_set>
 ```
 
-## Remarks
-
 ### Operators
 
 |Hash_set version|Hash_multiset version|Description|
diff --git a/docs/standard-library/high-resolution-clock-struct.md b/docs/standard-library/high-resolution-clock-struct.md
index 702f8d536f..070d29c732 100644
--- a/docs/standard-library/high-resolution-clock-struct.md
+++ b/docs/standard-library/high-resolution-clock-struct.md
@@ -1,10 +1,10 @@
 ---
-description: "Learn more about: high_resolution_clock struct"
 title: high_resolution_clock struct
+description: "Learn more about: high_resolution_clock struct"
 ms.custom: ""
 ms.date: 08/19/2021
 ms.topic: "reference"
-f1_keywords: ["chrono/std::chrono::high_resolution_clock", chrono/std::chrono::high_resolution_clock::now", "chrono/std::chrono::high_resolution_clock::is_steady constant"]
+f1_keywords: ["chrono/std::chrono::high_resolution_clock", "chrono/std::chrono::high_resolution_clock::now", "chrono/std::chrono::high_resolution_clock::is_steady constant"]
 helpviewer_keywords: ["std::chrono [C++], high_resolution_clock"]
 dev_langs: ["C++"]
 author: "tylermsft"
diff --git a/docs/standard-library/insert-iterator-class.md b/docs/standard-library/insert-iterator-class.md
index 73196c2637..6932e17a30 100644
--- a/docs/standard-library/insert-iterator-class.md
+++ b/docs/standard-library/insert-iterator-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: insert_iterator Class"
 title: "insert_iterator Class"
+description: "Learn more about: insert_iterator Class"
 ms.date: 06/15/2022
 f1_keywords: ["iterator/std::insert_iterator", "iterator/std::insert_iterator::container_type", "iterator/std::insert_iterator::reference"]
 helpviewer_keywords: ["std::insert_iterator [C++]", "std::insert_iterator [C++], container_type", "std::insert_iterator [C++], reference"]
-ms.assetid: d5d86405-872e-4e3b-9e68-c69a2b7e8221
 ms.custom: devdivchpfy22
 ---
 
@@ -293,7 +292,7 @@ Inserts a value into the container and returns the iterator updated to point to
 
 ```cpp
 insert_iterator<Container>& operator=(
-    typename Container::const_reference val,);
+    typename Container::const_reference val);
 
 insert_iterator<Container>& operator=(
     typename Container::value_type&& val);
diff --git a/docs/standard-library/iomanip-functions.md b/docs/standard-library/iomanip-functions.md
index 3c821d8b77..64bf5ddc61 100644
--- a/docs/standard-library/iomanip-functions.md
+++ b/docs/standard-library/iomanip-functions.md
@@ -1,23 +1,13 @@
 ---
-description: "Learn more about: <iomanip> functions"
 title: "<iomanip> functions"
+description: "Learn more about: <iomanip> 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"]
 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++]"]
 ---
 # `<iomanip>` functions
 
-[`get_money`](#iomanip_get_money)\
-[`get_time`](#iomanip_get_time)\
-[`put_money`](#iomanip_put_money)\
-[`put_time`](#iomanip_put_time)\
-[`quoted`](#quoted)\
-[`resetiosflags`](#resetiosflags)\
-[`setbase`](#setbase)\
-[`setfill`](#setfill)\
-[`setiosflags`](#setiosflags)\
-[`setprecision`](#setprecision)\
-[`setw`](#setw)
+The `<iomanip>` header provides the following functions:
 
 ## <a name="iomanip_get_money"></a> `get_money`
 
@@ -648,4 +638,4 @@ l5 = 65536
 
 ## See also
 
-[`<iomanip>`](../standard-library/iomanip.md)
\ No newline at end of file
+[`<iomanip>`](../standard-library/iomanip.md)
diff --git a/docs/standard-library/ios-base-class.md b/docs/standard-library/ios-base-class.md
index c8e5762d83..f84b995bda 100644
--- a/docs/standard-library/ios-base-class.md
+++ b/docs/standard-library/ios-base-class.md
@@ -665,7 +665,7 @@ void callback1( ios_base::event e, ios_base& stream, int arg )
     case ios_base::copyfmt_event:
         cout << "an copyfmt event" << endl;
         break;
-    };
+    }
 }
 
 void callback2( ios_base::event e, ios_base& stream, int arg )
@@ -682,7 +682,7 @@ void callback2( ios_base::event e, ios_base& stream, int arg )
     case ios_base::copyfmt_event:
         cout << "an copyfmt event" << endl;
         break;
-    };
+    }
 }
 
 int main( )
diff --git a/docs/standard-library/ios-functions.md b/docs/standard-library/ios-functions.md
index 3f8e2af70c..458210579a 100644
--- a/docs/standard-library/ios-functions.md
+++ b/docs/standard-library/ios-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <ios> functions"
 title: "<ios> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <ios> functions"
+ms.date: 11/04/2016
 f1_keywords: ["xiosbase/std::defaultfloat", "xiosbase/std::boolalpha", "xiosbase/std::dec", "ios/std::fixed", "ios/std::hex", "ios/std::internal", "ios/std::left", "ios/std::noboolalpha", "ios/std::noshowbase", "ios/std::noshowpoint", "ios/std::noshowpos", "ios/std::noskipws", "ios/std::nounitbuf", "ios/std::nouppercase", "ios/std::oct", "ios/std::right", "ios/std::scientific", "ios/std::showbase", "ios/std::showpoint", "ios/std::showpos", "ios/std::skipws", "ios/std::unitbuf", "ios/std::uppercase"]
-ms.assetid: 1382d53f-e531-4b41-adf6-6a1543512e51
 helpviewer_keywords: ["std::defaultfloat [C++]", "std::boolalpha [C++]", "std::dec [C++]", "std::fixed [C++]", "std::hex [C++]", "std::hexfloat [C++]", "std::io_errc [C++]", "std::internal [C++]", "std::iostream_category [C++]", "std::is_error_code_enum [C++]", "std::left [C++]", "std::make_error_code [C++]", "std::make_error_condition [C++]", "std::noboolalpha [C++]", "std::noshowbase [C++]", "std::noshowpoint [C++]", "std::noshowpos [C++]", "std::noskipws [C++]", "std::nounitbuf [C++]", "std::nouppercase [C++]", "std::oct [C++]", "std::right [C++]", "std::scientific [C++]", "std::showbase [C++]", "std::showpoint [C++]", "std::showpos [C++]", "std::skipws [C++]", "std::unitbuf [C++]", "std::uppercase [C++]"]
 ---
 # `<ios>` functions
@@ -29,7 +28,7 @@ A reference to the object from which *str* is derived.
 
 By default, variables of type **`bool`** are displayed as 1 or 0.
 
-`boolalpha` effectively calls `str.`[setf](../standard-library/ios-base-class.md#setf)( `ios_base::boolalpha`), and then returns *str*.
+`boolalpha` effectively calls `str.`[setf](../standard-library/ios-base-class.md#setf)(`ios_base::boolalpha`), and then returns *str*.
 
 [noboolalpha](../standard-library/ios-functions.md#noboolalpha) reverses the effect of `boolalpha`.
 
@@ -81,7 +80,7 @@ A reference to the object from which *str* is derived.
 
 By default, integer variables are displayed in base 10.
 
-`dec` effectively calls `str.`[setf](../standard-library/ios-base-class.md#setf)( `ios_base::dec`, `ios_base::basefield`), and then returns *str*.
+`dec` effectively calls `str.`[setf](../standard-library/ios-base-class.md#setf)(`ios_base::dec`, `ios_base::basefield`), and then returns *str*.
 
 ### Example
 
@@ -151,7 +150,7 @@ A reference to the object from which *str* is derived.
 
 `fixed` is the default display notation for floating-point numbers. [scientific](../standard-library/ios-functions.md#scientific) causes floating-point numbers to be displayed using scientific notation.
 
-The manipulator effectively calls *str*.[setf](../standard-library/ios-base-class.md#setf)( `ios_base::fixed`, `ios_base::floatfield` ), and then returns *str*.
+The manipulator effectively calls *str*.[setf](../standard-library/ios-base-class.md#setf)(`ios_base::fixed`, `ios_base::floatfield`), and then returns *str*.
 
 ### Example
 
@@ -199,7 +198,7 @@ A reference to the object from which *str* is derived.
 
 By default, integer variables are displayed in base 10 notation. [dec](../standard-library/ios-functions.md#dec) and [oct](../standard-library/ios-functions.md#oct) also change the way integer variables appear.
 
-The manipulator effectively calls `str`**.**[setf](../standard-library/ios-base-class.md#setf)( `ios_base::hex`, `ios_base::basefield`), and then returns *str*.
+The manipulator effectively calls `str`**.**[setf](../standard-library/ios-base-class.md#setf)(`ios_base::hex`, `ios_base::basefield`), and then returns *str*.
 
 ### Example
 
diff --git a/docs/standard-library/iota-view-class.md b/docs/standard-library/iota-view-class.md
index c54f71c12d..f33113e8cb 100644
--- a/docs/standard-library/iota-view-class.md
+++ b/docs/standard-library/iota-view-class.md
@@ -67,7 +67,7 @@ This view is typically used to iterate over a series of values. For example:
 ```cpp
 for (int i : iota_view{1, 10}) // iterate over a view of the integers 1 through 9
 {
-    std::cout << i << ’ ’; // 1 2 3 4 5 6 7 8 9
+    std::cout << i << ' '; // 1 2 3 4 5 6 7 8 9
 }
 ```
 
@@ -116,7 +116,7 @@ When you use one of the constructors that value-initializes the bound, the bound
 ## `iota_view` constructor example
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 #include <vector>
diff --git a/docs/standard-library/is-error-code-enum-class.md b/docs/standard-library/is-error-code-enum-class.md
index 320d487d28..68b900c9dd 100644
--- a/docs/standard-library/is-error-code-enum-class.md
+++ b/docs/standard-library/is-error-code-enum-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: is_error_code_enum Class"
 title: "is_error_code_enum Class"
+description: "Learn more about: is_error_code_enum Class"
 ms.date: "11/04/2016"
 f1_keywords: ["system_error/std::is_error_code_enum"]
 helpviewer_keywords: ["is_error_code_enum class"]
-ms.assetid: cee5be2d-7c20-4cec-a352-1ab8b7d32601
 ---
 # is_error_code_enum Class
 
@@ -13,8 +12,8 @@ Represents a type predicate that tests for the [error_code](../standard-library/
 ## Syntax
 
 ```cpp
-template <_Enum>
-    class is_error_code_enum;
+template <class _Enum>
+struct is_error_code_enum;
 ```
 
 ## Remarks
diff --git a/docs/standard-library/is-error-condition-enum-class.md b/docs/standard-library/is-error-condition-enum-class.md
index cf277036fe..f5599c93e1 100644
--- a/docs/standard-library/is-error-condition-enum-class.md
+++ b/docs/standard-library/is-error-condition-enum-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: is_error_condition_enum Class"
 title: "is_error_condition_enum Class"
+description: "Learn more about: is_error_condition_enum Class"
 ms.date: "11/04/2016"
 f1_keywords: ["system_error/std::is_error_condition_enum"]
 helpviewer_keywords: ["is_error_condition_enum class"]
-ms.assetid: 752bb87a-c61c-4304-9254-5aaf228b59c0
 ---
 # is_error_condition_enum Class
 
@@ -13,8 +12,8 @@ Represents a type predicate that tests for the [error_condition](../standard-lib
 ## Syntax
 
 ```cpp
-template <_Enum>
-    class is_error_condition_enum;
+template <class _Enum>
+struct is_error_condition_enum;
 ```
 
 ## Remarks
diff --git a/docs/standard-library/istream-functions.md b/docs/standard-library/istream-functions.md
index 5393a82b01..8c6d33665e 100644
--- a/docs/standard-library/istream-functions.md
+++ b/docs/standard-library/istream-functions.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: <istream> functions"
 title: "<istream> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <istream> functions"
+ms.date: 11/04/2016
 f1_keywords: ["istream/std::swap", "istream/std::ws"]
-ms.assetid: 0301ea0d-4ded-4841-83dd-4253b55b3188
 ---
 # `<istream>` functions
 
-[swap](#istream_swap)\
-[ws](#ws)
+The `<istream>` header provides the following functions:
 
 ## <a name="istream_swap"></a> swap
 
diff --git a/docs/standard-library/istream-iterator-class.md b/docs/standard-library/istream-iterator-class.md
index 7e0a116ca6..4961861016 100644
--- a/docs/standard-library/istream-iterator-class.md
+++ b/docs/standard-library/istream-iterator-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: istream_iterator Class"
 title: "istream_iterator Class"
+description: "Learn more about: istream_iterator Class"
 ms.date: 06/15/2022
 f1_keywords: ["iterator/std::istream_iterator", "iterator/std::istream_iterator::char_type", "iterator/std::istream_iterator::istream_type", "iterator/std::istream_iterator::traits_type"]
 helpviewer_keywords: ["std::istream_iterator [C++]", "std::istream_iterator [C++], char_type", "std::istream_iterator [C++], istream_type", "std::istream_iterator [C++], traits_type"]
-ms.assetid: fb52a8cd-7f71-48d1-b73e-4b064e2a8d16
 ms.custom: devdivchpfy22
 ---
 
@@ -160,7 +159,7 @@ int main( )
    istream_iterator<int> intvecRead ( cin );
 
    // Default constructor will test equal to end of stream
-   // for delimiting source range of vecor
+   // for delimiting source range of vector
    copy ( intvecRead , istream_iterator<int>( ) , vec.begin ( ) );
    cin.clear ( );
 
diff --git a/docs/standard-library/istream-typedefs.md b/docs/standard-library/istream-typedefs.md
index 2fb9ef751e..9d43bdeaa1 100644
--- a/docs/standard-library/istream-typedefs.md
+++ b/docs/standard-library/istream-typedefs.md
@@ -1,16 +1,12 @@
 ---
-description: "Learn more about: <istream> typedefs"
 title: "<istream> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <istream> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["istream/std::iostream", "istream/std::istream", "istream/std::wiostream", "istream/std::wistream"]
-ms.assetid: 55bc1f84-53a7-46ca-a36f-ac6ef75d0374
 ---
 # `<istream>` typedefs
 
-[iostream](#iostream)\
-[istream](#istream)\
-[wiostream](#wiostream)\
-[wistream](#wistream)
+The `<istream>` header provides the following typedefs:
 
 ## <a name="iostream"></a> iostream
 
diff --git a/docs/standard-library/iterator-concepts.md b/docs/standard-library/iterator-concepts.md
index b26c47b97a..a5e205079f 100644
--- a/docs/standard-library/iterator-concepts.md
+++ b/docs/standard-library/iterator-concepts.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about iterator concepts."
 title: "Iterator concepts"
+description: "Learn more about iterator concepts."
 ms.date: 12/16/2022
 f1_keywords: ["ranges/std::ranges::range", "ranges/std::ranges::bidirectional_iterator", "ranges/std::ranges::borrowed_iterator", "ranges/std::ranges::common_iterator", "ranges/std::ranges::contiguous_iterator", "ranges/std::ranges::forward_iterator", "ranges/std::ranges::input_iterator", "ranges/std::ranges::output_iterator", "ranges/std::ranges::random_access_iterator", "ranges/std::ranges::simple_view", "ranges/std::ranges::sized_iterator", "ranges/std::ranges::view", "ranges/std::ranges::viewable_iterator"]
 helpviewer_keywords: ["std::ranges [C++], ranges::range", "std::ranges [C++], ranges::bidirectional_iterator", "std::ranges [C++], ranges::borrowed_iterator", "std::ranges [C++], ranges::common_iterator", "std::ranges [C++], ranges::contiguous_iterator", "std::ranges [C++], ranges::forward_iterator", "std::ranges [C++], ranges::input_iterator", "std::ranges [C++], ranges::output_iterator", "std::ranges [C++], ranges::random_access_iterator", "std::ranges [C++], ranges::simple_view", "std::ranges [C++], ranges::sized_iterator", "std::ranges [C++], ranges::view", "std::ranges [C++], ranges::viewable_iterator"]
@@ -70,7 +70,7 @@ In the following table, "Example types" refers to collections/iterators that sat
 | [`forward_iterator`](#forward_iterator)<sup>C++20</sup> | Specifies an iterator that can read (and possibly write) multiple times. | Forward | Read/write | yes | `vector`, `list` |
 | [`bidirectional_iterator`](#bidirectional_iterator)<sup>C++20</sup> | Specifies an iterator that you can read and write both forwards and backwards. | Forward or backward | Read/write | yes | `list`, `set`, `multiset`, `map`, and `multimap`. |
 | [`random_access_iterator`](#random_access_iterator)<sup>C++20</sup> | Specifies an iterator that you can read and write by index. | Forward or backward | Read/write | yes | `vector`, `array`, `deque` |
-| [`contiguous_iterator`](#contiguous_iterator)<sup>C++20</sup> | Specifies an iterator whose elements are sequential in memory, are the same size, and can be accessed using pointer arithmetic. | Forward or backward | Read/write | yes | `array`, `vector` `string`.|
+| [`contiguous_iterator`](#contiguous_iterator)<sup>C++20</sup> | Specifies an iterator whose elements are sequential in memory, are the same size, and can be accessed using pointer arithmetic. | Forward or backward | Read/write | yes | `array`, `vector`, `string`.|
 
 Other iterator concepts include:
 
@@ -455,8 +455,6 @@ The iterator type.
 *`S`*\
 The sentinel type to test.
 
-### Remarks
-
 ### Example: `sized_sentinel_for`
 
 The following example uses the `sized_sentinel_for` concept to verify that the sentinel for a `vector<int>` can be subtracted from the vectors iterator in constant time:
diff --git a/docs/standard-library/iterator-functions.md b/docs/standard-library/iterator-functions.md
index 99b7df088f..e758db8a27 100644
--- a/docs/standard-library/iterator-functions.md
+++ b/docs/standard-library/iterator-functions.md
@@ -1,7 +1,7 @@
 ---
 title: "<iterator> functions"
 description: "Learn more about: <iterator> functions"
-ms.date: "11/04/2016"
+ms.date: 11/04/2016
 f1_keywords: ["xutility/std::advance", "xutility/std::back_inserter", "xutility/std::begin", "xutility/std::cbegin", "xutility/std::cend", "xutility/std::distance", "xutility/std::end", "xutility/std::front_inserter", "xutility/std::inserter", "xutility/std::make_checked_array_iterator", "xutility/std::make_move_iterator", "xutility/std::make_unchecked_array_iterator", "xutility/std::next", "xutility/std::prev"]
 helpviewer_keywords: ["std::advance [C++]", "std::back_inserter [C++]", "std::begin [C++]", "std::cbegin [C++]", "std::cend [C++]", "std::distance [C++]", "std::end [C++]", "std::front_inserter [C++]", "std::inserter [C++]", "std::make_checked_array_iterator [C++]", "std::make_move_iterator [C++]", "std::make_unchecked_array_iterator [C++]", "std::next [C++]", "std::prev [C++]"]
 ---
@@ -159,11 +159,11 @@ Retrieves an iterator to the first element in a specified container.
 
 ```cpp
 template <class Container>
-auto begin(Container& cont)  `
+auto begin(Container& cont)
    -> decltype(cont.begin());
 
 template <class Container>
-auto begin(const Container& cont)   `
+auto begin(const Container& cont)
    -> decltype(cont.begin());
 
 template <class Ty, class Size>
diff --git a/docs/standard-library/iterator-traits-struct.md b/docs/standard-library/iterator-traits-struct.md
index 4ad621f774..b47a214607 100644
--- a/docs/standard-library/iterator-traits-struct.md
+++ b/docs/standard-library/iterator-traits-struct.md
@@ -1,7 +1,7 @@
 ---
 title: "iterator_traits Struct"
 description: "Learn more about: iterator_traits Struct"
-ms.date: "11/04/2016"
+ms.date: 11/04/2016
 f1_keywords: ["xutility/std::iterator_traits"]
 helpviewer_keywords: ["iterator_traits struct", "iterator_traits class"]
 ---
@@ -88,7 +88,7 @@ function( it i1, it i2 )
       x = *i1;
       cout << x << " ";
       i1++;
-   };
+   }
    cout << endl;
 };
 
diff --git a/docs/standard-library/join-view-class.md b/docs/standard-library/join-view-class.md
index aef74d56cf..0f94798f81 100644
--- a/docs/standard-library/join-view-class.md
+++ b/docs/standard-library/join-view-class.md
@@ -90,7 +90,7 @@ For information about the template parameter type, see [Template parameters](#te
 ### Example: `join_view`
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 #include <iostream>
 #include <vector>
 #include <ranges>
diff --git a/docs/standard-library/keys-view-class.md b/docs/standard-library/keys-view-class.md
index 4b9d1e47be..6108fac74f 100644
--- a/docs/standard-library/keys-view-class.md
+++ b/docs/standard-library/keys-view-class.md
@@ -96,7 +96,7 @@ The best way to create an `keys_view` is by using the [`keys`](range-adaptors.md
 1\) Create a `keys_view` from the specified view.\
 2\) The default constructor creates an empty `keys_view`.
 
-### Example:  `keys_view`
+### Example: `keys_view`
 
 ```cpp
 // requires /std:c++20 or later
diff --git a/docs/standard-library/lazy-split-view-class.md b/docs/standard-library/lazy-split-view-class.md
index c910a9bb5e..1736de4824 100644
--- a/docs/standard-library/lazy-split-view-class.md
+++ b/docs/standard-library/lazy-split-view-class.md
@@ -236,6 +236,6 @@ The sentinel that follows the last element in the view:
 ## See also
 
 [`<ranges>`](ranges.md)\
-[`lazy_split` range adaptor](range-adaptors.md#lazy_split)
+[`lazy_split` range adaptor](range-adaptors.md#lazy_split)\
 [`split_view` class](split-view-class.md)\
 [view classes](view-classes.md)
diff --git a/docs/standard-library/limits-enums.md b/docs/standard-library/limits-enums.md
index b94c4afc32..791135fc34 100644
--- a/docs/standard-library/limits-enums.md
+++ b/docs/standard-library/limits-enums.md
@@ -1,21 +1,24 @@
 ---
-description: "Learn more about: <limits> enums"
 title: "<limits> enums"
-ms.date: "11/04/2016"
+description: "Learn more about: <limits> enums"
+ms.date: 11/04/2016
 f1_keywords: ["limits/std::float_denorm_style", "limits/std::float_round_style"]
-ms.assetid: c86680a2-ba97-4ed9-8c20-a448857d7dc5
 ---
 # `<limits>` enums
 
-## <a name="float_denorm_style"></a> float_denorm_style
+The `<limits>` header provides the following enums:
+
+## <a name="float_denorm_style"></a> `float_denorm_style`
 
 The enumeration describes the various methods that an implementation can choose for representing a denormalized floating-point value — one too small to represent as a normalized value:
 
 ```cpp
-enum float_denorm_style {
+enum float_denorm_style
+{
     denorm_indeterminate = -1,
     denorm_absent = 0,
-    denorm_present = 1    };
+    denorm_present = 1
+};
 ```
 
 ### Return Value
@@ -23,26 +26,26 @@ enum float_denorm_style {
 The enumeration returns:
 
 - `denorm_indeterminate` if the presence or absence of denormalized forms cannot be determined at translation time.
-
 - `denorm_absent` if denormalized forms are absent.
-
 - `denorm_present` if denormalized forms are present.
 
 ### Example
 
-See [numeric_limits::has_denorm](../standard-library/numeric-limits-class.md#has_denorm) for an example in which the values of this enumeration may be accessed.
+See [`numeric_limits::has_denorm`](numeric-limits-class.md#has_denorm) for an example in which the values of this enumeration may be accessed.
 
-## <a name="float_round_style"></a> float_round_style
+## <a name="float_round_style"></a> `float_round_style`
 
 The enumeration describes the various methods that an implementation can choose for rounding a floating-point value to an integer value.
 
 ```cpp
-enum float_round_style {
+enum float_round_style
+{
     round_indeterminate = -1,
     round_toward_zero = 0,
     round_to_nearest = 1,
     round_toward_infinity = 2,
-    round_toward_neg_infinity = 3    };
+    round_toward_neg_infinity = 3
+};
 ```
 
 ### Return Value
@@ -50,15 +53,11 @@ enum float_round_style {
 The enumeration returns:
 
 - `round_indeterminate` if the rounding method cannot be determined.
-
 - `round_toward_zero` if the round toward zero.
-
 - `round_to_nearest` if the round to nearest integer.
-
 - `round_toward_infinity` if the round away from zero.
-
 - `round_toward_neg_infinity` if the round to more negative integer.
 
 ### Example
 
-See [numeric_limits::round_style](../standard-library/numeric-limits-class.md#round_style) for an example in which the values of this enumeration may be accessed.
+See [`numeric_limits::round_style`](numeric-limits-class.md#round_style) for an example in which the values of this enumeration may be accessed.
diff --git a/docs/standard-library/local_t.md b/docs/standard-library/local_t.md
index c16c7b8978..f90b3ac8b4 100644
--- a/docs/standard-library/local_t.md
+++ b/docs/standard-library/local_t.md
@@ -2,7 +2,7 @@
 title: "local_t struct"
 description: "Learn more about: local_t struct"
 ms.date: 09/02/2021
-f1_keywords: ["chrono/std::chrono::local_t", chrono/std::chrono::local_t:local_time", "chrono/std::chrono::local_days", "chrono/std::chrono::local_seconds"]
+f1_keywords: ["chrono/std::chrono::local_t", "chrono/std::chrono::local_time", "chrono/std::chrono::local_days", "chrono/std::chrono::local_seconds"]
 helpviewer_keywords: ["std::chrono [C++], local_t"]
 dev_langs: ["C++"]
 ---
diff --git a/docs/standard-library/locale-functions.md b/docs/standard-library/locale-functions.md
index cf168fad5d..98ff04ced7 100644
--- a/docs/standard-library/locale-functions.md
+++ b/docs/standard-library/locale-functions.md
@@ -1,28 +1,13 @@
 ---
-description: "Learn more about: <locale> functions"
 title: "<locale> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <locale> functions"
+ms.date: 11/04/2016
 f1_keywords: ["locale/std::has_facet", "locale/std::isalnum", "locale/std::isalpha", "locale/std::iscntrl", "locale/std::isdigit", "locale/std::isgraph", "locale/std::islower", "locale/std::isprint", "locale/std::ispunct", "locale/std::isspace", "locale/std::isupper", "locale/std::isxdigit", "locale/std::tolower", "locale/std::toupper", "locale/std::use_facet"]
-ms.assetid: b06c1ceb-33a7-48d3-8d4b-2714bbb27f14
 helpviewer_keywords: ["std::has_facet [C++]", "std::isalnum [C++]", "std::isalpha [C++]", "std::iscntrl [C++]", "std::isdigit [C++]", "std::isgraph [C++]", "std::islower [C++]", "std::isprint [C++]", "std::ispunct [C++]", "std::isspace [C++]", "std::isupper [C++]", "std::isxdigit [C++]", "std::tolower [C++]", "std::toupper [C++]", "std::use_facet [C++]"]
 ---
 # `<locale>` functions
 
-[has_facet](#has_facet)\
-[isalnum](#isalnum)\
-[isalpha](#isalpha)\
-[iscntrl](#iscntrl)\
-[isdigit](#isdigit)\
-[isgraph](#isgraph)\
-[islower](#islower)\
-[isprint](#isprint)\
-[ispunct](#ispunct)\
-[isspace](#isspace)\
-[isupper](#isupper)\
-[isxdigit](#isxdigit)\
-[tolower](#tolower)\
-[toupper](#toupper)\
-[use_facet](#use_facet)
+The `<locale>` header provides the following functions:
 
 ## <a name="has_facet"></a> has_facet
 
@@ -157,7 +142,7 @@ The locale containing the alphabetic element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **alpha**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **alpha**, `Ch`).
 
 ### Example
 
@@ -222,7 +207,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **cntrl**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **cntrl**, `Ch`).
 
 ### Example
 
@@ -287,7 +272,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **digit**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **digit**, `Ch`).
 
 ### Example
 
@@ -352,7 +337,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **graph**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **graph**, `Ch`).
 
 ### Example
 
@@ -417,7 +402,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **lower**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **lower**, `Ch`).
 
 ### Example
 
@@ -482,7 +467,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **print**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **print**, `Ch`).
 
 ### Example
 
@@ -546,7 +531,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)`<`[ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **punct**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)`<`[ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **punct**, `Ch`).
 
 ### Example
 
@@ -611,7 +596,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **space**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **space**, `Ch`).
 
 ### Example
 
@@ -676,7 +661,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **upper**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **upper**, `Ch`).
 
 ### Example
 
@@ -741,7 +726,7 @@ The locale containing the element to be tested.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **xdigit**, `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [is](../standard-library/ctype-class.md#is)( **ctype**\< **CharType**>:: **xdigit**, `Ch`).
 
 Hexadecimal digits use base 16 to represent numbers, using the numbers 0 through 9 plus case-insensitive letters A through F to represent the decimal numbers 0 through 15.
 
@@ -808,7 +793,7 @@ The character converted to lower case.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [tolower](../standard-library/ctype-class.md#tolower)( `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [tolower](../standard-library/ctype-class.md#tolower)(`Ch`).
 
 ### Example
 
@@ -857,7 +842,7 @@ The character converted to upper case.
 
 ### Remarks
 
-The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >( `Loc`). [toupper](../standard-library/ctype-class.md#toupper)( `Ch`).
+The template function returns [use_facet](../standard-library/locale-functions.md#use_facet)< [ctype](../standard-library/ctype-class.md)\< **CharType**> >(`Loc`). [toupper](../standard-library/ctype-class.md#toupper)(`Ch`).
 
 ### Example
 
diff --git a/docs/standard-library/logical-or-struct.md b/docs/standard-library/logical-or-struct.md
index 52d4190245..47d9f120cb 100644
--- a/docs/standard-library/logical-or-struct.md
+++ b/docs/standard-library/logical-or-struct.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: logical_or Struct"
 title: "logical_or Struct"
-ms.date: "11/04/2016"
+description: "Learn more about: logical_or Struct"
+ms.date: 11/04/2016
 f1_keywords: ["functional/std::logical_or"]
 helpviewer_keywords: ["logical_or class", "logical_or struct"]
-ms.assetid: ec8143f8-5755-4e7b-8025-507fb6bf6911
 ---
 # logical_or Struct
 
-A predefined function object that performs the logical disjunction operation ( `operator||`) on its arguments.
+A predefined function object that performs the logical disjunction operation (`operator||`) on its arguments.
 
 ## Syntax
 
diff --git a/docs/standard-library/map-class.md b/docs/standard-library/map-class.md
index 264d13d1e0..6cc7a34dab 100644
--- a/docs/standard-library/map-class.md
+++ b/docs/standard-library/map-class.md
@@ -1,7 +1,7 @@
 ---
 title: "map Class"
 description: "API reference for the C++ Standard Template Library (STL) `map` class, which is used for the storage and retrieval of data from a collection in which each element is a pair that has both a data value and a sort key."
-ms.date: "9/10/2020"
+ms.date: 9/10/2020
 f1_keywords: ["map/std::map", "map/std::map::allocator_type", "map/std::map::const_iterator", "map/std::map::const_pointer", "map/std::map::const_reference", "map/std::map::const_reverse_iterator", "map/std::map::difference_type", "map/std::map::iterator", "map/std::map::key_compare", "map/std::map::key_type", "map/std::map::mapped_type", "map/std::map::pointer", "map/std::map::reference", "map/std::map::reverse_iterator", "map/std::map::size_type", "map/std::map::value_type", "map/std::map::at", "map/std::map::begin", "map/std::map::cbegin", "map/std::map::cend", "map/std::map::clear", "map/std::map::count", "map/std::map::contains", "map/std::map::crbegin", "map/std::map::crend", "map/std::map::emplace", "map/std::map::emplace_hint", "map/std::map::empty", "map/std::map::end", "map/std::map::equal_range", "map/std::map::erase", "map/std::map::find", "map/std::map::get_allocator", "map/std::map::insert", "map/std::map::key_comp", "map/std::map::lower_bound", "map/std::map::max_size", "map/std::map::rbegin", "map/std::map::rend", "map/std::map::size", "map/std::map::swap", "map/std::map::upper_bound", "map/std::map::value_comp"]
 helpviewer_keywords: ["std::map [C++]", "std::map [C++], allocator_type", "std::map [C++], const_iterator", "std::map [C++], const_pointer", "std::map [C++], const_reference", "std::map [C++], const_reverse_iterator", "std::map [C++], difference_type", "std::map [C++], iterator", "std::map [C++], key_compare", "std::map [C++], key_type", "std::map [C++], mapped_type", "std::map [C++], pointer", "std::map [C++], reference", "std::map [C++], reverse_iterator", "std::map [C++], size_type", "std::map [C++], value_type", "std::map [C++], at", "std::map [C++], begin", "std::map [C++], cbegin", "std::map [C++], cend", "std::map [C++], clear", "std::map [C++], count", "std::map [C++], contains", "std::map [C++], crbegin", "std::map [C++], crend", "std::map [C++], emplace", "std::map [C++], emplace_hint", "std::map [C++], empty", "std::map [C++], end", "std::map [C++], equal_range", "std::map [C++], erase", "std::map [C++], find", "std::map [C++], get_allocator", "std::map [C++], insert", "std::map [C++], key_comp", "std::map [C++], lower_bound", "std::map [C++], max_size", "std::map [C++], rbegin", "std::map [C++], rend", "std::map [C++], size", "std::map [C++], swap", "std::map [C++], upper_bound", "std::map [C++], value_comp"]
 ---
@@ -32,7 +32,7 @@ The element data type to be stored in the `map`.
 *`Traits`*\
 The type that provides a function object that can compare two element values as sort keys to determine their relative order in the `map`. This argument is optional and the binary predicate `less<Key>` is the default value.
 
-In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 *`Allocator`*\
 The type that represents the stored allocator object that encapsulates details about the map's allocation and deallocation of memory. This argument is optional and the default value is `allocator<pair<const Key, Type> >`.
@@ -64,7 +64,7 @@ The map orders the elements it controls by calling a stored function object of t
 > [!NOTE]
 > The comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. A binary predicate f(x,y) is a function object that has two argument objects x and y, and a return value of **`true`** or **`false`**. An ordering imposed on a set is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive, and if equivalence is transitive, where two objects x and  y are defined to be equivalent when both f(x,y) and f(y,x) are **`false`**. If the stronger condition of equality between keys replaces that of equivalence, the ordering becomes total (in the sense that all the elements are ordered with regard to one other), and the keys matched will be indiscernible from one other.
 >
-> In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+> In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ## Members
 
@@ -552,12 +552,12 @@ The element's key value to look for.
 
 `contains()` is new in C++20. To use it, specify the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option.
 
-`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](./stl-containers.md#heterogeneous-lookup-in-associative-containers-c14) for more information.
+`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <map>
 #include <string>
 #include <iostream>
@@ -991,7 +991,7 @@ The argument key value to be compared with the sort key of an element from the m
 
 ### Return Value
 
-To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*( `pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*( `pr`. **second**).
+To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*(`pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*(`pr`. **second**).
 
 ### Example
 
diff --git a/docs/standard-library/map-functions.md b/docs/standard-library/map-functions.md
index 29e85f2cf3..6567b76e85 100644
--- a/docs/standard-library/map-functions.md
+++ b/docs/standard-library/map-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <map> functions"
 title: "<map> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <map> functions"
+ms.date: 11/04/2016
 f1_keywords: ["map/std::swap (map)", "map/std::swap (multimap)"]
-ms.assetid: 7cb3d1a5-7add-4726-a73f-61927eafd466
 ---
 # `<map>` functions
 
@@ -14,8 +13,8 @@ Exchanges the elements of two maps.
 ```cpp
 template <class key, class T, class _Pr, class _Alloc>
 void swap(
-    map<Key, Traits, Compare, Alloctor>& left,
-    map<Key, Traits, Compare, Alloctor>& right);
+    map<Key, Traits, Compare, Allocator>& left,
+    map<Key, Traits, Compare, Allocator>& right);
 ```
 
 ### Parameters
@@ -28,7 +27,7 @@ The map whose elements are to be exchanged with those of the map *right*.
 
 ### Remarks
 
-The template function is an algorithm specialized on the container class map to execute the member function `left`.[swap](../standard-library/map-class.md#swap)( `right`). This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **`template`** \< **class T**> **void swap**( **T&**, **T&**), in the algorithm class works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
+The template function is an algorithm specialized on the container class map to execute the member function `left`.[swap](../standard-library/map-class.md#swap)(`right`). This is an instance of the partial ordering of function templates by the compiler. When template functions are overloaded in such a way that the match of the template with the function call is not unique, then the compiler will select the most specialized version of the template function. The general version of the template function, **`template`** \< **class T**> **void swap**( **T&**, **T&**), in the algorithm class works by assignment and is a slow operation. The specialized version in each container is much faster as it can work with the internal representation of the container class.
 
 ### Example
 
@@ -41,8 +40,8 @@ Exchanges the elements of two multimaps.
 ```cpp
 template <class key, class T, class _Pr, class _Alloc>
 void swap(
-    multimap<Key, Traits, Compare, Alloctor>& left,
-    multimap<Key, Traits, Compare, Alloctor>& right);
+    multimap<Key, Traits, Compare, Allocator>& left,
+    multimap<Key, Traits, Compare, Allocator>& right);
 ```
 
 ### Parameters
diff --git a/docs/standard-library/memory-functions.md b/docs/standard-library/memory-functions.md
index 7476c9e8b9..5de848e295 100644
--- a/docs/standard-library/memory-functions.md
+++ b/docs/standard-library/memory-functions.md
@@ -1,13 +1,14 @@
 ---
-description: "Learn more about: <memory> functions"
 title: "<memory> functions"
-ms.date: "08/05/2019"
+description: "Learn more about: <memory> functions"
+ms.date: 08/05/2019
 f1_keywords: ["memory/std::addressof", "memory/std::align", "memory/std::allocate_shared", "memory/std::const_pointer_cast", "memory/std::declare_no_pointers", "memory/std::declare_reachable", "memory/std::dynamic_pointer_cast", "memory/std::get_deleter", "memory/std::get_pointer_safety", "memory/std::get_temporary_buffer", "xmemory/std::get_temporary_buffer", "memory/std::make_shared", "memory/std::make_unique", "memory/std::owner_less", "memory/std::reinterpret_pointer_cast", "memory/std::return_temporary_buffer", "xmemory/std::return_temporary_buffer", "memory/std::static_pointer_cast", "memory/std::swap", "memory/std::undeclare_no_pointers", "memory/std::undeclare_reachable", "memory/std::uninitialized_copy", "memory/std::uninitialized_copy_n", "memory/std::uninitialized_fill", "memory/std::uninitialized_fill_n"]
-ms.assetid: 3e1898c2-44b7-4626-87ce-84962e4c6f1a
 helpviewer_keywords: ["std::addressof [C++]", "std::align [C++]", "std::allocate_shared [C++]", "std::const_pointer_cast [C++]", "std::declare_no_pointers [C++]", "std::declare_reachable [C++]", "std::default_delete [C++]", "std::dynamic_pointer_cast [C++]", "std::get_deleter [C++]", "std::get_pointer_safety [C++]", "std::get_temporary_buffer [C++]", "std::make_shared [C++]", "std::make_unique [C++]", "std::owner_less [C++]", "std::return_temporary_buffer [C++]", "std::static_pointer_cast [C++]", "std::swap [C++]", "std::undeclare_no_pointers [C++]", "std::undeclare_reachable [C++]", "std::uninitialized_copy [C++]", "std::uninitialized_copy_n [C++]", "std::uninitialized_fill [C++]", "std::uninitialized_fill_n [C++]", "std::addressof [C++]", "std::align [C++]", "std::allocate_shared [C++]", "std::const_pointer_cast [C++]", "std::declare_no_pointers [C++]", "std::declare_reachable [C++]", "std::default_delete [C++]", "std::dynamic_pointer_cast [C++]", "std::get_deleter [C++]", "std::get_pointer_safety [C++]", "std::get_temporary_buffer [C++]", "std::make_shared [C++]", "std::make_unique [C++]", "std::owner_less [C++]", "std::return_temporary_buffer [C++]", "std::static_pointer_cast [C++]", "std::undeclare_no_pointers [C++]", "std::undeclare_reachable [C++]", "std::uninitialized_copy [C++]", "std::uninitialized_copy_n [C++]", "std::uninitialized_fill [C++]", "std::uninitialized_fill_n [C++]"]
 ---
 # `<memory>` functions
 
+The `<memory>` header provides the following functions:
+
 ## <a name="addressof"></a> `addressof`
 
 Gets the true address of an object.
@@ -35,8 +36,6 @@ The object or function for which to obtain the true address.
 
 The actual address of the object or function referenced by *`value`*, even if an overloaded `operator&()` exists.
 
-### Remarks
-
 ## <a name="align"></a> `align`
 
 Fits storage of the given size, aligned by the given alignment specification, into the first possible address of the given storage.
@@ -768,6 +767,7 @@ struct owner_less<shared_ptr<T>>
 
 template <class T>
 struct owner_less<weak_ptr<T>>
+{
     bool operator()(
         const weak_ptr<T>& left,
         const weak_ptr<T>& right) const noexcept;
diff --git a/docs/standard-library/memory-operators.md b/docs/standard-library/memory-operators.md
index 0ae10aa886..6fb628d3e2 100644
--- a/docs/standard-library/memory-operators.md
+++ b/docs/standard-library/memory-operators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <memory> operators"
 title: "<memory> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <memory> operators"
+ms.date: 11/04/2016
 f1_keywords: ["memory/std::operator!=", "memory/std::operator>", "memory/std::operator>=", "memory/std::operator<", "memory/std::operator<=", "memory/std::operator<<", "memory/std::operator=="]
-ms.assetid: 257e3ba9-c4c2-4ae8-9b11-b156ba9c28de
 ---
 # `<memory>` operators
 
@@ -127,7 +126,7 @@ bool operator==(
 
 template <class Ty1, class Ty2>
 bool operator==(
-    const shared_ptr<Ty1>& left;,
+    const shared_ptr<Ty1>& left,
     const shared_ptr<Ty2>& right);
 ```
 
@@ -330,7 +329,7 @@ Tests for one object being greater than a second object.
 template <class Ty1, class Del1, class Ty2, class Del2>
 bool operator>(
     const unique_ptr<Ty1, Del1>& left,
-    const unique_ptr<Ty2&, Del2gt;& right);
+    const unique_ptr<Ty2, Del2>& right);
 
 template <class Ty1, class Ty2>
 bool operator>(
diff --git a/docs/standard-library/messages-byname-class.md b/docs/standard-library/messages-byname-class.md
index cf22a906dd..fe6b2c1f59 100644
--- a/docs/standard-library/messages-byname-class.md
+++ b/docs/standard-library/messages-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: messages_byname Class"
 title: "messages_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: messages_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocmes/std::messages_byname"]
 helpviewer_keywords: ["messages_byname class"]
-ms.assetid: c6c64841-3e80-43c8-b54c-fed41833ad6b
 ---
 # messages_byname Class
 
@@ -40,7 +39,7 @@ An initial reference count.
 
 ## Remarks
 
-Its behavior is determined by the named locale *_Locname*. Each constructor initializes its base object with [messages](../standard-library/messages-class.md#messages)\<CharType>( `_Refs`).
+Its behavior is determined by the named locale *_Locname*. Each constructor initializes its base object with [messages](../standard-library/messages-class.md#messages)\<CharType>(`_Refs`).
 
 ## Requirements
 
diff --git a/docs/standard-library/messages-class.md b/docs/standard-library/messages-class.md
index 7468f6fb3c..4797d927f9 100644
--- a/docs/standard-library/messages-class.md
+++ b/docs/standard-library/messages-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: messages Class"
 title: "messages Class"
-ms.date: "11/04/2016"
+description: "Learn more about: messages Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocmes/std::messages", "xlocmes/std::messages::char_type", "xlocmes/std::messages::string_type", "xlocmes/std::messages::close", "xlocmes/std::messages::do_close", "xlocmes/std::messages::do_get", "xlocmes/std::messages::do_open", "xlocmes/std::messages::get", "xlocmes/std::messages::open"]
 helpviewer_keywords: ["std::messages [C++]", "std::messages [C++], char_type", "std::messages [C++], string_type", "std::messages [C++], close", "std::messages [C++], do_close", "std::messages [C++], do_get", "std::messages [C++], do_open", "std::messages [C++], get", "std::messages [C++], open"]
-ms.assetid: c4c71f40-4f24-48ab-9f7c-daccd8d5bd83
 ---
 # messages Class
 
@@ -214,7 +213,7 @@ It returns a copy of *_Dfault* on failure. Otherwise, it returns a copy of the s
 
 ### Remarks
 
-The member function returns [do_get](#do_get)( `_Catval`, `_Set`, `_Message`, `_Dfault`).
+The member function returns [do_get](#do_get)(`_Catval`, `_Set`, `_Message`, `_Dfault`).
 
 ## <a name="messages"></a> messages::messages
 
@@ -249,7 +248,7 @@ The possible values for the *_Refs* parameter and their significance are:
 
 No direct examples are possible, because the destructor is protected.
 
-The constructor initializes its base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)( `_Refs`).
+The constructor initializes its base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)(`_Refs`).
 
 ## <a name="open"></a> messages::open
 
@@ -275,7 +274,7 @@ It returns a value that compares less than zero on failure. Otherwise, the retur
 
 ### Remarks
 
-The member function returns [do_open](#do_open)( `_Catname`, `_Loc`).
+The member function returns [do_open](#do_open)(`_Catname`, `_Loc`).
 
 ## <a name="string_type"></a> messages::string_type
 
diff --git a/docs/standard-library/money-get-class.md b/docs/standard-library/money-get-class.md
index 3adbf050df..275a645404 100644
--- a/docs/standard-library/money-get-class.md
+++ b/docs/standard-library/money-get-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: money_get Class"
 title: "money_get Class"
-ms.date: "11/04/2016"
+description: "Learn more about: money_get Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocmon/std::money_get", "xlocmon/std::money_get::char_type", "xlocmon/std::money_get::iter_type", "xlocmon/std::money_get::string_type", "xlocmon/std::money_get::do_get", "xlocmon/std::money_get::get"]
 helpviewer_keywords: ["std::money_get [C++]", "std::money_get [C++], char_type", "std::money_get [C++], iter_type", "std::money_get [C++], string_type", "std::money_get [C++], do_get", "std::money_get [C++], get"]
-ms.assetid: 692d3374-3fe7-4b46-8aeb-f8d91ed66b2e
 ---
 # money_get Class
 
@@ -112,7 +111,7 @@ An input iterator addressing the first element beyond the monetary input field.
 
 ### Remarks
 
-The first virtual protected member function tries to match sequential elements beginning at first in the sequence [ `first`, `last`) until it has recognized a complete, nonempty monetary input field. If successful, it converts this field to a sequence of one or more decimal digits, optionally preceded by a minus sign ( `-`), to represent the amount and stores the result in the [string_type](#string_type) object *val*. It returns an iterator designating the first element beyond the monetary input field. Otherwise, the function stores an empty sequence in *val* and sets `ios_base::failbit` in *State*. It returns an iterator designating the first element beyond any prefix of a valid monetary input field. In either case, if the return value equals `last`, the function sets `ios_base::eofbit` in `State`.
+The first virtual protected member function tries to match sequential elements beginning at first in the sequence [ `first`, `last`) until it has recognized a complete, nonempty monetary input field. If successful, it converts this field to a sequence of one or more decimal digits, optionally preceded by a minus sign (`-`), to represent the amount and stores the result in the [string_type](#string_type) object *val*. It returns an iterator designating the first element beyond the monetary input field. Otherwise, the function stores an empty sequence in *val* and sets `ios_base::failbit` in *State*. It returns an iterator designating the first element beyond any prefix of a valid monetary input field. In either case, if the return value equals `last`, the function sets `ios_base::eofbit` in `State`.
 
 The second virtual protected member function behaves the same as the first, except that if successful it converts the optionally signed digit sequence to a value of type **`long double`** and stores that value in *val*.
 
@@ -242,7 +241,7 @@ int main( )
    else
       cout << "money_get(" << psz2.str( ) << ", intl = 0) = "
            << fVal/100.0 << endl;
-};
+}
 ```
 
 ## <a name="iter_type"></a> money_get::iter_type
diff --git a/docs/standard-library/money-put-class.md b/docs/standard-library/money-put-class.md
index b613399484..af0388fc0b 100644
--- a/docs/standard-library/money-put-class.md
+++ b/docs/standard-library/money-put-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: money_put Class"
 title: "money_put Class"
-ms.date: "11/01/2018"
+description: "Learn more about: money_put Class"
+ms.date: 11/01/2018
 f1_keywords: ["xlocmon/std::money_put", "xlocmon/std::money_put::char_type", "xlocmon/std::money_put::iter_type", "xlocmon/std::money_put::string_type", "xlocmon/std::money_put::do_put", "xlocmon/std::money_put::put"]
 helpviewer_keywords: ["std::money_put [C++]", "std::money_put [C++], char_type", "std::money_put [C++], iter_type", "std::money_put [C++], string_type", "std::money_put [C++], do_put", "std::money_put [C++], put"]
-ms.assetid: f439fd56-c9b1-414c-95e1-66c918c6eee6
 ---
 # money_put Class
 
@@ -189,7 +188,7 @@ The possible values for the *_Refs* parameter and their significance are:
 
 No direct examples are possible, because the destructor is protected.
 
-The constructor initializes its base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)( `_Refs`).
+The constructor initializes its base object with **locale::**[facet](../standard-library/locale-class.md#facet_class)(`_Refs`).
 
 ## <a name="put"></a> money_put::put
 
@@ -234,7 +233,7 @@ An output iterator the addresses the position one beyond the last element produc
 
 ### Remarks
 
-Both member functions return [do_put](#do_put)( `next`, `_Intl`, `_Iosbase`, `_Fill`, `val`).
+Both member functions return [do_put](#do_put)(`next`, `_Intl`, `_Iosbase`, `_Fill`, `val`).
 
 ### Example
 
diff --git a/docs/standard-library/moneypunct-byname-class.md b/docs/standard-library/moneypunct-byname-class.md
index 701923e297..9fb1ed976d 100644
--- a/docs/standard-library/moneypunct-byname-class.md
+++ b/docs/standard-library/moneypunct-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: moneypunct_byname Class"
 title: "moneypunct_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: moneypunct_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocmon/std::moneypunct_byname"]
 helpviewer_keywords: ["moneypunct_byname class"]
-ms.assetid: e8a544d2-6aee-420d-b513-deb385c9b416
 ---
 # moneypunct_byname Class
 
@@ -33,7 +32,7 @@ protected:
 
 ## Remarks
 
-Its behavior is determined by the named locale `_Locname`. Each constructor initializes its base object with [moneypunct](../standard-library/moneypunct-class.md#moneypunct)\<CharType, Intl>( `_Refs`).
+Its behavior is determined by the named locale `_Locname`. Each constructor initializes its base object with [moneypunct](../standard-library/moneypunct-class.md#moneypunct)\<CharType, Intl>(`_Refs`).
 
 ## Requirements
 
diff --git a/docs/standard-library/moneypunct-class.md b/docs/standard-library/moneypunct-class.md
index 04d7631261..2e5d396250 100644
--- a/docs/standard-library/moneypunct-class.md
+++ b/docs/standard-library/moneypunct-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: moneypunct Class"
 title: "moneypunct Class"
-ms.date: "11/04/2016"
+description: "Learn more about: moneypunct Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocmon/std::moneypunct", "xlocmon/std::moneypunct::char_type", "xlocmon/std::moneypunct::string_type", "xlocmon/std::moneypunct::curr_symbol", "xlocmon/std::moneypunct::decimal_point", "xlocmon/std::moneypunct::do_curr_symbol", "xlocmon/std::moneypunct::do_decimal_point", "xlocmon/std::moneypunct::do_frac_digits", "xlocmon/std::moneypunct::do_grouping", "xlocmon/std::moneypunct::do_neg_format", "xlocmon/std::moneypunct::do_negative_sign", "xlocmon/std::moneypunct::do_pos_format", "xlocmon/std::moneypunct::do_positive_sign", "xlocmon/std::moneypunct::do_thousands_sep", "xlocmon/std::moneypunct::frac_digits", "xlocmon/std::moneypunct::grouping", "xlocmon/std::moneypunct::neg_format", "xlocmon/std::moneypunct::negative_sign", "xlocmon/std::moneypunct::pos_format", "xlocmon/std::moneypunct::positive_sign", "xlocmon/std::moneypunct::thousands_sep"]
 helpviewer_keywords: ["std::moneypunct [C++]", "std::moneypunct [C++], char_type", "std::moneypunct [C++], string_type", "std::moneypunct [C++], curr_symbol", "std::moneypunct [C++], decimal_point", "std::moneypunct [C++], do_curr_symbol", "std::moneypunct [C++], do_decimal_point", "std::moneypunct [C++], do_frac_digits", "std::moneypunct [C++], do_grouping", "std::moneypunct [C++], do_neg_format", "std::moneypunct [C++], do_negative_sign", "std::moneypunct [C++], do_pos_format", "std::moneypunct [C++], do_positive_sign", "std::moneypunct [C++], do_thousands_sep", "std::moneypunct [C++], frac_digits", "std::moneypunct [C++], grouping", "std::moneypunct [C++], neg_format", "std::moneypunct [C++], negative_sign", "std::moneypunct [C++], pos_format", "std::moneypunct [C++], positive_sign", "std::moneypunct [C++], thousands_sep"]
-ms.assetid: cf2650da-3e6f-491c-95d5-23e57f582ee6
 ---
 # moneypunct Class
 
@@ -119,7 +118,7 @@ int main( )
 
    const moneypunct < char, false> &mpunct2 = use_facet < moneypunct < char, false> >(loc);
    cout << loc.name( ) << " domestic currency symbol "<<  mpunct2.curr_symbol( ) << endl;
-};
+}
 ```
 
 ## <a name="decimal_point"></a> moneypunct::decimal_point
@@ -593,7 +592,7 @@ int main( )
       use_facet <moneypunct <char, false> >(loc2);
    cout << loc2.name( ) << " domestic negative sign: "
         << mpunct4.negative_sign( ) << endl;
-};
+}
 ```
 
 ```Output
@@ -703,7 +702,7 @@ int main( )
       use_facet <moneypunct <char, false> >(loc2);
    cout << loc2.name( ) << " domestic positive sign:"
         << mpunct4.positive_sign( ) << endl;
-};
+}
 ```
 
 ```Output
diff --git a/docs/standard-library/month-class.md b/docs/standard-library/month-class.md
index 047db99cf2..f43deea25a 100644
--- a/docs/standard-library/month-class.md
+++ b/docs/standard-library/month-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: month Class"
 title: "month class"
-ms.date: "6/25/2021"
+description: "Learn more about: month Class"
+ms.date: 6/25/2021
 f1_keywords: ["chrono/std::chrono::month", "chrono/std::chrono::month::January", "chrono/std::chrono::month::February", "chrono/std::chrono::month::March","chrono/std::chrono::month::April","chrono/std::chrono::month::May","chrono/std::chrono::month::June","chrono/std::chrono::month::July","chrono/std::chrono::month::August","chrono/std::chrono::month::September","chrono/std::chrono::month::October","chrono/std::chrono::month::November","chrono/std::chrono::month::December","chrono/std::chrono::month::operator++", "chrono/std::chrono::month::operator--", "chrono/std::chrono::month::operator unsigned", "chrono/std::chrono::month::ok"]
 helpviewer_keywords: ["std::chrono [C++], month"]
 dev_langs: ["C++"]
 ---
-# `month` class  
+# `month` class
 
 Represents a month of a year. For example, July.
 
diff --git a/docs/standard-library/month-day-class.md b/docs/standard-library/month-day-class.md
index a84c17ac08..f8f80f65f9 100644
--- a/docs/standard-library/month-day-class.md
+++ b/docs/standard-library/month-day-class.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: month_day Class"
 title: "month_day class"
-ms.date: "6/28/2021"
+description: "Learn more about: month_day Class"
+ms.date: 6/28/2021
 f1_keywords: ["chrono/std::chrono::month_day", "chrono/std::chrono::month_day::day", "chrono/std::chrono::month_day::month", "chrono/std::chrono::month_day::ok"]
 helpviewer_keywords: ["std::chrono [C++], month_day"]
 dev_langs: ["C++"]
 ---
 
-# `month_day` class  
+# `month_day` class
 
 Represents a specific day of a specific month. The year isn't specified.
 
diff --git a/docs/standard-library/month-day-last-class.md b/docs/standard-library/month-day-last-class.md
index bf074911f6..bc2a97a90b 100644
--- a/docs/standard-library/month-day-last-class.md
+++ b/docs/standard-library/month-day-last-class.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: month_day_last Class"
 title: "month_day_last class"
-ms.date: "06/28/2021"
+description: "Learn more about: month_day_last Class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::month_day_last", "chrono/std::chrono::month_day_last::month", "chrono/std::chrono::month_day_last::ok"]
 helpviewer_keywords: ["std::chrono [C++], month_day_last"]
 dev_langs: ["C++"]
 ---
 
-# `month_day_last` class  
+# `month_day_last` class
 
  Represents the last day of a month.
 
@@ -111,5 +111,5 @@ constexpr bool ok() const noexcept;
 [`month_day_last` class](month-day-last-class.md)\
 [`month_weekday` class](month-weekday-class.md)\
 [`month_weekday_last` class](month-weekday-last-class.md)\
-[`operator/`](chrono-operators.md#op_/)
-[Header Files Reference](cpp-standard-library-header-files.md)
\ No newline at end of file
+[`operator/`](chrono-operators.md#op_/)\
+[Header Files Reference](cpp-standard-library-header-files.md)
diff --git a/docs/standard-library/month-weekday-class.md b/docs/standard-library/month-weekday-class.md
index 0156b70386..a82659be43 100644
--- a/docs/standard-library/month-weekday-class.md
+++ b/docs/standard-library/month-weekday-class.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: month_weekday Class"
 title: "month_weekday class"
-ms.date: "06/28/2021"
+description: "Learn more about: month_weekday Class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::month_weekday", "chrono/std::chrono::month_weekday::weekday", "chrono/std::chrono::month_weekday::month", "chrono/std::chrono::month_weekday::ok", "chrono/std::chrono::month_weekday::weekday_indexed"]
 helpviewer_keywords: ["std::chrono [C++], month_weekday"]
 dev_langs: ["C++"]
 ---
 
-# `month_weekday` class  
+# `month_weekday` class
 
 Represents the nth weekday of a specific month.
 
diff --git a/docs/standard-library/month-weekday-last-class.md b/docs/standard-library/month-weekday-last-class.md
index f217ddc754..9af2b50a78 100644
--- a/docs/standard-library/month-weekday-last-class.md
+++ b/docs/standard-library/month-weekday-last-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: month_weekday_last Class"
 title: "month_weekday_last class"
-ms.date: "6/28/2021"
+description: "Learn more about: month_weekday_last Class"
+ms.date: 6/28/2021
 f1_keywords: ["chrono/std::chrono::month_weekday_last", "chrono/std::chrono::month_weekday_last::ok", "std::chrono::month_weekday_last::month_weekday_last", "chrono/std::chrono::month_weekday_last::ok", "chrono/std::chrono::month_weekday_last::month"]
 helpviewer_keywords: ["std::chrono [C++], month_weekday_last"]
 dev_langs: ["C++"]
 ---
-# `month_weekday_last` class  
+# `month_weekday_last` class
 
 Represents the last weekday of a month.
 
@@ -59,7 +59,7 @@ constexpr month_weekday_last(const month& m, const weekday_last& wdl) noexcept;
 The `month` value for the created `month_weekday_last` class.
 
 *`wdl`*\
-The` weekday_last` value for the created `month_weekday_last` class.
+The `weekday_last` value for the created `month_weekday_last` class.
 
 ## Remarks: Constructor
 
diff --git a/docs/standard-library/multimap-class.md b/docs/standard-library/multimap-class.md
index 5266e0c702..3db0788cc5 100644
--- a/docs/standard-library/multimap-class.md
+++ b/docs/standard-library/multimap-class.md
@@ -1,7 +1,7 @@
 ---
 title: "multimap Class"
 description: "API reference for the C++ Standard Template Library (STL) `multimap` class, which is used for the storage and retrieval of data from a collection in which each element is a pair that has both a data value and a sort key."
-ms.date: "9/9/2020"
+ms.date: 9/9/2020
 f1_keywords: ["map/std::multimap", "map/std::multimap::allocator_type", "map/std::multimap::const_iterator", "map/std::multimap::const_pointer", "map/std::multimap::const_reference", "map/std::multimap::const_reverse_iterator", "map/std::multimap::difference_type", "map/std::multimap::iterator", "map/std::multimap::key_compare", "map/std::multimap::key_type", "map/std::multimap::mapped_type", "map/std::multimap::pointer", "map/std::multimap::reference", "map/std::multimap::reverse_iterator", "map/std::multimap::size_type", "map/std::multimap::value_type", "map/std::multimap::begin", "map/std::multimap::cbegin", "map/std::multimap::cend", "map/std::multimap::clear", "map/std::multimap::contains", "map/std::multimap::count", "map/std::multimap::crbegin", "map/std::multimap::crend", "map/std::multimap::emplace", "map/std::multimap::emplace_hint", "map/std::multimap::empty", "map/std::multimap::end", "map/std::multimap::equal_range", "map/std::multimap::erase", "map/std::multimap::find", "map/std::multimap::get_allocator", "map/std::multimap::insert", "map/std::multimap::key_comp", "map/std::multimap::lower_bound", "map/std::multimap::max_size", "map/std::multimap::rbegin", "map/std::multimap::rend", "map/std::multimap::size", "map/std::multimap::swap", "map/std::multimap::upper_bound", "map/std::multimap::value_comp"]
 helpviewer_keywords: ["std::multimap [C++]", "std::multimap [C++], allocator_type", "std::multimap [C++], const_iterator", "std::multimap [C++], const_pointer", "std::multimap [C++], const_reference", "std::multimap [C++], const_reverse_iterator", "std::multimap [C++], difference_type", "std::multimap [C++], iterator", "std::multimap [C++], key_compare", "std::multimap [C++], key_type", "std::multimap [C++], mapped_type", "std::multimap [C++], pointer", "std::multimap [C++], reference", "std::multimap [C++], reverse_iterator", "std::multimap [C++], size_type", "std::multimap [C++], value_type", "std::multimap [C++], begin", "std::multimap [C++], cbegin", "std::multimap [C++], cend", "std::multimap [C++], clear", "std::multimap [C++], contains", "std::multimap [C++], count", "std::multimap [C++], crbegin", "std::multimap [C++], crend", "std::multimap [C++], emplace", "std::multimap [C++], emplace_hint", "std::multimap [C++], empty", "std::multimap [C++], end", "std::multimap [C++], equal_range", "std::multimap [C++], erase", "std::multimap [C++], find", "std::multimap [C++], get_allocator", "std::multimap [C++], insert", "std::multimap [C++], key_comp", "std::multimap [C++], lower_bound", "std::multimap [C++], max_size", "std::multimap [C++], rbegin", "std::multimap [C++], rend", "std::multimap [C++], size", "std::multimap [C++], swap", "std::multimap [C++], upper_bound", "std::multimap [C++], value_comp"]
 ---
@@ -30,7 +30,7 @@ The element data type to be stored in the multimap.
 *`Traits`*\
 The type that provides a function object that can compare two element values as sort keys to determine their relative order in the multimap. The binary predicate `less<Key>` is the default value.
 
-In C++14 you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. For more information, see [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#heterogeneous-lookup-in-associative-containers-c14)
+In C++14 you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. For more information, see [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers)
 
 *`Allocator`*\
 The type that represents the stored allocator object that encapsulates details about the map's allocation and deallocation of memory. This argument is optional and the default value is `allocator<pair <const Key, Type> >`.
@@ -59,7 +59,7 @@ The `multimap` should be the associative container of choice when the conditions
 
 The `multimap` orders the sequence it controls by calling a stored function object of type [`key_compare`](#key_compare). This stored object is a comparison function that may be accessed by calling the member function [`key_comp`](#key_comp). In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they are equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. A binary predicate `f(x,y)` is a function object that has two argument objects `x` and `y` and a return value of `true` or `false`. An ordering imposed on a set is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive and if equivalence is transitive, where two objects `x` and `y` are defined to be equivalent when both `f(x,y)` and `f(y,x)` are `false`. If the stronger condition of equality between keys replaces that of equivalence, then the ordering becomes total (in the sense that all the elements are ordered with respect to each other) and the keys matched will be indiscernible from each other.
 
-In C++14 you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14 you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ## Members
 
@@ -430,12 +430,12 @@ The element's key value to look for.
 
 `contains()` is new in C++20. To use it, specify the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option.
 
-`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](./stl-containers.md#heterogeneous-lookup-in-associative-containers-c14) for more information.
+`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <map>
 #include <string>
 #include <iostream>
diff --git a/docs/standard-library/multiset-class.md b/docs/standard-library/multiset-class.md
index 1cf0fcb40b..2ee9fe92c5 100644
--- a/docs/standard-library/multiset-class.md
+++ b/docs/standard-library/multiset-class.md
@@ -1,7 +1,7 @@
 ---
 title: "multiset Class"
 description: "API reference for the C++ Standard Template Library (STL) `multiset` class, which  is used for the storage and retrieval of data from a collection in which the values of the elements contained need not be unique and in which they serve as the key values according to which the data is automatically ordered."
-ms.date: "9/9/2020"
+ms.date: 9/9/2020
 f1_keywords: ["set/std::multiset", "set/std::multiset::allocator_type", "set/std::multiset::const_iterator", "set/std::multiset::const_pointer", "set/std::multiset::const_reference", "set/std::multiset::const_reverse_iterator", "set/std::multiset::difference_type", "set/std::multiset::iterator", "set/std::multiset::key_compare", "set/std::multiset::key_type", "set/std::multiset::pointer", "set/std::multiset::reference", "set/std::multiset::reverse_iterator", "set/std::multiset::size_type", "set/std::multiset::value_compare", "set/std::multiset::value_type", "set/std::multiset::begin", "set/std::multiset::cbegin", "set/std::multiset::cend", "set/std::multiset::clear", "set/std::multiset::contains", "set/std::multiset::count", "set/std::multiset::crbegin", "set/std::multiset::crend", "set/std::multiset::emplace", "set/std::multiset::emplace_hint", "set/std::multiset::empty", "set/std::multiset::end", "set/std::multiset::equal_range", "set/std::multiset::erase", "set/std::multiset::find", "set/std::multiset::get_allocator", "set/std::multiset::insert", "set/std::multiset::key_comp", "set/std::multiset::lower_bound", "set/std::multiset::max_size", "set/std::multiset::rbegin", "set/std::multiset::rend", "set/std::multiset::size", "set/std::multiset::swap", "set/std::multiset::upper_bound", "set/std::multiset::value_comp"]
 helpviewer_keywords: ["std::multiset [C++]", "std::multiset [C++], allocator_type", "std::multiset [C++], const_iterator", "std::multiset [C++], const_pointer", "std::multiset [C++], const_reference", "std::multiset [C++], const_reverse_iterator", "std::multiset [C++], difference_type", "std::multiset [C++], iterator", "std::multiset [C++], key_compare", "std::multiset [C++], key_type", "std::multiset [C++], pointer", "std::multiset [C++], reference", "std::multiset [C++], reverse_iterator", "std::multiset [C++], size_type", "std::multiset [C++], value_compare", "std::multiset [C++], value_type", "std::multiset [C++], begin", "std::multiset [C++], cbegin", "std::multiset [C++], cend", "std::multiset [C++], clear", "std::multiset [C++], contains", "std::multiset [C++], count", "std::multiset [C++], crbegin", "std::multiset [C++], crend", "std::multiset [C++], emplace", "std::multiset [C++], emplace_hint", "std::multiset [C++], empty", "std::multiset [C++], end", "std::multiset [C++], equal_range", "std::multiset [C++], erase", "std::multiset [C++], find", "std::multiset [C++], get_allocator", "std::multiset [C++], insert", "std::multiset [C++], key_comp", "std::multiset [C++], lower_bound", "std::multiset [C++], max_size", "std::multiset [C++], rbegin", "std::multiset [C++], rend", "std::multiset [C++], size", "std::multiset [C++], swap", "std::multiset [C++], upper_bound", "std::multiset [C++], value_comp"]
 ---
@@ -24,7 +24,7 @@ The element data type to be stored in the `multiset`.
 *`Compare`*\
 The type that provides a function object that can compare two element values as sort keys to determine their relative order in the `multiset`. The binary predicate **less**\<Key> is the default value.
 
-In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 *`Allocator`*\
 The type that represents the stored allocator object that encapsulates details about the `multiset`'s allocation and deallocation of memory. The default value is `allocator<Key>`.
@@ -53,7 +53,7 @@ The `multiset` should be the associative container of choice when the conditions
 
 The `multiset` orders the sequence it controls by calling a stored function object of type *`Compare`*. This stored object is a comparison function that may be accessed by calling the member function [`key_comp`](#key_comp). In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. A binary predicate *f*(*x*, *y*) is a function object that has two argument objects *x* and *y* and a return value of **`true`** or **`false`**. An ordering imposed on a set is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive and if equivalence is transitive, where two objects x and y are defined to be equivalent when both *f*(*x,y*) and *f*(*y,x*) are false. If the stronger condition of equality between keys replaces that of equivalence, then the ordering becomes total (in the sense that all the elements are ordered with respect to each other) and the keys matched will be indiscernible from each other.
 
-In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ### Constructors
 
@@ -399,12 +399,12 @@ The element's key value to look for.
 
 `contains()` is new in C++20. To use it, specify the [/std:c++20](../build/reference/std-specify-language-standard-version.md) or later compiler option.
 
-`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](./stl-containers.md#heterogeneous-lookup-in-associative-containers-c14) for more information.
+`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <set>
 #include <iostream>
 
@@ -836,7 +836,7 @@ The argument key to be compared with the sort key of an element from the `multis
 
 A pair of iterators such that the first is the [`lower_bound`](#lower_bound) of the key and the second is the [`upper_bound`](#upper_bound) of the key.
 
-To access the first iterator of a pair `pr` returned by the member function, use `pr`. **`first`**, and to dereference the lower bound iterator, use \*( `pr`. **`first`**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **`second`**, and to dereference the upper bound iterator, use \*( `pr`. **`second`**).
+To access the first iterator of a pair `pr` returned by the member function, use `pr`. **`first`**, and to dereference the lower bound iterator, use \*(`pr`. **`first`**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **`second`**, and to dereference the upper bound iterator, use \*(`pr`. **`second`**).
 
 ### Example
 
@@ -953,7 +953,7 @@ The key value to be matched by the sort key of an element from the `multiset` be
 
 ### Return Value
 
-An iterator that refers to the location of an element with a specified key, or the location succeeding the last element in the `multiset` ( `multiset::end()`) if no match is found for the key.
+An iterator that refers to the location of an element with a specified key, or the location succeeding the last element in the `multiset`(`multiset::end()`) if no match is found for the key.
 
 ### Remarks
 
@@ -1294,7 +1294,7 @@ The stored object defines the member function:
 
 which returns true if *x* strictly precedes *y* in the sort order.
 
-Both [`key_compare`](#key_compare) and [`value_compare`](#value_compare) are synonyms for the template parameter ``Compare``. Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.
+Both [`key_compare`](#key_compare) and [`value_compare`](#value_compare) are synonyms for the template parameter `Compare`. Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.
 
 ### Example
 
@@ -1381,7 +1381,7 @@ For more information on `Key`, see the Remarks section of the [`multiset` Class]
 
 ### Example
 
-See the example for [`value_type`](#value_type) for an example of how to declare and use ``key_type``.
+See the example for [`value_type`](#value_type) for an example of how to declare and use `key_type`.
 
 ## <a name="lower_bound"></a> `multiset::lower_bound`
 
diff --git a/docs/standard-library/negative-binomial-distribution-class.md b/docs/standard-library/negative-binomial-distribution-class.md
index f38c2b5169..ce20bc942e 100644
--- a/docs/standard-library/negative-binomial-distribution-class.md
+++ b/docs/standard-library/negative-binomial-distribution-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: negative_binomial_distribution Class"
 title: "negative_binomial_distribution Class"
-ms.date: "11/04/2016"
+description: "Learn more about: negative_binomial_distribution Class"
+ms.date: 11/04/2016
 f1_keywords: ["random/std::negative_binomial_distribution", "random/std::negative_binomial_distribution::reset", "random/std::negative_binomial_distribution::k", "random/std::negative_binomial_distribution::p", "random/std::negative_binomial_distribution::param", "random/std::negative_binomial_distribution::min", "random/std::negative_binomial_distribution::max", "random/std::negative_binomial_distribution::operator()", "random/std::negative_binomial_distribution::param_type", "random/std::negative_binomial_distribution::param_type::k", "random/std::negative_binomial_distribution::param_type::p", "random/std::negative_binomial_distribution::param_type::operator==", "random/std::negative_binomial_distribution::param_type::operator!="]
 helpviewer_keywords: ["std::negative_binomial_distribution [C++]", "std::negative_binomial_distribution [C++], reset", "std::negative_binomial_distribution [C++], k", "std::negative_binomial_distribution [C++], p", "std::negative_binomial_distribution [C++], param", "std::negative_binomial_distribution [C++], min", "std::negative_binomial_distribution [C++], max", "std::negative_binomial_distribution [C++], param_type", "std::negative_binomial_distribution [C++], param_type"]
-ms.assetid: 7f5f0967-7fdd-4578-99d4-88f292b4fe9c
 ---
 # negative_binomial_distribution Class
 
@@ -224,15 +223,18 @@ The second constructor constructs an object whose stored parameters are initiali
 
 Stores the parameters of the distribution.
 
-struct param_type {
-   typedef negative_binomial_distribution`<`result_type> distribution_type;
-   param_type(result_type k = 1, double p = 0.5);
-   result_type k() const;
-   double p() const;
+```cpp
+struct param_type
+{
+    typedef negative_binomial_distribution<result_type> distribution_type;
+    param_type(result_type k = 1, double p = 0.5);
+    result_type k() const;
+    double p() const;
 
-   bool operator==(const param_type& right) const;
-   bool operator!=(const param_type& right) const;
-   };
+    bool operator==(const param_type& right) const;
+    bool operator!=(const param_type& right) const;
+};
+```
 
 ### Parameters
 
diff --git a/docs/standard-library/new-functions.md b/docs/standard-library/new-functions.md
index 7bcc74e888..4a7901ce9d 100644
--- a/docs/standard-library/new-functions.md
+++ b/docs/standard-library/new-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <new> functions"
 title: "<new> functions"
+description: "Learn more about: <new> functions"
 ms.date: "11/04/2016"
 f1_keywords: ["new/std::get_new_handler", "new/std::nothrow", "new/std::set_new_handler"]
-ms.assetid: e250f06a-b025-4509-ae7a-5356d56aad7d
 ---
 # `<new>` functions
 
@@ -93,8 +92,8 @@ The function stores *`Pnew`* in a static [`new` handler](../standard-library/new
 ```cpp
 // new_set_new_handler.cpp
 // compile with: /EHsc
-#include<new>
-#include<iostream>
+#include <new>
+#include <iostream>
 
 using namespace std;
 void __cdecl newhandler( )
diff --git a/docs/standard-library/new-operators.md b/docs/standard-library/new-operators.md
index 0df7cbc071..49e1184de8 100644
--- a/docs/standard-library/new-operators.md
+++ b/docs/standard-library/new-operators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <new> operators and enums"
 title: "<new> operators and enums"
+description: "Learn more about: <new> operators and enums"
 ms.date: 05/21/2022
 f1_keywords: ["new/std::operator delete", "new/std::operator new"]
-ms.assetid: d1af4b56-9a95-4c65-ab01-bf43e982c7bd
 ---
 # `<new>` operators and enums
 
@@ -130,8 +129,8 @@ For information on throwing or non-throwing behavior of `new`, see [The `new` an
 ```cpp
 // new_op_new.cpp
 // compile with: /EHsc
-#include<new>
-#include<iostream>
+#include <new>
+#include <iostream>
 
 using namespace std;
 
diff --git a/docs/standard-library/num-put-class.md b/docs/standard-library/num-put-class.md
index 2fecf24e5f..1a9729edc9 100644
--- a/docs/standard-library/num-put-class.md
+++ b/docs/standard-library/num-put-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: num_put Class"
 title: "num_put Class"
-ms.date: "11/04/2016"
+description: "Learn more about: num_put Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocnum/std::num_put", "locale/std::num_put::char_type", "locale/std::num_put::iter_type", "locale/std::num_put::do_put", "locale/std::num_put::put"]
 helpviewer_keywords: ["std::num_put [C++]", "std::num_put [C++], char_type", "std::num_put [C++], iter_type", "std::num_put [C++], do_put", "std::num_put [C++], put"]
-ms.assetid: 36c5bffc-8283-4201-8ed4-78c4d81f8a17
 ---
 # num_put Class
 
@@ -384,7 +383,7 @@ An output iterator the addresses the position one beyond the last element produc
 
 ### Remarks
 
-All member functions return [do_put](#do_put)( `next`, `_Iosbase`, `_Fill`, `val`).
+All member functions return [do_put](#do_put)(`next`, `_Iosbase`, `_Fill`, `val`).
 
 ### Example
 
diff --git a/docs/standard-library/numpunct-byname-class.md b/docs/standard-library/numpunct-byname-class.md
index 7ab66566f4..5d4feb1798 100644
--- a/docs/standard-library/numpunct-byname-class.md
+++ b/docs/standard-library/numpunct-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: numpunct_byname Class"
 title: "numpunct_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: numpunct_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocnum/std::numpunct_byname"]
 helpviewer_keywords: ["numpunct_byname class"]
-ms.assetid: 18412924-e085-4771-b5e9-7a200cbdd7c0
 ---
 # numpunct_byname Class
 
@@ -32,7 +31,7 @@ protected:
 
 ## Remarks
 
-Its behavior is determined by the [named](../standard-library/locale-class.md#name) locale `_Locname`. The constructor initializes its base object with [numpunct](../standard-library/numpunct-class.md#numpunct)\<CharType>( `_Refs`).
+Its behavior is determined by the [named](../standard-library/locale-class.md#name) locale `_Locname`. The constructor initializes its base object with [numpunct](../standard-library/numpunct-class.md#numpunct)\<CharType>(`_Refs`).
 
 ## Requirements
 
diff --git a/docs/standard-library/numpunct-class.md b/docs/standard-library/numpunct-class.md
index d56d1c0b9b..a0c85da261 100644
--- a/docs/standard-library/numpunct-class.md
+++ b/docs/standard-library/numpunct-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: numpunct Class"
 title: "numpunct Class"
-ms.date: "11/04/2016"
+description: "Learn more about: numpunct Class"
+ms.date: 11/04/2016
 f1_keywords: ["xlocnum/std::numpunct", "xlocnum/std::numpunct::char_type", "xlocnum/std::numpunct::string_type", "xlocnum/std::numpunct::decimal_point", "xlocnum/std::numpunct::do_decimal_point", "xlocnum/std::numpunct::do_falsename", "xlocnum/std::numpunct::do_grouping", "xlocnum/std::numpunct::do_thousands_sep", "xlocnum/std::numpunct::do_truename", "xlocnum/std::numpunct::falsename", "xlocnum/std::numpunct::grouping", "xlocnum/std::numpunct::thousands_sep", "xlocnum/std::numpunct::truename"]
 helpviewer_keywords: ["std::numpunct [C++]", "std::numpunct [C++], char_type", "std::numpunct [C++], string_type", "std::numpunct [C++], decimal_point", "std::numpunct [C++], do_decimal_point", "std::numpunct [C++], do_falsename", "std::numpunct [C++], do_grouping", "std::numpunct [C++], do_thousands_sep", "std::numpunct [C++], do_truename", "std::numpunct [C++], falsename", "std::numpunct [C++], grouping", "std::numpunct [C++], thousands_sep", "std::numpunct [C++], truename"]
-ms.assetid: 73fb93cc-ac11-4c98-987c-bfa6267df596
 ---
 # numpunct Class
 
@@ -107,7 +106,7 @@ int main( )
    npunct.decimal_point( ) << endl;
    cout << loc.name( ) << " thousands separator "
    << npunct.thousands_sep( ) << endl;
-};
+}
 ```
 
 ```Output
@@ -378,7 +377,7 @@ int main( )
    npunct.decimal_point( ) << endl;
    cout << loc.name( ) << " thousands separator "
    << npunct.thousands_sep( ) << endl;
-};
+}
 ```
 
 ```Output
diff --git a/docs/standard-library/optional-operators.md b/docs/standard-library/optional-operators.md
index 839624fd2d..99a367665f 100644
--- a/docs/standard-library/optional-operators.md
+++ b/docs/standard-library/optional-operators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <optional> operators"
 title: "<optional> operators"
-ms.date: "11/04/2016"
-f1_keywords: ["optional/std::operator!=", "optional/std::operator==", "optional/std::operator>", "optional/std::operator&gt=;", "optional/std::operator<", "optional/std::operator<="]
-ms.assetid: 57492e09-3836-4dbc-9ae5-78ecf506c190
+description: "Learn more about: <optional> operators"
+ms.date: 11/04/2016
+f1_keywords: ["optional/std::operator!=", "optional/std::operator==", "optional/std::operator>", "optional/std::operator>=;", "optional/std::operator<", "optional/std::operator<="]
 helpviewer_keywords: ["std::operator!= (optional)", "std::operator== (optional)", "std::operator> (optional)", "std::operator>= (optional)", "std::operator< (optional)", "std::`operator<=` (optional)"]
 ---
 # `<optional>` operators
diff --git a/docs/standard-library/ostream-functions.md b/docs/standard-library/ostream-functions.md
index ce0710b50c..e306c7f49e 100644
--- a/docs/standard-library/ostream-functions.md
+++ b/docs/standard-library/ostream-functions.md
@@ -1,21 +1,15 @@
 ---
-description: "Learn more about: <ostream> functions"
 title: "<ostream> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <ostream> functions"
+ms.date: 11/04/2016
 f1_keywords: ["ostream/std::swap", "ostream/std::endl", "ostream/std::ends", "ostream/std::flush"]
-ms.assetid: d6e56cc0-c8df-4dbe-be10-98e14c35ed3a
 helpviewer_keywords: ["std::swap [C++]", "std::endl [C++]", "std::ends [C++]", "std::flush [C++]"]
 ---
 # `<ostream>` functions
 
-These are the global template functions defined in `<ostream>`. For member functions, see the [basic_ostream Class](basic-ostream-class.md) documentation.
-
-[endl](#endl)\
-[ends](#ends)\
-[flush](#flush)\
-[swap](#swap)
+These are the global template functions defined in `<ostream>`. For member functions, see the [`basic_ostream` Class](basic-ostream-class.md) documentation.
 
-## endl
+## `endl`
 
 Terminates a line and flushes the buffer.
 
@@ -27,22 +21,22 @@ basic_ostream<Elem, Tr>& endl(
 
 ### Parameters
 
-*Elem*\
+*`Elem`*\
 The element type.
 
-*Ostr*\
-An object of type **basic_ostream**.
+*`Ostr`*\
+An object of type **`basic_ostream`**.
 
-*Tr*\
+*`Tr`*\
 Character traits.
 
 ### Return Value
 
-An object of type **basic_ostream**.
+An object of type **`basic_ostream`**.
 
 ### Remarks
 
-The manipulator calls *Ostr*.[put](../standard-library/basic-ostream-class.md#put)(*Ostr*.[widen](../standard-library/basic-ios-class.md#widen)('\n')), and then calls *Ostr*.[flush](../standard-library/basic-ostream-class.md#flush). It returns *Ostr*.
+The manipulator calls *`Ostr`*.[`put`](../standard-library/basic-ostream-class.md#put)(*`Ostr`*.[`widen`](../standard-library/basic-ios-class.md#widen)('\n')), and then calls *`Ostr`*.[`flush`](../standard-library/basic-ostream-class.md#flush). It returns *`Ostr`*.
 
 ### Example
 
@@ -62,7 +56,7 @@ int main( )
 testing
 ```
 
-## ends
+## `ends`
 
 Terminates a string.
 
@@ -74,13 +68,13 @@ basic_ostream<Elem, Tr>& ends(
 
 ### Parameters
 
-*Elem*\
+*`Elem`*\
 The element type.
 
-*Ostr*\
+*`Ostr`*\
 An object of type `basic_ostream`.
 
-*Tr*\
+*`Tr`*\
 Character traits.
 
 ### Return Value
@@ -89,7 +83,7 @@ An object of type `basic_ostream`.
 
 ### Remarks
 
-The manipulator calls *Ostr*.[put](../standard-library/basic-ostream-class.md#put)(*Elem*('\0')). It returns *Ostr*.
+The manipulator calls *`Ostr`*.[`put`](../standard-library/basic-ostream-class.md#put)(*`Elem`*('\0')). It returns *`Ostr`*.
 
 ### Example
 
@@ -111,7 +105,7 @@ int main( )
 ab c
 ```
 
-## flush
+## `flush`
 
 Flushes the buffer.
 
@@ -123,13 +117,13 @@ basic_ostream<Elem, Tr>& flush(
 
 ### Parameters
 
-*Elem*\
+*`Elem`*\
 The element type.
 
-*Ostr*\
+*`Ostr`*\
 An object of type `basic_ostream`.
 
-*Tr*\
+*`Tr`*\
 Character traits.
 
 ### Return Value
@@ -138,7 +132,7 @@ An object of type `basic_ostream`.
 
 ### Remarks
 
-The manipulator calls *Ostr*.[flush](../standard-library/basic-ostream-class.md#flush). It returns *Ostr*.
+The manipulator calls *`Ostr`*.[`flush`](../standard-library/basic-ostream-class.md#flush). It returns *`Ostr`*.
 
 ### Example
 
@@ -158,7 +152,7 @@ int main( )
 testing
 ```
 
-## swap
+## `swap`
 
 Exchanges the values of two `basic_ostream` objects.
 
@@ -171,16 +165,16 @@ void swap(
 
 ### Parameters
 
-*Elem*\
+*`Elem`*\
 The element type.
 
-*Tr*\
+*`Tr`*\
 Character traits.
 
-*left*\
+*`left`*\
 An lvalue reference to a `basic_ostream` object.
 
-*right*\
+*`right`*\
 An lvalue reference to a `basic_ostream` object.
 
 ### Remarks
@@ -189,4 +183,4 @@ The template function `swap` executes `left.swap(right)`.
 
 ## See also
 
-[\<ostream>](../standard-library/ostream.md)
+[`<ostream>`](../standard-library/ostream.md)
diff --git a/docs/standard-library/ostream-operators.md b/docs/standard-library/ostream-operators.md
index 6b1d575283..566531288c 100644
--- a/docs/standard-library/ostream-operators.md
+++ b/docs/standard-library/ostream-operators.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: <ostream> operators"
 title: "<ostream> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <ostream> operators"
+ms.date: 11/04/2016
 f1_keywords: ["ostream/std::operator<<"]
-ms.assetid: 9282a62e-a3d1-4371-a284-fbc9515bb9a2
 ---
 # `<ostream>` operators
 
-[`operator<<`](#op_lt_lt)
+The `<ostream>` header provides the following operators:
 
 ## <a name="op_lt_lt"></a> `operator<<`
 
diff --git a/docs/standard-library/ostream-typedefs.md b/docs/standard-library/ostream-typedefs.md
index fd4844f2c2..7ace186c98 100644
--- a/docs/standard-library/ostream-typedefs.md
+++ b/docs/standard-library/ostream-typedefs.md
@@ -1,18 +1,16 @@
 ---
-description: "Learn more about: <ostream> typedefs"
 title: "<ostream> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <ostream> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["iosfwd/std::ostream", "iosfwd/std::wostream"]
-ms.assetid: 2ec4dc52-a01f-4654-bd65-dd5288777c48
 ---
 # `<ostream>` typedefs
 
-[ostream](#ostream)\
-[wostream](#wostream)
+The `<ostream>` header provides the following typedefs:
 
-## <a name="ostream"></a> ostream
+## <a name="ostream"></a> `ostream`
 
-Creates a type from basic_ostream that is specialized on **`char`** and `char_traits` specialized on **`char`**.
+Creates a type from `basic_ostream` that is specialized on **`char`** and `char_traits` specialized on **`char`**.
 
 ```cpp
 typedef basic_ostream<char, char_traits<char>> ostream;
@@ -20,7 +18,7 @@ typedef basic_ostream<char, char_traits<char>> ostream;
 
 ### Remarks
 
-The type is a synonym for class template [basic_ostream](../standard-library/basic-ostream-class.md), specialized for elements of type **`char`** with default character traits.
+The type is a synonym for class template [`basic_ostream`](../standard-library/basic-ostream-class.md), specialized for elements of type **`char`** with default character traits.
 
 ## <a name="wostream"></a> wostream
 
@@ -32,7 +30,7 @@ typedef basic_ostream<wchar_t, char_traits<wchar_t>> wostream;
 
 ### Remarks
 
-The type is a synonym for class template [basic_ostream](../standard-library/basic-ostream-class.md), specialized for elements of type **`wchar_t`** with default character traits.
+The type is a synonym for class template [`basic_ostream`](../standard-library/basic-ostream-class.md), specialized for elements of type **`wchar_t`** with default character traits.
 
 ## See also
 
diff --git a/docs/standard-library/ostrstream-class.md b/docs/standard-library/ostrstream-class.md
index c9b7a0acaf..567245feb6 100644
--- a/docs/standard-library/ostrstream-class.md
+++ b/docs/standard-library/ostrstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: ostrstream Class"
 title: "ostrstream Class"
-ms.date: "11/04/2016"
+description: "Learn more about: ostrstream Class"
+ms.date: 11/04/2016
 f1_keywords: ["strstream/std::ostrstream::freeze", "strstream/std::ostrstream::pcount", "strstream/std::ostrstream::rdbuf", "strstream/std::ostrstream::str"]
 helpviewer_keywords: ["std::ostrstream [C++], freeze", "std::ostrstream [C++], pcount", "std::ostrstream [C++], rdbuf", "std::ostrstream [C++], str"]
-ms.assetid: e2e34679-b266-4728-a8e1-8eda5d400e46
 ---
 # ostrstream Class
 
@@ -94,7 +93,7 @@ Both constructors initialize the base class by calling [ostream](../standard-lib
 
 - If `_Mode` & **ios_base::app**== 0, then `ptr` must designate the first element of an array of `count` elements, and the constructor calls `strstreambuf`(`ptr`, `count`, `ptr`).
 
-- Otherwise, `ptr` must designate the first element of an array of count elements that contains a C string whose first element is designated by `ptr`, and the constructor calls `strstreambuf`(`ptr`, `count`, `ptr` + `strlen`( `ptr`) ).
+- Otherwise, `ptr` must designate the first element of an array of count elements that contains a C string whose first element is designated by `ptr`, and the constructor calls `strstreambuf`(`ptr`, `count`, `ptr` + `strlen`(`ptr`)).
 
 ## <a name="pcount"></a> ostrstream::pcount
 
diff --git a/docs/standard-library/other-one-argument-output-stream-manipulators.md b/docs/standard-library/other-one-argument-output-stream-manipulators.md
index 0807ff915e..8495a51370 100644
--- a/docs/standard-library/other-one-argument-output-stream-manipulators.md
+++ b/docs/standard-library/other-one-argument-output-stream-manipulators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Other One-Argument Output Stream Manipulators"
 title: "Other One-Argument Output Stream Manipulators"
-ms.date: "11/04/2016"
+description: "Learn more about: Other One-Argument Output Stream Manipulators"
+ms.date: 11/04/2016
 helpviewer_keywords: ["output streams, one-argument manipulators"]
-ms.assetid: e381dee8-6b16-4cef-805a-4a6a1d2b696b
 ---
 # Other One-Argument Output Stream Manipulators
 
@@ -51,7 +50,7 @@ void fb( ios_base& os, char * somename )
    {
       for( int i=0; i < l; i++ )
       (*pos) << ' ';
-   };
+   }
 */
 }
 
diff --git a/docs/standard-library/output-file-stream-member-functions.md b/docs/standard-library/output-file-stream-member-functions.md
index f01b65202b..6c7902a624 100644
--- a/docs/standard-library/output-file-stream-member-functions.md
+++ b/docs/standard-library/output-file-stream-member-functions.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: Output File Stream Member Functions"
 title: "Output File Stream Member Functions"
-ms.date: "08/25/2021"
+description: "Learn more about: Output File Stream Member Functions"
+ms.date: 08/25/2021
 helpviewer_keywords: ["output streams [C++], member functions"]
 ---
 # Output File Stream Member Functions
@@ -12,7 +12,7 @@ Output stream member functions have three types: those that are equivalent to ma
 
 To use an output file stream ([`ofstream`](../standard-library/basic-ofstream-class.md)), you must associate that stream with a specific disk file in the constructor or the `open` function. If you use the `open` function, you can reuse the same stream object with a series of files. In either case, the arguments describing the file are the same.
 
-When you open the file associated with an output stream, you generally specify an `open_mode` flag. You can combine these flags, which are defined as enumerators in the `ios` class, with the bitwise OR ( `|` ) operator. See [`ios_base::openmode`](../standard-library/ios-base-class.md#openmode) for a list of the enumerators.
+When you open the file associated with an output stream, you generally specify an `open_mode` flag. You can combine these flags, which are defined as enumerators in the `ios` class, with the bitwise OR (`|`) operator. See [`ios_base::openmode`](../standard-library/ios-base-class.md#openmode) for a list of the enumerators.
 
 Three common output stream situations involve mode options:
 
@@ -102,7 +102,7 @@ Use these member functions to test for errors while writing to a stream:
 |[`good`](basic-ios-class.md#good)|Returns **`true`** if there's no error condition (unrecoverable or otherwise) and the end-of-file flag isn't set.|
 |[`eof`](basic-ios-class.md#eof)|Returns **`true`** on the end-of-file condition.|
 |[`clear`](basic-ios-class.md#clear)|Sets the internal error state. If called with the default arguments, it clears all error bits.|
-|[`rdstate`](basic-ios-class.md#rdstate|Returns the current error state.|
+|[`rdstate`](basic-ios-class.md#rdstate)|Returns the current error state.|
 
 The **`!`** operator is overloaded to perform the same function as the `fail` function. Thus the expression:
 
diff --git a/docs/standard-library/output-stream-manipulators-with-one-argument-int-or-long.md b/docs/standard-library/output-stream-manipulators-with-one-argument-int-or-long.md
index 1c3cb51e5e..ee87da5f21 100644
--- a/docs/standard-library/output-stream-manipulators-with-one-argument-int-or-long.md
+++ b/docs/standard-library/output-stream-manipulators-with-one-argument-int-or-long.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: Output Stream Manipulators with One Argument (int or long)"
 title: "Output Stream Manipulators with One Argument (int or long)"
-ms.date: "11/04/2016"
+description: "Learn more about: Output Stream Manipulators with One Argument (int or long)"
+ms.date: 11/04/2016
 helpviewer_keywords: ["output streams, int or long argument manipulators"]
-ms.assetid: 338f3164-b5e2-4c5a-a605-7d9dc3629ca1
 ---
 # Output Stream Manipulators with One Argument (int or long)
 
@@ -25,7 +24,7 @@ void fb( ios_base& os, int l )
    {
       for( int i=0; i < l; i++ )
       (*pos) << ' ';
-   };
+   }
 }
 
 _Smanip<int>
diff --git a/docs/standard-library/queue-operators.md b/docs/standard-library/queue-operators.md
index 51f688e876..9f4929c4a9 100644
--- a/docs/standard-library/queue-operators.md
+++ b/docs/standard-library/queue-operators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <queue> operators"
 title: "<queue> operators"
+description: "Learn more about: <queue> operators"
 ms.date: "11/04/2016"
 f1_keywords: ["queue/std::operator!=", "queue/std::operator>", "queue/std::operator>=", "queue/std::operator<", "queue/std::operator<=", "queue/std::operator=="]
-ms.assetid: 7c435b48-175c-45b0-88eb-24561044019c
 helpviewer_keywords: ["std::operator!= (queue)", "std::operator> (queue)", "std::operator>= (queue)", "std::operator< (queue)", "std::operator<= (queue)", "std::operator== (queue)"]
 ---
 # `<queue>` operators
@@ -13,7 +12,7 @@ helpviewer_keywords: ["std::operator!= (queue)", "std::operator> (queue)", "std:
 Tests if the queue object on the left side of the operator is not equal to the queue object on the right side.
 
 ```cpp
-bool operator!=(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator!=(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
@@ -80,7 +79,7 @@ The queues q1 and q3 are equal.
 Tests if the queue object on the left side of the operator is less than the queue object on the right side.
 
 ```cpp
-bool operator<(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator<(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
@@ -143,7 +142,7 @@ The queue q1 is not less than the queue q3.
 Tests if the queue object on the left side of the operator is less than or equal to the queue object on the right side.
 
 ```cpp
-bool operator<=(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator<=(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
@@ -208,7 +207,7 @@ The queue q1 is less than or equal to the queue q3.
 Tests if the queue object on the left side of the operator is equal to queue object on the right side.
 
 ```cpp
-bool operator==(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator==(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
@@ -274,7 +273,7 @@ The queues q1 and q3 are equal.
 Tests if the queue object on the left side of the operator is greater than the queue object on the right side.
 
 ```cpp
-bool operator>(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator>(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
@@ -340,7 +339,7 @@ The queue q1 is greater than the queue q3.
 Tests if the queue object on the left side of the operator is greater than or equal to the queue object on the right side.
 
 ```cpp
-bool operator>=(const queue <Type, Container>& left, const queue <Type, Container>& right,);
+bool operator>=(const queue <Type, Container>& left, const queue <Type, Container>& right);
 ```
 
 ### Parameters
diff --git a/docs/standard-library/random.md b/docs/standard-library/random.md
index 11b4b91e2b..6ba907baac 100644
--- a/docs/standard-library/random.md
+++ b/docs/standard-library/random.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: <random>"
 title: "<random>"
-ms.date: "08/24/2017"
+description: "Learn more about: <random>"
+ms.date: 08/24/2017
 f1_keywords: ["<random>"]
 helpviewer_keywords: ["random header"]
-ms.assetid: 60afc25c-b162-4811-97c1-1b65398d4c57
 ---
 # `<random>`
 
@@ -17,7 +16,7 @@ Defines facilities for random number generation, allowing creation of uniformly
 **Namespace:** std
 
 > [!NOTE]
-> The `<random>` library uses the `#include <initializer_list>' statement.
+> The `<random>` library uses the `#include <initializer_list>` statement.
 
 ## Summary
 
diff --git a/docs/standard-library/range-adaptors.md b/docs/standard-library/range-adaptors.md
index 2b80c881af..fd269cd19a 100644
--- a/docs/standard-library/range-adaptors.md
+++ b/docs/standard-library/range-adaptors.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about range adaptors, which create views on ranges."
 title: "Range adaptors"
+description: "Learn more about range adaptors, which create views on ranges."
 ms.date: 11/3/2022
 f1_keywords: ["ranges/std::all", "ranges/std::all_t", "ranges/std::common", "ranges/std::counted", "ranges/std::drop", "ranges/std::drop_while", "ranges/std::elements", "ranges/std::empty", "ranges/std::filter", "ranges/std::iota", "ranges/std::istream", "ranges/std::join", "ranges/std::keys", "ranges/std::lazy_split", "ranges/std::reverse", "ranges/std::single", "ranges/std::split", "ranges/std::subrange", "ranges/std::take", "ranges/std::take_while", "ranges/std::transform", "ranges/std::values"]
 helpviewer_keywords: ["std::ranges [C++], all", "std::ranges [C++], all_t", "std::ranges [C++], common", "std::ranges [C++], counted", "std::ranges [C++], drop", "std::ranges [C++], drop_while", "std::ranges [C++], elements", "std::ranges [C++], empty", "std::ranges [C++], filter", "std::ranges [C++], iota", "std::ranges [C++], istream", "std::ranges [C++], join", "std::ranges [C++], keys", "std::ranges [C++], lazy_split", "std::ranges [C++], reverse", "std::ranges [C++], single", "std::ranges [C++], split", "std::ranges [C++], subrange", "std::ranges [C++], take", "std::ranges [C++], take_while", "std::ranges [C++], transform", "std::ranges [C++], values"]
@@ -217,7 +217,7 @@ When an API requires the begin iterator and end sentinel to have the same type,
 ### Example: `common`
 
 ```cpp
-// requires /std:c++20 or higher
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 #include <numeric>
@@ -551,7 +551,7 @@ An `empty_view` can be useful when you're calling code that requires a view but
 ### Example: `empty`
 
 ```cpp
-// requires /std:c++20 or higher
+// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 
@@ -913,7 +913,7 @@ A [`lazy_split_view`](lazy-split-view-class.md) that contains one or more subran
 
 The delimiter isn't part of the result. For example, if you split the range `1,2,3` on the value `2`, you get two subranges: `1` and `3`.
 
-A related adaptor is [`split`](#split). The primary differences between [`split_view](split-view-class.md) and `lazy_split_view` are:
+A related adaptor is [`split`](#split). The primary differences between [`split_view`](split-view-class.md) and `lazy_split_view` are:
 
 | View | Can split a `const` range | Range iterator |
 |--|--|--|
@@ -1062,7 +1062,7 @@ This view is useful for test purposes, for calling code that needs to be provide
 ### Example: `single`
 
 ```cpp
-// requires /std:c++20 or higher
+// requires /std:c++20 or later
 #include <ranges>
 #include <string>
 #include <tuple>
@@ -1389,7 +1389,7 @@ int main()
 Create a [`values_view`](values-view-class.md) that consists of the second index into each tuple-like value in a collection. This is useful for making a view of the values in an associative container. For example, given a range of `std::tuple<string, int>` values, create a view that consists of all the `int` elements from each tuple.
 
 ```cpp
-template <range::viewable_range R>
+template <ranges::viewable_range R>
 constexpr ranges::view auto values(R&& rg);
 ```
 
diff --git a/docs/standard-library/range-functions.md b/docs/standard-library/range-functions.md
index 359201dcd0..52c5fffab5 100644
--- a/docs/standard-library/range-functions.md
+++ b/docs/standard-library/range-functions.md
@@ -482,7 +482,7 @@ int main()
 }
 ```
 
-## <a name="rend"></a>`rend`
+## <a name="rend"></a> `rend`
 
 Get a reverse iterator to the sentinel at the end of a reversed view of the range.
 A reverse iterator returns the elements of the range in reverse order.
@@ -571,7 +571,7 @@ int main()
 }
 ```
 
-## <a name="ssize"></a>`ssize`
+## <a name="ssize"></a> `ssize`
 
 Get the size of the range as a signed value.
 
diff --git a/docs/standard-library/ranges-alias-templates.md b/docs/standard-library/ranges-alias-templates.md
index 2014917533..8e709eff0c 100644
--- a/docs/standard-library/ranges-alias-templates.md
+++ b/docs/standard-library/ranges-alias-templates.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about ranges alias templates."
 title: "<ranges> alias templates"
+description: "Learn more about ranges alias templates."
 ms.date: 01/28/2023
 f1_keywords: ["ranges/std::ranges::borrowed_iterator_t", "ranges/std::ranges::borrowed_subrange_t", "ranges/std::ranges::dangling", "ranges/std::ranges::iterator_t", "ranges/std::ranges::range_difference_t", "ranges/std::ranges::range_reference_t", "ranges/std::ranges::range_rvalue_reference_t", "ranges/std::ranges::range_size_t", "ranges/std::ranges::range_value_t", "ranges/std::ranges::sentinel_t"]
 helpviewer_keywords: ["std::ranges [C++], ranges::borrowed_iterator_t", "std::ranges [C++], ranges::borrowed_subrange_t", "std::ranges [C++], ranges::dangling", "std::ranges [C++], ranges::iterator_t", "std::ranges [C++], ranges::range_difference_t", "std::ranges [C++], ranges::range_reference_t", "std::ranges [C++], ranges::range_rvalue_reference_t", "std::ranges [C++], ranges::range_size_t", "std::ranges [C++], ranges::range_value_t", "std::ranges [C++], ranges::sentinel_t"]
@@ -10,7 +10,7 @@ helpviewer_keywords: ["std::ranges [C++], ranges::borrowed_iterator_t", "std::ra
 An alias template is an alias for another type, which can make code more readable. For example, the following alias, `conditional_t`, is an alias for either `borrowed_range` or `dangling` range, depending on the kind of `range` that's passed in:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <iostream>
 #include <list>
@@ -94,7 +94,7 @@ If an algorithm function is passed a range whose iterators depend on its lifetim
 The following example shows how `borrowed_iterator_t` detects a dangling iterator. The function `ranges::max_element()` uses this template alias to determine the return type:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <span>
@@ -165,7 +165,7 @@ If an algorithm function is passed a range whose iterators depend on its lifetim
 The following example shows how `borrowed_subrange_t` detects a dangling iterator because `equal_range()` and `max_element` use this template alias to determine the return type:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <iostream>
@@ -228,7 +228,7 @@ A variable number of non-`void` types. They have no effect. The arguments are a
 The following example shows how `max_element` detects a dangling iterator.
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <iostream>
@@ -272,7 +272,7 @@ The range type to get the iterator type for.
 The following example shows how `iterator_t` can be used to declare an iterator for a vector:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <ranges>
@@ -314,7 +314,7 @@ The range whose iterator will provide the difference type.
 The following example shows how `range_difference_t` is used to hold the distance between elements in a range:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <ranges>
@@ -356,7 +356,7 @@ The range for which the reference type of its iterator type is returned.
 The following example shows `range_reference_t` referring to the type of the elements in a range:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <ranges>
@@ -399,7 +399,7 @@ The range to get the rvalue reference type to its iterator type.
 The following example shows `range_rvalue_reference_t` referring to a rvalue type of the elements in a range:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <ranges>
@@ -442,7 +442,7 @@ The range to get the type of its `size` function.
 The following example shows `range_size_t` referring to the number of elements in a range:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <iostream>
@@ -484,7 +484,7 @@ The range to get the value type of its iterator.
 The following example shows how `range_value_t` refers to the type of elements in a range:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <vector>
 #include <ranges>
@@ -526,7 +526,7 @@ The range to get the sentinel type for.
 The following example shows using `sentinel_t` to determine whether the iterator type and sentinel type are the same:
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 
 #include <iostream>
 #include <list>
diff --git a/docs/standard-library/raw-storage-iterator-class.md b/docs/standard-library/raw-storage-iterator-class.md
index 3e8ce70473..195b79a1f6 100644
--- a/docs/standard-library/raw-storage-iterator-class.md
+++ b/docs/standard-library/raw-storage-iterator-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: raw_storage_iterator Class"
 title: "raw_storage_iterator Class"
+description: "Learn more about: raw_storage_iterator Class"
 ms.date: 06/17/2022
 f1_keywords: ["memory/std::raw_storage_iterator", "memory/std::raw_storage_iterator::element_type", "memory/std::raw_storage_iterator::iter_type"]
 helpviewer_keywords: ["std::raw_storage_iterator [C++]", "std::raw_storage_iterator [C++], element_type", "std::raw_storage_iterator [C++], iter_type"]
-ms.assetid: 6f033f15-f48e-452a-a326-647ea2cf346f
 ms.custom: devdivchpfy22
 ---
 # raw_storage_iterator Class
@@ -114,7 +113,7 @@ public:
       cout << "Constructing " << i << endl;
       x = i;
       bIsConstructed = true;
-   };
+   }
 
    Int &operator=(int i)
    {
@@ -123,7 +122,7 @@ public:
       cout << "Copying " << i << endl;
       x = i;
       return *this;
-   };
+   }
 
    int x;
 
@@ -190,14 +189,14 @@ public:
       cout << "Constructing " << i << endl;
       x = i;
       bIsConstructed = true;
-   };
+   }
    Int &operator=( int i )
    {
       if ( !bIsConstructed )
          cout << "Not constructed.\n";
       cout << "Copying " << i << endl; x = i;
       return *this;
-   };
+   }
    int x;
 private:
    bool bIsConstructed;
@@ -262,9 +261,9 @@ int main( void )
    std::raw_storage_iterator<int*,int> it( pInt );
    for ( int i = 0; i < 5; i++, it++ ) {
       *it = 2 * i;
-   };
+   }
 
-   for ( int i = 0; i < 5; i++ ) cout << "array " << i << " = " << pInt[i] << endl;;
+   for ( int i = 0; i < 5; i++ ) cout << "array " << i << " = " << pInt[i] << endl;
 
    delete[] pInt;
 }
@@ -310,13 +309,13 @@ public:
       cout << "Constructing " << i << endl;
       x = i;
       bIsConstructed = true;
-   };
+   }
    Int &operator=( int i )
    {
       if (!bIsConstructed)
          cout << "Error! I'm not constructed!\n";
       cout << "Copying " << i << endl;  x = i; return *this;
-   };
+   }
    int x;
    bool bIsConstructed;
 };
@@ -335,7 +334,7 @@ int main( void )
 
    std::copy( l.begin( ), l.end( ), pInt );  // C4996
    for (unsigned int i = 0; i < l.size( ); i++)
-      cout << "array " << i << " = " << pInt[i].x << endl;;
+      cout << "array " << i << " = " << pInt[i].x << endl;
 
    memset (pInt, 0, sizeof(Int)*l.size( ));
    // hack: make sure bIsConstructed is false
diff --git a/docs/standard-library/recursive-mutex-class.md b/docs/standard-library/recursive-mutex-class.md
index 451a7686a4..68223c40ba 100644
--- a/docs/standard-library/recursive-mutex-class.md
+++ b/docs/standard-library/recursive-mutex-class.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: recursive_mutex Class"
 title: "recursive_mutex Class"
-ms.date: "11/04/2016"
+description: "Learn more about: recursive_mutex Class"
+ms.date: 11/04/2016
 f1_keywords: ["mutex/std::recursive_mutex", "mutex/std::recursive_mutex::recursive_mutex", "mutex/std::recursive_mutex::lock", "mutex/std::recursive_mutex::try_lock", "mutex/std::recursive_mutex::unlock"]
-ms.assetid: eb5ffd1b-7e78-4559-8391-bb220ead42fc
 helpviewer_keywords: ["std::recursive_mutex [C++]", "std::recursive_mutex [C++], recursive_mutex", "std::recursive_mutex [C++], lock", "std::recursive_mutex [C++], try_lock", "std::recursive_mutex [C++], unlock"]
 ---
 # recursive_mutex Class
@@ -59,7 +58,7 @@ Constructs a `recursive_mutex` object that is not locked.
 recursive_mutex();
 ```
 
-## <a name="dtorrecursive_mutex_destructor"></a>  ~recursive_mutex
+## <a name="dtorrecursive_mutex_destructor"></a> ~recursive_mutex
 
 Releases any resources that are used by the object.
 
diff --git a/docs/standard-library/recursive-timed-mutex-class.md b/docs/standard-library/recursive-timed-mutex-class.md
index 3728a0eb94..d105a0a264 100644
--- a/docs/standard-library/recursive-timed-mutex-class.md
+++ b/docs/standard-library/recursive-timed-mutex-class.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: recursive_timed_mutex Class"
 title: "recursive_timed_mutex Class"
-ms.date: "11/04/2016"
+description: "Learn more about: recursive_timed_mutex Class"
+ms.date: 11/04/2016
 f1_keywords: ["mutex/std::recursive_timed_mutex", "mutex/std::recursive_timed_mutex::recursive_timed_mutex", "mutex/std::recursive_timed_mutex::lock", "mutex/std::recursive_timed_mutex::try_lock", "mutex/std::recursive_timed_mutex::try_lock_for", "mutex/std::recursive_timed_mutex::try_lock_until", "mutex/std::recursive_timed_mutex::unlock"]
-ms.assetid: 59cc2d5c-ed80-45f3-a0a8-05652a8ead7e
 helpviewer_keywords: ["std::recursive_timed_mutex [C++]", "std::recursive_timed_mutex [C++], recursive_timed_mutex", "std::recursive_timed_mutex [C++], lock", "std::recursive_timed_mutex [C++], try_lock", "std::recursive_timed_mutex [C++], try_lock_for", "std::recursive_timed_mutex [C++], try_lock_until", "std::recursive_timed_mutex [C++], unlock"]
 ---
 # recursive_timed_mutex Class
@@ -61,7 +60,7 @@ Constructs a `recursive_timed_mutex` object that is not locked.
 recursive_timed_mutex();
 ```
 
-## <a name="dtorrecursive_timed_mutex_destructor"></a>  ~recursive_timed_mutex Destructor
+## <a name="dtorrecursive_timed_mutex_destructor"></a> ~recursive_timed_mutex Destructor
 
 Releases any resources that are used by the `recursive_timed_mutex` object.
 
diff --git a/docs/standard-library/regex-operators.md b/docs/standard-library/regex-operators.md
index 093cb93bd7..f062a76a49 100644
--- a/docs/standard-library/regex-operators.md
+++ b/docs/standard-library/regex-operators.md
@@ -1,19 +1,12 @@
 ---
-description: "Learn more about: <regex> operators"
 title: "<regex> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <regex> operators"
+ms.date: 11/04/2016
 f1_keywords: ["regex/std::operator!=", "regex/std::operator>", "regex/std::operator>=", "regex/std::operator<", "regex/std::operator<=", "regex/std::operator==", "regex/std::operator<<"]
-ms.assetid: ec623e65-c186-491f-aa18-6b12b47e1127
 ---
 # `<regex>` operators
 
-[operator!=](#op_neq)\
-[`operator>`](#op_gt)\
-[`operator>=`](#op_gt_eq)\
-[`operator<`](#op_lt)\
-[`operator<<`](#op_lt_lt)\
-[`operator<=`](#op_lt_eq)\
-[operator==](#op_eq_eq)
+The `<regex>` header provides the following operators:
 
 ## <a name="op_neq"></a> operator!=
 
diff --git a/docs/standard-library/regex-traits-class.md b/docs/standard-library/regex-traits-class.md
index 512a4b7093..95fd141c40 100644
--- a/docs/standard-library/regex-traits-class.md
+++ b/docs/standard-library/regex-traits-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: regex_traits Class"
 title: "regex_traits Class"
-ms.date: "09/10/2018"
+description: "Learn more about: regex_traits Class"
+ms.date: 09/10/2018
 f1_keywords: ["regex/std::regex_traits", "regex/std::regex_traits::char_type", "regex/std::regex_traits::size_type", "regex/std::regex_traits::string_type", "regex/std::regex_traits::locale_type", "regex/std::regex_traits::char_class_type", "regex/std::regex_traits::length", "regex/std::regex_traits::translate", "regex/std::regex_traits::translate_nocase", "regex/std::regex_traits::transform", "regex/std::regex_traits::transform_primary", "regex/std::regex_traits::lookup_classname", "regex/std::regex_traits::lookup_collatename", "regex/std::regex_traits::isctype", "regex/std::regex_traits::value", "regex/std::regex_traits::imbue", "regex/std::regex_traits::getloc"]
 helpviewer_keywords: ["std::regex_traits [C++]", "std::regex_traits [C++], char_type", "std::regex_traits [C++], size_type", "std::regex_traits [C++], string_type", "std::regex_traits [C++], locale_type", "std::regex_traits [C++], char_class_type", "std::regex_traits [C++], length", "std::regex_traits [C++], translate", "std::regex_traits [C++], translate_nocase", "std::regex_traits [C++], transform", "std::regex_traits [C++], transform_primary", "std::regex_traits [C++], lookup_classname", "std::regex_traits [C++], lookup_collatename", "std::regex_traits [C++], isctype", "std::regex_traits [C++], value", "std::regex_traits [C++], imbue", "std::regex_traits [C++], getloc"]
-ms.assetid: bc5a5eed-32fc-4eb7-913d-71c42e729e81
 ---
 # regex_traits Class
 
@@ -24,7 +23,7 @@ The character element type to describe.
 
 ## Remarks
 
-The class template describes various regular expression traits for type *Elem*. The class template [basic_regex Class](../standard-library/basic-regex-class.md) uses this information to manipulate elements of type *Elem*.
+The class template describes various regular expression traits for type *Elem*. The class template [`basic_regex`](../standard-library/basic-regex-class.md) uses this information to manipulate elements of type *Elem*.
 
 Each `regex_traits` object holds an object of type `regex_traits::locale` which is used by some of its member functions. The default locale is a copy of `regex_traits::locale()`. The member function `imbue` replaces the locale object, and the member function `getloc` returns a copy of the locale object.
 
diff --git a/docs/standard-library/regex-typedefs.md b/docs/standard-library/regex-typedefs.md
index d9d1058fe1..4c7f083ccd 100644
--- a/docs/standard-library/regex-typedefs.md
+++ b/docs/standard-library/regex-typedefs.md
@@ -1,30 +1,12 @@
 ---
-description: "Learn more about: <regex> typedefs"
 title: "<regex> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <regex> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["regex/std::cmatch", "regex/std::cregex_iterator", "regex/std::cregex_token_iterator", "regex/std::csub_match", "regex/std::regex", "regex/std::smatch", "regex/std::sregex_iterator", "regex/std::sregex_token_iterator", "regex/std::ssub_match", "regex/std::wcmatch", "regex/std::wcregex_iterator", "regex/std::wcregex_token_iterator", "regex/std::wcsub_match", "regex/std::wregex", "regex/std::wsmatch", "regex/std::wsregex_iterator", "regex/std::wsregex_token_iterator", "regex/std::wssub_match"]
-ms.assetid: e6a69067-106c-4a24-9e08-7c867a3a2260
 ---
 # `<regex>` typedefs
 
-[cmatch](#cmatch)\
-[cregex_iterator](#cregex_iterator)\
-[cregex_token_iterator](#cregex_token_iterator)\
-[csub_match](#csub_match)\
-[regex](#regex)\
-[smatch](#smatch)\
-[sregex_iterator](#sregex_iterator)\
-[sregex_token_iterator](#sregex_token_iterator)\
-[ssub_match](#ssub_match)\
-[wcmatch](#wcmatch)\
-[wcregex_iterator](#wcregex_iterator)\
-[wcregex_token_iterator](#wcregex_token_iterator)\
-[wcsub_match](#wcsub_match)\
-[wregex](#wregex)\
-[wsmatch](#wsmatch)\
-[wsregex_iterator](#wsregex_iterator)\
-[wsregex_token_iterator](#wsregex_token_iterator)\
-[wssub_match](#wssub_match)
+The `<regex>` header provides the following typedefs:
 
 ## <a name="cmatch"></a> cmatch Typedef
 
@@ -36,7 +18,7 @@ typedef match_results<const char*> cmatch;
 
 ### Remarks
 
-The type describes a specialization of class template [match_results Class](../standard-library/match-results-class.md) for iterators of type `const char*`.
+The type describes a specialization of class template [`match_results`](../standard-library/match-results-class.md) for iterators of type `const char*`.
 
 ## <a name="cregex_iterator"></a> cregex_iterator Typedef
 
@@ -48,7 +30,7 @@ typedef regex_iterator<const char*> cregex_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_iterator Class](../standard-library/regex-iterator-class.md) for iterators of type `const char*`.
+The type describes a specialization of class template [`regex_iterator`](../standard-library/regex-iterator-class.md) for iterators of type `const char*`.
 
 ## <a name="cregex_token_iterator"></a> cregex_token_iterator Typedef
 
@@ -60,7 +42,7 @@ typedef regex_token_iterator<const char*> cregex_token_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_token_iterator Class](../standard-library/regex-token-iterator-class.md) for iterators of type `const char*`.
+The type describes a specialization of class template [`regex_token_iterator`](../standard-library/regex-token-iterator-class.md) for iterators of type `const char*`.
 
 ## <a name="csub_match"></a> csub_match Typedef
 
@@ -72,7 +54,7 @@ typedef sub_match<const char*> csub_match;
 
 ### Remarks
 
-The type describes a specialization of class template [sub_match Class](../standard-library/sub-match-class.md) for iterators of type `const char*`.
+The type describes a specialization of class template [`sub_match`](../standard-library/sub-match-class.md) for iterators of type `const char*`.
 
 ## <a name="regex"></a> regex Typedef
 
@@ -84,7 +66,7 @@ typedef basic_regex<char> regex;
 
 ### Remarks
 
-The type describes a specialization of class template [basic_regex Class](../standard-library/basic-regex-class.md) for elements of type **`char`**.
+The type describes a specialization of class template [`basic_regex`](../standard-library/basic-regex-class.md) for elements of type **`char`**.
 
 > [!NOTE]
 > High-bit characters will have unpredictable results with `regex`. Values outside the range of 0 to 127 may result in undefined behavior.
@@ -99,7 +81,7 @@ typedef match_results<string::const_iterator> smatch;
 
 ### Remarks
 
-The type describes a specialization of class template [match_results Class](../standard-library/match-results-class.md) for iterators of type `string::const_iterator`.
+The type describes a specialization of class template [`match_results`](../standard-library/match-results-class.md) for iterators of type `string::const_iterator`.
 
 ## <a name="sregex_iterator"></a> sregex_iterator Typedef
 
@@ -111,7 +93,7 @@ typedef regex_iterator<string::const_iterator> sregex_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_iterator Class](../standard-library/regex-iterator-class.md) for iterators of type `string::const_iterator`.
+The type describes a specialization of class template [`regex_iterator`](../standard-library/regex-iterator-class.md) for iterators of type `string::const_iterator`.
 
 ## <a name="sregex_token_iterator"></a> sregex_token_iterator Typedef
 
@@ -123,7 +105,7 @@ typedef regex_token_iterator<string::const_iterator> sregex_token_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_token_iterator Class](../standard-library/regex-token-iterator-class.md) for iterators of type `string::const_iterator`.
+The type describes a specialization of class template [`regex_token_iterator`](../standard-library/regex-token-iterator-class.md) for iterators of type `string::const_iterator`.
 
 ## <a name="ssub_match"></a> ssub_match Typedef
 
@@ -135,7 +117,7 @@ typedef sub_match<string::const_iterator> ssub_match;
 
 ### Remarks
 
-The type describes a specialization of class template [sub_match Class](../standard-library/sub-match-class.md) for iterators of type `string::const_iterator`.
+The type describes a specialization of class template [`sub_match`](../standard-library/sub-match-class.md) for iterators of type `string::const_iterator`.
 
 ## <a name="wcmatch"></a> wcmatch Typedef
 
@@ -147,7 +129,7 @@ typedef match_results<const wchar_t *> wcmatch;
 
 ### Remarks
 
-The type describes a specialization of class template [match_results Class](../standard-library/match-results-class.md) for iterators of type `const wchar_t*`.
+The type describes a specialization of class template [`match_results`](../standard-library/match-results-class.md) for iterators of type `const wchar_t*`.
 
 ## <a name="wcregex_iterator"></a> wcregex_iterator Typedef
 
@@ -159,7 +141,7 @@ typedef regex_iterator<const wchar_t*> wcregex_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_iterator Class](../standard-library/regex-iterator-class.md) for iterators of type `const wchar_t*`.
+The type describes a specialization of class template [`regex_iterator`](../standard-library/regex-iterator-class.md) for iterators of type `const wchar_t*`.
 
 ## <a name="wcregex_token_iterator"></a> wcregex_token_iterator Typedef
 
@@ -171,7 +153,7 @@ typedef regex_token_iterator<const wchar_t*> wcregex_token_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_token_iterator Class](../standard-library/regex-token-iterator-class.md) for iterators of type `const wchar_t*`.
+The type describes a specialization of class template [`regex_token_iterator`](../standard-library/regex-token-iterator-class.md) for iterators of type `const wchar_t*`.
 
 ## <a name="wcsub_match"></a> wcsub_match Typedef
 
@@ -183,7 +165,7 @@ typedef sub_match<const wchar_t*> wcsub_match;
 
 ### Remarks
 
-The type describes a specialization of class template [sub_match Class](../standard-library/sub-match-class.md) for iterators of type `const wchar_t*`.
+The type describes a specialization of class template [`sub_match`](../standard-library/sub-match-class.md) for iterators of type `const wchar_t*`.
 
 ## <a name="wregex"></a> wregex Typedef
 
@@ -195,7 +177,7 @@ typedef basic_regex<wchar_t> wregex;
 
 ### Remarks
 
-The type describes a specialization of class template [basic_regex Class](../standard-library/basic-regex-class.md) for elements of type **`wchar_t`**.
+The type describes a specialization of class template [`basic_regex`](../standard-library/basic-regex-class.md) for elements of type **`wchar_t`**.
 
 ## <a name="wsmatch"></a> wsmatch Typedef
 
@@ -207,7 +189,7 @@ typedef match_results<wstring::const_iterator> wsmatch;
 
 ### Remarks
 
-The type describes a specialization of class template [match_results Class](../standard-library/match-results-class.md) for iterators of type `wstring::const_iterator`.
+The type describes a specialization of class template [`match_results`](../standard-library/match-results-class.md) for iterators of type `wstring::const_iterator`.
 
 ## <a name="wsregex_iterator"></a> wsregex_iterator Typedef
 
@@ -219,7 +201,7 @@ typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_iterator Class](../standard-library/regex-iterator-class.md) for iterators of type `wstring::const_iterator`.
+The type describes a specialization of class template [`regex_iterator`](../standard-library/regex-iterator-class.md) for iterators of type `wstring::const_iterator`.
 
 ## <a name="wsregex_token_iterator"></a> wsregex_token_iterator Typedef
 
@@ -231,7 +213,7 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
 
 ### Remarks
 
-The type describes a specialization of class template [regex_token_iterator Class](../standard-library/regex-token-iterator-class.md) for iterators of type `wstring::const_iterator`.
+The type describes a specialization of class template [`regex_token_iterator`](../standard-library/regex-token-iterator-class.md) for iterators of type `wstring::const_iterator`.
 
 ## <a name="wssub_match"></a> wssub_match Typedef
 
@@ -243,7 +225,7 @@ typedef sub_match<wstring::const_iterator> wssub_match;
 
 ### Remarks
 
-The type describes a specialization of class template [sub_match Class](../standard-library/sub-match-class.md) for iterators of type `wstring::const_iterator`.
+The type describes a specialization of class template [`sub_match`](../standard-library/sub-match-class.md) for iterators of type `wstring::const_iterator`.
 
 ## See also
 
diff --git a/docs/standard-library/regex.md b/docs/standard-library/regex.md
index 290bf331a6..afa6499a17 100644
--- a/docs/standard-library/regex.md
+++ b/docs/standard-library/regex.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: <regex>"
 title: "<regex>"
-ms.date: "11/04/2016"
+description: "Learn more about: <regex>"
+ms.date: 11/04/2016
 f1_keywords: ["<regex>"]
 helpviewer_keywords: ["regex header"]
 ---
@@ -17,9 +17,9 @@ Defines a class template to parse [Regular Expressions (C++)](../standard-librar
 
 ## Remarks
 
-To create a regular expression object, use the class template [`basic_regex` Class](../standard-library/basic-regex-class.md) or one of its specializations, [`regex`](../standard-library/regex-typedefs.md#regex) and [`wregex`](../standard-library/regex-typedefs.md#wregex), together with the syntax flags of type [`regex_constants::syntax_option_type`](../standard-library/regex-constants-class.md#syntax_option_type).
+To create a regular expression object, use the class template [`basic_regex`](../standard-library/basic-regex-class.md) or one of its specializations, [`regex`](../standard-library/regex-typedefs.md#regex) and [`wregex`](../standard-library/regex-typedefs.md#wregex), together with the syntax flags of type [`regex_constants::syntax_option_type`](../standard-library/regex-constants-class.md#syntax_option_type).
 
-To search text for matches to a regular expression object, use the template functions [`regex_match`](../standard-library/regex-functions.md#regex_match) and [`regex_search`](../standard-library/regex-functions.md#regex_search), together with the match flags of type [`regex_constants::match_flag_type`](../standard-library/regex-constants-class.md#match_flag_type). These functions return results by using the class template [`match_results` Class](../standard-library/match-results-class.md) and its specializations, [`cmatch`](../standard-library/regex-typedefs.md#cmatch), [`wcmatch`](../standard-library/regex-typedefs.md#wcmatch), [`smatch`](../standard-library/regex-typedefs.md#smatch), and [`wsmatch`](../standard-library/regex-typedefs.md#wsmatch), together with the class template [`sub_match` Class](../standard-library/sub-match-class.md) and its specializations, [`csub_match`](../standard-library/regex-typedefs.md#csub_match), [`wcsub_match`](../standard-library/regex-typedefs.md#wcsub_match), [`ssub_match`](../standard-library/regex-typedefs.md#ssub_match), and [`wssub_match`](../standard-library/regex-typedefs.md#wssub_match).
+To search text for matches to a regular expression object, use the template functions [`regex_match`](../standard-library/regex-functions.md#regex_match) and [`regex_search`](../standard-library/regex-functions.md#regex_search), together with the match flags of type [`regex_constants::match_flag_type`](../standard-library/regex-constants-class.md#match_flag_type). These functions return results by using the class template [`match_results`](../standard-library/match-results-class.md) and its specializations, [`cmatch`](../standard-library/regex-typedefs.md#cmatch), [`wcmatch`](../standard-library/regex-typedefs.md#wcmatch), [`smatch`](../standard-library/regex-typedefs.md#smatch), and [`wsmatch`](../standard-library/regex-typedefs.md#wsmatch), together with the class template [`sub_match`](../standard-library/sub-match-class.md) and its specializations, [`csub_match`](../standard-library/regex-typedefs.md#csub_match), [`wcsub_match`](../standard-library/regex-typedefs.md#wcsub_match), [`ssub_match`](../standard-library/regex-typedefs.md#ssub_match), and [`wssub_match`](../standard-library/regex-typedefs.md#wssub_match).
 
 To replace text that matches a regular expression object, use the template function [`regex_replace`](../standard-library/regex-functions.md#regex_replace), together with the match flags of type [`regex_constants::match_flag_type`](../standard-library/regex-constants-class.md#match_flag_type).
 
@@ -81,7 +81,7 @@ To modify the details of the grammar of regular expressions, write a class that
 |[`operator==`](../standard-library/regex-operators.md#op_eq_eq)|Comparison of various objects, equal.|
 |[`operator!=`](../standard-library/regex-operators.md#op_neq)|Comparison of various objects, not equal.|
 |[`operator<`](../standard-library/regex-operators.md#op_lt)|Comparison of various objects, less than.|
-|[`operator\<=`](../standard-library/regex-operators.md#op_gt_eq)|Comparison of various objects, less than or equal.|
+|[`operator<=`](../standard-library/regex-operators.md#op_gt_eq)|Comparison of various objects, less than or equal.|
 |[`operator>`](../standard-library/regex-operators.md#op_gt)|Comparison of various objects, greater than.|
 |[`operator>=`](../standard-library/regex-operators.md#op_gt_eq)|Comparison of various objects, greater than or equal.|
 |[`operator<<`](../standard-library/regex-operators.md#op_lt_lt)|Inserts a `sub_match` in a stream.|
diff --git a/docs/standard-library/scl-secure-no-warnings.md b/docs/standard-library/scl-secure-no-warnings.md
index fd9ef309d1..3b64ea9b13 100644
--- a/docs/standard-library/scl-secure-no-warnings.md
+++ b/docs/standard-library/scl-secure-no-warnings.md
@@ -1,14 +1,13 @@
 ---
-description: "Learn more about: _SCL_SECURE_NO_WARNINGS"
 title: "_SCL_SECURE_NO_WARNINGS"
-ms.date: "11/04/2016"
+description: "Learn more about: _SCL_SECURE_NO_WARNINGS"
+ms.date: 11/04/2016
 f1_keywords: ["_SCL_SECURE_NO_DEPRECATE", "_SCL_SECURE_NO_WARNINGS"]
 helpviewer_keywords: ["_SCL_SECURE_NO_DEPRECATE", "_SCL_SECURE_NO_WARNINGS"]
-ms.assetid: ef0ddea9-7c62-4b53-8b64-5f4fd369776f
 ---
-# _SCL_SECURE_NO_WARNINGS
+# `_SCL_SECURE_NO_WARNINGS`
 
-Calling any of the potentially unsafe methods in the C++ Standard Library results in [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). To disable this warning, define the macro _SCL_SECURE_NO_WARNINGS in your code:
+Calling any of the potentially unsafe methods in the C++ Standard Library results in [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). To disable this warning, define the macro `_SCL_SECURE_NO_WARNINGS` in your code:
 
 ```cpp
 #define _SCL_SECURE_NO_WARNINGS
@@ -20,26 +19,32 @@ If you use precompiled headers, put this directive in your precompiled header fi
 
 Other ways to disable warning C4996 include:
 
-- Using the [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md) compiler option:
+- Using the [`/D` (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md) compiler option:
 
-   > cl /D_SCL_SECURE_NO_WARNINGS [other compiler options] myfile.cpp
+   ```cmd
+   cl /D_SCL_SECURE_NO_WARNINGS [other compiler options] myfile.cpp
+   ```
 
-- Using the [/w](../build/reference/compiler-option-warning-level.md) compiler option:
+- Using the [`/w`](../build/reference/compiler-option-warning-level.md) compiler option:
 
-   > cl /wd4996 [other compiler options] myfile.cpp
+   ```cmd
+   cl /wd4996 [other compiler options] myfile.cpp
+   ```
 
-- Using the [#pragma warning](../preprocessor/warning.md) directive:
+- Using the [`#pragma warning`](../preprocessor/warning.md) directive:
 
    ```cpp
    #pragma warning(disable:4996)
    ```
 
-Also, you can manually change the level of warning C4996 with the **/w\<l>\<n>** compiler option. For example, to set warning C4996 to level 4:
+Also, you can manually change the level of warning C4996 with the `/w<l><n>` compiler option. For example, to set warning C4996 to level 4:
 
-> cl /w44996 [other compiler options] myfile.cpp
+```cmd
+cl /w44996 myfile.cpp
+```
 
-For more information, see [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](../build/reference/compiler-option-warning-level.md).
+For more information, see [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../build/reference/compiler-option-warning-level.md).
 
 ## See also
 
-[Safe Libraries: C++ Standard Library](../standard-library/safe-libraries-cpp-standard-library.md)
+[Safe Libraries: C++ Standard Library](safe-libraries-cpp-standard-library.md)
diff --git a/docs/standard-library/scoped-allocator-adaptor-class.md b/docs/standard-library/scoped-allocator-adaptor-class.md
index c937950a65..b2b7ae1f19 100644
--- a/docs/standard-library/scoped-allocator-adaptor-class.md
+++ b/docs/standard-library/scoped-allocator-adaptor-class.md
@@ -67,7 +67,7 @@ Three types are defined for the sake of exposition:
 
 |Name|Description|
 |----------|-----------------|
-|[scoped_allocator_adaptor::rebind Struct](#rebind_struct)|Defines the type `Outer::rebind\<Other>::other` as a synonym for `scoped_allocator_adaptor\<Other, Inner...>`.|
+|[scoped_allocator_adaptor::rebind Struct](#rebind_struct)|Defines the type `Outer::rebind<Other>::other` as a synonym for `scoped_allocator_adaptor<Other, Inner...>`.|
 
 ### Methods
 
@@ -277,7 +277,7 @@ A reference to the stored object of type `outer_allocator_type`.
 
 ## <a name="rebind_struct"></a> scoped_allocator_adaptor::rebind Struct
 
-Defines the type `Outer::rebind\<Other>::other` as a synonym for `scoped_allocator_adaptor\<Other, Inner...>`.
+Defines the type `Outer::rebind<Other>::other` as a synonym for `scoped_allocator_adaptor<Other, Inner...>`.
 
 struct rebind{
    typedef Other_traits::rebind\<Other>
diff --git a/docs/standard-library/scoped-allocator-operators.md b/docs/standard-library/scoped-allocator-operators.md
index 9798211db1..9e8b9098d2 100644
--- a/docs/standard-library/scoped-allocator-operators.md
+++ b/docs/standard-library/scoped-allocator-operators.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: <scoped_allocator> operators"
 title: "<scoped_allocator> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <scoped_allocator> operators"
+ms.date: 11/04/2016
 f1_keywords: ["scoped_allocator/std::operator!=", "scoped_allocator/std::operator=="]
-ms.assetid: 4dfe0805-cc6e-479f-887f-a1c164f73837
 ---
 # `<scoped_allocator>` operators
 
-[operator!=](#op_neq)\
-[operator==](#op_eq_eq)
+The `<scoped_allocator>` header provides the following operators:
 
 ## <a name="op_neq"></a> operator!=
 
diff --git a/docs/standard-library/secure-scl.md b/docs/standard-library/secure-scl.md
index 011c9f2ca7..01a0b85163 100644
--- a/docs/standard-library/secure-scl.md
+++ b/docs/standard-library/secure-scl.md
@@ -1,37 +1,36 @@
 ---
-description: "Learn more about: _SECURE_SCL"
 title: "_SECURE_SCL"
-ms.date: "11/04/2016"
+description: "Learn more about: _SECURE_SCL"
+ms.date: 11/04/2016
 f1_keywords: ["_SECURE_SCL"]
 helpviewer_keywords: ["_SECURE_SCL"]
-ms.assetid: 4ffbc788-cc12-4c6a-8cd7-490081675086
 ---
-# _SECURE_SCL
+# `_SECURE_SCL`
 
-Superseded by [_ITERATOR_DEBUG_LEVEL](../standard-library/iterator-debug-level.md), this macro defines whether [Checked Iterators](../standard-library/checked-iterators.md) are enabled. By default, checked iterators are enabled in Debug builds, and disabled in Retail builds.
+Superseded by [`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md), this macro defines whether [Checked Iterators](checked-iterators.md) are enabled. By default, checked iterators are enabled in Debug builds, and disabled in Retail builds.
 
 > [!IMPORTANT]
-> Direct use of the _SECURE_SCL macro is deprecated. Instead, use _ITERATOR_DEBUG_LEVEL to control checked iterator settings. For more information, see [_ITERATOR_DEBUG_LEVEL](../standard-library/iterator-debug-level.md).
+> Direct use of the `_SECURE_SCL` macro is deprecated. Instead, use `_ITERATOR_DEBUG_LEVEL` to control checked iterator settings. For more information, see [`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md).
 
 ## Remarks
 
-When checked iterators are enabled, unsafe iterator use causes a runtime error and the program is terminated. To enable checked iterators, set _ITERATOR_DEBUG_LEVEL to 1 or 2. This is equivalent to a _SECURE_SCL setting of 1, or enabled:
+When checked iterators are enabled, unsafe iterator use causes a runtime error and the program is terminated. To enable checked iterators, set `_ITERATOR_DEBUG_LEVEL` to 1 or 2. This is equivalent to a `_SECURE_SCL` setting of 1, or enabled:
 
 ```cpp
 #define _ITERATOR_DEBUG_LEVEL 1
 ```
 
-To disable checked iterators, set _ITERATOR_DEBUG_LEVEL to 0. This is equivalent to a _SECURE_SCL setting of 0, or disabled:
+To disable checked iterators, set `_ITERATOR_DEBUG_LEVEL` to 0. This is equivalent to a `_SECURE_SCL` setting of 0, or disabled:
 
 ```cpp
 #define _ITERATOR_DEBUG_LEVEL 0
 ```
 
-For information on how to disable warnings about checked iterators, see [_SCL_SECURE_NO_WARNINGS](../standard-library/scl-secure-no-warnings.md).
+For information on how to disable warnings about checked iterators, see [`_SCL_SECURE_NO_WARNINGS`](scl-secure-no-warnings.md).
 
 ## See also
 
-[_ITERATOR_DEBUG_LEVEL](../standard-library/iterator-debug-level.md)\
-[Checked Iterators](../standard-library/checked-iterators.md)\
-[Debug Iterator Support](../standard-library/debug-iterator-support.md)\
-[Safe Libraries: C++ Standard Library](../standard-library/safe-libraries-cpp-standard-library.md)
+[`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md)\
+[Checked Iterators](checked-iterators.md)\
+[Debug Iterator Support](debug-iterator-support.md)\
+[Safe Libraries: C++ Standard Library](safe-libraries-cpp-standard-library.md)
diff --git a/docs/standard-library/set-class.md b/docs/standard-library/set-class.md
index 044b150c34..a311d61873 100644
--- a/docs/standard-library/set-class.md
+++ b/docs/standard-library/set-class.md
@@ -1,10 +1,9 @@
 ---
 title: "set Class"
 description: "API reference for the C++ Standard Library container class `set`, which is used to store and retrieve data from a collection."
-ms.date: "9/9/2020"
+ms.date: 9/9/2020
 f1_keywords: ["set/std::set", "set/std::set::allocator_type", "set/std::set::const_iterator", "set/std::set::const_pointer", "set/std::set::const_reference", "set/std::set::const_reverse_iterator", "set/std::set::difference_type", "set/std::set::iterator", "set/std::set::key_compare", "set/std::set::key_type", "set/std::set::pointer", "set/std::set::reference", "set/std::set::reverse_iterator", "set/std::set::size_type", "set/std::set::value_compare", "set/std::set::value_type", "set/std::set::begin", "set/std::set::cbegin", "set/std::set::cend", "set/std::set::clear", "set/std::set::contains", "set/std::set::count", "set/std::set::crbegin", "set/std::set::crend", "set/std::set::emplace", "set/std::set::emplace_hint", "set/std::set::empty", "set/std::set::end", "set/std::set::equal_range", "set/std::set::erase", "set/std::set::find", "set/std::set::get_allocator", "set/std::set::insert", "set/std::set::key_comp", "set/std::set::lower_bound", "set/std::set::max_size", "set/std::set::rbegin", "set/std::set::rend", "set/std::set::size", "set/std::set::swap", "set/std::set::upper_bound", "set/std::set::value_comp"]
 helpviewer_keywords: ["std::set [C++]", "std::set [C++], allocator_type", "std::set [C++], const_iterator", "std::set [C++], const_pointer", "std::set [C++], const_reference", "std::set [C++], const_reverse_iterator", "std::set [C++], difference_type", "std::set [C++], iterator", "std::set [C++], key_compare", "std::set [C++], key_type", "std::set [C++], pointer", "std::set [C++], reference", "std::set [C++], reverse_iterator", "std::set [C++], size_type", "std::set [C++], value_compare", "std::set [C++], value_type", "std::set [C++], begin", "std::set [C++], cbegin", "std::set [C++], cend", "std::set [C++], clear", "std::set [C++], contains", "std::set [C++], count", "std::set [C++], crbegin", "std::set [C++], crend", "std::set [C++], emplace", "std::set [C++], emplace_hint", "std::set [C++], empty", "std::set [C++], end", "std::set [C++], equal_range", "std::set [C++], erase", "std::set [C++], find", "std::set [C++], get_allocator", "std::set [C++], insert", "std::set [C++], key_comp", "std::set [C++], lower_bound", "std::set [C++], max_size", "std::set [C++], rbegin", "std::set [C++], rend", "std::set [C++], size", "std::set [C++], swap", "std::set [C++], upper_bound", "std::set [C++], value_comp"]
-ms.assetid: 8991f9aa-5509-4440-adc1-371512d32018
 ---
 # `set` Class
 
@@ -27,7 +26,7 @@ The element data type to be stored in the set.
 *`Traits`*\
 The type that provides a function object that can compare two element values as sort keys to determine their relative order in the set. This argument is optional, and the binary predicate `less <Key>` is the default value.
 
-In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 *`Allocator`*\
 The type that represents the stored allocator object that encapsulates details about the set's allocation and deallocation of memory. This argument is optional, and the default value is `allocator<Key>`.
@@ -52,7 +51,7 @@ The set should be the associative container of choice when the conditions associ
 
 The set orders the sequence it controls by calling a stored function object of type [`key_compare`](#key_compare). This stored object is a comparison function that may be accessed by calling the member function [`key_comp`](#key_comp). In general, the elements need to be merely less than comparable to establish this order so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. A binary predicate *f*(*x,y*) is a function object that has two argument objects *x* and *y* and a return value of **`true`** or **`false`**. An ordering imposed on a set is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive and if equivalence is transitive, where two objects *x* and *y* are defined to be equivalent when both *f* *x,y*) and *f*(*y,x*) are false. If the stronger condition of equality between keys replaces that of equivalence, then the ordering becomes total (in the sense that all the elements are ordered with respect to each other) and the keys matched will be indiscernible from each other.
 
-In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](../standard-library/stl-containers.md#sequence_containers) for more information.
+In C++14, you can enable heterogeneous lookup by specifying the `std::less<>` or `std::greater<>` predicate that has no type parameters. See [Heterogeneous Lookup in Associative Containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 The iterator provided by the set class is a bidirectional iterator, but the class member functions [`insert`](#insert) and [`set`](#set) have versions that take as template parameters a weaker input iterator, whose functionality requirements are more minimal than those guaranteed by the class of bidirectional iterators. The different iterator concepts form a family related by refinements in their functionality. Each iterator concept has its own set of requirements, and the algorithms that work with them must limit their assumptions to the requirements provided by that type of iterator. It may be assumed that an input iterator may be dereferenced to refer to some object and that it may be incremented to the next iterator in the sequence. This is a minimal set of functionality, but it's enough to be able to talk meaningfully about a range of iterators [ `First`, `Last`) in the context of the class's member functions.
 
@@ -400,12 +399,12 @@ The element's key value to look for.
 
 `contains()` is new in C++20. To use it, specify the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option.
 
-`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](./stl-containers.md#heterogeneous-lookup-in-associative-containers-c14) for more information.
+`template<class K> bool contains(const K& key) const` only participates in overload resolution if `key_compare` is transparent. See [Heterogeneous lookup in associative containers](stl-containers.md#heterogeneous-lookup-in-associative-containers) for more information.
 
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <set>
 #include <iostream>
 
@@ -886,7 +885,7 @@ The argument key to be compared with the sort key of an element from the set bei
 
 A pair of iterators where the first is the [`lower_bound`](#lower_bound) of the key and the second is the [`upper_bound`](#upper_bound) of the key.
 
-To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*( `pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*( `pr`. **second**).
+To access the first iterator of a pair `pr` returned by the member function, use `pr`. **first**, and to dereference the lower bound iterator, use \*(`pr`. **first**). To access the second iterator of a pair `pr` returned by the member function, use `pr`. **second**, and to dereference the upper bound iterator, use \*(`pr`. **second**).
 
 ### Example
 
diff --git a/docs/standard-library/set-functions.md b/docs/standard-library/set-functions.md
index 028b7771bc..76fb181cf4 100644
--- a/docs/standard-library/set-functions.md
+++ b/docs/standard-library/set-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <set> functions"
 title: "<set> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <set> functions"
+ms.date: 11/04/2016
 f1_keywords: ["set/std::swap (map)", "set/std::swap (multiset)"]
-ms.assetid: d1277d14-8502-46c0-b820-bcda820f9406
 ---
 # `<set>` functions
 
@@ -63,4 +62,4 @@ in the algorithm class works by assignment and is a slow operation. The speciali
 
 ### Example
 
-See the code example for the member class [multiset::swap](../standard-library/multiset-class.md#swap)for an example of the use of the template version of `swap`.
+See the code example for the member class [multiset::swap](../standard-library/multiset-class.md#swap) for an example of the use of the template version of `swap`.
diff --git a/docs/standard-library/single-view-class.md b/docs/standard-library/single-view-class.md
index 7a42d4dfcc..67ed5341e1 100644
--- a/docs/standard-library/single-view-class.md
+++ b/docs/standard-library/single-view-class.md
@@ -100,7 +100,7 @@ The best way to create a `single_view` is by using the [`views::single`](range-a
 ### Example `single_view`
 
 ```cpp
-/// requires /std:c++20 or higher
+/// requires /std:c++20 or later
 #include <ranges>
 #include <iostream>
 #include <string>
diff --git a/docs/standard-library/span-functions.md b/docs/standard-library/span-functions.md
index 456d5c7133..581e347c75 100644
--- a/docs/standard-library/span-functions.md
+++ b/docs/standard-library/span-functions.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: <span> functions"
 title: "<span> functions"
-ms.date: "05/28/2020"
+description: "Learn more about: <span> functions"
+ms.date: 05/28/2020
 f1_keywords: ["span/std::span::as_bytes", "span/std::as_writable_bytes"]
 helpviewer_keywords: ["std::span [C++], as_writable_bytes", "std::as_bytes [C++]"]
 dev_langs: ["C++"]
@@ -15,7 +15,7 @@ The `<span>` header includes the following non-member functions that operate on
 |[`as_bytes`](#as_bytes) | Get a read-only view of the object representation of the elements in the span. |
 |[`as_writable_bytes`](#as_writable_bytes) | Get a read/write view of the object representation of the elements in the span. |
 
-## <a name="as_bytes"></a>`as_bytes`
+## <a name="as_bytes"></a> `as_bytes`
 
 Get a read-only view of the object representation of the elements in the span.
 
@@ -47,7 +47,7 @@ A `span<const byte, S>` to the first item stored in the span where `S` is `{rein
 
 using namespace std;
 
-void main()
+int main()
 {
     int a[] = { 0,1,2 };
     span <int> mySpan(a);
@@ -55,7 +55,7 @@ void main()
 }
 ```
 
-## <a name="as_writable_bytes"></a>`as_writable_bytes`
+## <a name="as_writable_bytes"></a> `as_writable_bytes`
 
 If `T` isn't **`const`**, gets a read/write view of the raw byte representation of the elements in the span.
 
@@ -87,7 +87,7 @@ A `span<byte, S>` to the first item stored in the span where `S` is `{reinterpre
 
 using namespace std;
 
-void main()
+int main()
 {
     int a[] = { 0,1,2 };
     span <int> mySpan(a);
diff --git a/docs/standard-library/sstream-functions.md b/docs/standard-library/sstream-functions.md
index 80c3aab153..4c47dc0b0f 100644
--- a/docs/standard-library/sstream-functions.md
+++ b/docs/standard-library/sstream-functions.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: <sstream> functions"
 title: "<sstream> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <sstream> functions"
+ms.date: 11/04/2016
 f1_keywords: ["sstream/std::swap"]
-ms.assetid: bc9607e8-7c6b-44ef-949b-19e917b450ad
 ---
 # `<sstream>` functions
 
-[swap](#sstream_swap)
+The `<sstream>` header provides the following functions:
 
 ## <a name="sstream_swap"></a> swap
 
diff --git a/docs/standard-library/sstream-typedefs.md b/docs/standard-library/sstream-typedefs.md
index fb824672c7..0a392e94bb 100644
--- a/docs/standard-library/sstream-typedefs.md
+++ b/docs/standard-library/sstream-typedefs.md
@@ -1,19 +1,12 @@
 ---
-description: "Learn more about: <sstream> typedefs"
 title: "<sstream> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <sstream> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["iosfwd/std::istringstream", "iosfwd/std::ostringstream", "iosfwd/std::stringbuf", "iosfwd/std::stringstream", "iosfwd/std::wistringstream", "iosfwd/std::wostringstream", "iosfwd/std::wstringbuf", "iosfwd/std::wstringstream"]
 ---
 # `<sstream>` typedefs
 
-[`istringstream`](#istringstream)\
-[`ostringstream`](#ostringstream)\
-[`stringbuf`](#stringbuf)\
-[`stringstream`](#stringstream)\
-[`wistringstream`](#wistringstream)\
-[`wostringstream`](#wostringstream)\
-[`wstringbuf`](#wstringbuf)\
-[`wstringstream`](#wstringstream)
+The `<sstream>` header provides the following typedefs:
 
 ## <a name="istringstream"></a> `istringstream`
 
diff --git a/docs/standard-library/stack-operators.md b/docs/standard-library/stack-operators.md
index a8b308ae8a..9722dbc4ea 100644
--- a/docs/standard-library/stack-operators.md
+++ b/docs/standard-library/stack-operators.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <stack> operators"
 title: "<stack> operators"
+description: "Learn more about: <stack> operators"
 ms.date: "11/04/2016"
 f1_keywords: ["stack/std::operator!=", "stack/std::operator>", "stack/std::operator>=", "stack/std::operator<", "stack/std::operator<=", "stack/std::operator=="]
-ms.assetid: 9c1fc282-2f61-4727-9e80-84ea5d4934a2
 helpviewer_keywords: ["std::operator!= (stack)", "std::operator> (stack)", "std::operator>= (stack)", "std::operator< (stack)", "std::operator<= (stack)", "std::operator== (stack)"]
 ---
 # `<stack>` operators
@@ -13,7 +12,7 @@ helpviewer_keywords: ["std::operator!= (stack)", "std::operator> (stack)", "std:
 Tests if the stack object on the left side of the operator is not equal to stack object on the right side.
 
 ```cpp
-bool operator!=(const stack <Type, Container>& left, const stack <Type, Container>& right,);
+bool operator!=(const stack <Type, Container>& left, const stack <Type, Container>& right);
 ```
 
 ### Parameters
diff --git a/docs/standard-library/steady-clock-struct.md b/docs/standard-library/steady-clock-struct.md
index bcb5ea47f5..27c5ae83a4 100644
--- a/docs/standard-library/steady-clock-struct.md
+++ b/docs/standard-library/steady-clock-struct.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: steady_clock struct"
 title: "steady_clock struct"
+description: "Learn more about: steady_clock struct"
 ms.date: 04/14/2022
-f1_keywords: ["chrono/std::chrono::steady_clock", "chrono/std::chrono::steady_clock::now", "chrono/std::chrono::steady_clock:is_steady"]
+f1_keywords: ["chrono/std::chrono::steady_clock", "chrono/std::chrono::steady_clock::now", "chrono/std::chrono::steady_clock::is_steady"]
 helpviewer_keywords: ["std::chrono [C++], steady_clock"]
 dev_langs: ["C++"]
 ---
@@ -102,4 +102,4 @@ Elapsed nanoseconds:  1007266700 ns
 [`system_clock` struct](system-clock-structure.md)\
 [`tai_clock` class](tai-clock-class.md)\
 [`utc_clock` class](utc-clock-class.md)\
-[Header Files Reference](cpp-standard-library-header-files.md)
\ No newline at end of file
+[Header Files Reference](cpp-standard-library-header-files.md)
diff --git a/docs/standard-library/stl-containers.md b/docs/standard-library/stl-containers.md
index ffdac90c0c..0b8ce54931 100644
--- a/docs/standard-library/stl-containers.md
+++ b/docs/standard-library/stl-containers.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: C++ Standard Library Containers"
 title: "C++ Standard Library Containers"
-ms.date: "11/04/2016"
+description: "Learn more about: C++ Standard Library Containers"
+ms.date: 11/04/2016
 helpviewer_keywords: ["C++ Standard Library, class template containers", "containers, C++ Standard Library"]
-ms.assetid: 8e915ca1-19ba-4f0d-93c8-e2c3bfd638eb
 ---
 # C++ Standard Library Containers
 
@@ -39,7 +38,7 @@ Both `map` and `set` only allow one instance of a key or element to be inserted
 
 Ordered maps and sets support bi-directional iterators, and their unordered counterparts support forward iterators. For more information, see [Iterators](../standard-library/iterators.md).
 
-### Heterogeneous Lookup in Associative Containers (C++14)
+### <a name="heterogeneous-lookup-in-associative-containers"></a> Heterogeneous Lookup in Associative Containers (C++14)
 
 The ordered associative containers (map, multimap, set, and multiset) now support heterogeneous lookup, which means that you're no longer required to pass the exact same object type as the key or element in member functions such as `find()` and `lower_bound()`. Instead, you can pass any type for which an overloaded `operator<` is defined that enables comparison to the key type.
 
diff --git a/docs/standard-library/streambuf-typedefs.md b/docs/standard-library/streambuf-typedefs.md
index 842403c4f0..ab98660169 100644
--- a/docs/standard-library/streambuf-typedefs.md
+++ b/docs/standard-library/streambuf-typedefs.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: <streambuf> typedefs"
 title: "<streambuf> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <streambuf> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["iosfwd/std::streambuf", "iosfwd/std::wstreambuf"]
-ms.assetid: 2678e18f-f0f0-4995-bc53-f1bc7dfc4ec6
 ---
 # `<streambuf>` typedefs
 
-[streambuf](#streambuf)\
-[wstreambuf](#wstreambuf)
+The `<streambuf>` header provides the following typedefs:
 
 ## <a name="streambuf"></a> streambuf
 
diff --git a/docs/standard-library/string-functions.md b/docs/standard-library/string-functions.md
index ec9262a46f..e1f57695e8 100644
--- a/docs/standard-library/string-functions.md
+++ b/docs/standard-library/string-functions.md
@@ -1,25 +1,13 @@
 ---
-description: "Learn more about: <string> functions"
 title: "<string> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <string> functions"
+ms.date: 11/04/2016
 f1_keywords: ["string/std::getline", "string/std::stod", "string/std::stof", "string/std::stoi", "string/std::stol", "string/std::stold", "string/std::stoll", "string/std::stoul", "string/std::stoull", "string/std::swap", "string/std::to_string", "string/std::to_wstring"]
-ms.assetid: 1a4ffd11-dce5-4cc6-a043-b95de034c7c4
 helpviewer_keywords: ["std::getline [C++]", "std::stod [C++]", "std::stof [C++]", "std::stoi [C++]", "std::stol [C++]", "std::stold [C++]", "std::stoll [C++]", "std::stoul [C++]", "std::stoull [C++]", "std::swap [C++]", "std::to_string [C++]", "std::to_wstring [C++]"]
 ---
 # `<string>` functions
 
-[`getline`](#getline)\
-[`stod`](#stod)\
-[`stof`](#stof)\
-[`stoi`](#stoi)\
-[`stol`](#stol)\
-[`stold`](#stold)\
-[`stoll`](#stoll)\
-[`stoul`](#stoul)\
-[`stoull`](#stoull)\
-[`swap`](#swap)\
-[`to_string`](#to_string)\
-[`to_wstring`](#to_wstring)
+The `<string>` header provides the following functions:
 
 ## <a name="getline"></a> `getline`
 
@@ -144,8 +132,7 @@ double stod(
 
 double stod(
     const wstring& str,
-    size_t* idx = 0
-;
+    size_t* idx = 0);
 ```
 
 ### Parameters
@@ -162,7 +149,7 @@ The **`double`** value.
 
 ### Remarks
 
-The function converts the sequence of elements in *`str`* to a value of type **`double`** as if by calling `strtod( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *`str`* to a value of type **`double`** as if by calling `strtod( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stof"></a> `stof`
 
@@ -192,7 +179,7 @@ The **`float`** value.
 
 ### Remarks
 
-The function converts the sequence of elements in *`str`* to a value of type **`float`** as if by calling `strtof( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *`str`* to a value of type **`float`** as if by calling `strtof( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stoi"></a> `stoi`
 
@@ -266,7 +253,7 @@ The long-integer value.
 
 ### Remarks
 
-The function converts the sequence of elements in *str* to a value of type **`long`** as if by calling `strtol( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *str* to a value of type **`long`** as if by calling `strtol( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stold"></a> `stold`
 
@@ -296,7 +283,7 @@ The **`long double`** value.
 
 ### Remarks
 
-The function converts the sequence of elements in *str* to a value of type **`long double`** as if by calling `strtold( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *str* to a value of type **`long double`** as if by calling `strtold( str.c_str(), _Eptr)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stoll"></a> `stoll`
 
@@ -331,7 +318,7 @@ The **`long long`** value.
 
 ### Remarks
 
-The function converts the sequence of elements in *str* to a value of type **`long long`** as if by calling `strtoll( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *idx* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *str* to a value of type **`long long`** as if by calling `strtoll( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *idx* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stoul"></a> `stoul`
 
@@ -366,7 +353,7 @@ The unsigned long-integer value.
 
 ### Remarks
 
-The function converts the sequence of elements in *str* to a value of type **`unsigned long`** as if by calling `strtoul( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *idx* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *str* to a value of type **`unsigned long`** as if by calling `strtoul( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *idx* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="stoull"></a> `stoull`
 
@@ -401,7 +388,7 @@ The **`unsigned long long`** value.
 
 ### Remarks
 
-The function converts the sequence of elements in *str* to a value of type **`unsigned long long`** as if by calling `strtoull( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr -  str.c_str()` in `*idx` and returns the value.
+The function converts the sequence of elements in *str* to a value of type **`unsigned long long`** as if by calling `strtoull( str.c_str(), _Eptr, idx)`, where `_Eptr` is an object internal to the function. If `str.c_str() == *_Eptr`, it throws an object of type `invalid_argument`. If such a call would set `errno`, it throws an object of type `out_of_range`. Otherwise, if *`idx`* isn't a null pointer, the function stores `*_Eptr - str.c_str()` in `*idx` and returns the value.
 
 ## <a name="swap"></a> `swap`
 
diff --git a/docs/standard-library/string-operators.md b/docs/standard-library/string-operators.md
index 337f916ab3..692a728f2d 100644
--- a/docs/standard-library/string-operators.md
+++ b/docs/standard-library/string-operators.md
@@ -1,22 +1,13 @@
 ---
-description: "Learn more about: <string> operators"
 title: "<string> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <string> operators"
+ms.date: 11/04/2016
 f1_keywords: ["string/std::operator!=", "string/std::operator>", "string/std::operator>>", "string/std::operator>=", "string/std::operator<", "string/std::operator<<", "string/std::operator<=", "string/std::operator+", "string/std::operator=="]
-ms.assetid: 33ce8f05-06c7-45d3-a0cb-bcd27cf93910
 helpviewer_keywords: ["std::operator!= (string)", "std::operator> (string)", "std::operator>> (string)", "std::operator>= (string)", "std::operator< (string)", "std::operator<< (string)", "std::operator<= (string), std::operator== (string)"]
 ---
 # `<string>` operators
 
-[operator!=](#op_neq)\
-[`operator>`](#op_gt)\
-[`operator>>`](#op_gt_gt)\
-[`operator>=`](#op_gt_eq)\
-[`operator<`](#op_lt)\
-[`operator<<`](#op_lt_lt)\
-[`operator<=`](#op_lt_eq)\
-[operator+](#op_add)\
-[operator==](#op_eq_eq)
+The `<string>` header provides the following operators:
 
 ## <a name="op_add"></a> operator+
 
@@ -98,7 +89,7 @@ The string that is the concatenation of the input strings.
 
 ### Remarks
 
-The functions each overload `operator+` to concatenate two objects of class template [basic_string Class](../standard-library/basic-string-class.md). All effectively return `basic_string< CharType, Traits, Allocator>(Left).append(right)`. For more information, see [append](../standard-library/basic-string-class.md#append).
+The functions each overload `operator+` to concatenate two objects of class template [`basic_string`](../standard-library/basic-string-class.md). All effectively return `basic_string< CharType, Traits, Allocator>(Left).append(right)`. For more information, see [append](../standard-library/basic-string-class.md#append).
 
 ### Example
 
@@ -801,7 +792,7 @@ The template function overloads **operator>>** to replace the sequence controlle
 
 After the function extracts `_Istr`. [max_size](../standard-library/basic-string-class.md#max_size) elements.
 
-- After the function extracts an element *ch* for which [use_facet](../standard-library/basic-filebuf-class.md#open)< **ctype**\< **CharType**> >( `getloc`). **is**( **ctype**\< **CharType**>:: **space**, *ch*) is true, in which case the character is put back.
+- After the function extracts an element *ch* for which [use_facet](../standard-library/basic-filebuf-class.md#open)< **ctype**\< **CharType**> >(`getloc`). **is**( **ctype**\< **CharType**>:: **space**, *ch*) is true, in which case the character is put back.
 
 If the function extracts no elements, it calls [setstate](../standard-library/basic-ios-class.md#setstate)(`ios_base::failbit`). In any case, it calls **istr**. **width**(0) and returns \* **`this`**.
 
diff --git a/docs/standard-library/string-typedefs.md b/docs/standard-library/string-typedefs.md
index 8f4f7bfa12..23ba6e7b50 100644
--- a/docs/standard-library/string-typedefs.md
+++ b/docs/standard-library/string-typedefs.md
@@ -1,16 +1,12 @@
 ---
-description: "Learn more about: <string> typedefs"
 title: "<string> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <string> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["string/std::string", "string/std::u16string", "string/std::u32string", "string/std::wstring"]
-ms.assetid: fdca01e9-f2f1-4b59-abda-0093d760b3cc
 ---
 # `<string>` typedefs
 
-[`string`](#string)\
-[`u16string`](#u16string)\
-[`u32string`](#u32string)\
-[`wstring`](#wstring)
+The `<string>` header provides the following typedefs:
 
 ## <a name="string"></a> `string`
 
diff --git a/docs/standard-library/string-view-operators.md b/docs/standard-library/string-view-operators.md
index cc6f5a702b..a79ca556d7 100644
--- a/docs/standard-library/string-view-operators.md
+++ b/docs/standard-library/string-view-operators.md
@@ -1,7 +1,7 @@
 ---
 title: "<string_view> operators"
 description: "API reference for the `string_view` operators, which are used to compare two `string_view` objects, or a `string_view` and some other string object" 
-ms.date: "01/15/2021"
+ms.date: 01/15/2021
 f1_keywords: ["xstring/basic_string_view::operator!=", "xstring/basic_string_view::operator>", "xstring/basic_string_view::operator>=", "xstring/basic_string_view::operator<", "xstring/basic_string_view::operator<<", "xstring/basic_string_view::operator<=", "xstring/basic_string_view::operator+", "xstring/basic_string_view::operator==", 'xstring/std::literals::string_view_literals::operator "sv', 'std::literals::string_view_literals::operator sv', 'std::literals::string_view_literals', 'string_view_literals']
 helpviewer_keywords: ["std::basic_string_view::operator!=", "std::basic_string_view::operator>", "std::basic_string_view::operator>=", "std::basic_string_view::operator<", "std::basic_string_view::operator<<", "std::basic_string_view::operator<=, std::basic_string_view::operator=="]
 ---
@@ -9,15 +9,6 @@ helpviewer_keywords: ["std::basic_string_view::operator!=", "std::basic_string_v
 
 Use these operators to compare two `string_view` objects, or a `string_view` and some other string object (for example [`std::string`](basic-string-class.md), or `char*`) for which an implicit conversion is provided.
 
-[`operator!=`](#op_neq)\
-[`operator>`](#op_gt)\
-[`operator>=`](#op_gt_eq)\
-[`operator<`](#op_lt)\
-[`operator<<`](#op_lt_lt)\
-[`operator<=`](#op_lt_eq)\
-[`operator==`](#op_eq_eq)\
-[`operator""sv`](#op_sv)
-
 ## <a name="op_neq"></a> `operator!=`
 
 Tests if the object on the left side of the operator is not equal to the object on the right side.
@@ -41,10 +32,10 @@ bool operator!=(
 
 ### Parameters
 
-*left*\
+*`left`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
-*right*\
+*`right`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
 ### Return Value
@@ -80,10 +71,10 @@ bool operator==(
 
 ### Parameters
 
-*left*\
+*`left`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
-*right*\
+*`right`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
 ### Return Value
@@ -119,10 +110,10 @@ bool operator<(
 
 ### Parameters
 
-*left*\
+*`left`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
-*right*\
+*`right`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
 ### Return Value
@@ -131,7 +122,7 @@ Any convertible string type or an object of type `basic_string_view` to be compa
 
 ### Remarks
 
-An implicit conversion must exist from *convertible_string_type* to the string_view on the other side.
+An implicit conversion must exist from *convertible_string_type* to the `string_view` on the other side.
 
 The comparison is based on a pairwise lexicographical comparison of the character sequences. When the first unequal pair of characters is encountered, the result of that comparison is returned. If no unequal characters are found, but one sequence is shorter, the shorter sequence is less than the longer one. In other words, "cat" is less than "cats".
 
@@ -180,10 +171,10 @@ bool operator<=(
 
 ### Parameters
 
-*left*\
+*`left`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
-*right*\
+*`right`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
 ### Return Value
@@ -210,7 +201,7 @@ inline basic_ostream<CharType, Traits>& operator<<(
 an output stream being written to.
 
 *`Str`*\
-The string_view to be entered into an output stream.
+The `string_view` to be entered into an output stream.
 
 ### Return Value
 
@@ -243,10 +234,10 @@ bool operator>(
 
 ### Parameters
 
-*left*\
+*`left`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
-*right*\
+*`right`*\
 Any convertible string type or an object of type `basic_string_view` to be compared.
 
 ### Return Value
diff --git a/docs/standard-library/string-view-typedefs.md b/docs/standard-library/string-view-typedefs.md
index 618b7ffee3..083d68db24 100644
--- a/docs/standard-library/string-view-typedefs.md
+++ b/docs/standard-library/string-view-typedefs.md
@@ -1,15 +1,12 @@
 ---
-description: "Learn more about: <string_view> typedefs"
 title: "<string_view> typedefs"
-ms.date: "04/19/2019"
+description: "Learn more about: <string_view> typedefs"
+ms.date: 04/19/2019
 f1_keywords: ["xstring/std::string_view", "xstring/std::u16string_view", "xstring/std::u32string_view", "xstring/std::wstring_view"]
 ---
 # `<string_view>` typedefs
 
-[string_view](#string_view)\
-[u16string_view](#u16string_view)\
-[u32string_view](#u32string_view)\
-[wstring_view](#wstring_view)
+The `<string_view>` header provides the following typedefs:
 
 ## <a name="string_view"></a> string_view
 
diff --git a/docs/standard-library/string-view.md b/docs/standard-library/string-view.md
index 48ef23cc2a..846721c195 100644
--- a/docs/standard-library/string-view.md
+++ b/docs/standard-library/string-view.md
@@ -1,12 +1,12 @@
 ---
 title: "<string_view>"
 description: "Overview of `basic_string_view`, which refers to a constant contiguous sequence of char-like objects."
-ms.date: "9/4/2020"
+ms.date: 9/4/2020
 helpviewer_keywords: ["string_view header"]
 ---
 # `<string_view>`
 
-Defines the class template `basic_string_view` and related types and operators. (Requires compiler option [`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.)
+Defines the class template `basic_string_view` and related types and operators. (Requires compiler option [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.)
 
 ## Syntax
 
@@ -37,7 +37,7 @@ The `<string_view>` operators can compare `string_view` objects to objects of an
 |[`operator==`](../standard-library/string-view-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.|
 |[`operator<`](../standard-library/string-view-operators.md#op_lt)|Tests if the object on the left side of the operator is less than to the object on the right side.|
 |[`operator<=`](../standard-library/string-view-operators.md#op_lt_eq)|Tests if the object on the left side of the operator is less than or equal to the object on the right side.|
-|[`operator<\<`](../standard-library/string-view-operators.md#op_lt_lt)|A template function that inserts a `string_view` into an output stream.|
+|[`operator<<`](../standard-library/string-view-operators.md#op_lt_lt)|A template function that inserts a `string_view` into an output stream.|
 |[`operator>`](../standard-library/string-view-operators.md#op_gt)|Tests if the object on the left side of the operator is greater than to the object on the right side.|
 |[`operator>=`](../standard-library/string-view-operators.md#op_gt_eq)|Tests if the object on the left side of the operator is greater than or equal to the object on the right side.|
 
@@ -60,7 +60,7 @@ The `<string_view>` operators can compare `string_view` objects to objects of an
 
 - **Namespace:** `std`
 
-- **Compiler Option:** [`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.
+- **Compiler Option:** [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.
 
 ## See also
 
diff --git a/docs/standard-library/strstream-class.md b/docs/standard-library/strstream-class.md
index 3efda849d7..0a4c9c3d6b 100644
--- a/docs/standard-library/strstream-class.md
+++ b/docs/standard-library/strstream-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: strstream Class"
 title: "strstream Class"
-ms.date: "11/04/2016"
+description: "Learn more about: strstream Class"
+ms.date: 11/04/2016
 f1_keywords: ["strstream/std::strstream::freeze", "strstream/std::strstream::pcount", "strstream/std::strstream::rdbuf", "strstream/std::strstream::str"]
 helpviewer_keywords: ["std::strstream [C++], freeze", "std::strstream [C++], pcount", "std::strstream [C++], rdbuf", "std::strstream [C++], str"]
-ms.assetid: 63f3be31-9e36-42b1-9715-a474a5997e2a
 ---
 # strstream Class
 
@@ -152,9 +151,9 @@ The buffer.
 
 Both constructors initialize the base class by calling [streambuf](../standard-library/streambuf-typedefs.md#streambuf)( **sb**), where `sb` is the stored object of class [strstreambuf](../standard-library/strstreambuf-class.md). The first constructor also initializes `sb` by calling [strstreambuf](../standard-library/strstreambuf-class.md#strstreambuf). The second constructor initializes the base class one of two ways:
 
-- If `_Mode` & **ios_base::app**== 0, then *ptr* must designate the first element of an array of `count` elements, and the constructor calls `strstreambuf`( `ptr`, `count`, `ptr`).
+- If `_Mode` & **ios_base::app**== 0, then *ptr* must designate the first element of an array of `count` elements, and the constructor calls `strstreambuf`(`ptr`, `count`, `ptr`).
 
-- Otherwise, *ptr* must designate the first element of an array of count elements that contains a C string whose first element is designated by *ptr*, and the constructor calls `strstreambuf`( `ptr`, `count`, `ptr` + `strlen`( `ptr`) ).
+- Otherwise, *ptr* must designate the first element of an array of count elements that contains a C string whose first element is designated by *ptr*, and the constructor calls `strstreambuf`(`ptr`, `count`, `ptr` + `strlen`(`ptr`)).
 
 ## See also
 
diff --git a/docs/standard-library/sync-none-class.md b/docs/standard-library/sync-none-class.md
index 1966997f4a..df55c41667 100644
--- a/docs/standard-library/sync-none-class.md
+++ b/docs/standard-library/sync-none-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: sync_none Class"
 title: "sync_none Class"
-ms.date: "11/04/2016"
+description: "Learn more about: sync_none Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::sync_none", "allocators/stdext::sync_none::allocate", "allocators/stdext::sync_none::deallocate", "allocators/stdext::sync_none::equals"]
 helpviewer_keywords: ["stdext::sync_none", "stdext::sync_none [C++], allocate", "stdext::sync_none [C++], deallocate", "stdext::sync_none [C++], equals"]
-ms.assetid: f7473cee-14f3-4fe1-88bc-68cd085e59e1
 ---
 # sync_none Class
 
@@ -93,8 +92,6 @@ The cache object to compare for equality.
 
 The member function always returns **`true`**.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/sync-per-container-class.md b/docs/standard-library/sync-per-container-class.md
index 796756f428..2a164a0a0b 100644
--- a/docs/standard-library/sync-per-container-class.md
+++ b/docs/standard-library/sync-per-container-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: sync_per_container Class"
 title: "sync_per_container Class"
-ms.date: "11/04/2016"
+description: "Learn more about: sync_per_container Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::sync_per_container", "allocators/stdext::sync_per_container::equals"]
 helpviewer_keywords: ["sync_per_container class"]
-ms.assetid: 0b4b2904-b668-4d94-a422-d4f919cbffab
 ---
 # sync_per_container Class
 
@@ -55,8 +54,6 @@ The cache object to compare for equality.
 
 The member function always returns **`false`**.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/sync-per-thread-class.md b/docs/standard-library/sync-per-thread-class.md
index 6a4b004724..aa715f4c69 100644
--- a/docs/standard-library/sync-per-thread-class.md
+++ b/docs/standard-library/sync-per-thread-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: sync_per_thread Class"
 title: "sync_per_thread Class"
-ms.date: "11/04/2016"
+description: "Learn more about: sync_per_thread Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::sync_per_thread", "allocators/stdext::sync_per_thread::allocate", "allocators/stdext::sync_per_thread::deallocate", "allocators/stdext::sync_per_thread::equals"]
 helpviewer_keywords: ["stdext::sync_per_thread", "stdext::sync_per_thread [C++], allocate", "stdext::sync_per_thread [C++], deallocate", "stdext::sync_per_thread [C++], equals"]
-ms.assetid: 47bf75f8-5b02-4760-b1d3-3099d08fe14c
 ---
 # sync_per_thread Class
 
@@ -97,8 +96,6 @@ The cache object to compare for equality.
 
 **`false`** if no cache object has been allocated for this object or for *Other* in the current thread. Otherwise it returns the result of applying `operator==` to the two cache objects.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/sync-shared-class.md b/docs/standard-library/sync-shared-class.md
index 67ae7354c9..bd722d3a53 100644
--- a/docs/standard-library/sync-shared-class.md
+++ b/docs/standard-library/sync-shared-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: sync_shared Class"
 title: "sync_shared Class"
-ms.date: "11/04/2016"
+description: "Learn more about: sync_shared Class"
+ms.date: 11/04/2016
 f1_keywords: ["allocators/stdext::sync_shared", "allocators/stdext::sync_shared::allocate", "allocators/stdext::sync_shared::deallocate", "allocators/stdext::sync_shared::equals"]
 helpviewer_keywords: ["stdext::sync_shared", "stdext::sync_shared [C++], allocate", "stdext::sync_shared [C++], deallocate", "stdext::sync_shared [C++], equals"]
-ms.assetid: cab3af9e-3d1a-4f2c-8580-0f89e5687d8e
 ---
 # sync_shared Class
 
@@ -97,8 +96,6 @@ The cache to compare for equality.
 
 **`true`** if the result of `cache.equals(Other.cache)`, where `cache` represents the cache object, is **`true`**; otherwise, **`false`**.
 
-### Remarks
-
 ## See also
 
 [\<allocators>](../standard-library/allocators-header.md)
diff --git a/docs/standard-library/system-clock-structure.md b/docs/standard-library/system-clock-structure.md
index d8bff11b41..e4f4f30868 100644
--- a/docs/standard-library/system-clock-structure.md
+++ b/docs/standard-library/system-clock-structure.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: system_clock Structure"
 title: "system_clock Structure"
+description: "Learn more about: system_clock Structure"
 ms.date: 07/26/2021
 f1_keywords: ["chrono/std::chrono::system_clock", "chrono/std::chrono::system_clock::from_time_t", "chrono/std::chrono::system_clock::now", "chrono/std::chrono::system_clock::to_time_t", "chrono/std::chrono::system_clock::is_steady constant"]
 helpviewer_keywords: ["std::chrono [C++], system_clock"]
@@ -66,7 +66,7 @@ A clock is *steady* if it is *monotonic* and if the time between clock ticks is
 
 **Namespace:** `std::chrono`
 
-## <a name="from_time_t"></a>`from_time_t`
+## <a name="from_time_t"></a> `from_time_t`
 
 Static method that returns a [time_point](../standard-library/time-point-class.md) that most closely approximates the time that is represented by *Tm*.
 
@@ -79,7 +79,7 @@ static time_point from_time_t(time_t Tm) noexcept;
 *`Tm`*\
 A [time_t](../c-runtime-library/standard-types.md) object.
 
-## <a name="is_steady_constant"></a>`is_steady`
+## <a name="is_steady_constant"></a> `is_steady`
 
 A static value that specifies whether the clock type is *steady*. Because the `system_clock` isn't steady, you can't use this clock to take the time before an event, the time after an event, and reliably subtract them to get the duration of the event because the clock may be adjusted during the timing interval.
 
diff --git a/docs/standard-library/system-error-enums.md b/docs/standard-library/system-error-enums.md
index 2551b9345a..9ad2a05696 100644
--- a/docs/standard-library/system-error-enums.md
+++ b/docs/standard-library/system-error-enums.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <system_error> enums"
 title: "<system_error> enums"
-ms.date: "11/04/2016"
+description: "Learn more about: <system_error> enums"
+ms.date: 11/04/2016
 f1_keywords: ["system_error/std::errc", "system_error/std::io_errc"]
-ms.assetid: b21321b7-404a-40de-8777-a85b77c6fa58
 ---
 # `<system_error>` enums
 
@@ -94,8 +93,6 @@ class errc {
 };
 ```
 
-### Remarks
-
 ## <a name="io_errc"></a> io_errc
 
 Provides symbolic names for the error conditions in \<iostream>. Can be used to create [error_condition](../standard-library/error-condition-class.md) objects to be compared with the value that's returned by the [ios_base::failure](../standard-library/ios-base-class.md#failure)`code()` function.
diff --git a/docs/standard-library/system-error-functions.md b/docs/standard-library/system-error-functions.md
index af053fb4cb..6de6c2d6a2 100644
--- a/docs/standard-library/system-error-functions.md
+++ b/docs/standard-library/system-error-functions.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: <system_error> functions"
 title: "<system_error> functions"
+description: "Learn more about: <system_error> functions"
 ms.date: "03/15/2019"
 f1_keywords: ["system_error/std::generic_category", "system_error/std::make_error_code", "system_error/std::make_error_condition", "system_error/std::system_category"]
-ms.assetid: 57d6f15f-f0b7-4e2f-80fe-31d3c320ee33
 helpviewer_keywords: ["std::generic_category", "std::make_error_code", "std::make_error_condition", "std::system_category"]
 ---
 # `<system_error>` functions
@@ -18,20 +17,24 @@ const error_category& generic_category() noexcept;
 
 ### Remarks
 
-The `generic_category` object is an implementation of [error_category](../standard-library/error-category-class.md).
+The `generic_category` object is an implementation of [error_category](error-category-class.md).
 
 ## <a name="is_error_code_enum_v"></a> is_error_code_enum_v
 
+A helper variable template for the [`is_error_code_enum`](is-error-code-enum-class.md) value.
+
 ```cpp
 template <class T>
-    inline constexpr bool is_error_code_enum_v = is_error_code_enum<T>::value;
+constexpr bool is_error_code_enum_v = is_error_code_enum<T>::value;
 ```
 
 ## <a name="is_error_condition_enum_v"></a> is_error_condition_enum_v
 
+A helper variable template for the [`is_error_condition_enum`](is-error-condition-enum-class.md) value.
+
 ```cpp
 template <class T>
-    inline constexpr bool is_error_condition_enum_v = is_error_condition_enum<T>::value;
+constexpr bool is_error_condition_enum_v = is_error_condition_enum<T>::value;
 ```
 
 ## <a name="make_error_code"></a> make_error_code
@@ -51,8 +54,6 @@ The `std::errc` enumeration value to store in the error code object.
 
 The error code object.
 
-### Remarks
-
 ## <a name="make_error_condition"></a> make_error_condition
 
 Creates an error condition object.
@@ -64,17 +65,15 @@ error_condition make_error_condition(std::errc error) noexcept;
 ### Parameters
 
 *error*\
-The `std::errc` enumeration value to store in the error code object.
+The `std::errc` enumeration value to store in the error condition object.
 
 ### Return Value
 
 The error condition object.
 
-### Remarks
-
 ## <a name="system_category"></a> system_category
 
-Represents the category for errors caused by low-level system overflows.
+Represents the category for operating system errors.
 
 ```cpp
 const error_category& system_category() noexcept;
@@ -82,4 +81,4 @@ const error_category& system_category() noexcept;
 
 ### Remarks
 
-The `system_category` object is an implementation of [error_category](../standard-library/error-category-class.md).
+The `system_category` object is an implementation of [error_category](error-category-class.md).
diff --git a/docs/standard-library/system-error-operators.md b/docs/standard-library/system-error-operators.md
index ad43985bc5..58a4e804c3 100644
--- a/docs/standard-library/system-error-operators.md
+++ b/docs/standard-library/system-error-operators.md
@@ -1,13 +1,12 @@
 ---
-description: "Learn more about: <system_error> operators"
 title: "<system_error> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <system_error> operators"
+ms.date: "3/17/2025"
 f1_keywords: ["system_error/std::operator!=", "system_error/std::operator=="]
-ms.assetid: c14edefb-bd8a-4e90-88d3-c59c98e6f73c
 ---
 # `<system_error>` operators
 
-## <a name="op_eq_eq"></a> operator==
+## <a name="op_eq_eq"></a> `operator==`
 
 Tests if the object on the left side of the operator is equal to the object on the right side.
 
@@ -24,11 +23,11 @@ bool operator==(const error_condition& left,
 
 ### Parameters
 
-*left*\
-The object to be tested for equality.
+*`left`*\
+The object to test for equality.
 
-*right*\
-The object to be tested for equality.
+*`right`*\
+The object to test for equality.
 
 ### Return Value
 
@@ -38,7 +37,7 @@ The object to be tested for equality.
 
 This function returns `left.category() == right.category() && left.value() == right.value()`.
 
-## <a name="op_neq"></a> operator!=
+## <a name="op_neq"></a> `operator!=`
 
 Tests if the object on the left side of the operator is not equal to the object on the right side.
 
@@ -51,15 +50,15 @@ bool operator!=(const error_condition& left, const error_condition& right);
 
 ### Parameters
 
-*left*\
-The object to be tested for inequality.
+*`left`*\
+The object to test for inequality.
 
-*right*\
-The object to be tested for inequality.
+*`right`*\
+The object to test for inequality.
 
 ### Return Value
 
-**`true`** if the object passed in *left* is not equal to the object passed in *right*; otherwise **`false`**.
+**`true`** if the object passed in *left* is not equal to the object passed in *`right`*; otherwise **`false`**.
 
 ### Remarks
 
@@ -95,15 +94,15 @@ inline bool operator<(
 
 ### Parameters
 
-*left*\
-The object to be compared.
+*`left`*\
+The object to compare.
 
-*right*\
-The object to be compared.
+*`right`*\
+The object to compare.
 
 ### Return Value
 
-**`true`** if the object passed in *left* is less than the object passed in *right*; Otherwise, **`false`**.
+**`true`** if the object passed in *`left`* is less than the object passed in *`right`*; Otherwise, **`false`**.
 
 ### Remarks
 
@@ -111,7 +110,42 @@ This function tests the error order.
 
 ## <a name="op_ostream"></a> `operator<<`
 
+Inserts an [`error_code`](error-code-class.md) object into the output stream.
+
 ```cpp
 template <class charT, class traits>
-    basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const error_code& ec);
+basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const error_code& ec);
+```
+
+### Parameters
+
+*`os`*\
+The target output stream.
+
+*`ec`*\
+The `error_code` object to output.
+
+### Return Value
+
+A reference to the modified output stream.
+
+### Remarks
+
+This operator does the equivalent of `os << ec.category().name() << ':' << ec.value()`.
+
+### Example
+
+```cpp
+#include <iostream>
+#include <system_error>
+
+int main()
+{
+    std::error_code ec(1234, std::generic_category());
+    std::cout << ec;
+}
+```
+
+```Output
+generic:1234
 ```
diff --git a/docs/standard-library/thread-operators.md b/docs/standard-library/thread-operators.md
index ad1f33155d..485cbf10b5 100644
--- a/docs/standard-library/thread-operators.md
+++ b/docs/standard-library/thread-operators.md
@@ -1,20 +1,13 @@
 ---
-description: "Learn more about: <thread> operators"
 title: "<thread> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <thread> operators"
+ms.date: 11/04/2016
 f1_keywords: ["thread/std::operator!=", "thread/std::operator>", "thread/std::operator>=", "thread/std::operator<", "thread/std::operator<<", "thread/std::operator<=", "thread/std::operator=="]
-ms.assetid: e6bb6c0f-64f9-4cb2-9ff2-05b88a6ba7ac
 helpviewer_keywords: ["std::operator!= (thread)", "std::operator> (thread)", "std::operator>= (thread)", "std::operator< (thread)", "std::operator<< (thread)", "std::operator<= (thread)", "std::operator== (thread)"]
 ---
 # `<thread>` operators
 
-[operator!=](#op_neq)\
-[`operator>`](#op_gt)\
-[`operator>=`](#op_gt_eq)\
-[`operator<`](#op_lt)\
-[`operator<<`](#op_lt_lt)\
-[`operator<=`](#op_lt_eq)\
-[operator==](#op_eq_eq)
+The `<thread>` header provides the following operators:
 
 ## <a name="op_gt_eq"></a> `operator>=`
 
diff --git a/docs/standard-library/time-get-byname-class.md b/docs/standard-library/time-get-byname-class.md
index 25750ba601..abd437c52b 100644
--- a/docs/standard-library/time-get-byname-class.md
+++ b/docs/standard-library/time-get-byname-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: time_get_byname Class"
 title: "time_get_byname Class"
-ms.date: "11/04/2016"
+description: "Learn more about: time_get_byname Class"
+ms.date: 11/04/2016
 f1_keywords: ["xloctime/std::time_get_byname"]
 helpviewer_keywords: ["time_get_byname class"]
-ms.assetid: 6e54153e-da40-4bb9-a942-1a6ce57b30c9
 ---
 # time_get_byname Class
 
@@ -41,7 +40,7 @@ An initial reference count.
 
 ## Requirements
 
-Its behavior is determined by the named locale *_Locname*. Each constructor initializes its base object with [time_get](../standard-library/time-get-class.md#time_get)\<CharType, InputIterator>( `_Refs`).
+Its behavior is determined by the named locale *_Locname*. Each constructor initializes its base object with [time_get](../standard-library/time-get-class.md#time_get)\<CharType, InputIterator>(`_Refs`).
 
 **Header:** \<locale>
 
diff --git a/docs/standard-library/time-put-class.md b/docs/standard-library/time-put-class.md
index 60255f4f25..7792d1448d 100644
--- a/docs/standard-library/time-put-class.md
+++ b/docs/standard-library/time-put-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: time_put Class"
 title: "time_put Class"
-ms.date: "11/04/2016"
+description: "Learn more about: time_put Class"
+ms.date: 11/04/2016
 f1_keywords: ["xloctime/std::time_put", "locale/std::time_put::char_type", "locale/std::time_put::iter_type", "locale/std::time_put::do_put", "locale/std::time_put::put"]
 helpviewer_keywords: ["std::time_put [C++]", "std::time_put [C++], char_type", "std::time_put [C++], iter_type", "std::time_put [C++], do_put", "std::time_put [C++], put"]
-ms.assetid: df79493e-3331-48d2-97c3-ac3a745f0791
 ---
 # time_put Class
 
@@ -176,7 +175,7 @@ An iterator to the first position after the last element inserted.
 
 ### Remarks
 
-The first member function returns [do_put](#do_put)(`next`, `_Iosbase`, `_Fill`, `_Pt`, `_Fmt`, `_Mod`). The second member function copies to \* `next` ++ any element in the interval [ `first`, `last`) other than a percent (%). For a percent followed by a character *C* in the interval [ `first`, `last`), the function instead evaluates `next` = `do_put`( `next`, `_Iosbase`, `_Fill`, `_Pt`, *C*, 0) and skips past *C*. If, however, *C* is a qualifier character from the set EOQ#, followed by a character `C2` in the interval [ `first`, `last`), the function instead evaluates `next` = `do_put`( `next`, `_Iosbase`, `_Fill`, `_Pt`, `C2`, *C*) and skips past `C2`.
+The first member function returns [do_put](#do_put)(`next`, `_Iosbase`, `_Fill`, `_Pt`, `_Fmt`, `_Mod`). The second member function copies to \* `next` ++ any element in the interval [ `first`, `last`) other than a percent (%). For a percent followed by a character *C* in the interval [ `first`, `last`), the function instead evaluates `next` = `do_put`(`next`, `_Iosbase`, `_Fill`, `_Pt`, *C*, 0) and skips past *C*. If, however, *C* is a qualifier character from the set EOQ#, followed by a character `C2` in the interval [ `first`, `last`), the function instead evaluates `next` = `do_put`(`next`, `_Iosbase`, `_Fill`, `_Pt`, `C2`, *C*) and skips past `C2`.
 
 ### Example
 
diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml
index 43e6cbcb4e..40f30f1268 100644
--- a/docs/standard-library/toc.yml
+++ b/docs/standard-library/toc.yml
@@ -169,9 +169,9 @@ items:
           href: gps-clock-class.md
         - name: hh_mm_ss class
           href: hhmmss-class.md
-        - name: high_resolution_clock struct 
+        - name: high_resolution_clock struct
           href: high-resolution-clock-struct.md
-        - name: is_clock struct 
+        - name: is_clock struct
           href: is-clock-struct.md
         - name: last_spec
           href: last-spec-struct.md
@@ -797,6 +797,8 @@ items:
           href: recursive-mutex-class.md
         - name: recursive_timed_mutex class
           href: recursive-timed-mutex-class.md
+        - name: scoped_lock class
+          href: scoped-lock-class.md
         - name: timed_mutex class
           href: timed-mutex-class.md
         - name: try_to_lock_t struct
diff --git a/docs/standard-library/treat-as-floating-point-structure.md b/docs/standard-library/treat-as-floating-point-structure.md
index 7389b8620f..4dbd2818c3 100644
--- a/docs/standard-library/treat-as-floating-point-structure.md
+++ b/docs/standard-library/treat-as-floating-point-structure.md
@@ -1,11 +1,10 @@
 ---
-description: "Learn more about: treat_as_floating_point structure"
 title: "treat_as_floating_point Structure"
+description: "Learn more about: treat_as_floating_point structure"
 ms.date: 07/16/2021
 f1_keywords: ["chrono/std::chrono::treat_as_floating_point"]
 helpviewer_keywords: ["std::chrono [C++], treat_as_floating_point"]
 dev_langs: ["C++"]
-
 ---
 # `treat_as_floating_point` structure
 
diff --git a/docs/standard-library/tuple-size-class-tuple.md b/docs/standard-library/tuple-size-class-tuple.md
index e5ed361621..43ca9b50ea 100644
--- a/docs/standard-library/tuple-size-class-tuple.md
+++ b/docs/standard-library/tuple-size-class-tuple.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: tuple_size class;"
-title: "tuple_size class;"
+title: "tuple_size class"
+description: "Learn more about: tuple_size class"
 ms.date: 06/29/2022
 f1_keywords: ["tuple_size", "std::tuple_size", "utility/std::tuple_size"]
 helpviewer_keywords: ["std::tuple_size"]
-ms.assetid: 73852fc5-eb68-41f1-8379-465cedc2314a
 ---
 # `tuple_size` class
 
diff --git a/docs/standard-library/type-traits-functions.md b/docs/standard-library/type-traits-functions.md
index 4bf7fc0c66..1cf5eab06c 100644
--- a/docs/standard-library/type-traits-functions.md
+++ b/docs/standard-library/type-traits-functions.md
@@ -1,26 +1,12 @@
 ---
-description: "Learn more about: <type_traits> functions"
 title: "<type_traits> functions"
-ms.date: "11/04/2016"
-ms.assetid: dce4492f-f3e4-4d5e-bdb4-5875321254ec
+description: "Learn more about: <type_traits> functions"
+ms.date: 11/04/2016
 helpviewer_keywords: ["std::is_assignable", "std::is_copy_assignable", "std::is_copy_constructible", "std::is_default_constructible", "std::is_move_assignable", "std::is_move_constructible", "std::is_nothrow_move_assignable", "std::is_trivially_copy_assignable", "std::is_trivially_move_assignable", "std::is_trivially_move_constructible"]
 ---
 # `<type_traits>` functions
 
-[is_assignable](#is_assignable)\
-[is_copy_assignable](#is_copy_assignable)\
-[is_copy_constructible](#is_copy_constructible)\
-[is_default_constructible](#is_default_constructible)\
-[is_move_assignable](#is_move_assignable)\
-[is_move_constructible](#is_move_constructible)\
-[is_nothrow_move_assignable](#is_nothrow_move_assignable)\
-[is_nothrow_swappable](#is_nothrow_swappable)\
-[is_nothrow_swappable_with](#is_nothrow_swappable_with)\
-[is_swappable](#is_swappable)\
-[is_swappable_with](#is_swappable_with)\
-[is_trivially_copy_assignable](#is_trivially_copy_assignable)\
-[is_trivially_move_assignable](#is_trivially_move_assignable)\
-[is_trivially_move_constructible](#is_trivially_move_constructible)
+The `<type_traits>` header provides the following functions:
 
 ## <a name="is_assignable"></a> is_assignable
 
diff --git a/docs/standard-library/type-traits-typedefs.md b/docs/standard-library/type-traits-typedefs.md
index b1df31e15f..95eaa6fc7b 100644
--- a/docs/standard-library/type-traits-typedefs.md
+++ b/docs/standard-library/type-traits-typedefs.md
@@ -1,14 +1,12 @@
 ---
-description: "Learn more about: <type_traits> typedefs"
 title: "<type_traits> typedefs"
-ms.date: "11/04/2016"
+description: "Learn more about: <type_traits> typedefs"
+ms.date: 11/04/2016
 f1_keywords: ["type_traits/std::false_type", "xtr1common/std::false_type", "type_traits/std::true_type", "xtr1common/std::true_type"]
-ms.assetid: 8ac040ca-ed2d-4570-adc9-cb5626530053
 ---
 # `<type_traits>` typedefs
 
-[false_type](#false_type)\
-[true_type](#true_type)
+The `<type_traits>` header provides the following typedefs:
 
 ## <a name="false_type"></a> false_type Typedef
 
diff --git a/docs/standard-library/unique-lock-class.md b/docs/standard-library/unique-lock-class.md
index 612058f1d8..6332a02e08 100644
--- a/docs/standard-library/unique-lock-class.md
+++ b/docs/standard-library/unique-lock-class.md
@@ -1,9 +1,8 @@
 ---
-description: "Learn more about: unique_lock Class"
 title: "unique_lock Class"
+description: "Learn more about: unique_lock Class"
 ms.date: 06/20/2022
 f1_keywords: ["mutex/std::unique_lock"]
-ms.assetid: f4ed8ba9-c8af-446f-8ef0-0b356bad14bd
 ms.custom: devdivchpfy22
 ---
 
@@ -298,7 +297,7 @@ The remaining constructors store & *Mtx* as the stored `mutex` pointer. Ownershi
 |`Rel_time`|Ownership is determined by calling `try_lock_for(Rel_time)`.|
 |`Abs_time`|Ownership is determined by calling `try_lock_until(Abs_time)`.|
 
-## <a name="dtorunique_lock_destructor"></a>  ~unique_lock Destructor
+## <a name="dtorunique_lock_destructor"></a> ~unique_lock Destructor
 
 Releases any resources that are associated with the `unique_lock` object.
 
diff --git a/docs/standard-library/unordered-map-class.md b/docs/standard-library/unordered-map-class.md
index 90f5e8ac49..fb8bf60b41 100644
--- a/docs/standard-library/unordered-map-class.md
+++ b/docs/standard-library/unordered-map-class.md
@@ -4,7 +4,6 @@ description: "API reference for the C++ Standard Library container class `unorde
 ms.date: 06/20/2022
 f1_keywords: ["unordered_map/std::unordered_map", "unordered_map/std::unordered_map::allocator_type", "unordered_map/std::unordered_map::const_iterator", "unordered_map/std::unordered_map::const_local_iterator", "unordered_map/std::unordered_map::const_pointer", "unordered_map/std::unordered_map::const_reference", "unordered_map/std::unordered_map::difference_type", "unordered_map/std::unordered_map::hasher", "unordered_map/std::unordered_map::iterator", "unordered_map/std::unordered_map::key_equal", "unordered_map/std::unordered_map::key_type", "unordered_map/std::unordered_map::local_iterator", "unordered_map/std::unordered_map::mapped_type", "unordered_map/std::unordered_map::pointer", "unordered_map/std::unordered_map::reference", "unordered_map/std::unordered_map::size_type", "unordered_map/std::unordered_map::value_type", "unordered_map/std::unordered_map::at", "unordered_map/std::unordered_map::begin", "unordered_map/std::unordered_map::bucket", "unordered_map/std::unordered_map::bucket_count", "unordered_map/std::unordered_map::bucket_size", "unordered_map/std::unordered_map::cbegin", "unordered_map/std::unordered_map::cend", "unordered_map/std::unordered_map::clear", "unordered_map/std::unordered_map::contains", "unordered_map/std::unordered_map::count", "unordered_map/std::unordered_map::emplace", "unordered_map/std::unordered_map::emplace_hint", "unordered_map/std::unordered_map::empty", "unordered_map/std::unordered_map::end", "unordered_map/std::unordered_map::equal_range", "unordered_map/std::unordered_map::erase", "unordered_map/std::unordered_map::find", "unordered_map/std::unordered_map::get_allocator", "unordered_map/std::unordered_map::hash", "unordered_map/std::unordered_map::insert", "unordered_map/std::unordered_map::key_eq", "unordered_map/std::unordered_map::load_factor", "unordered_map/std::unordered_map::max_bucket_count", "unordered_map/std::unordered_map::max_load_factor", "unordered_map/std::unordered_map::max_size", "unordered_map/std::unordered_map::rehash", "unordered_map/std::unordered_map::size", "unordered_map/std::unordered_map::swap", "unordered_map/std::unordered_map::unordered_map", "unordered_map/std::unordered_map::hash_function"]
 helpviewer_keywords: ["std::unordered_map", "std::unordered_map::allocator_type", "std::unordered_map::const_iterator", "std::unordered_map::const_local_iterator", "std::unordered_map::const_pointer", "std::unordered_map::const_reference", "std::unordered_map::difference_type", "std::unordered_map::hasher", "std::unordered_map::iterator", "std::unordered_map::key_equal", "std::unordered_map::key_type", "std::unordered_map::local_iterator", "std::unordered_map::mapped_type", "std::unordered_map::pointer", "std::unordered_map::reference", "std::unordered_map::size_type", "std::unordered_map::value_type", "std::unordered_map::at", "std::unordered_map::begin", "std::unordered_map::bucket", "std::unordered_map::bucket_count", "std::unordered_map::bucket_size", "std::unordered_map::cbegin", "std::unordered_map::cend", "std::unordered_map::clear", "std::unordered_map::contains", "std::unordered_map::count", "std::unordered_map::emplace", "std::unordered_map::emplace_hint", "std::unordered_map::empty", "std::unordered_map::end", "std::unordered_map::equal_range", "std::unordered_map::erase", "std::unordered_map::find", "std::unordered_map::get_allocator", "std::unordered_map::hash", "std::unordered_map::insert", "std::unordered_map::key_eq", "std::unordered_map::load_factor", "std::unordered_map::max_bucket_count", "std::unordered_map::max_load_factor", "std::unordered_map::max_size", "std::unordered_map::rehash", "std::unordered_map::size", "std::unordered_map::swap", "std::unordered_map::unordered_map", "std::unordered_map::allocator_type", "std::unordered_map::const_iterator", "std::unordered_map::const_local_iterator", "std::unordered_map::const_pointer", "std::unordered_map::const_reference", "std::unordered_map::difference_type", "std::unordered_map::hasher", "std::unordered_map::iterator", "std::unordered_map::key_equal", "std::unordered_map::key_type", "std::unordered_map::local_iterator", "std::unordered_map::mapped_type", "std::unordered_map::pointer", "std::unordered_map::reference", "std::unordered_map::size_type", "std::unordered_map::value_type", "std::unordered_map::at", "std::unordered_map::begin", "std::unordered_map::bucket", "std::unordered_map::bucket_count", "std::unordered_map::bucket_size", "std::unordered_map::cbegin", "std::unordered_map::cend", "std::unordered_map::clear", "std::unordered_map::count", "std::unordered_map::emplace", "std::unordered_map::emplace_hint", "std::unordered_map::empty", "std::unordered_map::end", "std::unordered_map::equal_range", "std::unordered_map::erase", "std::unordered_map::find", "std::unordered_map::get_allocator", "std::unordered_map::hash_function", "std::unordered_map::insert", "std::unordered_map::key_eq", "std::unordered_map::load_factor", "std::unordered_map::max_bucket_count", "std::unordered_map::max_load_factor", "std::unordered_map::max_size", "std::unordered_map::rehash", "std::unordered_map::size", "std::unordered_map::swap"]
-ms.assetid: 7cf7cfa1-16e7-461c-a9b2-3b8d8ec24e0d
 ms.custom: devdivchpfy22
 ---
 
@@ -100,7 +99,7 @@ The allocator class.
 
 ## Remarks
 
-The object orders the sequence it controls by calling two stored objects, a comparison function object of type [`unordered_map::key_equal`](#key_equal) and a hash function object of type [`unordered_map::hasher`](#hasher). You access the first stored object by calling the member function [`unordered_map::key_eq`](#key_eq)`()`; and you access the second stored object by calling the member function [`unordered_map::hash_function`](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_multimap` Class](../standard-library/unordered-multimap-class.md), an object of type `unordered_map` ensures that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys are unique.)
+The object orders the sequence it controls by calling two stored objects, a comparison function object of type [`unordered_map::key_equal`](#key_equal) and a hash function object of type [`unordered_map::hasher`](#hasher). You access the first stored object by calling the member function [`unordered_map::key_eq`](#key_eq)`()`; and you access the second stored object by calling the member function [`unordered_map::hash_function`](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_multimap`](../standard-library/unordered-multimap-class.md), an object of type `unordered_map` ensures that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys are unique.)
 
 The object also stores a maximum load factor, which specifies the maximum desired average number of elements per bucket. If inserting an element causes [`unordered_map::load_factor`](#load_factor)`()` to exceed the maximum load factor, the container increases the number of buckets and rebuilds the hash table as needed.
 
@@ -796,7 +795,7 @@ The key value of the element to look for.
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <unordered_map>
 #include <iostream>
 
@@ -2781,4 +2780,4 @@ int main()
 ## See also
 
 [`<unordered_map>`](../standard-library/unordered-map.md)\
-[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\
+[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)
diff --git a/docs/standard-library/unordered-map-functions.md b/docs/standard-library/unordered-map-functions.md
index 36f731bacf..20e3941dff 100644
--- a/docs/standard-library/unordered-map-functions.md
+++ b/docs/standard-library/unordered-map-functions.md
@@ -1,15 +1,13 @@
 ---
-description: "Learn more about: <unordered_map> functions"
 title: "<unordered_map> functions"
-ms.date: "11/04/2016"
+description: "Learn more about: <unordered_map> functions"
+ms.date: 11/04/2016
 f1_keywords: ["unordered_map/std::swap", "unordered_map/std::swap (unordered_map)", "unordered_map/std::swap (unordered_multimap)"]
-ms.assetid: cf2e4115-f205-4a0e-90be-a143ffcc1f44
 helpviewer_keywords: ["std::swap (unordered_map/multimap)"]
 ---
 # `<unordered_map>` functions
 
-[swap (unordered_map)](#swap)
-[swap (unordered_multimap)](#swap_function_multimap)
+The `<unordered_map>` header provides the following functions:
 
 ## <a name="swap"></a> swap (unordered_map)
 
diff --git a/docs/standard-library/unordered-map-operators.md b/docs/standard-library/unordered-map-operators.md
index 1e4e87c66d..5913612c65 100644
--- a/docs/standard-library/unordered-map-operators.md
+++ b/docs/standard-library/unordered-map-operators.md
@@ -1,16 +1,12 @@
 ---
-description: "Learn more about: <unordered_map> operators"
 title: "<unordered_map> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <unordered_map> operators"
+ms.date: 11/04/2016
 f1_keywords: ["unordered_map/std::operator!=", "unordered_map/std::operator=="]
-ms.assetid: 9d5add0b-84bd-4a79-bd82-3f58b55145ed
 ---
 # `<unordered_map>` operators
 
-[unordered_map::operator!=](#op_neq)\
-[unordered_map::operator==](#op_eq_eq)\
-[unordered_multimap::operator!=](#op_neq_multimap)\
-[unordered_multimap::operator==](#op_eq_eq_multimap)
+The `<unordered_map>` header provides the following operators:
 
 ## <a name="op_neq"></a> operator!=
 
diff --git a/docs/standard-library/unordered-multimap-class.md b/docs/standard-library/unordered-multimap-class.md
index 0f61a2cac0..516585e9dc 100644
--- a/docs/standard-library/unordered-multimap-class.md
+++ b/docs/standard-library/unordered-multimap-class.md
@@ -1,13 +1,12 @@
 ---
 title: "unordered_multimap Class"
 description: "API overview for the C++ Standard Library container class `unordered_multimap`."
-ms.date: "9/9/2020"
+ms.date: 9/9/2020
 f1_keywords: ["unordered_map/std::unordered_multimap", "unordered_map/std::unordered_multimap::allocator_type", "unordered_map/std::unordered_multimap::const_iterator", "unordered_map/std::unordered_multimap::const_local_iterator", "unordered_map/std::unordered_multimap::const_pointer", "unordered_map/std::unordered_multimap::const_reference", "unordered_map/std::unordered_multimap::difference_type", "unordered_map/std::unordered_multimap::hasher", "unordered_map/std::unordered_multimap::iterator", "unordered_map/std::unordered_multimap::key_equal", "unordered_map/std::unordered_multimap::key_type", "unordered_map/std::unordered_multimap::local_iterator", "unordered_map/std::unordered_multimap::mapped_type", "unordered_map/std::unordered_multimap::pointer", "unordered_map/std::unordered_multimap::reference", "unordered_map/std::unordered_multimap::size_type", "unordered_map/std::unordered_multimap::value_type", "unordered_map/std::unordered_multimap::begin", "unordered_map/std::unordered_multimap::bucket", "unordered_map/std::unordered_multimap::bucket_count", "unordered_map/std::unordered_multimap::bucket_size", "unordered_map/std::unordered_multimap::cbegin", "unordered_map/std::unordered_multimap::cend", "unordered_map/std::unordered_multimap::clear",
 "unordered_map/std::unordered_multimap::contains",  "unordered_map/std::unordered_multimap::count", "unordered_map/std::unordered_multimap::emplace", "unordered_map/std::unordered_multimap::emplace_hint", "unordered_map/std::unordered_multimap::empty", "unordered_map/std::unordered_multimap::end", "unordered_map/std::unordered_multimap::equal_range", "unordered_map/std::unordered_multimap::erase", "unordered_map/std::unordered_multimap::find", "unordered_map/std::unordered_multimap::get_allocator", "unordered_map/std::unordered_multimap::hash", "unordered_map/std::unordered_multimap::insert", "unordered_map/std::unordered_multimap::key_eq", "unordered_map/std::unordered_multimap::load_factor", "unordered_map/std::unordered_multimap::max_bucket_count", "unordered_map/std::unordered_multimap::max_load_factor", "unordered_map/std::unordered_multimap::max_size", "unordered_map/std::unordered_multimap::rehash", "unordered_map/std::unordered_multimap::size", "unordered_map/std::unordered_multimap::swap", "unordered_map/std::unordered_multimap::unordered_multimap", "unordered_map/std::unordered_multimap::operator=", "unordered_map/std::unordered_multimap::hash_function"]
 helpviewer_keywords: ["std::unordered_multimap", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear",
 "std::unordered_multimap::contains",
 "std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap", "std::unordered_multimap::unordered_multimap", "std::unordered_multimap::operator=", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear", "std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash_function", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap"]
-ms.assetid: 4baead6c-5870-4b85-940f-a47d6b891c27
 ---
 # unordered_multimap Class
 
@@ -99,7 +98,7 @@ The allocator class.
 
 ## Remarks
 
-The object orders the sequence it controls by calling two stored objects, a comparison function object of type [unordered_multimap::key_equal](#key_equal) and a hash function object of type [unordered_multimap::hasher](#hasher). You access the first stored object by calling the member function [unordered_multimap::key_eq](#key_eq)`()`; and you access the second stored object by calling the member function [unordered_multimap::hash_function](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [unordered_map Class](../standard-library/unordered-map-class.md), an object of type `unordered_multimap` does not ensure that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys need not be unique.)
+The object orders the sequence it controls by calling two stored objects, a comparison function object of type [unordered_multimap::key_equal](#key_equal) and a hash function object of type [unordered_multimap::hasher](#hasher). You access the first stored object by calling the member function [unordered_multimap::key_eq](#key_eq)`()`; and you access the second stored object by calling the member function [unordered_multimap::hash_function](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_map`](../standard-library/unordered-map-class.md), an object of type `unordered_multimap` does not ensure that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys need not be unique.)
 
 The object also stores a maximum load factor, which specifies the maximum desired average number of elements per bucket. If inserting an element causes [unordered_multimap::load_factor](#load_factor)`()` to exceed the maximum load factor, the container increases the number of buckets and rebuilds the hash table as needed.
 
@@ -750,7 +749,7 @@ The element's key value to look for.
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <unordered_map>
 #include <iostream>
 
diff --git a/docs/standard-library/unordered-multiset-class.md b/docs/standard-library/unordered-multiset-class.md
index 1a08ac38ec..1b6e8fd365 100644
--- a/docs/standard-library/unordered-multiset-class.md
+++ b/docs/standard-library/unordered-multiset-class.md
@@ -1,10 +1,9 @@
 ---
 title: "unordered_multiset Class"
 description: "API reference for the C++ Standard Library container class `unordered_multiset`, which describes an object used for the storage and retrieval of data from a collection in which the values of the elements contained need not be unique and in which they serve as the key values. The data isn't automatically ordered."
-ms.date: "9/10/2020"
+ms.date: 9/10/2020
 f1_keywords: ["unordered_set/std::unordered_multiset", "unordered_set/std::unordered_multiset::allocator_type", "unordered_set/std::unordered_multiset::const_iterator", "unordered_set/std::unordered_multiset::const_local_iterator", "unordered_set/std::unordered_multiset::const_pointer", "unordered_set/std::unordered_multiset::const_reference", "unordered_set/std::unordered_multiset::difference_type", "unordered_set/std::unordered_multiset::hasher", "unordered_set/std::unordered_multiset::iterator", "unordered_set/std::unordered_multiset::key_equal", "unordered_set/std::unordered_multiset::key_type", "unordered_set/std::unordered_multiset::local_iterator", "unordered_set/std::unordered_multiset::pointer", "unordered_set/std::unordered_multiset::reference", "unordered_set/std::unordered_multiset::size_type", "unordered_set/std::unordered_multiset::value_type", "unordered_set/std::unordered_multiset::begin", "unordered_set/std::unordered_multiset::bucket", "unordered_set/std::unordered_multiset::bucket_count", "unordered_set/std::unordered_multiset::bucket_size", "unordered_set/std::unordered_multiset::cbegin", "unordered_set/std::unordered_multiset::cend", "unordered_set/std::unordered_multiset::clear", "unordered_set/std::unordered_multiset::contains", "unordered_set/std::unordered_multiset::count", "unordered_set/std::unordered_multiset::emplace", "unordered_set/std::unordered_multiset::emplace_hint", "unordered_set/std::unordered_multiset::empty", "unordered_set/std::unordered_multiset::end", "unordered_set/std::unordered_multiset::equal_range", "unordered_set/std::unordered_multiset::erase", "unordered_set/std::unordered_multiset::find", "unordered_set/std::unordered_multiset::get_allocator", "unordered_set/std::unordered_multiset::hash", "unordered_set/std::unordered_multiset::insert", "unordered_set/std::unordered_multiset::key_eq", "unordered_set/std::unordered_multiset::load_factor", "unordered_set/std::unordered_multiset::max_bucket_count", "unordered_set/std::unordered_multiset::max_load_factor", "unordered_set/std::unordered_multiset::max_size", "unordered_set/std::unordered_multiset::rehash", "unordered_set/std::unordered_multiset::size", "unordered_set/std::unordered_multiset::swap", "unordered_set/std::unordered_multiset::unordered_multiset", "unordered_set/std::unordered_multiset::operator=", "unordered_set/std::unordered_multiset::hash_function"]
 helpviewer_keywords: ["std::unordered_multiset", "std::unordered_multiset::allocator_type", "std::unordered_multiset::const_iterator", "std::unordered_multiset::const_local_iterator", "std::unordered_multiset::const_pointer", "std::unordered_multiset::const_reference", "std::unordered_multiset::difference_type", "std::unordered_multiset::hasher", "std::unordered_multiset::iterator", "std::unordered_multiset::key_equal", "std::unordered_multiset::key_type", "std::unordered_multiset::local_iterator", "std::unordered_multiset::pointer", "std::unordered_multiset::reference", "std::unordered_multiset::size_type", "std::unordered_multiset::value_type", "std::unordered_multiset::begin", "std::unordered_multiset::bucket", "std::unordered_multiset::bucket_count", "std::unordered_multiset::bucket_size", "std::unordered_multiset::cbegin", "std::unordered_multiset::cend", "std::unordered_multiset::clear", "std::unordered_multiset::contains", "std::unordered_multiset::count", "std::unordered_multiset::emplace", "std::unordered_multiset::emplace_hint", "std::unordered_multiset::empty", "std::unordered_multiset::end", "std::unordered_multiset::equal_range", "std::unordered_multiset::erase", "std::unordered_multiset::find", "std::unordered_multiset::get_allocator", "std::unordered_multiset::hash", "std::unordered_multiset::insert", "std::unordered_multiset::key_eq", "std::unordered_multiset::load_factor", "std::unordered_multiset::max_bucket_count", "std::unordered_multiset::max_load_factor", "std::unordered_multiset::max_size", "std::unordered_multiset::rehash", "std::unordered_multiset::size", "std::unordered_multiset::swap", "std::unordered_multiset::unordered_multiset", "std::unordered_multiset::operator=", "std::unordered_multiset::allocator_type", "std::unordered_multiset::const_iterator", "std::unordered_multiset::const_local_iterator", "std::unordered_multiset::const_pointer", "std::unordered_multiset::const_reference", "std::unordered_multiset::difference_type", "std::unordered_multiset::hasher", "std::unordered_multiset::iterator", "std::unordered_multiset::key_equal", "std::unordered_multiset::key_type", "std::unordered_multiset::local_iterator", "std::unordered_multiset::pointer", "std::unordered_multiset::reference", "std::unordered_multiset::size_type", "std::unordered_multiset::value_type", "std::unordered_multiset::begin", "std::unordered_multiset::bucket", "std::unordered_multiset::bucket_count", "std::unordered_multiset::bucket_size", "std::unordered_multiset::cbegin", "std::unordered_multiset::cend", "std::unordered_multiset::clear", "std::unordered_multiset::count", "std::unordered_multiset::emplace", "std::unordered_multiset::emplace_hint", "std::unordered_multiset::empty", "std::unordered_multiset::end", "std::unordered_multiset::equal_range", "std::unordered_multiset::erase", "std::unordered_multiset::find", "std::unordered_multiset::get_allocator", "std::unordered_multiset::hash_function", "std::unordered_multiset::insert", "std::unordered_multiset::key_eq", "std::unordered_multiset::load_factor", "std::unordered_multiset::max_bucket_count", "std::unordered_multiset::max_load_factor", "std::unordered_multiset::max_size", "std::unordered_multiset::rehash", "std::unordered_multiset::size", "std::unordered_multiset::swap"]
-ms.assetid: 70c8dfc5-492a-4af2-84f5-1aa9cb04b71c
 ---
 # unordered_multiset Class
 
@@ -91,7 +90,7 @@ The allocator class.
 
 ## Remarks
 
-The object orders the sequence it controls by calling two stored objects, a comparison function object of type [unordered_multiset::key_equal](#key_equal) and a hash function object of type [unordered_multiset::hasher](#hasher). You access the first stored object by calling the member function [unordered_multiset::key_eq](#key_eq)`()`; and you access the second stored object by calling the member function [unordered_multiset::hash_function](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [unordered_set Class](../standard-library/unordered-set-class.md), an object of type `unordered_multiset` does not ensure that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys need not be unique.)
+The object orders the sequence it controls by calling two stored objects, a comparison function object of type [unordered_multiset::key_equal](#key_equal) and a hash function object of type [unordered_multiset::hasher](#hasher). You access the first stored object by calling the member function [unordered_multiset::key_eq](#key_eq)`()`; and you access the second stored object by calling the member function [unordered_multiset::hash_function](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_set`](../standard-library/unordered-set-class.md), an object of type `unordered_multiset` does not ensure that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys need not be unique.)
 
 The object also stores a maximum load factor, which specifies the maximum desired average number of elements per bucket. If inserting an element causes [unordered_multiset::load_factor](#load_factor)`()` to exceed the maximum load factor, the container increases the number of buckets and rebuilds the hash table as needed.
 
@@ -741,7 +740,7 @@ The element's key value to look for.
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <unordered_set>
 #include <iostream>
 
diff --git a/docs/standard-library/unordered-set-class.md b/docs/standard-library/unordered-set-class.md
index ab90d089af..be1541f042 100644
--- a/docs/standard-library/unordered-set-class.md
+++ b/docs/standard-library/unordered-set-class.md
@@ -1,7 +1,7 @@
 ---
 title: "unordered_set Class"
 description: "API reference for the C++ Standard Library container class `unordered_set`, which is used to store and retrieve data from an unordered collection."
-ms.date: "9/9/2020"
+ms.date: 9/9/2020
 f1_keywords: ["unordered_set/std::unordered_set", "unordered_set/std::unordered_set::allocator_type", "unordered_set/std::unordered_set::const_iterator", "unordered_set/std::unordered_set::const_local_iterator", "unordered_set/std::unordered_set::const_pointer", "unordered_set/std::unordered_set::const_reference", "unordered_set/std::unordered_set::difference_type", "unordered_set/std::unordered_set::hasher", "unordered_set/std::unordered_set::iterator", "unordered_set/std::unordered_set::key_equal", "unordered_set/std::unordered_set::key_type", "unordered_set/std::unordered_set::local_iterator", "unordered_set/std::unordered_set::pointer", "unordered_set/std::unordered_set::reference", "unordered_set/std::unordered_set::size_type", "unordered_set/std::unordered_set::value_type", "unordered_set/std::unordered_set::begin", "unordered_set/std::unordered_set::bucket", "unordered_set/std::unordered_set::bucket_count", "unordered_set/std::unordered_set::bucket_size", "unordered_set/std::unordered_set::cbegin", "unordered_set/std::unordered_set::cend", "unordered_set/std::unordered_set::clear", "unordered_set/std::unordered_set::count", "unordered_set/std::unordered_set::contains", "unordered_set/std::unordered_set::emplace", "unordered_set/std::unordered_set::emplace_hint", "unordered_set/std::unordered_set::empty", "unordered_set/std::unordered_set::end", "unordered_set/std::unordered_set::equal_range", "unordered_set/std::unordered_set::erase", "unordered_set/std::unordered_set::find", "unordered_set/std::unordered_set::get_allocator", "unordered_set/std::unordered_set::hash", "unordered_set/std::unordered_set::insert", "unordered_set/std::unordered_set::key_eq", "unordered_set/std::unordered_set::load_factor", "unordered_set/std::unordered_set::max_bucket_count", "unordered_set/std::unordered_set::max_load_factor", "unordered_set/std::unordered_set::max_size", "unordered_set/std::unordered_set::rehash", "unordered_set/std::unordered_set::size", "unordered_set/std::unordered_set::swap", "unordered_set/std::unordered_set::unordered_set", "unordered_set/std::unordered_set::operator=", "unordered_set/std::unordered_set::hash_function"]
 helpviewer_keywords: ["std::unordered_set", "std::unordered_set::allocator_type", "std::unordered_set::const_iterator", "std::unordered_set::const_local_iterator", "std::unordered_set::const_pointer", "std::unordered_set::const_reference", "std::unordered_set::difference_type", "std::unordered_set::hasher", "std::unordered_set::iterator", "std::unordered_set::key_equal", "std::unordered_set::key_type", "std::unordered_set::local_iterator", "std::unordered_set::pointer", "std::unordered_set::reference", "std::unordered_set::size_type", "std::unordered_set::value_type", "std::unordered_set::begin", "std::unordered_set::bucket", "std::unordered_set::bucket_count", "std::unordered_set::bucket_size", "std::unordered_set::cbegin", "std::unordered_set::cend", "std::unordered_set::clear", "std::unordered_set::contains", "std::unordered_set::count", "std::unordered_set::emplace", "std::unordered_set::emplace_hint", "std::unordered_set::empty", "std::unordered_set::end", "std::unordered_set::equal_range", "std::unordered_set::erase", "std::unordered_set::find", "std::unordered_set::get_allocator", "std::unordered_set::hash", "std::unordered_set::insert", "std::unordered_set::key_eq", "std::unordered_set::load_factor", "std::unordered_set::max_bucket_count", "std::unordered_set::max_load_factor", "std::unordered_set::max_size", "std::unordered_set::rehash", "std::unordered_set::size", "std::unordered_set::swap", "std::unordered_set::unordered_set", "std::unordered_set::operator=", "std::unordered_set::allocator_type", "std::unordered_set::const_iterator", "std::unordered_set::const_local_iterator", "std::unordered_set::const_pointer", "std::unordered_set::const_reference", "std::unordered_set::difference_type", "std::unordered_set::hasher", "std::unordered_set::iterator", "std::unordered_set::key_equal", "std::unordered_set::key_type", "std::unordered_set::local_iterator", "std::unordered_set::pointer", "std::unordered_set::reference", "std::unordered_set::size_type", "std::unordered_set::value_type", "std::unordered_set::begin", "std::unordered_set::bucket", "std::unordered_set::bucket_count", "std::unordered_set::bucket_size", "std::unordered_set::cbegin", "std::unordered_set::cend", "std::unordered_set::clear", "std::unordered_set::count", "std::unordered_set::emplace", "std::unordered_set::emplace_hint", "std::unordered_set::empty", "std::unordered_set::end", "std::unordered_set::equal_range", "std::unordered_set::erase", "std::unordered_set::find", "std::unordered_set::get_allocator", "std::unordered_set::hash_function", "std::unordered_set::insert", "std::unordered_set::key_eq", "std::unordered_set::load_factor", "std::unordered_set::max_bucket_count", "std::unordered_set::max_load_factor", "std::unordered_set::max_size", "std::unordered_set::rehash", "std::unordered_set::size", "std::unordered_set::swap"]
 ---
@@ -97,7 +97,7 @@ The allocator class.
 
 ## Remarks
 
-The object orders the sequence it controls by calling two stored objects, a comparison function object of type [`unordered_set::key_equal`](#key_equal) and a hash function object of type [`unordered_set::hasher`](#hasher). You access the first stored object by calling the member function [`unordered_set::key_eq`](#key_eq)`()`; and you access the second stored object by calling the member function [`unordered_set::hash_function`](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_multiset` Class](../standard-library/unordered-multiset-class.md), an object of type `unordered_set` ensures that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys are unique.)
+The object orders the sequence it controls by calling two stored objects, a comparison function object of type [`unordered_set::key_equal`](#key_equal) and a hash function object of type [`unordered_set::hasher`](#hasher). You access the first stored object by calling the member function [`unordered_set::key_eq`](#key_eq)`()`; and you access the second stored object by calling the member function [`unordered_set::hash_function`](#hash)`()`. Specifically, for all values `X` and `Y` of type `Key`, the call `key_eq()(X, Y)` returns true only if the two argument values have equivalent ordering; the call `hash_function()(keyval)` yields a distribution of values of type `size_t`. Unlike class template [`unordered_multiset`](../standard-library/unordered-multiset-class.md), an object of type `unordered_set` ensures that `key_eq()(X, Y)` is always false for any two elements of the controlled sequence. (Keys are unique.)
 
 The object also stores a maximum load factor, which specifies the maximum desired average number of elements per bucket. If inserting an element causes [`unordered_set::load_factor`](#load_factor)`()` to exceed the maximum load factor, the container increases the number of buckets and rebuilds the hash table as needed.
 
@@ -744,7 +744,7 @@ The element's key value to look for.
 ### Example
 
 ```cpp
-// Requires /std:c++20 or /std:c++latest
+// Requires /std:c++20 or later
 #include <unordered_set>
 #include <iostream>
 
@@ -1089,7 +1089,7 @@ Key value to search for.
 
 ### Remarks
 
-The member function returns a pair of iterators `X` such that`[X.first, X.second)` delimits just those elements of the controlled sequence that have equivalent ordering with *`keyval`*. If no such elements exist, both iterators are `end()`.
+The member function returns a pair of iterators `X` such that `[X.first, X.second)` delimits just those elements of the controlled sequence that have equivalent ordering with *`keyval`*. If no such elements exist, both iterators are `end()`.
 
 ### Example
 
@@ -2376,7 +2376,7 @@ The `initializer_list` containing the elements to copy.
 
 ### Remarks
 
-The first constructor specifies a copy of the sequence controlled by *`Right`*. The second constructor specifies an empty controlled sequence. The third constructor specifies a copy of the sequence by moving *`Right`* The fourth through eighth constructors use an `initializer_list` to specify the elements to copy. The ninth constructor inserts the sequence of element values`[first, last)`.
+The first constructor specifies a copy of the sequence controlled by *`Right`*. The second constructor specifies an empty controlled sequence. The third constructor specifies a copy of the sequence by moving *`Right`* The fourth through eighth constructors use an `initializer_list` to specify the elements to copy. The ninth constructor inserts the sequence of element values `[first, last)`.
 
 All constructors also initialize several stored values. For the copy constructor, the values are obtained from *`Right`*. Otherwise:
 
diff --git a/docs/standard-library/unordered-set-operators.md b/docs/standard-library/unordered-set-operators.md
index 1d57b37d00..ee5bc48f7d 100644
--- a/docs/standard-library/unordered-set-operators.md
+++ b/docs/standard-library/unordered-set-operators.md
@@ -1,15 +1,16 @@
 ---
-description: "Learn more about: <unordered_set> operators"
 title: "<unordered_set> operators"
-ms.date: "11/04/2016"
+description: "Learn more about: <unordered_set> operators"
+ms.date: 11/04/2016
 f1_keywords: ["unordered_set/std::operator!=", "unordered_set/std::operator=="]
-ms.assetid: 8653eea6-12f2-4dd7-aa2f-db38a71599a0
 ---
 # `<unordered_set>` operators
 
-## <a name="op_neq"></a> operator!=
+The `<unordered_set>` header provides the following operators:
+
+## <a name="op_neq"></a> `operator!=`
 
-Tests whether the [unordered_set](../standard-library/unordered-set-class.md) object on the left side of the operator is not equal to the unordered_set object on the right side.
+Tests whether the [`unordered_set`](unordered-set-class.md) object on the left side of the operator is not equal to the `unordered_set` object on the right side.
 
 ```cpp
 bool operator!=(const unordered_set <Key, Hash, Pred, Allocator>& left, const unordered_set <Key, Hash, Pred, Allocator>& right);
@@ -17,19 +18,19 @@ bool operator!=(const unordered_set <Key, Hash, Pred, Allocator>& left, const un
 
 ### Parameters
 
-*left*\
+*`left`*\
 An object of type `unordered_set`.
 
-*right*\
+*`right`*\
 An object of type `unordered_set`.
 
 ### Return Value
 
-**`true`** if the unordered_sets are not equal; **`false`** if they are equal.
+**`true`** if the `unordered_set`s are not equal; **`false`** if they are equal.
 
 ### Remarks
 
-The comparison between unordered_set objects is not affected by the arbitrary order in which they store their elements. Two unordered_sets are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
+The comparison between `unordered_set` objects is not affected by the arbitrary order in which they store their elements. Two `unordered_set`s are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
 
 ### Example
 
@@ -67,17 +68,15 @@ int main()
 }
 ```
 
-**Output:**
-
-`c1 != c2: true`
-
-`c1 != c3: false`
-
-`c2 != c3: true`
+```Output
+c1 != c2: true
+c1 != c3: false
+c2 != c3: true
+```
 
-## <a name="op_eq_eq"></a> operator==
+## <a name="op_eq_eq"></a> `operator==`
 
-Tests whether the [unordered_set](../standard-library/unordered-set-class.md) object on the left side of the operator is equal to the unordered_set object on the right side.
+Tests whether the [`unordered_set`](unordered-set-class.md) object on the left side of the operator is equal to the `unordered_set` object on the right side.
 
 ```cpp
 bool operator==(const unordered_set <Key, Hash, Pred, Allocator>& left, const unordered_set <Key, Hash, Pred, Allocator>& right);
@@ -85,19 +84,19 @@ bool operator==(const unordered_set <Key, Hash, Pred, Allocator>& left, const un
 
 ### Parameters
 
-*left*\
+*`left`*\
 An object of type `unordered_set`.
 
-*right*\
+*`right`*\
 An object of type `unordered_set`.
 
 ### Return Value
 
-**`true`** if the unordered_sets are equal; **`false`** if they are not equal.
+**`true`** if the `unordered_set`s are equal; **`false`** if they are not equal.
 
 ### Remarks
 
-The comparison between unordered_set objects is not affected by the arbitrary order in which they store their elements. Two unordered_sets are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
+The comparison between `unordered_set` objects is not affected by the arbitrary order in which they store their elements. Two `unordered_set`s are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
 
 ### Example
 
@@ -141,9 +140,9 @@ c1 == c3: true
 c2 == c3: false
 ```
 
-## <a name="op_neq_unordered_multiset"></a> operator!= (multiset)
+## <a name="op_neq_unordered_multiset"></a> `operator!=` (multiset)
 
-Tests whether the [unordered_multiset](../standard-library/unordered-multiset-class.md) object on the left side of the operator is not equal to the unordered_multiset object on the right side.
+Tests whether the [`unordered_multiset`](unordered-multiset-class.md) object on the left side of the operator is not equal to the `unordered_multiset` object on the right side.
 
 ```cpp
 bool operator!=(const unordered_multiset <Key, Hash, Pred, Allocator>& left, const unordered_multiset <Key, Hash, Pred, Allocator>& right);
@@ -151,19 +150,19 @@ bool operator!=(const unordered_multiset <Key, Hash, Pred, Allocator>& left, con
 
 ### Parameters
 
-*left*\
+*`left`*\
 An object of type `unordered_multiset`.
 
-*right*\
+*`right`*\
 An object of type `unordered_multiset`.
 
 ### Return Value
 
-**`true`** if the unordered_multisets are not equal; **`false`** if they are equal.
+**`true`** if the `unordered_multiset`s are not equal; **`false`** if they are equal.
 
 ### Remarks
 
-The comparison between unordered_multiset objects is not affected by the arbitrary order in which they store their elements. Two unordered_multisets are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
+The comparison between `unordered_multiset` objects is not affected by the arbitrary order in which they store their elements. Two `unordered_multiset`s are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
 
 ### Example
 
@@ -210,9 +209,9 @@ c1 != c3: false
 c2 != c3: true
 ```
 
-## <a name="op_eq_eq_unordered_multiset"></a> operator== (multiset)
+## <a name="op_eq_eq_unordered_multiset"></a> `operator==` (multiset)
 
-Tests whether the [unordered_multiset](../standard-library/unordered-multiset-class.md) object on the left side of the operator is equal to the unordered_multiset object on the right side.
+Tests whether the [`unordered_multiset`](unordered-multiset-class.md) object on the left side of the operator is equal to the `unordered_multiset` object on the right side.
 
 ```cpp
 bool operator==(const unordered_multiset <Key, Hash, Pred, Allocator>& left, const unordered_multiset <Key, Hash, Pred, Allocator>& right);
@@ -220,19 +219,19 @@ bool operator==(const unordered_multiset <Key, Hash, Pred, Allocator>& left, con
 
 ### Parameters
 
-*left*\
+*`left`*\
 An object of type `unordered_multiset`.
 
-*right*\
+*`right`*\
 An object of type `unordered_multiset`.
 
 ### Return Value
 
-**`true`** if the unordered_multisets are equal; **`false`** if they are not equal.
+**`true`** if the `unordered_multiset`s are equal; **`false`** if they are not equal.
 
 ### Remarks
 
-The comparison between unordered_multiset objects is not affected by the arbitrary order in which they store their elements. Two unordered_multisets are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
+The comparison between `unordered_multiset` objects is not affected by the arbitrary order in which they store their elements. Two `unordered_multiset`s are equal if they have the same number of elements and the elements in one container are a permutation of the elements in the other container. Otherwise, they are unequal.
 
 ### Example
 
diff --git a/docs/standard-library/utc-clock-class.md b/docs/standard-library/utc-clock-class.md
index 285b3ce509..1521bfbe8e 100644
--- a/docs/standard-library/utc-clock-class.md
+++ b/docs/standard-library/utc-clock-class.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about: utc_clock class"
 title: "utc_clock class"
+description: "Learn more about: utc_clock class"
 ms.date: 07/27/2021
 f1_keywords: ["chrono/std::chrono::utc_clock", "chrono/std::chrono::utc_clock::now", "chrono/std::chrono::utc_clock::to_sys", "chrono/std::chrono::utc_clock::from_sys", "chrono/std::chrono::utc_clock::is_steady Constant"]
 helpviewer_keywords: ["std::chrono [C++], utc_clock"]
@@ -65,7 +65,7 @@ UTC time, by definition, starts out 10 seconds behind TAI (atomic time). 10 seco
 
 |Name|Description|
 |----------|-----------------|
-|[`utc_clock::is_steady constant]`(#is_steady_constant)|Indicates whether the clock type is steady. Its value is `false`.|
+|[`utc_clock::is_steady` constant](#is_steady_constant)|Indicates whether the clock type is steady. Its value is `false`.|
 
 ## Requirements
 
diff --git a/docs/standard-library/valarray-class.md b/docs/standard-library/valarray-class.md
index 1cc5c5087a..e51df41094 100644
--- a/docs/standard-library/valarray-class.md
+++ b/docs/standard-library/valarray-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: valarray Class"
 title: "valarray class"
+description: "Learn more about: valarray Class"
 ms.date: 06/20/2022
 f1_keywords: ["valarray/std::valarray", "valarray/std::valarray::value_type", "valarray/std::valarray::apply", "valarray/std::valarray::cshift", "valarray/std::valarray::free", "valarray/std::valarray::max", "valarray/std::valarray::min", "valarray/std::valarray::resize", "valarray/std::valarray::shift", "valarray/std::valarray::size", "valarray/std::valarray::sum", "valarray/std::valarray::swap"]
 helpviewer_keywords: ["std::valarray [C++]", "std::valarray [C++], value_type", "std::valarray [C++], apply", "std::valarray [C++], cshift", "std::valarray [C++], free", "std::valarray [C++], max", "std::valarray [C++], min", "std::valarray [C++], resize", "std::valarray [C++], shift", "std::valarray [C++], size", "std::valarray [C++], sum", "std::valarray [C++], swap"]
-ms.assetid: 19b862f9-5d09-4003-8844-6ddd02c1a3a7
 ms.custom: devdivchpfy22
 ---
 
@@ -1143,7 +1142,7 @@ int main( )
    for ( i = 0 ; i < 10 ; i += 1 )
       va [ i ] = i;
    for ( i = 0 ; i < 10 ; i+=1 )
-      vaR [ i ] = 10 -  i;
+      vaR [ i ] = 10 - i;
 
    cout << "The operand valarray va is:";
    for ( i = 0 ; i < 10 ; i++ )
@@ -1609,7 +1608,7 @@ int main( )
    for ( i = 0 ; i < 10 ; i += 1 )
       va1 [ i ] =  i;
    for ( i = 0 ; i < 10 ; i += 1 )
-      va2 [ i ] = 10 -  i;
+      va2 [ i ] = 10 - i;
 
    cout << "The operand valarray va1(10) is: ( ";
       for ( i = 0 ; i < 10 ; i++ )
diff --git a/docs/standard-library/vector-bool-class.md b/docs/standard-library/vector-bool-class.md
index ddfd8b5a20..8756473a9e 100644
--- a/docs/standard-library/vector-bool-class.md
+++ b/docs/standard-library/vector-bool-class.md
@@ -1,7 +1,7 @@
 ---
-description: "Learn more about: vector<bool> Class"
 title: "vector<bool> Class"
-ms.date: "11/04/2016"
+description: "Learn more about: vector<bool> Class"
+ms.date: 11/04/2016
 f1_keywords: ["vector<bool>", "vector/std::vector::flip"]
 helpviewer_keywords: ["std::vector [C++], const_pointer", "std::vector [C++], const_reference", "std::vector [C++], pointer", "std::vector [C++], flip", "std::vector [C++], swap"]
 ---
@@ -350,7 +350,7 @@ The original value of the 3rd element still stored in a bool: false
 
 ## <a name="swap"></a> `vector<bool>::swap`
 
-Static member function that exchanges two elements of Boolean vectors ( `vector<bool>`) by using the proxy class [`vector<bool>::reference`](#reference_class).
+Static member function that exchanges two elements of Boolean vectors (`vector<bool>`) by using the proxy class [`vector<bool>::reference`](#reference_class).
 
 ```cpp
 static void swap(
diff --git a/docs/standard-library/vector-class.md b/docs/standard-library/vector-class.md
index 85cb05379b..e715fe2ee4 100644
--- a/docs/standard-library/vector-class.md
+++ b/docs/standard-library/vector-class.md
@@ -13,13 +13,13 @@ The C++ Standard Library vector class is a class template for sequence container
 
 ```cpp
 template <class Type, class Allocator = allocator<Type>>
-class vector
+class vector;
 ```
 
 ### Parameters
 
 *`Type`*\
-The element data type to be stored in the vector
+The element data type to be stored in the vector.
 
 *`Allocator`*\
 The type that represents the stored allocator object that encapsulates details about the vector's allocation and deallocation of memory. This argument is optional and the default value is `allocator<Type>`.
@@ -46,7 +46,7 @@ The [`vector<bool>` reference class](../standard-library/vector-bool-class.md#re
 
 |Name|Description|
 |-|-|
-|`[allocator_type]`(#allocator_type)|A type that represents the `allocator` class for the vector object.|
+|[`allocator_type`](#allocator_type)|A type that represents the `allocator` class for the vector object.|
 |[`const_iterator`](#const_iterator)|A type that provides a random-access iterator that can read a **`const`** element in a vector.|
 |[`const_pointer`](#const_pointer)|A type that provides a pointer to a **`const`** element in a vector.|
 |[`const_reference`](#const_reference)|A type that provides a reference to a **`const`** element stored in a vector. It's used for reading and doing **`const`** operations.|
@@ -152,7 +152,7 @@ First, `assign` erases any existing elements in a vector. Then, `assign` either
 ### Example
 
 ```cpp
-/ vector_assign.cpp
+// vector_assign.cpp
 // compile with: /EHsc
 #include <vector>
 #include <iostream>
@@ -169,33 +169,45 @@ int main()
     v1.push_back(50);
 
     cout << "v1 = ";
-    for (auto& v : v1){
+    for (auto& v : v1)
+    {
         cout << v << " ";
     }
     cout << endl;
 
     v2.assign(v1.begin(), v1.end());
     cout << "v2 = ";
-    for (auto& v : v2){
+    for (auto& v : v2)
+    {
         cout << v << " ";
     }
     cout << endl;
 
     v3.assign(7, 4);
     cout << "v3 = ";
-    for (auto& v : v3){
+    for (auto& v : v3)
+    {
         cout << v << " ";
     }
     cout << endl;
 
     v3.assign({ 5, 6, 7 });
-    for (auto& v : v3){
+    cout << "v3 = ";
+    for (auto& v : v3)
+    {
         cout << v << " ";
     }
     cout << endl;
 }
 ```
 
+```Output
+v1 = 10 20 30 40 50
+v2 = 10 20 30 40 50
+v3 = 4 4 4 4 4 4 4
+v3 = 5 6 7
+```
+
 ## <a name="at"></a> `at`
 
 Returns a reference to the element at a specified location in the vector.
@@ -227,18 +239,18 @@ If the return value of `at` is assigned to a `const_reference`, the vector objec
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 20 );
+    v1.push_back(10);
+    v1.push_back(20);
 
-   const int &i = v1.at( 0 );
-   int &j = v1.at( 1 );
-   cout << "The first element is " << i << endl;
-   cout << "The second element is " << j << endl;
+    const int &i = v1.at(0);
+    int &j = v1.at(1);
+    cout << "The first element is " << i << endl;
+    cout << "The second element is " << j << endl;
 }
 ```
 
@@ -275,22 +287,28 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de
 #include <vector>
 #include <iostream>
 
-int main() {
-   using namespace std;
-   vector <int> v1;
+int main()
+{
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 11 );
+    v1.push_back(10);
+    v1.push_back(11);
 
-   int& i = v1.back( );
-   const int& ii = v1.front( );
+    int& i = v1.back();
+    const int& ii = v1.front();
 
-   cout << "The last integer of v1 is " << i << endl;
-   i--;
-   cout << "The next-to-last integer of v1 is "<< ii << endl;
+    cout << "The last integer of v1 is " << i << endl;
+    i--;
+    cout << "The next-to-last integer of v1 is " << ii << endl;
 }
 ```
 
+```Output
+The last integer of v1 is 11
+The next-to-last integer of v1 is 10
+```
+
 ## <a name="begin"></a> `begin`
 
 Returns a random-access iterator to the first element in the vector.
@@ -378,18 +396,18 @@ The member function [`resize`](#resize) will be more efficient if sufficient mem
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 1 );
-   cout << "The length of storage allocated is "
-        << v1.capacity( ) << "." << endl;
+    v1.push_back(1);
+    cout << "The length of storage allocated is "
+        << v1.capacity() << "." << endl;
 
-   v1.push_back( 2 );
-   cout << "The length of storage allocated is now "
-        << v1.capacity( ) << "." << endl;
+    v1.push_back(2);
+    cout << "The length of storage allocated is now "
+        << v1.capacity() << "." << endl;
 }
 ```
 
@@ -419,8 +437,8 @@ You can use this member function in place of the `begin()` member function to gu
 ```cpp
 auto i1 = Container.begin();
 // i1 is Container<T>::iterator
-auto i2 = Container.cbegin();
 
+auto i2 = Container.cbegin();
 // i2 is Container<T>::const_iterator
 ```
 
@@ -445,8 +463,8 @@ You can use this member function in place of the `end()` member function to guar
 ```cpp
 auto i1 = Container.end();
 // i1 is Container<T>::iterator
-auto i2 = Container.cend();
 
+auto i2 = Container.cend();
 // i2 is Container<T>::const_iterator
 ```
 
@@ -468,18 +486,18 @@ void clear();
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 20 );
-   v1.push_back( 30 );
+    v1.push_back(10);
+    v1.push_back(20);
+    v1.push_back(30);
 
-   cout << "The size of v1 is " << v1.size( ) << endl;
-   v1.clear( );
-   cout << "The size of v1 after clearing is " << v1.size( ) << endl;
+    cout << "The size of v1 is " << v1.size() << endl;
+    v1.clear();
+    cout << "The size of v1 after clearing is " << v1.size() << endl;
 }
 ```
 
@@ -538,22 +556,22 @@ A type `const_reference` can't be used to modify the value of an element.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 20 );
+    v1.push_back(10);
+    v1.push_back(20);
 
-   const vector <int> v2 = v1;
-   const int &i = v2.front( );
-   const int &j = v2.back( );
-   cout << "The first element is " << i << endl;
-   cout << "The second element is " << j << endl;
+    const vector<int> v2 = v1;
+    const int& i = v2.front();
+    const int& j = v2.back();
+    cout << "The first element is " << i << endl;
+    cout << "The second element is " << j << endl;
 
-   // The following line would cause an error as v2 is const
-   // v2.push_back( 30 );
+    // The following line would cause an error as v2 is const
+    // v2.push_back(30);
 }
 ```
 
@@ -602,22 +620,22 @@ With the return value of `crbegin`, the `vector` object can't be modified.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator v1_Iter;
-   vector <int>::const_reverse_iterator v1_rIter;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator v1_Iter;
+    vector<int>::const_reverse_iterator v1_rIter;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
+    v1.push_back(1);
+    v1.push_back(2);
 
-   v1_Iter = v1.begin( );
-   cout << "The first element of vector is "
+    v1_Iter = v1.begin();
+    cout << "The first element of vector is "
         << *v1_Iter << "." << endl;
 
-   v1_rIter = v1.crbegin( );
-   cout << "The first element of the reversed vector is "
+    v1_rIter = v1.crbegin();
+    cout << "The first element of the reversed vector is "
         << *v1_rIter << "." << endl;
 }
 ```
@@ -657,17 +675,17 @@ The value returned by `crend` shouldn't be dereferenced. Only use it for compari
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::const_reverse_iterator v1_rIter;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::const_reverse_iterator v1_rIter;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
+    v1.push_back(1);
+    v1.push_back(2);
 
-   for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ )
-      cout << *v1_rIter << endl;
+    for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++)
+        cout << *v1_rIter << endl;
 }
 ```
 
@@ -755,31 +773,31 @@ An [iterator](#iterator) is more commonly used to access a vector element.
 #include <vector>
 #include <algorithm>
 
-int main( )
+int main()
 {
-   using namespace std;
+    using namespace std;
 
-   vector <int> c1;
-   vector <int>::iterator c1_Iter, c2_Iter;
+    vector<int> c1;
+    vector<int>::iterator c1_Iter, c2_Iter;
 
-   c1.push_back( 30 );
-   c1.push_back( 20 );
-   c1.push_back( 30 );
-   c1.push_back( 10 );
-   c1.push_back( 30 );
-   c1.push_back( 20 );
+    c1.push_back(30);
+    c1.push_back(20);
+    c1.push_back(30);
+    c1.push_back(10);
+    c1.push_back(30);
+    c1.push_back(20);
 
-   c1_Iter = c1.begin( );
-   c2_Iter = c1.end( );
+    c1_Iter = c1.begin();
+    c2_Iter = c1.end();
 
-   vector <int>::difference_type   df_typ1, df_typ2, df_typ3;
+    vector<int>::difference_type df_typ1, df_typ2, df_typ3;
 
-   df_typ1 = count( c1_Iter, c2_Iter, 10 );
-   df_typ2 = count( c1_Iter, c2_Iter, 20 );
-   df_typ3 = count( c1_Iter, c2_Iter, 30 );
-   cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
-   cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
-   cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
+    df_typ1 = count(c1_Iter, c2_Iter, 10);
+    df_typ2 = count(c1_Iter, c2_Iter, 20);
+    df_typ3 = count(c1_Iter, c2_Iter, 30);
+    cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
+    cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
+    cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
 }
 ```
 
@@ -824,32 +842,32 @@ Any insertion operation can be expensive, see [`vector` class](../standard-libra
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator Iter;
-
-   v1.push_back( 10 );
-   v1.push_back( 20 );
-   v1.push_back( 30 );
-
-   cout << "v1 =" ;
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-// initialize a vector of vectors by moving v1
-   vector < vector <int> > vv1;
-
-   vv1.emplace( vv1.begin(), move( v1 ) );
-   if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
-      {
-      cout << "vv1[0] =";
-      for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ )
-         cout << " " << *Iter;
-      cout << endl;
-      }
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator Iter;
+
+    v1.push_back(10);
+    v1.push_back(20);
+    v1.push_back(30);
+
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    // initialize a vector of vectors by moving v1
+    vector<vector<int>> vv1;
+
+    vv1.emplace(vv1.begin(), move(v1));
+    if (vv1.size() != 0 && vv1[0].size() != 0)
+    {
+        cout << "vv1[0] =";
+        for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++)
+            cout << " " << *Iter;
+        cout << endl;
+    }
 }
 ```
 
@@ -876,15 +894,16 @@ Constructor arguments. The function infers which constructor overload to invoke
 
 ```cpp
 #include <vector>
+
 struct obj
 {
-   obj(int, double) {}
+    obj(int, double) {}
 };
 
 int main()
 {
-   std::vector<obj> v;
-   v.emplace_back(1, 3.14); // obj in created in place in the vector
+    std::vector<obj> v;
+    v.emplace_back(1, 3.14); // obj in created in place in the vector
 }
 ```
 
@@ -908,17 +927,17 @@ bool empty() const;
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
+    v1.push_back(10);
 
-   if ( v1.empty( ) )
-      cout << "The vector is empty." << endl;
-   else
-      cout << "The vector is not empty." << endl;
+    if (v1.empty())
+        cout << "The vector is empty." << endl;
+    else
+        cout << "The vector is not empty." << endl;
 }
 ```
 
@@ -951,17 +970,18 @@ If the return value of `end` is assigned to a variable of type `const_iterator`,
 // compile with: /EHsc
 #include <vector>
 #include <iostream>
-int main( )
+
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator v1_Iter;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator v1_Iter;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
+    v1.push_back(1);
+    v1.push_back(2);
 
-   for ( v1_Iter = v1.begin( ) ; v1_Iter != v1.end( ) ; v1_Iter++ )
-      cout << *v1_Iter << endl;
+    for (v1_Iter = v1.begin(); v1_Iter != v1.end(); v1_Iter++)
+        cout << *v1_Iter << endl;
 }
 ```
 
@@ -1006,34 +1026,34 @@ An iterator that designates the first element remaining beyond any elements remo
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator Iter;
-
-   v1.push_back( 10 );
-   v1.push_back( 20 );
-   v1.push_back( 30 );
-   v1.push_back( 40 );
-   v1.push_back( 50 );
-
-   cout << "v1 =" ;
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-   v1.erase( v1.begin( ) );
-   cout << "v1 =";
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-   v1.erase( v1.begin( ) + 1, v1.begin( ) + 3 );
-   cout << "v1 =";
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator Iter;
+
+    v1.push_back(10);
+    v1.push_back(20);
+    v1.push_back(30);
+    v1.push_back(40);
+    v1.push_back(50);
+
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    v1.erase(v1.begin());
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    v1.erase(v1.begin() + 1, v1.begin() + 3);
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
 }
 ```
 
@@ -1071,24 +1091,28 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 11 );
+    v1.push_back(10);
+    v1.push_back(11);
 
-   int& i = v1.front( );
-   const int& ii = v1.front( );
+    int& i = v1.front();
 
-   cout << "The first integer of v1 is "<< i << endl;
-   // by incrementing i, we move the front reference to the second element
-   i++;
-   cout << "Now, the first integer of v1 is "<< i << endl;
+    cout << "The first integer of v1 is " << i << endl;
+    // by incrementing i, we move the front reference to the second element
+    i++;
+    cout << "Now, the first integer of v1 is " << i << endl;
 }
 ```
 
+```Output
+The first integer of v1 is 10
+Now, the first integer of v1 is 11
+```
+
 ## <a name="get_allocator"></a> `get_allocator`
 
 Returns a copy of the allocator object used to construct the vector.
@@ -1111,20 +1135,19 @@ Allocators for the vector class specify how the class manages storage. The defau
 // vector_get_allocator.cpp
 // compile with: /EHsc
 #include <vector>
-#include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   // The following lines declare objects that use the default allocator.
-   vector<int> v1;
-   vector<int, allocator<int> > v2 = vector<int, allocator<int> >(allocator<int>( )) ;
+    using namespace std;
+    // The following lines declare objects that use the default allocator.
+    vector<int> v1;
+    vector<int, allocator<int>> v2 = vector<int, allocator<int>>(allocator<int>());
 
-   // v3 will use the same allocator class as v1
-   vector <int> v3( v1.get_allocator( ) );
+    // v3 will use the same allocator class as v1
+    vector<int> v3(v1.get_allocator());
 
-   vector<int>::allocator_type xvec = v3.get_allocator( );
-   // You can now call functions on the allocator class used by vec
+    vector<int>::allocator_type xvec = v3.get_allocator();
+    // You can now call functions on the allocator class used by vec
 }
 ```
 
@@ -1186,51 +1209,51 @@ As a precondition, *`first`* and *`last`* must not be iterators into the vector,
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator Iter;
-
-   v1.push_back( 10 );
-   v1.push_back( 20 );
-   v1.push_back( 30 );
-
-   cout << "v1 =" ;
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-   v1.insert( v1.begin( ) + 1, 40 );
-   cout << "v1 =";
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-   v1.insert( v1.begin( ) + 2, 4, 50 );
-
-   cout << "v1 =";
-   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-   const auto v2 = v1;
-   v1.insert( v1.begin( )+1, v2.begin( )+2, v2.begin( )+4 );
-   cout << "v1 =";
-   for (Iter = v1.begin( ); Iter != v1.end( ); Iter++ )
-      cout << " " << *Iter;
-   cout << endl;
-
-// initialize a vector of vectors by moving v1
-   vector < vector <int> > vv1;
-
-   vv1.insert( vv1.begin(), move( v1 ) );
-   if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
-      {
-      cout << "vv1[0] =";
-      for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ )
-         cout << " " << *Iter;
-      cout << endl;
-      }
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator Iter;
+
+    v1.push_back(10);
+    v1.push_back(20);
+    v1.push_back(30);
+
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    v1.insert(v1.begin() + 1, 40);
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+    v1.insert(v1.begin() + 2, 4, 50);
+
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    const auto v2 = v1;
+    v1.insert(v1.begin() + 1, v2.begin() + 2, v2.begin() + 4);
+    cout << "v1 =";
+    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
+        cout << " " << *Iter;
+    cout << endl;
+
+    // initialize a vector of vectors by moving v1
+    vector<vector<int>> vv1;
+
+    vv1.insert(vv1.begin(), move(v1));
+    if (vv1.size() != 0 && vv1[0].size() != 0)
+    {
+        cout << "vv1[0] =";
+        for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++)
+            cout << " " << *Iter;
+        cout << endl;
+    }
 }
 ```
 
@@ -1278,17 +1301,21 @@ The maximum possible length of the vector.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::size_type i;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::size_type i;
 
-   i = v1.max_size( );
-   cout << "The maximum possible length of the vector is " << i << "." << endl;
+    i = v1.max_size();
+    cout << "The maximum possible length of the vector is " << i << "." << endl;
 }
 ```
 
+```Output
+The maximum possible length of the vector is 4611686018427387903.
+```
+
 ## <a name="op_at"></a> `operator[]`
 
 Returns a reference to the vector element at a specified position.
@@ -1322,19 +1349,23 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
+    using namespace std;
+    vector<int> v1;
 
-   v1.push_back( 10 );
-   v1.push_back( 20 );
+    v1.push_back(10);
+    v1.push_back(20);
 
-   int& i = v1[1];
-   cout << "The second integer of v1 is " << i << endl;
+    int& i = v1[1];
+    cout << "The second integer of v1 is " << i << endl;
 }
 ```
 
+```Output
+The second integer of v1 is 20
+```
+
 ## <a name="op_eq"></a> `operator=`
 
 Replaces the elements of the vector with a copy of another vector.
@@ -1362,39 +1393,45 @@ After erasing any existing elements in a `vector`, `operator=` either copies or
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector<int> v1, v2, v3;
-   vector<int>::iterator iter;
-
-   v1.push_back(10);
-   v1.push_back(20);
-   v1.push_back(30);
-   v1.push_back(40);
-   v1.push_back(50);
-
-   cout << "v1 = " ;
-   for (iter = v1.begin(); iter != v1.end(); iter++)
-      cout << *iter << " ";
-   cout << endl;
-
-   v2 = v1;
-   cout << "v2 = ";
-   for (iter = v2.begin(); iter != v2.end(); iter++)
-      cout << *iter << " ";
-   cout << endl;
-
-// move v1 into v2
-   v2.clear();
-   v2 = move(v1);
-   cout << "v2 = ";
-   for (iter = v2.begin(); iter != v2.end(); iter++)
-      cout << *iter << " ";
-   cout << endl;
+    using namespace std;
+    vector<int> v1, v2, v3;
+    vector<int>::iterator iter;
+
+    v1.push_back(10);
+    v1.push_back(20);
+    v1.push_back(30);
+    v1.push_back(40);
+    v1.push_back(50);
+
+    cout << "v1 = ";
+    for (iter = v1.begin(); iter != v1.end(); iter++)
+        cout << *iter << " ";
+    cout << endl;
+
+    v2 = v1;
+    cout << "v2 = ";
+    for (iter = v2.begin(); iter != v2.end(); iter++)
+        cout << *iter << " ";
+    cout << endl;
+
+    // move v1 into v2
+    v2.clear();
+    v2 = move(v1);
+    cout << "v2 = ";
+    for (iter = v2.begin(); iter != v2.end(); iter++)
+        cout << *iter << " ";
+    cout << endl;
 }
 ```
 
+```Output
+v1 = 10 20 30 40 50
+v2 = 10 20 30 40 50
+v2 = 10 20 30 40 50
+```
+
 ## <a name="pointer"></a> `pointer`
 
 A type that provides a pointer to an element in a vector.
@@ -1415,12 +1452,12 @@ A type **`pointer`** can be used to modify the value of an element.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
     using namespace std;
     vector<int> v;
-    v.push_back( 11 );
-    v.push_back( 22 );
+    v.push_back(11);
+    v.push_back(22);
 
     vector<int>::pointer ptr = &v[0];
     cout << *ptr << endl;
@@ -1473,14 +1510,19 @@ The value to assign to the element added to the end of the vector.
 
 using namespace std;
 
-template <typename T> void print_elem(const T& t) {
+template <typename T>
+void print_elem(const T& t)
+{
     cout << "(" << t << ") ";
 }
 
-template <typename T> void print_collection(const T& t) {
+template <typename T>
+void print_collection(const T& t)
+{
     cout << "  " << t.size() << " elements: ";
 
-    for (const auto& p : t) {
+    for (const auto& p : t)
+    {
         print_elem(p);
     }
     cout << endl;
@@ -1489,7 +1531,8 @@ template <typename T> void print_collection(const T& t) {
 int main()
 {
     vector<int> v;
-    for (int i = 0; i < 10; ++i) {
+    for (int i = 0; i < 10; ++i)
+    {
         v.push_back(10 + i);
     }
 
@@ -1497,13 +1540,31 @@ int main()
     print_collection(v);
 
     // pop_back() until it's empty, printing the last element as we go
-    while (v.begin() != v.end()) {
-        cout << "v.back(): "; print_elem(v.back()); cout << endl;
+    while (v.begin() != v.end())
+    {
+        cout << "v.back(): ";
+        print_elem(v.back());
+        cout << endl;
         v.pop_back();
     }
 }
 ```
 
+```Output
+vector data:
+  10 elements: (10) (11) (12) (13) (14) (15) (16) (17) (18) (19)
+v.back(): (19)
+v.back(): (18)
+v.back(): (17)
+v.back(): (16)
+v.back(): (15)
+v.back(): (14)
+v.back(): (13)
+v.back(): (12)
+v.back(): (11)
+v.back(): (10)
+```
+
 ## <a name="rbegin"></a> `rbegin`
 
 Returns an iterator to the first element in a reversed vector.
@@ -1529,22 +1590,22 @@ If the return value of `rbegin` is assigned to a `const_reverse_iterator`, the v
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::iterator v1_Iter;
-   vector <int>::reverse_iterator v1_rIter;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::iterator v1_Iter;
+    vector<int>::reverse_iterator v1_rIter;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
+    v1.push_back(1);
+    v1.push_back(2);
 
-   v1_Iter = v1.begin( );
-   cout << "The first element of vector is "
+    v1_Iter = v1.begin();
+    cout << "The first element of vector is "
         << *v1_Iter << "." << endl;
 
-   v1_rIter = v1.rbegin( );
-   cout << "The first element of the reversed vector is "
+    v1_rIter = v1.rbegin();
+    cout << "The first element of the reversed vector is "
         << *v1_rIter << "." << endl;
 }
 ```
@@ -1597,17 +1658,17 @@ The value returned by `rend` shouldn't be dereferenced. Only use it for comparis
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::reverse_iterator v1_rIter;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::reverse_iterator v1_rIter;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
+    v1.push_back(1);
+    v1.push_back(2);
 
-   for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ )
-      cout << *v1_rIter << endl;
+    for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++)
+        cout << *v1_rIter << endl;
 }
 ```
 
@@ -1637,18 +1698,17 @@ The minimum length of storage to be allocated for the vector.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   //vector <int>::iterator Iter;
-
-   v1.push_back( 1 );
-   cout << "Current capacity of v1 = "
-      << v1.capacity( ) << endl;
-   v1.reserve( 20 );
-   cout << "Current capacity of v1 = "
-      << v1.capacity( ) << endl;
+    using namespace std;
+    vector<int> v1;
+
+    v1.push_back(1);
+    cout << "Current capacity of v1 = "
+        << v1.capacity() << endl;
+    v1.reserve(20);
+    cout << "Current capacity of v1 = "
+        << v1.capacity() << endl;
 }
 ```
 
@@ -1721,16 +1781,20 @@ If the container's size is less than the requested size, *`new_size`*, `resize`
 
 using namespace std;
 
-template <typename C> void print(const string& s, const C& c) {
+template <typename C>
+void print(const string& s, const C& c)
+{
     cout << s;
 
-    for (const auto& e : c) {
+    for (const auto& e : c)
+    {
         cout << e << " ";
     }
     cout << endl;
 }
 
-void printvstats(const vector<int>& v) {
+void printvstats(const vector<int>& v)
+{
     cout << "   the vector's size is: " << v.size() << endl;
     cout << "   the vector's capacity is: " << v.capacity() << endl;
     cout << "   the vector's maximum size is: " << v.max_size() << endl;
@@ -1742,7 +1806,7 @@ int main()
     vector<int> v;
 
     // Show statistics about vector.
-    cout << endl << "After declaring an empty vector:" << endl;
+    cout << "After declaring an empty vector:" << endl;
     printvstats(v);
     print("   the vector's contents: ", v);
 
@@ -1752,7 +1816,8 @@ int main()
     printvstats(v);
     print("   the vector's contents: ", v);
 
-    for (int i = 1; i < 10; ++i) {
+    for (int i = 1; i < 10; ++i)
+    {
         v.push_back(i);
     }
     cout << endl << "After adding 10 elements:" << endl;
@@ -1786,6 +1851,54 @@ int main()
 }
 ```
 
+```Output
+After declaring an empty vector:
+   the vector's size is: 0
+   the vector's capacity is: 0
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents:
+
+After adding an element:
+   the vector's size is: 1
+   the vector's capacity is: 1
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents: -1
+
+After adding 10 elements:
+   the vector's size is: 10
+   the vector's capacity is: 13
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents: -1 1 2 3 4 5 6 7 8 9
+
+After resizing to 6 elements without an initialization value:
+   the vector's size is: 6
+   the vector's capacity is: 13
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents: -1 1 2 3 4 5
+
+After resizing to 9 elements with an initialization value of 999:
+   the vector's size is: 9
+   the vector's capacity is: 13
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents: -1 1 2 3 4 5 999 999 999
+
+After resizing to 12 elements without an initialization value:
+   the vector's size is: 12
+   the vector's capacity is: 13
+   the vector's maximum size is: 4611686018427387903
+   the vector's contents: -1 1 2 3 4 5 999 999 999 0 0 0
+
+After vector::reserve(1000):
+   the vector's size is: 12
+   the vector's capacity is: 1000
+   the vector's maximum size is: 4611686018427387903
+
+After vector::resize(2000):
+   the vector's size is: 2000
+   the vector's capacity is: 2000
+   the vector's maximum size is: 4611686018427387903
+```
+
 ## <a name="reverse_iterator"></a> `reverse_iterator`
 
 A type that provides a random-access iterator that can read or modify any element in a reversed vector.
@@ -1818,21 +1931,20 @@ void shrink_to_fit();
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   //vector <int>::iterator Iter;
-
-   v1.push_back( 1 );
-   cout << "Current capacity of v1 = "
-      << v1.capacity( ) << endl;
-   v1.reserve( 20 );
-   cout << "Current capacity of v1 = "
-      << v1.capacity( ) << endl;
-   v1.shrink_to_fit();
-   cout << "Current capacity of v1 = "
-      << v1.capacity( ) << endl;
+    using namespace std;
+    vector<int> v1;
+
+    v1.push_back(1);
+    cout << "Current capacity of v1 = "
+        << v1.capacity() << endl;
+    v1.reserve(20);
+    cout << "Current capacity of v1 = "
+        << v1.capacity() << endl;
+    v1.shrink_to_fit();
+    cout << "Current capacity of v1 = "
+        << v1.capacity() << endl;
 }
 ```
 
@@ -1862,19 +1974,19 @@ The current length of the vector.
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1;
-   vector <int>::size_type i;
+    using namespace std;
+    vector<int> v1;
+    vector<int>::size_type i;
 
-   v1.push_back( 1 );
-   i = v1.size( );
-   cout << "Vector length is " << i << "." << endl;
+    v1.push_back(1);
+    i = v1.size();
+    cout << "Vector length is " << i << "." << endl;
 
-   v1.push_back( 2 );
-   i = v1.size( );
-   cout << "Vector length is now " << i << "." << endl;
+    v1.push_back(2);
+    i = v1.size();
+    cout << "Vector length is now " << i << "." << endl;
 }
 ```
 
@@ -1924,26 +2036,26 @@ A vector whose elements are to be exchanged with the elements in the vector *`ri
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector <int> v1, v2;
+    using namespace std;
+    vector<int> v1, v2;
 
-   v1.push_back( 1 );
-   v1.push_back( 2 );
-   v1.push_back( 3 );
+    v1.push_back(1);
+    v1.push_back(2);
+    v1.push_back(3);
 
-   v2.push_back( 10 );
-   v2.push_back( 20 );
+    v2.push_back(10);
+    v2.push_back(20);
 
-   cout << "The number of elements in v1 = " << v1.size( ) << endl;
-   cout << "The number of elements in v2 = " << v2.size( ) << endl;
-   cout << endl;
+    cout << "The number of elements in v1 = " << v1.size() << endl;
+    cout << "The number of elements in v2 = " << v2.size() << endl;
+    cout << endl;
 
-   v1.swap( v2 );
+    v1.swap(v2);
 
-   cout << "The number of elements in v1 = " << v1.size( ) << endl;
-   cout << "The number of elements in v2 = " << v2.size( ) << endl;
+    cout << "The number of elements in v1 = " << v1.size() << endl;
+    cout << "The number of elements in v2 = " << v2.size() << endl;
 }
 ```
 
@@ -1975,12 +2087,12 @@ typedef typename Allocator::value_type value_type;
 #include <vector>
 #include <iostream>
 
-int main( )
+int main()
 {
-   using namespace std;
-   vector<int>::value_type AnInt;
-   AnInt = 44;
-   cout << AnInt << endl;
+    using namespace std;
+    vector<int>::value_type AnInt;
+    AnInt = 44;
+    cout << AnInt << endl;
 }
 ```
 
@@ -2061,82 +2173,92 @@ The ninth and tenth constructors copy the range [`first`, `last`) of a vector.
 int main()
 {
     using namespace std;
-    vector <int>::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter;
+    vector<int>::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter;
 
     // Create an empty vector v0
-    vector <int> v0;
+    vector<int> v0;
 
     // Create a vector v1 with 3 elements of default value 0
-    vector <int> v1(3);
+    vector<int> v1(3);
 
     // Create a vector v2 with 5 elements of value 2
-    vector <int> v2(5, 2);
+    vector<int> v2(5, 2);
 
     // Create a vector v3 with 3 elements of value 1 and with the allocator
     // of vector v2
-    vector <int> v3(3, 1, v2.get_allocator());
+    vector<int> v3(3, 1, v2.get_allocator());
 
     // Create a copy, vector v4, of vector v2
-    vector <int> v4(v2);
+    vector<int> v4(v2);
 
     // Create a new temporary vector for demonstrating copying ranges
-    vector <int> v5(5);
-    for (auto i : v5) {
+    vector<int> v5(5);
+    for (auto i : v5)
+    {
         v5[i] = i;
     }
 
     // Create a vector v6 by copying the range v5[ first,  last)
-    vector <int> v6(v5.begin() + 1, v5.begin() + 3);
+    vector<int> v6(v5.begin() + 1, v5.begin() + 3);
 
     cout << "v1 =";
-    for (auto& v : v1){
+    for (auto& v : v1)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     cout << "v2 =";
-    for (auto& v : v2){
+    for (auto& v : v2)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     cout << "v3 =";
-    for (auto& v : v3){
+    for (auto& v : v3)
+    {
         cout << " " << v;
     }
     cout << endl;
+
     cout << "v4 =";
-    for (auto& v : v4){
+    for (auto& v : v4)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     cout << "v5 =";
-    for (auto& v : v5){
+    for (auto& v : v5)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     cout << "v6 =";
-    for (auto& v : v6){
+    for (auto& v : v6)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     // Move vector v2 to vector v7
-    vector <int> v7(move(v2));
-    vector <int>::iterator v7_Iter;
+    vector<int> v7(move(v2));
+    vector<int>::iterator v7_Iter;
 
     cout << "v7 =";
-    for (auto& v : v7){
+    for (auto& v : v7)
+    {
         cout << " " << v;
     }
     cout << endl;
 
     cout << "v8 =";
     vector<int> v8{ { 1, 2, 3, 4 } };
-    for (auto& v : v8){
-        cout << " " << v ;
+    for (auto& v : v8)
+    {
+        cout << " " << v;
     }
     cout << endl;
 }
diff --git a/docs/standard-library/view-classes.md b/docs/standard-library/view-classes.md
index 2a37ddfa86..9d03ecae51 100644
--- a/docs/standard-library/view-classes.md
+++ b/docs/standard-library/view-classes.md
@@ -1,6 +1,6 @@
 ---
-description: "Learn more about the ranges view classes, which allow you to inexpensively transform ranges."
 title: "View classes"
+description: "Learn more about the ranges view classes, which allow you to inexpensively transform ranges."
 ms.date: 12/20/2022
 f1_keywords: ["RANGES/std::ranges::views", "RANGES/std::views"]
 helpviewer_keywords: ["RANGES/VIEWS/std", "VIEWS/std"]
@@ -51,7 +51,7 @@ Using a view after the range that it's based on is modified can lead to undefine
 Because views are cheap to create, you should generally re-create a view if you modify the underlying range. The following example demonstrates how to store a view pipeline in a variable so that you can reuse it.
 
 ```cpp
-// requires /std:c++20, or later
+// requires /std:c++20 or later
 #include <iostream>
 #include <ranges>
 #include <vector>
@@ -123,7 +123,7 @@ The following view classes are defined in the `std::ranges` namespace.
 | [`transform_view`](transform-view-class.md)<sup>C++20</sup> | A view of an underlying sequence after a transformation function is applied to each element. |
 | [`values_view`](values-view-class.md)<sup>C++20</sup> | A view over the second index into each tuple-like value in a collection. For example, given a range of `std::tuple<string, int>` values, create a view that consists of the `int` elements from each tuple. |
 
-Many of these classes have corresponding [range adaptors](range-adaptors.md) in the `std:views` namespace that creates instances of them. Prefer using an adaptor to create a view instead of creating view classes directly. The range adaptors are the intended way to create views, are easier to use, and in some cases are more efficient.
+Many of these classes have corresponding [range adaptors](range-adaptors.md) in the `std::views` namespace that creates instances of them. Prefer using an adaptor to create a view instead of creating view classes directly. The range adaptors are the intended way to create views, are easier to use, and in some cases are more efficient.
 
 ## View classes characteristics
 
diff --git a/docs/standard-library/wbuffer-convert-class.md b/docs/standard-library/wbuffer-convert-class.md
index b1f8f7691b..060e7db84f 100644
--- a/docs/standard-library/wbuffer-convert-class.md
+++ b/docs/standard-library/wbuffer-convert-class.md
@@ -20,7 +20,7 @@ class wbuffer_convert
 ### Parameters
 
 *`Codecvt`*\
-The [`locale`](../standard-library/locale-class.md) facet that represents the conversion object.
+The [`locale`](locale-class.md) facet that represents the conversion object.
 
 *`Elem`*\
 The wide-character element type.
@@ -36,5 +36,5 @@ Conversion between a sequence of `Elem` values and multibyte sequences is perfor
 
 An object of this class template stores:
 
-- A pointer to its underlying byte stream buffer.\
+- A pointer to its underlying byte stream buffer.
 - A pointer to an allocated conversion facet object, which is freed when the `wbuffer_convert` is destroyed.
diff --git a/docs/standard-library/weekday-class.md b/docs/standard-library/weekday-class.md
index dc7d918278..8088e3b8b6 100644
--- a/docs/standard-library/weekday-class.md
+++ b/docs/standard-library/weekday-class.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: weekday Class"
 title: "weekday class"
-ms.date: "6/25/2021"
+description: "Learn more about: weekday Class"
+ms.date: 6/25/2021
 f1_keywords: ["chrono/std::chrono::weekday", "chrono/std::chrono::weekday::January", "chrono/std::chrono::weekday::February", "chrono/std::chrono::weekday::March","chrono/std::chrono::weekday::April","chrono/std::chrono::weekday::May","chrono/std::chrono::weekday::June","chrono/std::chrono::weekday::July","chrono/std::chrono::weekday::August","chrono/std::chrono::weekday::September","chrono/std::chrono::weekday::October","chrono/std::chrono::weekday::November","chrono/std::chrono::weekday::December","chrono/std::chrono::weekday::operator++", "chrono/std::chrono::weekday::operator--", "chrono/std::chrono::weekday::operator unsigned", "chrono/std::chrono::weekday::ok", "chrono/std::chrono::weekday::iso_encoding", "chrono/std::chrono::weekday::c_encoding"]
 helpviewer_keywords: ["std::chrono [C++], weekday"]
 ---
-# `weekday` class  
+# `weekday` class
 
 Represents a day of the week in the [Gregorian calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). For example, Tuesday.
 
@@ -238,7 +238,7 @@ constexpr weekday& operator+=(const days& d) noexcept;
 
 ### Parameters
 
-`*d*`\
+*`d`*\
 The number of days to add.
 
 ### Return value
@@ -255,7 +255,7 @@ constexpr weekday& operator-=(const days& d) noexcept;
 
 ### Parameters
 
-`*d*`\
+*`d`*\
 The number of days to subtract.
 
 ### Return value
diff --git a/docs/standard-library/weekdayindexed-class.md b/docs/standard-library/weekdayindexed-class.md
index 9a16b9c3f5..0bd80a8920 100644
--- a/docs/standard-library/weekdayindexed-class.md
+++ b/docs/standard-library/weekdayindexed-class.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: weekday_indexed Class"
 title: "weekday_indexed class"
-ms.date: "06/25/2021"
+description: "Learn more about: weekday_indexed Class"
+ms.date: 06/25/2021
 f1_keywords: ["chrono/std::chrono::weekday_indexed", "chrono/std::chrono::weekday_indexed::ok", "std::chrono::weekday_indexed::weekday", "std::chrono::weekday_indexed::ok"]
 helpviewer_keywords: ["std::chrono [C++], weekday_indexed"]
 ---
-# `weekday_indexed` class  
+# `weekday_indexed` class
 
 Combines a weekday, representing a day of the week in the Gregorian calendar, with an index in the range [1, 5] that represents the weekday of the month (1st, 2nd, 3rd, and so on).
 
diff --git a/docs/standard-library/weekdaylast-class.md b/docs/standard-library/weekdaylast-class.md
index 477069cd66..ab0b3dff1e 100644
--- a/docs/standard-library/weekdaylast-class.md
+++ b/docs/standard-library/weekdaylast-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: weekday_last Class"
 title: "weekday_last class"
-ms.date: "06/28/2021"
+description: "Learn more about: weekday_last Class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::weekday_last", "chrono/std::chrono::weekday_last::ok", "std::chrono::weekday_last::weekday", "chrono/std::chrono::weekday_last::ok", "chrono/std::chrono::weekday_last::weekday"]
 helpviewer_keywords: ["std::chrono [C++], weekday_last"]
 ---
 
-# `weekday_last` class  
+# `weekday_last` class
 
 Represents the last weekday of a month.
 
diff --git a/docs/standard-library/wstring-convert-class.md b/docs/standard-library/wstring-convert-class.md
index 8b6789b128..41c72fa855 100644
--- a/docs/standard-library/wstring-convert-class.md
+++ b/docs/standard-library/wstring-convert-class.md
@@ -1,10 +1,9 @@
 ---
-description: "Learn more about: wstring_convert Class"
 title: "wstring_convert Class"
-ms.date: "11/04/2016"
+description: "Learn more about: wstring_convert Class"
+ms.date: 11/04/2016
 f1_keywords: ["wstring/stdext::cvt::wstring_convert", "locale/std::wstring_convert::byte_string", "locale/std::wstring_convert::wide_string", "locale/std::wstring_convert::state_type", "locale/std::wstring_convert::int_type", "locale/std::wstring_convert::from_bytes", "locale/std::wstring_convert::to_bytes", "locale/std::wstring_convert::converted", "locale/std::wstring_convert::state"]
 helpviewer_keywords: ["stdext::cvt [C++], wstring_convert", "std::wstring_convert [C++], byte_string", "std::wstring_convert [C++], wide_string", "std::wstring_convert [C++], state_type", "std::wstring_convert [C++], int_type", "std::wstring_convert [C++], from_bytes", "std::wstring_convert [C++], to_bytes", "std::wstring_convert [C++], converted", "std::wstring_convert [C++], state"]
-ms.assetid: e34f5b65-d572-4bdc-ac69-20778712e376
 ---
 # wstring_convert Class
 
@@ -161,8 +160,6 @@ state_type state() const;
 
 The [conversion state](../standard-library/wstring-convert-class.md) object that represents the state of the conversion.
 
-### Remarks
-
 ## <a name="state_type"></a> wstring_convert::state_type
 
 A type that represents the conversion state.
diff --git a/docs/standard-library/year-class.md b/docs/standard-library/year-class.md
index 7d3f7d181c..4ada39cf99 100644
--- a/docs/standard-library/year-class.md
+++ b/docs/standard-library/year-class.md
@@ -1,11 +1,11 @@
 ---
-description: "Learn more about: year Class"
 title: "year class"
-ms.date: "06/28/2021"
+description: "Learn more about: year Class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::year", "chrono/std::chrono::year::operator++", "chrono/std::chrono::year::operator--", "chrono/std::chrono::year::operator+=", "chrono/std::chrono::year::operator-=", "chrono/std::chrono::year::operator int", "chrono/std::chrono::year::is_leap", "chrono/std::chrono::year::max", "chrono/std::chrono::min", "chrono/std::chrono::year::ok"]
 helpviewer_keywords: ["std::chrono [C++], year"]
 ---
-# `year` class  
+# `year` class
 
 Represents a year in the [Gregorian calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).
 
diff --git a/docs/standard-library/year-month-class.md b/docs/standard-library/year-month-class.md
index 88e5800a28..e76df35fa2 100644
--- a/docs/standard-library/year-month-class.md
+++ b/docs/standard-library/year-month-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: year_month class"
 title: "year_month class"
-ms.date: "06/28/2021"
+description: "Learn more about: year_month class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::year_month", "chrono/std::chrono::year_month::operator+=", "chrono/std::chrono::year_month::operator-=", "chrono/std::chrono::year_month::ok"]
 helpviewer_keywords: ["std::chrono [C++], year_month"]
 dev_langs: ["C++"]
 ---
-# `year_month` class  
+# `year_month` class
 
 Represents a month and year. The day isn't specified.
 
diff --git a/docs/standard-library/year-month-day-class.md b/docs/standard-library/year-month-day-class.md
index e153349e08..3f40644e57 100644
--- a/docs/standard-library/year-month-day-class.md
+++ b/docs/standard-library/year-month-day-class.md
@@ -1,12 +1,12 @@
 ---
 title: "year_month_day class"
 description: "Learn more about: year_month_day class"
-ms.date: "06/28/2021"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::year_month_day", "chrono/std::chrono::year::operator+=", "chrono/std::chrono::year::operator-=", "chrono/std::chrono::year::sysdays", "chrono/std::chrono::year::localdays", "chrono/std::chrono::year::ok"]
 helpviewer_keywords: ["std::chrono [C++], year_month_day"]
 ---
 
-# `year_month_day` class  
+# `year_month_day` class
 
 Represents a month, year, and day.
 
diff --git a/docs/standard-library/year-month-day-last-class.md b/docs/standard-library/year-month-day-last-class.md
index 2427f36c40..b3bfc146db 100644
--- a/docs/standard-library/year-month-day-last-class.md
+++ b/docs/standard-library/year-month-day-last-class.md
@@ -1,12 +1,12 @@
 ---
-description: "Learn more about: year_month_day_last class"
 title: "year_month_day_last class"
-ms.date: "06/28/2021"
+description: "Learn more about: year_month_day_last class"
+ms.date: 06/28/2021
 f1_keywords: ["chrono/std::chrono::year_month_day_last", "chrono/std::chrono::year_month_day_last::operator+=", "chrono/std::chrono::year_month_day_last::operator-=", "chrono/std::chrono::year_month_day_last::sysdays", "chrono/std::chrono::year_month_day_last::local_days", "chrono/std::chrono::year_month_day_last::day", "chrono/std::chrono::year_month_day_last::year", "chrono/std::chrono::year_month_day_last::ok"]
 helpviewer_keywords: ["std::chrono [C++], year_month_day_last"]
 dev_langs: ["C++"]
 ---
-# `year_month_day_last` class  
+# `year_month_day_last` class
 
  Represents the last day of a specific year and month.
 
diff --git a/docs/standard-library/year-month-weekday-class.md b/docs/standard-library/year-month-weekday-class.md
index f88f88c341..cb63a01c32 100644
--- a/docs/standard-library/year-month-weekday-class.md
+++ b/docs/standard-library/year-month-weekday-class.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: year_month_weekday class"
 title: "year_month_weekday class"
-ms.date: "06/30/2021"
+description: "Learn more about: year_month_weekday class"
+ms.date: 06/30/2021
 f1_keywords: ["chrono/std::chrono::year_month_weekday", "chrono/std::chrono::year_month_weekday::weekday", "chrono/std::chrono::year_month_weekday::month", "chrono/std::chrono::year_month_weekday::index", "chrono/std::chrono::year_month_weekday::year", "chrono/std::chrono::year_month_weekday::weekday", "chrono/std::chrono::year_month_weekday::weekday_indexed", "chrono/std::chrono::year_month_weekday::sys_days", "chrono/std::chrono::year_month_weekday::local_days", "chrono/std::chrono::year_month_weekday::ok", "chrono/std::chrono::year_month_weekday::operator+=", "chrono/std::chrono::year_month_weekday::operator-=", "chrono/std::chrono::year_month_weekday::operator local_days", "chrono/std::chrono::year_month_weekday::operator sys_days"]
 helpviewer_keywords: ["std::chrono [C++], year_month_weekday"]
 dev_langs: ["C++"]
 ---
 
-# `year_month_weekday` class  
+# `year_month_weekday` class
 
 Represents a specific year, month, and nth weekday of the month.
 
@@ -36,7 +36,7 @@ class year_month_weekday; // C++20
 | [`operator local_days`](#local_days) | Get the count of days from the `system_clock` epoch to this `year_month_weekday` as [`local_days`](chrono.md#typedefs). |
 | [`operator sys_days`](#sys_days) | Get the count of days from the `system_clock` epoch to this `year_month_weekday` as [`sys_days`](chrono.md#typedefs). |
 | [`weekday`](#weekday) | Get the weekday. |
-| [`weekday_indexed`](#weekday_indexed) | Get the [`weekday_indexed`] stored in this `year_month_weekday`. |
+| [`weekday_indexed`](#weekday_indexed) | Get the [`weekday_indexed`](weekdayindexed-class.md) stored in this `year_month_weekday`. |
 | [`year`](#year) | Get the year. |
 
 ## Non-members
@@ -325,5 +325,5 @@ The [`year`](year-class.md) value.
 [`year_month_day`](year-month-day-class.md)\
 [`year_month_day_last`](year-month-day-last-class.md)\
 [`year_month_weekday_last`](year-month-weekday-last-class.md)\
-[`operator/`](chrono-operators.md#op_/)
-[Header Files Reference](cpp-standard-library-header-files.md)
\ No newline at end of file
+[`operator/`](chrono-operators.md#op_/)\
+[Header Files Reference](cpp-standard-library-header-files.md)
diff --git a/docs/standard-library/year-month-weekday-last-class.md b/docs/standard-library/year-month-weekday-last-class.md
index 8cac30f7d4..d7a2a3aba2 100644
--- a/docs/standard-library/year-month-weekday-last-class.md
+++ b/docs/standard-library/year-month-weekday-last-class.md
@@ -1,13 +1,13 @@
 ---
-description: "Learn more about: year_month_weekday_last class"
 title: "year_month_weekday_last class"
-ms.date: "06/30/2021"
+description: "Learn more about: year_month_weekday_last class"
+ms.date: 06/30/2021
 f1_keywords: ["chrono/std::chrono::year_month_weekday_last", "chrono/std::chrono::year_month_weekday_last::month", "chrono/std::chrono::year_month_weekday_last::year", "chrono/std::chrono::year_month_weekday_last::weekday", "chrono/std::chrono::year_month_weekday_last::weekday_last", "chrono/std::chrono::year_month_weekday_last::sys_days", "chrono/std::chrono::year_month_weekday_last::local_days", "chrono/std::chrono::year_month_weekday_last::ok", "chrono/std::chrono::year_month_weekday_last::operator+=", "chrono/std::chrono::year_month_weekday_last::operator-=", "chrono/std::chrono::year_month_weekday_last::operator local_days", "chrono/std::chrono::year_month_weekday_last::operator sys_days"]
 helpviewer_keywords: ["std::chrono [C++], year_month_weekday_last"]
 dev_langs: ["C++"]
 ---
 
-# `year_month_weekday_last` class  
+# `year_month_weekday_last` class
 
 A specific year, month, and last weekday of the month.
 
diff --git a/docs/standard-library/zoned-time-class.md b/docs/standard-library/zoned-time-class.md
index 976cc7416c..3fbc4f7dcc 100644
--- a/docs/standard-library/zoned-time-class.md
+++ b/docs/standard-library/zoned-time-class.md
@@ -1,8 +1,8 @@
 ---
-description: "Learn more about: zoned_time class"
 title: "zoned_time class"
+description: "Learn more about: zoned_time class"
 ms.date: 05/31/2022
-f1_keywords: ["chrono/std::chrono::zoned_time::get_info", "chrono/std::chrono::zoned_time::get_local_time", "chrono/std::chrono::zoned_time::get_sys_time", "chrono/std::chrono::zoned_time::get_time_zone","chrono/std::chrono::zoned_time:operator=", "chrono/std::chrono::zoned_time:operator local_time", "chrono/std::chrono::zoned_time:operator sys_time"]
+f1_keywords: ["chrono/std::chrono::zoned_time::get_info", "chrono/std::chrono::zoned_time::get_local_time", "chrono/std::chrono::zoned_time::get_sys_time", "chrono/std::chrono::zoned_time::get_time_zone","chrono/std::chrono::zoned_time::operator=", "chrono/std::chrono::zoned_time::operator local_time", "chrono/std::chrono::zoned_time::operator sys_time"]
 helpviewer_keywords: ["std::chrono [C++], zoned_time class", "std::chrono::zoned_time::get_info function", "std::chrono::zoned_time::get_local_time function", "std::chrono::zoned_time::get_sys_time function", "std::chrono::zoned_time::get_time_zone function"]
 dev_langs: ["C++"]
 ---
@@ -345,7 +345,7 @@ int main()
 
 1\) The default copy assignment operator. Copies (doesn't move) the stored [`time_point`](time-point-class.md) and [time_zone](time-zone-class.md) pointer from the other `zoned_time` into this `zoned_time`.
 2\) Assigns `st` to the [`time_point`](time-point-class.md) in this `zoned_time`.  After the assignment, `*this->get_sys_time() == st;`
-3\) Converts `lt` (a `local_time`) to a `sys_time`. It does this essentially as `timeZone->to_sys(lt)`, and assigns the result to the [`time_point`] in this `zoned_time`. After the assignment, `*this->get_local_time() == lt;`
+3\) Converts `lt` (a `local_time`) to a `sys_time`. It does this essentially as `timeZone->to_sys(lt)`, and assigns the result to the [`time_point`](time-point-class.md) in this `zoned_time`. After the assignment, `*this->get_local_time() == lt;`
 
 ## <a name="op_local_time"></a> `operator local_time`
 
@@ -423,4 +423,4 @@ int main()
 [`time_point`](time-point-class.md)\
 [`time_zone`](time-zone-class.md)\
 [`zoned_traits` struct](zoned-traits-struct.md)\
-[Header files reference](./cpp-standard-library-header-files.md)
\ No newline at end of file
+[Header files reference](./cpp-standard-library-header-files.md)
diff --git a/docs/text/buffer-overflow.md b/docs/text/buffer-overflow.md
index 6d7dad95dc..3107fc90ea 100644
--- a/docs/text/buffer-overflow.md
+++ b/docs/text/buffer-overflow.md
@@ -4,6 +4,7 @@ title: "Buffer Overflow"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["buffers [C++], character sizes", "buffer overflows [C++]", "MBCS [C++], buffer overflow"]
 ms.assetid: f2b7e40a-f02b-46d8-a449-51d26fc0c663
+ms.topic: how-to
 ---
 # Buffer Overflow
 
diff --git a/docs/text/character-assignment.md b/docs/text/character-assignment.md
index 0f4e4e7a83..81eaad306a 100644
--- a/docs/text/character-assignment.md
+++ b/docs/text/character-assignment.md
@@ -4,6 +4,7 @@ title: "Character Assignment"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["characters [C++], assignments", "MBCS [C++], character assignments"]
 ms.assetid: dcc329cd-92df-4e20-817d-364be62ff28f
+ms.topic: how-to
 ---
 # Character Assignment
 
diff --git a/docs/text/character-comparison.md b/docs/text/character-comparison.md
index e7b4890efa..b03f26e4cc 100644
--- a/docs/text/character-comparison.md
+++ b/docs/text/character-comparison.md
@@ -4,6 +4,7 @@ title: "Character Comparison"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["comparing characters", "MBCS [C++], character comparison", "characters [C++], comparing"]
 ms.assetid: 18846e44-3e6e-40c4-9b42-3153fb15db20
+ms.topic: how-to
 ---
 # Character Comparison
 
diff --git a/docs/text/incrementing-and-decrementing-pointers.md b/docs/text/incrementing-and-decrementing-pointers.md
index 932ef31708..9958d4e81a 100644
--- a/docs/text/incrementing-and-decrementing-pointers.md
+++ b/docs/text/incrementing-and-decrementing-pointers.md
@@ -4,6 +4,7 @@ title: "Incrementing and Decrementing Pointers"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["incrementing pointers", "MBCS [C++], pointers", "pointers [C++], multibyte characters", "decrementing pointers"]
 ms.assetid: 0872b4a0-e2bd-4004-8319-070efb76f2fd
+ms.topic: concept-article
 ---
 # Incrementing and Decrementing Pointers
 
diff --git a/docs/text/last-character-in-a-string.md b/docs/text/last-character-in-a-string.md
index bb58c45d55..f0cb71ec36 100644
--- a/docs/text/last-character-in-a-string.md
+++ b/docs/text/last-character-in-a-string.md
@@ -4,6 +4,7 @@ title: "Last Character in a String"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["last character in string", "MBCS [C++], last character in string"]
 ms.assetid: 0a180376-4e55-41e8-9c64-539c7b6d8047
+ms.topic: how-to
 ---
 # Last Character in a String
 
diff --git a/docs/text/string-and-i-o-formatting-modern-cpp.md b/docs/text/string-and-i-o-formatting-modern-cpp.md
index 1b44ad8e4c..a122fef058 100644
--- a/docs/text/string-and-i-o-formatting-modern-cpp.md
+++ b/docs/text/string-and-i-o-formatting-modern-cpp.md
@@ -2,7 +2,7 @@
 title: "String and I/O Formatting (Modern C++)"
 description: "Choices for formatted string I/O available in modern C++."
 ms.date: "05/30/2019"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 ms.assetid: 3954e8de-a59b-4175-89c9-4ee842ab89ed
 ---
 # String and I/O Formatting (Modern C++)
diff --git a/docs/text/using-tchar-h-data-types-with-mbcs-code.md b/docs/text/using-tchar-h-data-types-with-mbcs-code.md
index d9d216041f..c800f79348 100644
--- a/docs/text/using-tchar-h-data-types-with-mbcs-code.md
+++ b/docs/text/using-tchar-h-data-types-with-mbcs-code.md
@@ -4,6 +4,7 @@ title: "Using TCHAR.H Data Types with _MBCS Code"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["mapping generic-text", "generic-text data types [C++]", "generic-text mappings [C++]", "MBCS [C++], generic-text mappings", "TCHAR.H data types, mapping", "mappings [C++], TCHAR.H"]
 ms.assetid: 298583c5-22c3-40f6-920e-9ec96d42abd8
+ms.topic: concept-article
 ---
 # Using TCHAR.H Data Types with _MBCS Code
 
diff --git a/docs/windows/adding-editing-or-deleting-controls.md b/docs/windows/adding-editing-or-deleting-controls.md
index e068e19ef6..11e5400f7d 100644
--- a/docs/windows/adding-editing-or-deleting-controls.md
+++ b/docs/windows/adding-editing-or-deleting-controls.md
@@ -1,10 +1,10 @@
 ---
-description: "Learn more about: How To: Add, Edit, or Delete Controls (C++)"
 title: "How To: Add, Edit, or Delete Controls (C++)"
+description: "Learn more about: How To: Add, Edit, or Delete Controls (C++)"
 ms.date: "02/15/2019"
 f1_keywords: ["vc.controls.activex", "vc.editors.dialog.insertActiveXControls"]
 helpviewer_keywords: ["Dialog Editor [C++], creating controls", "dialog boxes [C++], adding controls to", "Toolbox [C++], Dialog Editor tab", "controls [C++], types", "syslink controls in dialog boxes", "custom controls [C++], dialog boxes", "controls [C++], standard", "Dialog Editor [C++], creating controls", "controls [C++], adding to dialog boxes", "controls [C++], adding multiple", "dialog box controls [C++], size", "controls [C++], sizing", "dialog boxes [C++], adding ActiveX controls", "ActiveX controls [C++], adding to dialog boxes", "Insert ActiveX Control dialog box [C++]", "controls [C++], editing properties", "ActiveX controls [C++], properties", "controls [C++], undoing changes", "controls [C++], editing properties", "dialog box controls [C++], editing properties", "dialog box controls [C++], deleting", "controls [C++], deleting", "Dialog Editor [C++], default control events", "controls [C++], default control events", "events [C++], controls", "dialog box controls [C++], events", "member variables, defining for controls", "variables, dialog box control member variables", "controls [C++], member variables", "Dialog Editor [C++], defining member variables for controls", "controls [C++], troubleshooting", "Dialog Editor [C++], troubleshooting", "dialog boxes [C++], troubleshooting", "InitCommonControls", "RichEdit 1.0 control", "rich edit controls [C++], RichEdit 1.0"]
-ms.assetid: 73cef03f-5c8c-456a-87d1-1458dff185cf
+ms.topic: how-to
 ---
 # How To: Add, Edit, or Delete Controls (C++)
 
@@ -204,17 +204,17 @@ Win32
 
 ## See also
 
-[Manage Dialog Box Controls](controls-in-dialog-boxes.md)<br/>
-[How To: Layout Controls](arrangement-of-controls-on-dialog-boxes.md)<br/>
+[Manage Dialog Box Controls](controls-in-dialog-boxes.md)\
+[How To: Layout Controls](arrangement-of-controls-on-dialog-boxes.md)\
 [How to: Define Control Access and Values](defining-mnemonics-access-keys.md)
 
 <!-- excluded links
-[Mapping Messages to Functions](../mfc/reference/mapping-messages-to-functions.md)<br/>
-[Adding Functionality with Code Wizards](../ide/adding-functionality-with-code-wizards-cpp.md)<br/>
-[Adding a Class](../ide/adding-a-class-visual-cpp.md)<br/>
-[Adding a Member Function](../ide/adding-a-member-function-visual-cpp.md)<br/>
-[Adding a Member Variable](../ide/adding-a-member-variable-visual-cpp.md)<br/>
-[Overriding a Virtual Function](../ide/overriding-a-virtual-function-visual-cpp.md)<br/>
-[MFC Message Handler](../mfc/reference/adding-an-mfc-message-handler.md)
-[Declaring a Variable Based on Your New Control Class](../mfc/reference/declaring-a-variable-based-on-your-new-control-class.md)<br/>
+[Mapping Messages to Functions](../mfc/reference/mapping-messages-to-functions.md)\
+[Adding Functionality with Code Wizards](../ide/adding-functionality-with-code-wizards-cpp.md)\
+[Adding a Class](../ide/adding-a-class-visual-cpp.md)\
+[Adding a Member Function](../ide/adding-a-member-function-visual-cpp.md)\
+[Adding a Member Variable](../ide/adding-a-member-variable-visual-cpp.md)\
+[Overriding a Virtual Function](../ide/overriding-a-virtual-function-visual-cpp.md)\
+[MFC Message Handler](../mfc/reference/adding-an-mfc-message-handler.md)\
+[Declaring a Variable Based on Your New Control Class](../mfc/reference/declaring-a-variable-based-on-your-new-control-class.md)
 -->
diff --git a/docs/windows/arrangement-of-controls-on-dialog-boxes.md b/docs/windows/arrangement-of-controls-on-dialog-boxes.md
index 7dbf3020fe..1c2b92daa7 100644
--- a/docs/windows/arrangement-of-controls-on-dialog-boxes.md
+++ b/docs/windows/arrangement-of-controls-on-dialog-boxes.md
@@ -5,6 +5,7 @@ ms.date: "02/15/2019"
 f1_keywords: ["vc.editors.dialog.grouping", "vc.editors.dialog.combo"]
 helpviewer_keywords: ["controls [C++], positioning", "dialog box controls [C++], placement", "Dialog Editor [C++], arranging controls", "Dialog Editor [C++], guides and margins", "guides, clearing", "guides", "dialog box controls [C++], placement", "controls [C++], guides and margins", "guides, creating", "guides, moving", "margins, moving", "DLUs (dialog units)", "controls [C++], aligning", "Dialog Editor [C++], snap to guides", "guides, tick mark interval", "dialog box controls [C++], placement", "guides, aligning controls", "dialog units (DLUs)", "snap to guides (Dialog editor)", "controls [C++], sizing", "tick mark interval in Dialog editor", "controls [C++], snap to guides/grid", "guides, disabling snapping", "controls [C++], snap to guides/grid", "controls [C++], layout grid", "snap to layout grid", "grids, turning on or off", "layout grid in Dialog Editor", "grids, changing size", "grid spacing", "guides, settings", "layout grid in Dialog Editor", "controls [C++], snap to guides/grid", "Guide Settings dialog box (Dialog editor)", "controls [C++], aligning", "controls [C++], positioning", "Space Evenly command", "dialog box controls [C++], placement", "Center in Dialog command", "Arrange Buttons command", "buttons, arranging push buttons in dialog boxes", "push buttons", "member variables, adding to radio button groups", "variables, dialog box control member variables", "dialog box controls [C++], grouping radio buttons", "grouping controls", "radio buttons [C++], grouping on dialog boxes", "controls [C++], tab order", "focus, tab order", "tab controls [C++], tab order", "Tabstop property for controls", "controls [C++], focus", "dialog box controls [C++], tab order", "Dialog Editor [C++], selecting controls", "dominant controls", "dialog box controls [C++], selecting in editor", "controls [C++], selecting", "size, controls", "controls [C++], dominant", "controls [C++], removing from groups", "Dialog Editor [C++], dominant control", "Size to Content command", "size, controls", "text, autosizing controls to fit text", "controls [C++], sizing", "Make Same Size command", "combo boxes, sizing", "list controls [C++], scroll bar width", "CListBox::SetHorizontalExtent", "controls [C++], scroll bar", "scroll bars [C++], displaying in controls", "horizontal scroll bar width", "CListBox class, scroll bar width", "scroll bars [C++], width"]
 ms.assetid: 832491cf-98af-42e5-a854-2cb135fd45c6
+ms.topic: how-to
 ---
 # How To: Layout Controls (C++)
 
diff --git a/docs/windows/attributes/attributes-alphabetical-reference.md b/docs/windows/attributes/attributes-alphabetical-reference.md
index 2e6948ed8f..375d6a5736 100644
--- a/docs/windows/attributes/attributes-alphabetical-reference.md
+++ b/docs/windows/attributes/attributes-alphabetical-reference.md
@@ -3,7 +3,7 @@ description: "Learn more about: Attributes Alphabetical Reference"
 title: "Attributes Alphabetical Reference"
 ms.custom: "index-page"
 ms.date: "10/02/2018"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 f1_keywords: ["vc.attributes"]
 helpviewer_keywords: ["attributes [C++/CLI]"]
 ms.assetid: fb2216ef-9fbd-44f4-afed-732aa99450e2
diff --git a/docs/windows/attributes/attributes-by-group.md b/docs/windows/attributes/attributes-by-group.md
index e344d58f67..42a1cd2787 100644
--- a/docs/windows/attributes/attributes-by-group.md
+++ b/docs/windows/attributes/attributes-by-group.md
@@ -3,7 +3,7 @@ description: "Learn more about: Attributes by Group"
 title: "Attributes by Group"
 ms.custom: "index-page"
 ms.date: "10/02/2018"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["attributes [C++/CLI]"]
 ms.assetid: 9f4dd43f-9909-43d6-91d2-05734643876e
 ---
diff --git a/docs/windows/attributes/attributes-by-usage.md b/docs/windows/attributes/attributes-by-usage.md
index ea43dfd652..628c0a616b 100644
--- a/docs/windows/attributes/attributes-by-usage.md
+++ b/docs/windows/attributes/attributes-by-usage.md
@@ -3,7 +3,7 @@ description: "Learn more about: Attributes by Usage"
 title: "Attributes by Usage"
 ms.custom: "index-page"
 ms.date: "10/02/2018"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["attributes [C++/CLI]"]
 ms.assetid: 8be2de10-b1ff-4ca4-a114-75318408593c
 ---
diff --git a/docs/windows/attributes/cpp-attributes-com-net.md b/docs/windows/attributes/cpp-attributes-com-net.md
index 830c975df1..20de95ef00 100644
--- a/docs/windows/attributes/cpp-attributes-com-net.md
+++ b/docs/windows/attributes/cpp-attributes-com-net.md
@@ -3,7 +3,7 @@ description: "Learn more about: C++ Attributes for COM and .NET"
 title: "C++ Attributes for COM and .NET"
 ms.custom: "index-page"
 ms.date: "11/19/2018"
-ms.topic: "conceptual"
+ms.topic: "concept-article"
 helpviewer_keywords: ["attributes [C++/CLI], reference topics"]
 ms.assetid: 613a3611-b3eb-4347-aa38-99b654600e1c
 ---
diff --git a/docs/windows/attributes/db-param.md b/docs/windows/attributes/db-param.md
index 51538ad0a2..cebb586d5d 100644
--- a/docs/windows/attributes/db-param.md
+++ b/docs/windows/attributes/db-param.md
@@ -5,6 +5,7 @@ ms.date: "10/02/2018"
 f1_keywords: ["vc-attr.db_param"]
 helpviewer_keywords: ["db_param attribute"]
 ms.assetid: a28315f5-4722-459e-92ef-32e83c0b205a
+ms.custom: sfi-ropc-nochange
 ---
 # db_param
 
diff --git a/docs/windows/attributes/db-source.md b/docs/windows/attributes/db-source.md
index 4b5d1ff5a7..d54e30f8a4 100644
--- a/docs/windows/attributes/db-source.md
+++ b/docs/windows/attributes/db-source.md
@@ -5,6 +5,7 @@ ms.date: "10/02/2018"
 f1_keywords: ["vc-attr.db_source"]
 helpviewer_keywords: ["db_source attribute"]
 ms.assetid: 0ec8bbf7-ade2-4899-bf4c-8608b92779bc
+ms.custom: sfi-ropc-nochange
 ---
 # db_source
 
diff --git a/docs/windows/changing-a-symbol-or-symbol-name-id.md b/docs/windows/changing-a-symbol-or-symbol-name-id.md
index 03e9c25ca3..8237657137 100644
--- a/docs/windows/changing-a-symbol-or-symbol-name-id.md
+++ b/docs/windows/changing-a-symbol-or-symbol-name-id.md
@@ -5,6 +5,7 @@ ms.date: "02/14/2019"
 f1_keywords: ["vc.editors.symbol.changing", "vc.editors.symbol.restrictions.name", "vc.editors.symbol.changing.value", "vc.editors.symbol.restrictions.value", "vc.editors.symbol.changing.header", "vc.editors.symbol.changing.unassigned", "vc.editors.symbol.shared.calculated"]
 helpviewer_keywords: ["symbol names", "symbols [C++], names", "restrictions, symbol names", "numeric values", "symbols [C++], numeric values", "numeric values, changing symbols", "symbols [C++], value restrictions", "restrictions, symbol values", "resource files [C++], multiple", "Resource Includes dialog box [C++]", "symbol header files [C++], changing names", "symbols [C++], symbol header files", "Resource.h", "symbols [C++], unassigned", "Change Symbol dialog box [C++]", "unassigned symbols", "symbols [C++], deleting", "symbols [C++], read-only", "symbols [C++], shared", "symbols [C++], calculated", "read-only symbols", "symbol directives", "calculated symbols", "shared symbols"]
 ms.assetid: 26541832-8dba-4177-b642-e08f94502ea7
+ms.topic: how-to
 ---
 # How to: Manage Symbols
 
diff --git a/docs/windows/creating-a-new-dialog-box.md b/docs/windows/creating-a-new-dialog-box.md
index 50d344c9a5..9552cf3592 100644
--- a/docs/windows/creating-a-new-dialog-box.md
+++ b/docs/windows/creating-a-new-dialog-box.md
@@ -4,6 +4,7 @@ title: "How To: Create a Dialog Box (C++)"
 ms.date: "02/15/2019"
 helpviewer_keywords: ["dialog boxes [C++], creating", "Dialog Editor [C++], creating dialog boxes", "modal dialog boxes [C++], logon screens", "logon screens", "Test Dialog command", "testing, dialog boxes", "dialog boxes [C++], testing", "dialog boxes [C++], size", "dialog boxes [C++], positioning"]
 ms.assetid: 303de801-c4f8-42e1-b622-353f6423f688
+ms.topic: how-to
 ---
 # How to: Create a Dialog Box (C++)
 
diff --git a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md
index 004896d77c..19767ebd32 100644
--- a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md
+++ b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md
@@ -1,24 +1,25 @@
 ---
-description: "Learn more about: How To: Create an Icon or Other Image"
-title: "How To: Create an Icon or Other Image"
-ms.date: "02/15/2019"
+description: "Create an Icon or Other Image"
+title: "Learn how to create a new image, bitmap, icon, cursor, or toolbar, and then use the Image Editor to customize its appearance."
+ms.date: 03/21/2025
+ms.topic: how-to
 helpviewer_keywords: ["bitmaps [C++]", "images [C++], creating", "resources [C++], creating images", "bitmaps [C++], creating", "graphics [C++], creating", "Image editor [C++], creating images", "cursors [C++], creating", "image resources [C++], display devices", "icons [C++], creating", "cursors [C++], types", "icons [C++]", "Image editor [C++], icons and cursors", "cursors [C++]", "display devices [C++], creating icons for", "cursors [C++], hot spots", "icons [C++], types", "icons [C++], creating", "display devices [C++], creating image", "images [C++], creating for display devices", "icons [C++], inserting", "New <Device> Image Type dialog box [C++]", "Custom Image dialog box [C++]", "Open <Device> Image dialog box [C++]", "New Device Image command", "display devices [C++], adding images", "cursors [C++], adding", "icons, adding", "display devices [C++], copying images", "cursors [C++], copying", "icons, copying", "cursors [C++], deleting", "display devices [C++], deleting device image", "icons, erasing", "icons, deleting", "cursors [C++], undoing changes", "icons, undoing changes", "cursors [C++], screen regions", "inverse colors [C++], device images", "transparent regions, device images", "transparency, device images", "Image editor [C++], device images", "inverse regions, device images", "cursors [C++], transparent regions", "screen colors", "regions, transparent", "icons [C++], transparent regions", "display devices [C++], transparent and screen regions", "transparent regions in devices", "regions, inverse", "colors [C++], Image editor", "device projects [C++], transparent images", "icons [C++], screen regions", "256-color palette", "cursors [C++], color", "colors [C++], icons", "colors [C++], cursors", "icons, color", "colors [C++], icons and cursors", "color palettes, 256-color", "palettes, 256-color", "cursors [C++], hot spots", "hot spots", ".gif files [C++], saving bitmaps as", "jpg files [C++], saving bitmaps as", "jpeg files [C++], saving bitmaps as", ".jpg files [C++], saving bitmaps as", "Image editor [C++], converting image formats", "gif files [C++], saving bitmaps as", "bitmaps [C++], converting formats", ".jpeg files [C++], saving bitmaps as", "graphics [C++], converting formats", "images [C++], converting formats", "images [C++], stand-alone editing", "Image editor [C++], converting image formats", "graphics [C++], converting formats", "images [C++], converting formats"]
 ms.assetid: 66db3fb2-cfc1-48a2-9bdd-53f61eb7ee30
 ---
-# How To: Create an Icon or Other Image
+# Create an icon or other image
 
 You can create a new image, bitmap, icon, cursor, or toolbar, and then use the **Image Editor** to customize its appearance. You can also create a new bitmap patterned after a [resource template](./how-to-create-a-resource-script-file.md).
 
-## Icons and Cursors: Image Resources for Display Devices
+## Icons and cursors: image resources for display devices
 
-Icons and cursors are graphical resources that can contain multiple images in different sizes and color schemes for different types of display devices. A cursor also has a hot spot, the location Windows uses to track its position. Both icons and cursors are created and edited using the **Image Editor**, as are bitmaps and other images.
+Icons and cursors are graphical resources that can contain multiple images in different sizes and color schemes for different types of display devices. A cursor also has a hot spot, which is the location that Windows uses to track its position. Both icons and cursors are created and edited using the **Image Editor**, as are bitmaps and other images.
 
 When you create a new icon or cursor, the **Image Editor** first creates an image of a standard type. The image is initially filled with the screen (transparent) color. If the image is a cursor, the hot spot is initially the upper-left corner with coordinates `0,0`.
 
-By default, the **Image Editor** supports the creation of additional images for the devices shown in the following table. You can create images for other devices by typing width, height, and color-count parameters into the **Custom Image** dialog box.
+By default, the **Image Editor** supports the creation of new images for the devices shown in the following table. You can create images for other devices by typing width, height, and color-count parameters into the **Custom Image** dialog box.
 
 |Color|Width (pixels)|Height (pixels)|
-|-----------|----------------------|-----------------------|
+|-----|--------------|---------------|
 |Monochrome|16|16|
 |Monochrome|32|32|
 |Monochrome|48|48|
@@ -37,12 +38,12 @@ By default, the **Image Editor** supports the creation of additional images for
 
 ### Create a device image (icon or cursor)
 
-When you create a new icon or cursor resource, the **Image Editor** first creates an image in a specific style (32 × 32, 16 colors for icons and 32 × 32, Monochrome for cursors). You can then add images in different sizes and styles to the initial icon or cursor and edit each additional image, as needed, for the different display devices. You can also edit an image by using a cut-and-paste operation from an existing image type or from a bitmap created in a graphics program.
+When you create a new icon or cursor resource, the **Image Editor** first creates an image in a specific style: 32 × 32 pixels and 16 colors for icons; 32 × 32 pixels and monochrome for cursors. You can then add images in different sizes and styles to the initial icon or cursor, and edit each additional image, as needed, for the different display devices. You can also edit an image by using a cut-and-paste operation from an existing image type or from a bitmap created in a graphics program.
 
 When you open the icon or cursor resource in the [Image Editor](../windows/image-editor-for-icons.md), the image most closely matching the current display device is opened by default.
 
 > [!NOTE]
-> If your project doesn't already contain an .rc file, see [Creating a New Resource Script File](../windows/how-to-create-a-resource-script-file.md).
+> If your project doesn't already contain an *`.rc`* file, see [Create Resources (C++)](../windows/how-to-create-a-resource-script-file.md).
 
 The **New \<Device> Image Type** dialog box enables you to create a new device image of a specified type. To open the **New \<Device> Image** dialog box, go to menu **Image** > **New Image Type**. The following properties included are **Target Image Type** and **Custom**.
 
@@ -50,40 +51,46 @@ The **Target Image Type** property lists the available image types where you sel
 
 :::row:::
    :::column span="":::
-      16 x 16, 16 colors\
-      32 x 32, 16 colors\
-      48 x 48, 16 colors\
-      64 x 64, 16 colors\
-      96 x 96, 16 colors
+      16 x 16, 1 bit (monochrome)\
+      16 x 16, 24 bit (16 million colors)\
+      16 x 16, 4 bit (16 colors)\
+      128 x 128, 1 bit (monochrome)\
+      128 x 128, 24 bit (16 million colors)\
+      128 x 128, 4 bit (16 colors)\
+      128 x 128, 8 bit (256 colors)
    :::column-end:::
    :::column span="":::
-      16 x 16, 256 colors\
-      32 x 32, 256 colors\
-      48 x 48, 256 colors\
-      64 x 64, 256 colors\
-      96 x 96, 256 colors
+      256 x 256, 1 bit (monochrome)\
+      256 x 256, 24 bit (16 million colors)\
+      256 x 256, 4 bit (16 colors)\
+      256 x 256, 8 bit (256 colors)\
+      32 x 32, 1 bit (monochrome)\
+      32 x 32, 24 bit (16 million colors)\
+      32 x 32, 4 bit (16 colors)
    :::column-end:::
    :::column span="":::
-      16 x 16, Monochrome\
-      32 x 32, Monochrome\
-      48 x 48, Monochrome\
-      64 x 64, Monochrome\
-      96 x 96, Monochrome
+      48 x 48, 1 bit (monochrome)\
+      48 x 48, 24 bit (16 million colors)\
+      48 x 48, 4 bit (16 colors)\
+      64 x 64, 1 bit (monochrome)\
+      64 x 64, 24 bit (16 million colors)\
+      64 x 64, 4 bit (16 colors)\
+      64 x 64, 8 bit (256 colors)
    :::column-end:::
 :::row-end:::
 
 > [!NOTE]
-> Any existing images will not be displayed in this list.
+> Existing images are not displayed in this list.
 
 The **Custom** property opens the **Custom Image** dialog box in which you can create a new image with a custom size and number of colors.
 
-The **Custom Image** dialog box enables you to create a new image with a custom size and number of colors. The following properties included are:
+The **Custom Image** dialog box allows you to create a new image with a custom size and number of colors. The following properties included are:
 
 |Property|Description|
 |---|---|
-|**Width**|Provides a space for you to enter the width of the custom image in pixels (1 - 512, limit of 2048).|
-|**Height**|Provides a space for you to enter the height for the custom image in pixels (1 - 512, limit of 2048).|
-|**Colors**|Provides a space for you to choose the number of colors for the custom image: 2, 16, or 256.|
+|**Width**|Provides a space for you to enter the width of the custom image in pixels (1 - 512, limit of 2048)|
+|**Height**|Provides a space for you to enter the height for the custom image in pixels (1 - 512, limit of 2048)|
+|**Colors**|Provides a space for you to choose the number of bits for color for the custom image: 1, 4, 8, 24|
 
 Use the **Open \<Device> Image** dialog box to open device images in C++ projects. It lists existing device images in the current resource (images that are part of the current resource). The following property included is:
 
@@ -93,9 +100,9 @@ Use the **Open \<Device> Image** dialog box to open device images in C++ project
 
 #### To create a new icon or cursor
 
-1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**.
+1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**.
 
-1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. For icons, this action creates an icon resource with a 32 × 32, 16-color icon. For cursors, a 32 × 32, Monochrome (2-color) image is created.
+1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. For icons, this action creates an icon resource with a 32 × 32, 16-color icon. For cursors, a 32 × 32, monochrome image is created.
 
    If a plus sign (**+**) appears next to the image resource type in the **Insert Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**.
 
@@ -120,11 +127,11 @@ Use the **Open \<Device> Image** dialog box to open device images in C++ project
 While the icon image is displayed in the **Image Editor**, go to menu **Image** > **Delete Device Image**. When you delete the last icon image in the resource, the resource is also deleted.
 
 > [!NOTE]
-> When you press the **Del** key, the images and colors you have drawn on an icon are deleted but the icon remains and you can now redesign it. If you press **Del** by mistake, press **Ctrl**+**Z** to undo the action.
+> When you press the **Del** key, the images and colors you drew on an icon are deleted but the icon remains and you can now redesign it. If you press **Del** by mistake, press **Ctrl**+**Z** to undo the action.
 
 ### To create transparent or inverse regions in device images
 
-In the [Image Editor](../windows/image-editor-for-icons.md), the initial icon or cursor image has a transparent attribute. Although icon and cursor images are rectangular, many don't appear so because parts of the image are transparent and the underlying image on the screen shows through the icon or cursor. When you drag an icon, parts of the image may appear in an inverted color. You create this effect by setting the screen color and inverse color in the [Colors window](./image-editor-for-icons.md).
+In the [Image Editor](../windows/image-editor-for-icons.md), the initial icon or cursor image has a transparent attribute. Although icon and cursor images are rectangular, many don't appear so because parts of the image are transparent and the underlying image on the screen shows through the icon or cursor. When you drag an icon, parts of the image might appear in an inverted color. You create this effect by setting the screen color and inverse color in the [Colors window](./image-editor-for-icons.md).
 
 The screen and inverse colors you apply to icons and cursors either shape and color the derived image or assign inverse regions. The colors indicate parts of the image that have those attributes. You can change the colors that represent the screen-color and inverse-color attributes in editing. These changes don't affect the appearance of the icon or cursor in your application.
 
@@ -154,9 +161,9 @@ Using the **Image Editor**, icons and cursors can be sized large (64 × 64) with
 
 #### To create a 256-color icon or cursor
 
-1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**.
+1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**.
 
-1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**.
+1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**.
 
 1. Go to menu **Image** > **New Device Image** and select the 256-color image style you want.
 
@@ -168,7 +175,7 @@ To draw with a selection from the 256-color palette, you need to select the colo
 
 1. Choose a color from the 256 colors displayed in the **Colors** palette in the **Colors** window.
 
-   The color selected will become the current color in the **Colors** palette in the **Colors** window.
+   The color selected becomes the current color in the **Colors** palette in the **Colors** window.
 
    > [!NOTE]
    > The initial palette used for 256-color images matches the palette returned by the `CreateHalftonePalette` Windows API. All icons intended for the Windows shell should use this palette to prevent flicker during palette realization.
@@ -183,9 +190,9 @@ The hot spot of a cursor is the point to which Windows refers in tracking the cu
 
    The **Hotspot** property in the **Properties** window displays the new coordinates.
 
-### To create and save a bitmap as a .gif or .jpeg
+### To create and save a bitmap as GIF or JPEG
 
-When you create a bitmap, the image is created in bitmap format (.bmp). You can, however, save the image as a GIF or JPEG or in other graphic formats.
+When you create a bitmap, the image is created in bitmap format (*`.bmp`*). You can, however, save the image as a *`.gif`* or *`.jpeg`* or in other graphic formats.
 
 > [!NOTE]
 > This process doesn't apply to icons and cursors.
@@ -203,7 +210,7 @@ When you create a bitmap, the image is created in bitmap format (.bmp). You can,
 1. In the **Save File As** dialog box, type the name you want to give the file and the extension that denotes the file format you want in the **File Name** box. For example, *myfile.gif*.
 
    > [!NOTE]
-   > You must create or open the bitmap outside of your project in order to save it as another file format. If you create or open it within your project, the **Save As** command will be unavailable. For more information, see [Viewing Resources in a Resource Script File Outside of a Project (Standalone)](./how-to-create-a-resource-script-file.md).
+   > You must create or open the bitmap outside of your project in order to save it as another file format. If you create or open it within your project, the **Save As** command is unavailable. For more information, see [Viewing Resources in a Resource Script File Outside of a Project (Standalone)](./how-to-create-a-resource-script-file.md).
 
 1. Select **Save**.
 
@@ -221,11 +228,11 @@ You can open GIF or JPEG images in the **Image Editor** and save them as bitmaps
 
 ### To add a new image resource to an unmanaged C++ project
 
-1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can simply right-click the **Cursor** folder and select **Insert Cursor**.
+1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**.
 
-1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select the type of image resource you'd like to create (**Bitmap**, for example) then choose **New**.
+1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select the type of image resource you'd like to create (**Bitmap**, for example) then choose **New**.
 
-   If a plus sign (**+**) appears next to the image resource type in the **Insert Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**.
+   If a plus sign (**+**) appears next to the image resource type in the **Add Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**.
 
 ### To add a new image resource to a project in a .NET programming language
 
@@ -239,17 +246,13 @@ You can open GIF or JPEG images in the **Image Editor** and save them as bitmaps
 
    The resource is added to your project in **Solution Explorer** and the resource opens in the [Image Editor](../windows/image-editor-for-icons.md). You can now use all the tools available in the **Image Editor** to modify your image. For more information on adding images to a managed project, see [Loading a Picture at Design Time](/dotnet/framework/winforms/controls/how-to-load-a-picture-using-the-designer-windows-forms).
 
-## Requirements
-
-None
-
 ## See also
 
-[Image Editor for Icons](../windows/image-editor-for-icons.md)<br/>
-[How to: Edit an Image](../windows/selecting-an-area-of-an-image-image-editor-for-icons.md)<br/>
-[How to: Use a Drawing Tool](../windows/using-a-drawing-tool-image-editor-for-icons.md)<br/>
-[How to: Work with Color](../windows/working-with-color-image-editor-for-icons.md)<br/>
-[Accelerator Keys](../windows/accelerator-keys-image-editor-for-icons.md)<br/>
+- [Image Editor for Icons](../windows/image-editor-for-icons.md)
+- [How to: Edit an Image](../windows/selecting-an-area-of-an-image-image-editor-for-icons.md)
+- [How to: Use a Drawing Tool](../windows/using-a-drawing-tool-image-editor-for-icons.md)
+- [How to: Work with Color](../windows/working-with-color-image-editor-for-icons.md)
+- [Accelerator Keys](../windows/accelerator-keys-image-editor-for-icons.md)
 <!--
 [Converting Bitmaps to Toolbars](./toolbar-editor.md)<br/>
 [Creating New Toolbars](./toolbar-editor.md)<br/>
diff --git a/docs/windows/creating-new-symbols.md b/docs/windows/creating-new-symbols.md
index 4efb0239b4..d2dbf84f17 100644
--- a/docs/windows/creating-new-symbols.md
+++ b/docs/windows/creating-new-symbols.md
@@ -5,6 +5,7 @@ ms.date: "02/14/2019"
 f1_keywords: ["vc.editors.symbol.creating", "vc.editors.symbol.managing", "vc.editors.resourcesymbols", "vc.editors.symbol.resource"]
 helpviewer_keywords: ["New Symbol dialog box [C++]", "symbols [C++], creating", "resources [C++], viewing", "resource symbols", "symbols [C++], viewing", "New Symbol dialog box [C++]", "Resource Symbols dialog box [C++]", "Change Symbol dialog box [C++]", "resource symbols", "View Use button", "resource editors [C++], resource symbols"]
 ms.assetid: 35168d31-3af6-4ecd-9362-3707d47b53f3
+ms.topic: how-to
 ---
 # How to: Create Symbols (C++)
 
diff --git a/docs/windows/defining-mnemonics-access-keys.md b/docs/windows/defining-mnemonics-access-keys.md
index 91d85be4e5..10caf4b279 100644
--- a/docs/windows/defining-mnemonics-access-keys.md
+++ b/docs/windows/defining-mnemonics-access-keys.md
@@ -4,6 +4,7 @@ title: "How to: Define Control Access and Values (C++)"
 ms.date: "02/15/2019"
 helpviewer_keywords: ["access keys [C++], adding", "keyboard shortcuts [C++], controls", "dialog box controls [C++], mnemonics", "access keys [C++], checking", "mnemonics [C++], checking for duplicate", "mnemonics", "mnemonics [C++], dialog box controls", "keyboard shortcuts [C++], uniqueness checking", "Check Mnemonics command", "controls [C++], access keys", "access keys [C++]", "combo boxes [C++], Data property", "controls [C++], testing values in combo boxes", "combo boxes [C++], adding values", "combo boxes [C++], previewing values", "Data property", "combo boxes [C++], testing values"]
 ms.assetid: 60a85435-aa30-4c5c-98b6-42fb045b9eb2
+ms.topic: how-to
 ---
 # How to: Define Control Access and Values (C++)
 
diff --git a/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md b/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md
index 1e20a432db..3ce20bfe3f 100644
--- a/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md
+++ b/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md
@@ -1,28 +1,31 @@
 ---
-description: "Learn more about: Walkthrough: Deploying a Visual C++ Application By Using the Visual C++ Redistributable Package"
-title: "Deploy an App By Using the Redistributable Package (C++)"
-ms.date: 01/13/2023
+title: "Deploy a Visual C++ App by Using the Redistributable"
+description: "Learn how to deploy a Visual C++ application by using the Visual C++ Redistributable package."
+ms.date: 03/20/2025
+ms.topic: tutorial
 helpviewer_keywords: ["walkthrough, deploying a Visual C++ application by using the redistributable package"]
 ms.assetid: e59becbf-b8c6-4c8e-bab3-b69cc1ed3e5e
 ms.custom: intro-deployment
 ---
-# Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable Package
+# Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable package
 
-To run apps that use Visual C++ runtime libraries, the target machine must have a compatible Microsoft Visual C++ Redistributable Package installed. This step-by-step article describes one way to deploy both the Microsoft Visual C++ Redistributable Package and your Visual C++ application. You can use any installer technology to deploy your app. This walkthrough uses the IExpress Wizard to create a self-extracting executable installer that installs the Redistributable and an application.
+This step-by-step article describes one way to deploy both the Microsoft Visual C++ Redistributable package and your Visual C++ application. You can use any installer technology to deploy your app. This walkthrough uses the IExpress Wizard to create a self-extracting executable installer that installs the Redistributable and an application.
+
+To run apps that use Visual C++ runtime libraries, the target machine must have a compatible Microsoft Visual C++ Redistributable package installed.
 
 ## Prerequisites
 
-You must have these components to complete this walkthrough:
+- A computer that has Visual Studio installed
 
-- A computer that has Visual Studio installed.
+- A second computer that doesn't have the Visual C++ libraries
 
-- Another computer that doesn't have the Visual C++ libraries.
+## Create an application and a setup file
 
-### To use the Microsoft Visual C++ Redistributable Package to deploy an application
+1. If you need a sample application to deploy, you can create and build an MFC application by following the steps in [Walkthrough: Deploying a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). This walkthrough assumes your app is named `MyMFCApp` like the sample, but you can change the name to match your app.
 
-1. If you need a sample application to deploy, create and build an MFC application by following the steps in [Walkthrough: Deploying a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). This walkthrough assumes your app is named `MyMFCApp` like the sample, but you can change the name to match your app.
+1. Create a file and name it *`setup.bat`*. For now, you can save it to a temporary location.
 
-1. Create a file, name it *`setup.bat`*, and add the following commands to it. If your app has a different name, change `MyMFCApp` to the name of your app. If your app targets x86, change "Program Files" to "Program Files (x86)". Remove the leading colons (`::`) to uncomment the line that installs the Redistributable for your target architecture.
+    Add the following commands to the file. If your app has a different name, change `MyMFCApp` to the name of your app. If your app targets x86, change `Program Files` to `Program Files (x86)`. Remove the leading colons (`::`) to uncomment the line that installs the Redistributable for your target architecture.
 
     ```cmd
     @echo off
@@ -34,57 +37,57 @@ You must have these components to complete this walkthrough:
     copy MyMFCApp.exe "C:\Program Files\MyMFCApp"
     ```
 
-   You can apply command-line options to the Redistributable executable in your batch file. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages).
+    You can apply command-line options to the Redistributable executable in your batch file. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages).
 
-1. Create a self-extracting setup file:
+## Create a self-extracting setup file
 
-   1. At a command prompt or in the **Run** window, run `iexpress.exe`.
+1. Open a command prompt or open the **Run** window from the Start menu, then enter `iexpress.exe`.
 
-   1. Select **Create new Self Extraction Directive file** and then choose the **Next** button.
+1. Select **Create new Self Extraction Directive file** and then choose the **Next** button.
 
-   1. Select **Extract files and run an installation command** and then choose **Next**.
+1. Select **Extract files and run an installation command** and then choose **Next**.
 
-   1. In the text box, enter the name of your app and then choose **Next**.
+1. In the text box, enter the name of your app and then choose **Next**.
 
-   1. On the **Confirmation prompt** page, select **No Prompt** and then choose **Next**.
+1. On the **Confirmation prompt** page, select **No Prompt** and then choose **Next**.
 
-   1. On the **License agreement** page, select **Do not display a license** and then choose **Next**.
+1. On the **License agreement** page, select **Do not display a license** and then choose **Next**.
 
-   1. On the **Packaged files** page, add the following files and then choose **Next**.
+1. On the **Packaged files** page, add the following files and then choose **Next**.
 
-      - Your app (`.exe` file).
+   - The *`.exe`* file for your sample application (for example, *`MyMFCApp.exe`*). You can find this in the folder where you saved your solution.
 
-      - The Redistributable for your app's target architecture. We recommend you [download the latest supported Redistributable file from Microsoft](latest-supported-vc-redist.md) for your deployment. You can also deploy the Redistributable file found in your Visual Studio installation. In Visual Studio 2015, this file is called `vcredist_x86.exe`, `vcredist_x64.exe`, or `vcredist_arm.exe` and is located in *`%VCINSTALLDIR%redist\1033\`*. In Visual Studio 2017 and later, this file is called `vc_redist.x86.exe`, `vc_redist.x64.exe`, or `vc_redist.arm64.exe` and is located in *`%VCToolsRedistDir%`*.
+   - The *`setup.bat`* file that you created in the previous section.
 
-      - The `setup.bat` file that you created in the earlier step.
+   - The Redistributable for your app's target architecture. We recommend that you [download the latest supported Redistributable file from Microsoft](latest-supported-vc-redist.md) for your deployment. You can also deploy the Redistributable file found in your Visual Studio installation. In Visual Studio 2017 and later, this file is called *`vc_redist.x86.exe`*, *`vc_redist.x64.exe`*, or *`vc_redist.arm64.exe`* and is located in *`%VCToolsRedistDir%`*. In Visual Studio 2015, this file is called *`vcredist_x86.exe`*, *`vcredist_x64.exe`*, or *`vcredist_arm.exe`* and is located in *`%VCINSTALLDIR%redist\1033\`*.
 
-   1. On the **Install Program to Launch** page, in the **Install Program** text box, enter the following command line, and then choose **Next**.
+1. On the **Install Program to Launch** page, in the **Install Program** text box, enter the following command line, and then choose **Next**.
 
-      **`cmd.exe /c "setup.bat"`**
+   `cmd.exe /c "setup.bat"`
 
-   1. On the **Show window** page, select **Default** and then choose **Next**.
+1. On the **Show window** page, select **Default** and then choose **Next**.
 
-   1. On the **Finished message** page, select **No message**. Choose **Next**.
+1. On the **Finished message** page, select **No message**. Choose **Next**.
 
-   1. On the **Package Name and Options** page, enter a name for your self-extracting setup file, select the **Store files using Long File Name inside Package** option, and then choose **Next**. The end of the file name must be `Setup.exe`—for example, *`MyMFCAppSetup.exe`*.
+1. On the **Package Name and Options** page, enter a name for your self-extracting setup file, select the **Store files using Long File Name inside Package** option, and then choose **Next**. The end of the file name must be *`Setup.exe`*—for example, *`MyMFCAppSetup.exe`*.
 
-   1. On the **Configure restart** page, select **No restart**. Choose **Next**.
+1. On the **Configure restart** page, select **No restart**. Choose **Next**.
 
-   1. On the **Save Self Extraction Directive** page, select **Save Self Extraction Directive (SED) file**. Choose **Next**.
+1. On the **Save Self Extraction Directive** page, select **Save Self Extraction Directive (SED) file**. Choose **Next**.
 
-   1. On the **Create package** page, choose **Next**. Choose **Finish**.
+1. On the **Create package** page, choose **Next**. Choose **Finish**.
 
-1. Test the self-extracting setup file on the other computer that doesn't have the Visual C++ libraries:
+## Test the self-extracting setup file on the other computer
 
-   1. On the other computer, download a copy of the setup file. Then, run the setup and follow the steps that it provides. Depending on the options selected, installation might require you to accept a User Account Control elevation request, or to run the installer by using the **Run as administrator** command.
+1. On the other computer that doesn't have the Visual C++ libraries, download a copy of the setup file. Then, run the setup and follow the steps that it provides. Depending on the options selected, installation might require you to accept a User Account Control elevation request, or to run the installer by using the **Run as administrator** command.
 
-   1. Run the app.
+1. Run the app.
 
-      The self-extracting setup file installs the app that's in the folder you specified in `setup.bat`. The app should run successfully because the Microsoft Visual C++ Redistributable Package installer is included in the self-extracting setup file.
+   The self-extracting setup file installs the app that's in the folder you specified in *`setup.bat`*. The app should run successfully because the Microsoft Visual C++ Redistributable package installer is included in the self-extracting setup file.
 
-      > [!IMPORTANT]
-      > To determine which version of the runtime is installed, the installer checks the registry key `\HKLM\SOFTWARE\Microsoft\VisualStudio\<version>\VC\Runtimes\<platform>\Version`. (The `<version>` value used for Visual Studio 2015, 2017, 2019, and 2022 is 14.0.) If the currently installed version is newer than the version that the installer is attempting to install, the installer returns success without installing the older version and leaves an additional entry on the installed programs page in the Control Panel.
+   > [!IMPORTANT]
+   > To determine which version of the runtime is installed, the installer checks the registry key `\HKLM\SOFTWARE\Microsoft\VisualStudio\<version>\VC\Runtimes\<platform>\Version`. (The `<version>` value used for Visual Studio 2015, 2017, 2019, and 2022 is 14.0.) If the currently installed version is newer than the version that the installer is attempting to install, the installer returns success without installing the older version and leaves an additional entry on the installed programs page in the Control Panel.
 
 ## See also
 
-[Deployment examples](deployment-examples.md)
+- [Deployment examples](deployment-examples.md)
diff --git a/docs/windows/deployment-concepts.md b/docs/windows/deployment-concepts.md
index 659ed272bd..762b7034ca 100644
--- a/docs/windows/deployment-concepts.md
+++ b/docs/windows/deployment-concepts.md
@@ -5,6 +5,7 @@ ms.date: "11/04/2016"
 helpviewer_keywords: ["Windows Installer [C++]", "dependencies [C++], application deployment and", "application deployment [C++], about application deployment", "deploying applications [C++], about deploying applications", "libraries [C++], application deployment issues"]
 ms.assetid: ebd7f246-ab54-40e8-87fa-dac02c0047b3
 ms.custom: intro-deployment
+ms.topic: concept-article
 ---
 # Deployment Concepts
 
diff --git a/docs/windows/image-editor-for-icons.md b/docs/windows/image-editor-for-icons.md
index bfae511890..c292e20a11 100644
--- a/docs/windows/image-editor-for-icons.md
+++ b/docs/windows/image-editor-for-icons.md
@@ -5,6 +5,7 @@ ms.date: "02/15/2019"
 f1_keywords: ["vc.editors.cursor.F1", "vc.editors.icon.F1", "vc.editors.cursor", "vc.editors.bitmap.F1", "vc.editors.bitmap", "vc.editors.dialog.GridSettings", "vc.editors.gridsettings", "vc.editors.icon", "vc.editors.texttool"]
 helpviewer_keywords: ["editors, images", "resource editors [C++], graphics", "Image editor [C++]", "resource editors [C++], Image editor", "Image menu", "Grid Settings dialog box [C++]", "Graphics toolbar", "Image editor [C++], toolbar", "Image editor [C++], Option selector", "Properties window", "Option selector, Image editor", "toolbars [C++], showing", "toolbars [C++], hiding", "text, adding to an image", "Text Tool dialog box [C++]", "Text Tool Font dialog box [C++]", "fonts, changing on an image", "text, on images", "graphics editor [C++]", "Image editor [C++], panes", "Image editor [C++], magnification", "grids, pixel", "pixel grid, Image editor", "Image editor [C++], pixel grid", "Image editor [C++], grid settings", "grid settings, Image editor"]
 ms.assetid: 586d2b8b-0348-4883-a85d-1ff0ddbf14dd
+ms.topic: how-to
 ---
 # Image Editor for Icons (C++)
 
diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md
index 840af6a36c..974db31485 100644
--- a/docs/windows/latest-supported-vc-redist.md
+++ b/docs/windows/latest-supported-vc-redist.md
@@ -1,7 +1,7 @@
 ---
 title: "Latest supported Visual C++ Redistributable downloads"
 description: "This article lists the download links for the latest versions of Visual C++ Redistributable packages."
-ms.date: 11/15/2024
+ms.date: 5/28/2025
 helpviewer_keywords:
   [
     "redist",
@@ -19,6 +19,8 @@ ms.author: msaleh
 
 The Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ tools require these libraries. If your app uses those libraries, a Microsoft Visual C++ Redistributable package must be installed on the target system before you install your app. The Redistributable package architecture must match your app's target architecture. The Redistributable version must be at least as recent as the MSVC build toolset used to build your app. We recommend you use the latest Redistributable available for your version of Visual Studio, with some exceptions noted later in this article.
 
+Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms.
+
 For details on how to install and redistribute Visual Studio components, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md).
 
 ## Visual Studio 2015, 2017, 2019, and 2022
@@ -27,9 +29,9 @@ This table lists the latest supported English (en-US) Microsoft Visual C++ Redis
 
 Unlike older versions of Visual Studio, which have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist.
 
-## Latest Microsoft Visual C++ Redistributable Version
+## Latest Microsoft Visual C++ Redistributable version
 
-The latest version is `14.42.34433.0`
+The latest version is `v14.44.35211.0`
 
 Use the following links to download this version for each supported architecture:
 
@@ -53,7 +55,7 @@ Download other versions, including long term servicing release channel (LTSC) ve
 
 - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages).
 
-## Visual Studio 2013 (VC++ 12.0)  (no longer supported)
+## Visual Studio 2013 (VC++ 12.0) (no longer supported)
 
 These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013.
 You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from [my.visualstudio.com](https://my.visualstudio.com/).
@@ -68,7 +70,7 @@ You can download other versions and languages from [Update for Visual C++ 2013 R
 - [Multibyte MFC Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the Microsoft Foundation Class (MFC) Library.
 - [Visual C++ 2013 Runtime for Sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for Sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog.
 
-## Visual Studio 2012 (VC++ 11.0) Update 4  (no longer supported)
+## Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported)
 
 > [!NOTE]
 > Visual Studio 2012 [reached end of extended support on Jan 10, 2023](/lifecycle/products/visual-studio-2012)
@@ -115,7 +117,13 @@ Download Redistributable files for other languages and architectures from:
 
 - Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347).
 
-## Release notes
+## See also
+
+- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)
+- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md)
+- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)
+
+**Release notes**
 
 - [Visual Studio 2022 release notes](/visualstudio/releases/2022/release-notes)
 - [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md)
@@ -125,7 +133,7 @@ Download Redistributable files for other languages and architectures from:
 - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg)
 - [Microsoft Visual C++ compiler versioning](../overview/compiler-versions.md)
 
-## C++ conformance notes
+**C++ conformance notes**
 
 - [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md)
 - [C++ conformance improvements in Visual Studio 2019](../overview/cpp-conformance-improvements-2019.md)
diff --git a/docs/windows/mfc-predefined-symbols.md b/docs/windows/mfc-predefined-symbols.md
index e245d89aa4..17de2a0e82 100644
--- a/docs/windows/mfc-predefined-symbols.md
+++ b/docs/windows/mfc-predefined-symbols.md
@@ -4,6 +4,7 @@ title: "MFC Predefined Symbols"
 ms.date: "02/14/2019"
 helpviewer_keywords: ["MFC symbols", "symbols [C++], MFC", "MFC database programming symbols", "symbols [C++], MFC", "databases [C++], MFC programming model", "Windows programming MFC symbols [C++]"]
 ms.assetid: c1e689c4-45d7-40a3-8ee9-f47676cc3bbb
+ms.custom: sfi-ropc-nochange
 ---
 # MFC Predefined Symbols
 
diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md
new file mode 100644
index 0000000000..a457bcc5f5
--- /dev/null
+++ b/docs/windows/redist-version-auditing.md
@@ -0,0 +1,197 @@
+---
+title: "How to audit Visual C++ Runtime version usage"
+description: "A detailed guide for auditing Visual C++ Runtime file usage."
+ms.date: 1/27/2025
+helpviewer_keywords:
+  [
+    "find redist version installed",
+    "audit redist version installation",
+  ]
+author: MahmoudGSaleh
+ms.author: msaleh
+ms.topic: how-to
+---
+
+# How to audit Visual C++ Runtime version usage
+
+The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step towards replacing those applications with ones that use a supported version of the VC Runtime. This guide walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits.
+
+For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist).
+
+## Enable NTFS file auditing to determine VC Runtime usage
+
+This guide provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder).
+
+### Manually enable object access auditing on the system
+
+Object access must be enabled before you enable file level auditing:
+
+1. Open the **Local Group Policy Editor** by pressing `Windows` + `R` to open the **Run** dialog. Then type `gpedit.msc` and press **Enter**.
+1. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**.
+1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**.
+1. Close the **Local Group Policy Editor**.
+
+Alternatively, you may use `auditpol.exe` to enable object access:
+
+1. List the current settings from the command line with `AuditPol.exe /get /category:"Object Access"`.
+1. Enable object access with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`.
+
+### Manually enable auditing on a file
+
+To monitor which process accesses a VC Runtime file, enable auditing on the VC Runtime file:
+
+1. Right-click the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location).
+1. Select **Advanced**.
+1. In the **Advanced Security Settings** dialog box, select the **Auditing** tab and then select **Continue**.
+1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add such as **(Everyone)**, and then select **OK**.
+1. In **Type**, select ensure that **Success** is selected.
+1. Select **Show advance permissions** > **Clear all** > **Traverse folder / execute file** > **OK**.
+1. There should now be a new row in the **Auditing** entries matching what you have selected. Select **OK**.
+1. In the **Properties** Dialog, select **OK**.
+
+The audit rule is now enabled for the file.
+
+### Manually review audit logs
+
+NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process.
+
+1. Open the **Event Viewer** by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press **Enter**.
+1. Navigate to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events.
+1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box.
+
+For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663)
+
+### Use PowerShell to audit VC Runtime usage
+
+As an overview, updating File Auditing Permissions with PowerShell follows these steps:
+
+1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the file(s).
+1. Obtain a file's security descriptor with [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl).
+1. [Apply the audit rule](/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor.
+1. Apply the updated security descriptor on the original file with [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl).
+1. View File Access Auditing Event 4663 records with [`Get-WinEvent`](/powershell/module/microsoft.powershell.diagnostics/get-winevent).
+
+### PowerShell: Audit out-of-support VC Runtime files
+
+The following PowerShell code enables you to audit installed VC Runtime files that are no longer supported.
+
+```powershell
+function Get-AuditRuleForFile {
+    $auditRuleArguments =   'Everyone'              <# identity #>,
+                            'ExecuteFile, Traverse' <# fileSystemRights #>,
+                            'Success'               <# flags #>
+    $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments)
+
+    return $auditRule
+}
+
+function Set-FileAuditRule {
+    param (
+        [Parameter(Mandatory = $true)]
+        [ValidateNotNullOrEmpty()]
+        [string]$file,
+        [Parameter(Mandatory = $true)]
+        [ValidateNotNullOrEmpty()]
+        [System.Security.AccessControl.FileSystemAuditRule]$auditRule
+    )
+
+    $existingAcl = Get-Acl -Path $file
+    $existingAcl.AddAuditRule($auditRule) | Out-Null
+    Set-Acl -Path $file -AclObject $existingAcl
+}
+
+$newAuditRule = Get-AuditRuleForFile
+
+# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0)
+Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse |
+Where-Object FullName -IMatch 'microsoft\.vc[89]0' |
+ForEach-Object {
+    Set-FileAuditRule $_.FullName $newAuditRule
+}
+
+# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0)
+$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus'
+$versions = '(1[012]0)'
+$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$"
+Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' |
+Where-Object Name -imatch $regex |
+ForEach-Object {
+    Set-FileAuditRule $_.FullName $newAuditRule
+}
+```
+
+### PowerShell: View file audit events
+
+PowerShell provides `Get-WinEvent` to get event records for various event logs as shown in the following PowerShell code that lists all of the Auditing Event 4663 records over the past 24 hours:
+
+```powershell
+function Get-AuditEntries {
+    param (
+        [Parameter(Mandatory = $true)]
+        [ValidateNotNullOrEmpty()]
+        [System.DateTime]$oldestTime
+    )
+    Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} |
+    ForEach-Object {
+        $record = [ordered]@{}
+        $record['TimeCreated'] = $_.TimeCreated
+        $accessName = ($_.Message |
+            Select-String -Pattern "Accesses:[\t\s]+(?<Accesses>.+)").Matches.Groups[1]
+        ([xml]$_.ToXML()).Event.EventData.ChildNodes |
+        ForEach-Object -Begin {
+            $record[$accessName.Name]=$accessName.Value.Trim()
+        } -Process {
+            $record[$_.Name] = $_.'#text'
+        }
+        [PSCustomObject]$record
+    } |
+    Where-Object { $_.ObjectName -imatch '\.dll$'}
+}
+
+Get-AuditEntries -oldestTime (Get-Date).AddHours(-24)
+```
+
+```output
+TimeCreated : 11/20/2024 5:00:11 AM
+Accesses : Execute/Traverse
+SubjectUserSid : \*\*\*\*\*
+SubjectUserName : \*\*\*\*\*
+SubjectDomainName : WORKGROUP
+SubjectLogonId : \*\*\*\*\*
+ObjectServer : Security
+ObjectType : File
+ObjectName : C:\\Windows\\WinSxS\\amd64\_microsoft.vc90.crt\_1fc8b3b9a1e18e3b\_9.0.30729.9635\_none\_08e2c157a83ed5da\\msvcr90.dll
+HandleId : 0x93c
+AccessList : %%4421
+AccessMask : 0x20
+ProcessId : 0x24d4
+ProcessName : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
+ResourceAttributes : S:AI
+```
+
+### Next steps after auditing VC Runtime usage
+
+After you have determined which processes are using the VC Runtime files, or which applications have installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes.
+
+Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq).
+
+<a id="vcruntime_install_location"></a>
+
+## VC Runtime installation locations
+
+Here is where each version of the VC Runtime is installed:
+
+| **Visual Studio Version**| **Installed Location(s)**|
+| ------------- | ------------- |
+| Visual Studio 2013 (VC++ 12.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` |
+| Visual Studio 2012 (VC++ 11.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` |
+| Visual Studio 2010 (VC++ 10.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` |
+| Visual Studio 2008 (VC++ 9.0) | `%SystemRoot%\\WinSxS\\Fusion` |
+| Visual Studio 2005 (VC++ 8.0) | `%SystemRoot%\\WinSxS\\Fusion` |
+
+## See also
+
+[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\
+[The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\
+[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)\
+[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)
diff --git a/docs/windows/redistributing-an-atl-application.md b/docs/windows/redistributing-an-atl-application.md
index 05c6e98553..84bb01ef68 100644
--- a/docs/windows/redistributing-an-atl-application.md
+++ b/docs/windows/redistributing-an-atl-application.md
@@ -4,6 +4,7 @@ title: "Redistributing an ATL application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["ATL, redistributing", "redistributing ATL", "redistributing OLE DB templates", "OLE DB templates, redistributing"]
 ms.assetid: 9a696b22-2345-43ec-826b-be7cb8cfd676
+ms.topic: concept-article
 ---
 # Redistributing an ATL application
 
diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md
index dc72490002..ac04fbfd8d 100644
--- a/docs/windows/redistributing-components-by-using-merge-modules.md
+++ b/docs/windows/redistributing-components-by-using-merge-modules.md
@@ -4,6 +4,7 @@ title: "Redistributing Components By Using Merge Modules"
 ms.date: 06/08/2022
 helpviewer_keywords: ["merge modules, using", "redistributing applications, using merge modules"]
 ms.assetid: 93b84211-bf9b-4a78-9f22-474ac2ef7840
+ms.topic: concept-article
 ---
 # Redistributing components by using merge modules
 
diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md
index fb9373c1da..c01f4c38d3 100644
--- a/docs/windows/redistributing-the-mfc-library.md
+++ b/docs/windows/redistributing-the-mfc-library.md
@@ -4,6 +4,7 @@ title: "Redistributing the MFC Library"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["MFC, redistributing", "redistributing MFC library"]
 ms.assetid: 72714ce1-385e-4c1c-afa5-96b03e873866
+ms.topic: concept-article
 ---
 # Redistributing the MFC Library
 
diff --git a/docs/windows/redistributing-visual-cpp-activex-controls.md b/docs/windows/redistributing-visual-cpp-activex-controls.md
index 0ffe433d61..f28244442a 100644
--- a/docs/windows/redistributing-visual-cpp-activex-controls.md
+++ b/docs/windows/redistributing-visual-cpp-activex-controls.md
@@ -4,6 +4,7 @@ title: "Redistributing Visual C++ ActiveX Controls"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["controls [C++], redistributing", "controls [C++], distributing"]
 ms.assetid: eefbb7e4-d28c-4c35-98bf-d9540cfaae83
+ms.topic: concept-article
 ---
 # Redistributing Visual C++ ActiveX Controls
 
diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md
index aece8877cf..97ba8cbcdd 100644
--- a/docs/windows/redistributing-visual-cpp-files.md
+++ b/docs/windows/redistributing-visual-cpp-files.md
@@ -1,9 +1,9 @@
 ---
 title: "Redistributing Visual C++ Files"
 description: "Visual Studio includes Redistributable libraries and components you can deploy with your app."
-ms.date: 01/13/2023
+ms.date: 01/15/2025
 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"]
-ms.assetid: d201b2ce-36f1-44e5-a96c-0db81a1ba652
+ms.topic: concept-article
 ---
 # Redistributing Visual C++ Files
 
@@ -12,6 +12,8 @@ ms.assetid: d201b2ce-36f1-44e5-a96c-0db81a1ba652
 
 ## Redistributable files and licensing
 
+Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms.
+
 When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You'll find a link to the Visual Studio license terms in the IDE. Use the License terms link in the About Microsoft Visual Studio dialog box. Or, download the relevant EULAs and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/).
 
 ::: moniker range="msvc-170"
diff --git a/docs/windows/redistributing-web-client-applications.md b/docs/windows/redistributing-web-client-applications.md
index 88a621931a..51ff831c9d 100644
--- a/docs/windows/redistributing-web-client-applications.md
+++ b/docs/windows/redistributing-web-client-applications.md
@@ -4,6 +4,7 @@ title: "Redistributing Web Client Applications"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["Web applications [C++], redistributing", "deploying applications [C++], Web applications", "Internet applications [C++], redistributing", "application deployment [C++], Web applications"]
 ms.assetid: fe05988b-dee8-4a46-b381-016b5103a6bf
+ms.topic: concept-article
 ---
 # Redistributing Web Client Applications
 
diff --git a/docs/windows/running-a-cpp-clr-application-on-a-previous-runtime-version.md b/docs/windows/running-a-cpp-clr-application-on-a-previous-runtime-version.md
index 0a0bc61b0a..466682e8f9 100644
--- a/docs/windows/running-a-cpp-clr-application-on-a-previous-runtime-version.md
+++ b/docs/windows/running-a-cpp-clr-application-on-a-previous-runtime-version.md
@@ -4,6 +4,7 @@ title: "Running a C++ -clr Application on a Previous Runtime Version"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["applications [C++], runtime version specified", "versions [C++]", "app.config files, runtime version specified", "compatibility [C++], runtime version specified", "backward compatibility [C++], runtime version specified", "application deployment [C++], runtime version specified", "common language runtime [C++], version specified", "deploying applications [C++], runtime version specified"]
 ms.assetid: 940171b7-6937-4b14-8e87-c199e23f4f2e
+ms.topic: how-to
 ---
 # Running a C++ /clr Application on a Previous Runtime Version
 
diff --git a/docs/windows/selecting-an-area-of-an-image-image-editor-for-icons.md b/docs/windows/selecting-an-area-of-an-image-image-editor-for-icons.md
index 74755f6529..5096ea44e8 100644
--- a/docs/windows/selecting-an-area-of-an-image-image-editor-for-icons.md
+++ b/docs/windows/selecting-an-area-of-an-image-image-editor-for-icons.md
@@ -5,6 +5,7 @@ ms.date: "02/15/2019"
 f1_keywords: ["vc.editors.image.editing"]
 helpviewer_keywords: ["Image editor [C++], image selection", "Image editor [C++], selecting images", "images [C++], selecting", "cursors [C++], selecting areas of", "Image editor [C++], editing images", "Clipboard [C++], pasting", "images [C++], editing", "images [C++], deleting selected parts", "images [C++], copying selected parts", "images [C++], moving selected parts", "images [C++], dragging and replicating selected parts", "images [C++], pasting into", "graphics [C++], editing", "Image editor [C++], flipping and rotating images", "images [C++], flipping", "images [C++], rotating", "Image editor [C++], resizing images", "graphics [C++], resizing", "images [C++], resizing", "resizing images", "size [C++], images", "images [C++], cropping", "images [C++], extending", "Image editor [C++], cropping or extending images", "Image editor [C++], shrinking and stretching images", "images [C++], stretching", "images [C++], shrinking", "bitmaps [C++], shrinking", "bitmaps [C++], stretching", "Image editor [C++], editing images", "images [C++], editing", "images [C++], properties", "Image editor [C++], Properties window", "Properties window, image editor"]
 ms.assetid: 8b6ce4ad-eba1-4ece-86ba-cea92c3edff2
+ms.topic: how-to
 ---
 # How to: Edit an Image
 
diff --git a/docs/windows/string-editor.md b/docs/windows/string-editor.md
index 7420162cb2..9aef4330fc 100644
--- a/docs/windows/string-editor.md
+++ b/docs/windows/string-editor.md
@@ -1,10 +1,10 @@
 ---
-description: "Learn more about: String Editor (C++)"
 title: "String Editor (C++)"
+description: "Learn more about: String Editor (C++)"
 ms.date: "02/14/2019"
 f1_keywords: ["vc.editors.string.F1", "vc.editors.string"]
 helpviewer_keywords: ["String editor", "string tables", "string tables [C++], String editor", "string editing", "string editing, string tables", "resource editors [C++], String editor", "strings [C++], editing", "strings [C++], searching", "strings [C++]", "strings [C++], adding to string tables", "string tables [C++], deleting strings", "strings [C++], deleting in string tables", "string tables [C++], adding strings", "strings [C++], moving between files", "resource script files [C++], moving strings", "string editing, moving strings between resources", "String editor [C++], moving strings between files", "resource identifiers, string properties", "string tables [C++], changing strings", "strings [C++], properties", "String editor [C++], changing properties of multiple strings", "string tables [C++], changing caption of multiple strings", "special characters, adding to strings", "ASCII characters, adding to strings", "strings [C++], formatting", "strings [C++], special characters"]
-ms.assetid: f71ab8de-3068-4e29-8e28-5a33d18dd416
+ms.topic: how-to
 ---
 # String Editor (C++)
 
@@ -137,7 +137,7 @@ Win32
 
 ## See also
 
-[Resource Editors](../windows/resource-editors.md)
-[Strings](/windows/win32/menurc/strings)<br/>
-[About Strings](/windows/win32/menurc/about-strings)<br/>
+[Resource Editors](../windows/resource-editors.md)\
+[Strings](/windows/win32/menurc/strings)\
+[About Strings](/windows/win32/menurc/about-strings)\
 [Customizing window layouts](/visualstudio/ide/customizing-window-layouts-in-visual-studio)
diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml
index 7cd02983e0..a8a74ff2d7 100644
--- a/docs/windows/toc.yml
+++ b/docs/windows/toc.yml
@@ -147,6 +147,8 @@ items:
           href: ../windows/redistributing-an-atl-application.md
         - name: Latest Supported Visual C++ Redistributable Downloads
           href: ../windows/latest-supported-vc-redist.md
+        - name: How to audit Visual C++ Runtime version usage
+          href: ../windows/redist-version-auditing.md
     - name: Deployment examples
       expanded: false
       items: 
diff --git a/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md b/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md
index 223a06f1b4..935808c0d4 100644
--- a/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md
+++ b/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md
@@ -4,6 +4,7 @@ title: "Understanding the Dependencies of a Visual C++ Application"
 ms.date: "11/04/2016"
 helpviewer_keywords: ["application deployment [C++], dependencies", "Dependency Walker", "dependencies [C++], application deployment and", "deploying applications [C++], dependencies", "DUMPBIN utility", "DLLs [C++], dependencies", "depends.exe", "libraries [C++], application deployment issues"]
 ms.assetid: 62a44c95-c389-4c5f-82fd-07d7ef09dbf9
+ms.topic: concept-article
 ---
 # Understanding the Dependencies of a Visual C++ Application
 
diff --git a/docs/windows/using-a-drawing-tool-image-editor-for-icons.md b/docs/windows/using-a-drawing-tool-image-editor-for-icons.md
index da9f38a719..d4dd74f019 100644
--- a/docs/windows/using-a-drawing-tool-image-editor-for-icons.md
+++ b/docs/windows/using-a-drawing-tool-image-editor-for-icons.md
@@ -5,6 +5,7 @@ ms.date: "02/15/2019"
 f1_keywords: ["vc.editors.image.drawing"]
 helpviewer_keywords: ["Image editor [C++], selecting drawing tools", "Image editor [C++], toolbar", "drawing tools", "Image editor [C++], drawing lines", "shapes, drawing", "colors [C++], brush", "brushes, colors", "brushes, creating custom", "images [C++], creating custom brushes", "graphics [C++], custom brushes", "custom brushes"]
 ms.assetid: 1f8c6eef-7760-45a9-a5cb-9e15c6f91245
+ms.topic: how-to
 ---
 # How to: Use a Drawing Tool
 
diff --git a/docs/windows/walkthrough-creating-a-standard-cpp-program-cpp.md b/docs/windows/walkthrough-creating-a-standard-cpp-program-cpp.md
index e8457bc272..f833851474 100644
--- a/docs/windows/walkthrough-creating-a-standard-cpp-program-cpp.md
+++ b/docs/windows/walkthrough-creating-a-standard-cpp-program-cpp.md
@@ -1,107 +1,105 @@
 ---
-description: "Learn more about: Walkthrough: Create a Standard C++ Program (C++)"
-title: "Walkthrough: Create a Standard C++ Program (C++)"
+title: "Create a Standard C++ Program"
+description: "Learn how to use Visual Studio to create a standard C++ project, and then compile and run the program."
 ms.custom: "get-started-article"
-ms.date: 10/27/2021
+ms.date: 03/25/2025
+ms.topic: get-started
 helpviewer_keywords: ["command-line applications [C++], standard", "standard applications [C++]"]
 ---
-# Walkthrough: Create a Standard C++ Program (C++)
+# Walkthrough: Create a standard C++ program
 
-You can use Visual Studio to create Standard C++ programs. By following the steps in this walkthrough, you can create a project, add a new file to the project, modify the file to add C++ code, and then compile and run the program by using Visual Studio.
+You can use Visual Studio to create standard C++ programs. By following the steps in this walkthrough, you can create a project, add a new file to the project, modify the file to add C++ code, and then compile and run the program by using Visual Studio.
 
-You can type your own C++ program or use one of the sample programs. The sample program in this walkthrough is a console application. This application uses the `set` container in the C++ Standard Library.
+You can type your own C++ program or use one of the [sample programs](../overview/visual-cpp-samples.md). This walkthrough creates a console application that uses the `set` container in the C++ Standard Library.
 
 > [!NOTE]
-> If conformance with a specific version of the C++ language standard (for example, C++14, C++17, or C++20) is required, use the **`/std:c++14`**, **`/std:c++17`**, or **`/std:c++20`** compiler option. (Visual Studio 2017 and later.)
+> If conformance with a specific version of the C++ language standard (for example, C++14, C++17, or C++20) is required, use the `/std:c++14`, `/std:c++17`, or `/std:c++20` compiler option (Visual Studio 2017 or later.)
 
 ## Prerequisites
 
 To complete this walkthrough, you must understand the fundamentals of the C++ language.
 
-### To create a project and add a source file
+### Select a version
 
-The following steps vary depending on which version of Visual Studio you are using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's found at the top of the table of contents on this page.
+The following steps vary depending on which version of Visual Studio you're using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page.
 
 ::: moniker range=">=msvc-160"
 
-### To create a C++ project in Visual Studio
+## Create a C++ project in Visual Studio
 
 1. From the main menu, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box.
 
-1. At the top of the dialog, set  **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**.
+1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**.
 
-1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter a name for the project, and specify the project location if desired.
+1. From the filtered list of project types, choose **Console App** then choose **Next**. On the next page, enter a name for the project, and specify the project location if desired.
 
-1. Choose the **Create** button to create the project.
+1. Select the **Create** button to create the project.
 
 ::: moniker-end
 
 ::: moniker range="msvc-150"
 
-### To create a C++ project in Visual Studio 2017
+## Create a C++ project in Visual Studio 2017
 
-1. Create a project by pointing to **New** on the **File** menu, and then clicking **Project**.
+1. Select **New** from the **File** menu, and then select **Project**.
 
-1. In the **Visual C++** project types pane, click **Windows Desktop**, and then click **Windows Console Application**.
+1. In the **Visual C++** project types pane, select **Windows Desktop**, and then choose **Windows Console Application**.
 
 1. Type a name for the project. By default, the solution that contains the project has the same name as the project, but you can type a different name. You can also type a different location for the project.
 
-1. Click **OK** to create the project.
+1. Select **OK** to create the project.
 
 ::: moniker-end
 
 ::: moniker range="msvc-140"
 
-### To create a C++ project in Visual Studio 2015
+## Create a C++ project in Visual Studio 2015
 
-1. Create a project by pointing to **New** on the **File** menu, and then clicking **Project**.
+1. Select **New** from the **File** menu, and then select **Project**.
 
-1. In the **Visual C++** project types pane, click **Windows Desktop**, and then click **Windows Console Application**.
+1. In the **Visual C++** project types pane, select **Windows Desktop**, and then choose **Windows Console Application**.
 
 1. In the **New Project** dialog box, expand **Installed** > **Templates** > **Visual C++**, and then select **Win32**. In the center pane, select **Win32 Console Application**.
 
 1. Type a name for the project. By default, the solution that contains the project has the same name as the project, but you can type a different name. You can also type a different location for the project.
 
-1. Click **OK** to create the project.
+1. Select **OK** to create the project.
 
 1. Complete the **Win32 Application Wizard**.
 
-1. Click **Next**, then make sure **Console Application** is selected and uncheck the **Precompiled Headers** box.
+1. Select **Next**, then make sure **Console Application** is selected and uncheck the **Precompiled Headers** box.
 
-1. Click **Finish**.
+1. Select **Finish**.
 
 ::: moniker-end
 
 ## Add a new source file
 
-1. If **Solution Explorer** isn't displayed, on the **View** menu, click **Solution Explorer**.
+1. If **Solution Explorer** isn't displayed, on the **View** menu, select **Solution Explorer**.
 
-1. Add a new source file to the project, as follows.
+1. Add a new source file to the project.
 
-   1. In **Solution Explorer**, right-click the **Source Files** folder, point to **Add**, and then click **New Item**.
+   1. In **Solution Explorer**, right-click the **Source Files** folder, point to **Add**, and then select **New Item**.
 
-   1. In the **Code** node, click **C++ File (.cpp)**, type a name for the file, and then click **Add**.
+   1. In the **Code** node, select **C++ File (.cpp)**, type a name for the file, and then select **Add**.
 
-   The .cpp file appears in the **Source Files** folder in **Solution Explorer**, and the file is opened in the Visual Studio editor.
+   The *`.cpp`* file appears in the **Source Files** folder in **Solution Explorer**, and the file is opened in the Visual Studio editor.
 
 1. In the file in the editor, type a valid C++ program that uses the C++ Standard Library, or copy one of the sample programs and paste it in the file.
 
 1. Save the file.
 
-1. On the **Build** menu, click **Build Solution**.
+1. On the **Build** menu, select **Build Solution**.
 
    The **Output** window displays information about the compilation progress, for example, the location of the build log and a message that indicates the build status.
 
-1. On the **Debug** menu, click **Start without Debugging**.
+1. On the **Debug** menu, select **Start without Debugging**.
 
    If you used the sample program, a command window is displayed and shows whether certain integers are found in the set.
 
-## Next Steps
+## Related content
 
-**Previous:** [Console Applications in Visual C++](./overview-of-windows-programming-in-cpp.md)<br/>
-**Next:** [Walkthrough: Compiling a Native C++ Program on the Command Line](../build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
-
-## See also
-
-[C++ Language Reference](../cpp/cpp-language-reference.md)<br/>
-[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
+- [Walkthrough: Compiling a Native C++ Program on the Command Line](../build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
+- [Windows C++ desktop application types](./overview-of-windows-programming-in-cpp.md)
+- [C++ Language Reference](../cpp/cpp-language-reference.md)
+- [C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md
index 1b2da84b17..e156b5e7b4 100644
--- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md
+++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md
@@ -1,36 +1,39 @@
 ---
-title: "Walkthrough: Create a traditional Windows Desktop application (C++)"
-description: "How to create a minimal, traditional Windows Desktop application using Visual Studio, C++, and the Win32 API"
-ms.custom: "get-started-article"
-ms.date: 10/10/2023
+title: "Create a Traditional Windows Desktop Application (C++)"
+description: "Learn how to create a minimal, traditional Windows desktop application using Visual Studio, C++, and the Win32 API."
+ms.topic: tutorial
+ms.date: 03/17/2025
 helpviewer_keywords: ["Windows applications [C++], Win32", "Windows Desktop applications [C++]", "Windows API [C++]"]
+ms.custom:
+  - "get-started-article"
+  - sfi-image-nochange
 ---
-# Walkthrough: Create a traditional Windows Desktop application (C++)
+# Walkthrough: Create a traditional Windows desktop application (C++)
 
-This walkthrough shows how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display "Hello, Windows desktop!" in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications.
+This walkthrough explains how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display *Hello, Windows desktop!* in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications.
 
-The Windows API (also known as the Win32 API, Windows Desktop API, and Windows Classic API) is a C-language-based framework for creating Windows applications. It has been used to create Windows applications for decades. More advanced and easier-to-program frameworks have been built on top of the Windows API. For example, MFC, ATL, the .NET frameworks. Even the most modern Windows Runtime code for UWP and Store apps written in C++/WinRT uses the Windows API underneath. For more information about the Windows API, see [Windows API Index](/windows/win32/apiindex/windows-api-list).
+The Windows API (also known as the Win32 API, Windows Desktop API, and Windows Classic API) is a C-language-based framework for creating Windows applications. It has been used to create Windows applications for decades. More advanced and easier-to-program frameworks have been built on top of the Windows API, for example, the MFC, ATL, and .NET frameworks. Even the most modern Windows Runtime code for UWP and Store apps written in C++/WinRT uses the Windows API underneath. For more information about the Windows API, see [Windows API Index](/windows/win32/apiindex/windows-api-list).
 
 > [!IMPORTANT]
-> The [Build the code](#build-the-code) section at the end of this document shows the complete code. This walkthrough covers the various pieces of code that go into a Windows app, but you won't code as you go because some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end.
+> The [Build the code](#build-the-code) section at the end of this article shows the complete code. This walkthrough covers the various pieces of code that go into a Windows app, but some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end.
 
 ## Prerequisites
 
-- A computer that runs Microsoft Windows 7 or later versions. We recommend Windows 11 or later for the best development experience.
+- Microsoft Windows 7 or later versions. We recommend Windows 11 or later for the best development experience.
 
-- A copy of Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now.
+- Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now.
 
-   ![Screenshot of the Desktop development with C++ workload in the Visual Studio Installer which says: build classic Windows-based apps using the power of the Visual C++ toolset](../build/media/desktop-development-with-cpp.png)
+   :::image type="content" source="../build/media/desktop-development-with-cpp.png" alt-text="Screenshot of the Desktop development with C plus plus workload in the Visual Studio Installer.":::
 
-- A basic understanding of using the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide).
+- A basic understanding of how to use the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide).
 
-- An understanding of enough of the fundamentals of the C++ language to follow along. Don't worry, we don't do anything too complicated.
+- Some familiarity with the C++ language. Don't worry, we don't do anything too complicated.
 
 ## Create a Windows desktop project
 
-Follow these steps to create your first Windows desktop project. Per the note at the beginning of this walkthrough, the completed code is available in the [Build the code](#build-the-code) section at the end of the walkthrough. Go ahead and follow the steps to create the project, but hold off pasting the following sections of code until the end, when the complete application code is presented. Some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end.
+Follow these steps to create your first Windows desktop project. As noted at the beginning of this article, the completed code is available in the [Build the code](#build-the-code) section at the end of the walkthrough. Go ahead and follow the steps to create the project, but hold off pasting the following sections of code until the end, when the complete application code is presented. Some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end.
 
-To simplify the explanation. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's located at the top of the table of contents on this page.
+To see the steps for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page.
 
 ::: moniker range=">=msvc-160"
 
@@ -48,13 +51,13 @@ To simplify the explanation. To see the documentation for your preferred version
 
 1. In **Solution Explorer**, right-click the **DesktopApp** project, choose **Add**, and then choose **New Item**.
 
-    :::image type="complex" source="../build/media/desktop-app-project-add-new-item-153.gif" alt-text="An animation showing adding a new item to DesktopApp Project in Visual Studio 2019.":::
+    :::image type="complex" source="../build/media/desktop-app-project-add-new-item-153.gif" alt-text="Animation showing adding a new item to DesktopApp Project in Visual Studio 2019.":::
     The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item.
     :::image-end:::
-    
-1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**.
 
-   ![Screenshot of the Add New Item dialog box in Visual Studio 2019. The C plus plus File (.cpp) option is selected. The name field is set to Hello Windows Desktop.cpp.](../build/media/desktop-app-add-cpp-file-153.png)
+1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**.
+
+   :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2019. The C plus plus File (.cpp) option is selected. The name field is set to Hello Windows Desktop.cpp.":::
 
 Your project is now created and your source file is opened in the editor.
 
@@ -70,7 +73,7 @@ Your project is now created and your source file is opened in the editor.
 
    In the **Name** box, type a name for the project, for example, *DesktopApp*. Choose **OK**.
 
-   ![Screenshot of the New Project dialog box in Visual Studio 2017. The item Windows Desktop Wizard is selected. The name textbox says DesktopApp.](../build/media/desktop-app-new-project-name-153.png "Name the DesktopApp project")
+   :::image type="content" source="../build/media/desktop-app-new-project-name-153.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2017. The item Windows Desktop Wizard is selected. The name textbox says DesktopApp.":::
 
 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Windows application (.exe)**. Under **Additional options**, select **Empty project**. Make sure **Precompiled Header** isn't selected. Choose **OK** to create the project.
 
@@ -80,9 +83,9 @@ Your project is now created and your source file is opened in the editor.
    The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appeared, and then choosing New Item.
    :::image-end:::
  
-1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**.
+1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**.
 
-   ![Screenshot of the Add New Item dialog box in Visual Studio 2017. Installed > Visual C plus plus is selected on the left and the C plus plus File option is highlighted.](../build/media/desktop-app-add-cpp-file-153.png "Add .cpp file to DesktopApp Project")
+   :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2017. Visual C plus plus is selected on the left and the C plus plus File option is highlighted.":::
 
 Your project is now created and your source file is opened in the editor.
 
@@ -98,23 +101,23 @@ Your project is now created and your source file is opened in the editor.
 
    In the **Name** box, type a name for the project, for example, *DesktopApp*. Choose **OK**.
 
-   ![Screenshot of the New Project dialog box in Visual Studio 2015 with Installed > Templates > Visual C plus plus > Win32 selected, the Win32 Project option highlighted, and DesktopApp typed in the Name text box.](../build/media/desktop-app-new-project-name-150.png "Name the DesktopApp project")
+   :::image type="content" source="../build/media/desktop-app-new-project-name-150.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2015 with the Win32 Project option highlighted, and DesktopApp typed in the Name text box.":::
 
 1. On the **Overview** page of the **Win32 Application Wizard**, choose **Next**.
 
-   ![Create DesktopApp in Win32 Application Wizard Overview page.](../build/media/desktop-app-win32-wizard-overview-150.png "Create DesktopApp in Win32 Application Wizard Overview")
+   :::image type="content" source="../build/media/desktop-app-win32-wizard-overview-150.png" alt-text="Screenshot of the dialog box in Visual Studio 2015 that shows the Win32 Application Wizard Overview page.":::
 
 1. On the **Application Settings** page, under **Application type**, select **Windows application**. Under **Additional options**, uncheck **Precompiled header**, then select **Empty project**. Choose **Finish** to create the project.
 
 1. In **Solution Explorer**, right-click the DesktopApp project, choose **Add**, and then choose **New Item**.
 
-    :::image type="complex" source="../build/media/desktop-app-project-add-new-item-150.gif" alt-text="An animation showing adding a new item to DesktopApp Project in Visual Studio 2015.":::
+    :::image type="complex" source="../build/media/desktop-app-project-add-new-item-150.gif" alt-text="Animation showing adding a new item to DesktopApp Project in Visual Studio 2015.":::
     The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item.
     :::image-end:::
 
-1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**.
+1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**.
 
-   ![Screenshot of the Add New Item dialog box in Visual Studio 2015 with Installed > Visual C plus plus selected and the C plus plus File option highlighted.](../build/media/desktop-app-add-cpp-file-150.png "Add .cpp file to DesktopApp Project")
+   :::image type="content" source="../build/media/desktop-app-add-cpp-file-150.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2015 with Visual C plus plus selected and the C plus plus File option highlighted.":::
 
 Your project is now created and your source file is opened in the editor.
 
@@ -142,7 +145,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S
    > [!NOTE]
    > What are all those extra words, such as `WINAPI`, or `CALLBACK`, or `HINSTANCE`, or `_In_`? The traditional Windows API uses typedefs and preprocessor macros extensively to abstract away some of the details of types and platform-specific code, such as calling conventions, **`__declspec`** declarations, and compiler pragmas. In Visual Studio, you can use the IntelliSense [Quick Info](/visualstudio/ide/using-intellisense#quick-info) feature to see what these typedefs and macros define. Hover your mouse over the word of interest, or select it and press **Ctrl**+**K**, **Ctrl**+**I** for a small pop-up window that contains the definition. For more information, see [Using IntelliSense](/visualstudio/ide/using-intellisense). Parameters and return types often use *SAL Annotations* to help you catch programming errors. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md).
 
-1. Windows desktop programs require `<windows.h>`. You'll also frequently see `#include <tchar.h>`. That's to make it easier to write an app that can work with either **`char`** or **`wchar_t`**. The way it works is that you instead use the `TCHAR` macro in your code, which resolves ultimately to **`wchar_t`** if the `UNICODE` symbol is defined in your project, otherwise it resolves to **`char`**.  If you always build with UNICODE enabled, you don't need `TCHAR` and can just use **`wchar_t`** directly. For more information, see [Using generic-text mappings](../c-runtime-library/using-generic-text-mappings.md). The following code shows theses two `#include` statements at the top of the file.
+1. Windows desktop programs require `<windows.h>`. You also frequently see `#include <tchar.h>`. That's to make it easier to write an app that can work with either **`char`** or **`wchar_t`**. The way it works is that you instead use the `TCHAR` macro in your code, which resolves ultimately to **`wchar_t`** if the `UNICODE` symbol is defined in your project, otherwise it resolves to **`char`**. If you always build with UNICODE enabled, you don't need `TCHAR` and can just use **`wchar_t`** directly. For more information, see [Using generic-text mappings](../c-runtime-library/using-generic-text-mappings.md). The following code shows these two `#include` statements at the top of the file.
 
    ```cpp
    #include <windows.h>
@@ -166,7 +169,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S
 
 ### Add functionality to the `WinMain` function
 
-1. In the `WinMain` function, you need to capture some basic information about your main window. You do that by filling out a structure of type [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). The structure contains information about the window such as the application icon, the background color of the window, the name to display in the title bar, among other things. Importantly, it contains a function pointer to your window procedure that handles the messages that Windows sends to your app. The following example shows a typical `WNDCLASSEX` structure:
+1. In the `WinMain` function, you need to capture some basic information about your main window. You do that by filling out a structure of type [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). The structure contains information about the window, such as the application icon, the background color of the window, the name to display in the title bar, among other things. Importantly, it contains a function pointer to your window procedure that handles the messages that Windows sends to your app. The following example shows a typical `WNDCLASSEX` structure:
 
    ```cpp
    WNDCLASSEX wcex;
@@ -185,9 +188,9 @@ Next, learn how to create the code for a Windows desktop application in Visual S
    wcex.hIconSm        = LoadIcon(wcex.hInstance, IDI_APPLICATION);
    ```
 
-   For information about the fields of the structure above, see [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw).
+   For information about the fields of this structure, see [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw).
 
-1. Once you have the `WNDCLASSEX` structure filled out, you register it with Windows so that it knows about your window and how to send messages to it. Use the [`RegisterClassEx`](/windows/win32/api/winuser/nf-winuser-registerclassexw) function and pass the window class structure as an argument. The `_T` macro is used because we use the `TCHAR` type per the discussion about Unicode above. The following code shows how to register the window class.
+1. Once you have the `WNDCLASSEX` structure filled out, you register it with Windows so that it knows about your window and how to send messages to it. Use the [`RegisterClassEx`](/windows/win32/api/winuser/nf-winuser-registerclassexw) function and pass the window class structure as an argument. The `_T` macro is used because we use the `TCHAR` type per the preceding discussion about Unicode. The following code shows how to register the window class.
 
    ```cpp
    if (!RegisterClassEx(&wcex))
@@ -201,7 +204,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S
    }
    ```
 
-1. Next you create a window using the [`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw) function.
+1. Create a window using the [`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw) function.
 
    ```cpp
    static TCHAR szWindowClass[] = _T("DesktopApp");
@@ -434,7 +437,7 @@ As promised, the complete code for the working application follows.
 
 ### To build this example
 
-1. Delete all the code in *HelloWindowsDesktop.cpp* in the editor. Copy this example code and paste it into *HelloWindowsDesktop.cpp*:
+1. Delete all the code in *`HelloWindowsDesktop.cpp`* in the editor. Copy this example code and paste it into *`HelloWindowsDesktop.cpp`*:
 
    ```cpp
    // HelloWindowsDesktop.cpp
@@ -591,12 +594,12 @@ As promised, the complete code for the working application follows.
     The animation shows clicking the save all button, then choosing Build > Build Solution from the main menu.
     :::image-end:::
 
-1. To run the application, press **F5**. A window with the text "Hello, Windows desktop!" should appear.
+1. To run the application, press **F5**. A window with the text `Hello, Windows desktop!` should appear.
 
-   ![Screenshot of the running project. It shows a window with the title Windows Desktop Guided Tour Application. The contents of the window are Hello, Windows desktop!.](../build/media/desktop-app-project-run-157.PNG "Run the DesktopApp Project")
+    :::image type="content" source="../build/media/desktop-app-project-run-157.png" alt-text="Screenshot of a window with the title Windows Desktop Guided Tour Application. The contents of the window are Hello, Windows desktop!.":::
 
 Congratulations! You've built a traditional Windows desktop application.
 
 ## See also
 
-[Windows C++ desktop application types](overview-of-windows-programming-in-cpp.md)
+- [Windows C++ desktop application types](overview-of-windows-programming-in-cpp.md)
diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md
index 31686592dd..5878dda437 100644
--- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md
+++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md
@@ -5,6 +5,7 @@ ms.date: 06/28/2022
 helpviewer_keywords: ["deployment for Visual C++"]
 ms.assetid: 66735cda-8fe3-4211-a19a-2cf717a12a3f
 ms.custom: intro-deployment
+ms.topic: install-set-up-deploy
 ---
 # Walkthrough: Deploy a Visual C++ application by using a setup project
 
diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md
index 731fcf8637..3a41909127 100644
--- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md
+++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md
@@ -5,6 +5,7 @@ ms.date: "04/23/2019"
 helpviewer_keywords: ["deploying Visual C++ applications"]
 ms.assetid: 47a81c47-9dbe-47c6-96cc-fbb2fda5e6ad
 ms.custom: intro-deployment
+ms.topic: install-set-up-deploy
 ---
 # Walkthrough: Deploying a Visual C++ Application to an Application-local Folder
 
diff --git a/docs/windows/working-with-color-image-editor-for-icons.md b/docs/windows/working-with-color-image-editor-for-icons.md
index 4b3830b690..61e61b55c1 100644
--- a/docs/windows/working-with-color-image-editor-for-icons.md
+++ b/docs/windows/working-with-color-image-editor-for-icons.md
@@ -5,6 +5,7 @@ ms.date: "02/15/2019"
 f1_keywords: ["vc.editors.image.color", "vc.editors.customcolorselector", "vc.editors.loadcolorpalette", "vc.editors.colorswindow"]
 helpviewer_keywords: ["images [C++], background colors", "Image editor [C++], Colors Palette", "colors [C++], image", "Colors Palette, Image editor", "palettes, Image editor colors", "foreground colors [C++], Image editor", "colors [C++]", "Image editor [C++], colors", "colors [C++], Image editor", "colors [C++], image", "images [C++], colors", "Image editor [C++], colors", "Fill tool", "colors [C++], image", "images [C++], colors", "colors [C++], selection tools", "Image editor [C++], colors", "Select Color tool", "dithered color, Image editor", "Custom Color Selector dialog box [C++]", "Image editor [C++], Colors Palette", "colors [C++], image", "bitmaps [C++], colors", "images [C++], colors", "HSL values", "Colors Palette, Image editor", "RGB color values", "Adjust Colors command [C++]", "Image editor [C++], dithered color", "Image editor [C++], Colors Palette", "Colors Palette, Image editor", "colors [C++], inverting", "colors [C++]", "Color Indicator", "colors [C++], Colors window", "Colors window, hiding colors", "Show Colors Window command", "Colors window, displaying colors", "color palettes [C++]", "palettes", "palettes, Image editor", "colors [C++], Image editor", "Image editor [C++], palettes", "color palettes", "Load Palette Colors dialog box [C++]", "opaque backgrounds [C++]", "colors [C++], image", "Image editor [C++], transparent or opague backgrounds", "images [C++], transparency", "images [C++], opaque background", "colors [C++], image", "Image editor [C++], color inversion", "images [C++], colors", "colors [C++], inverting"]
 ms.assetid: d34ff96f-241d-494f-abdd-13811ada8cd3
+ms.topic: how-to
 ---
 # How to: Work with Color
 
diff --git a/docs/windows/working-with-resource-files.md b/docs/windows/working-with-resource-files.md
index 6e2944a42c..13fbb17f8c 100644
--- a/docs/windows/working-with-resource-files.md
+++ b/docs/windows/working-with-resource-files.md
@@ -3,6 +3,7 @@ description: "Learn more about: Working with Resource Files"
 title: "Working with Resource Files (C++)"
 ms.date: "02/14/2019"
 helpviewer_keywords: ["resources [C++], about resources", "resources [C++], about resource files", "resource files [C++], about resource files"]
+ms.topic: concept-article
 ---
 # Working with Resource Files
 
