blob: 7ff94334ecf3300e9d99dcf44270e7849a314b08 [file] [log] [blame]
..
-------------------------------------------------------------------
NOTE: This file is automatically generated by running clang-tblgen
-gen-diag-docs. Do not edit this file by hand!!
-------------------------------------------------------------------
.. Add custom CSS to output. FIXME: This should be put into <head> rather
than the start of <body>.
.. raw:: html
<style>
table.docutils {
width: 1px;
}
table.docutils td {
border: none;
padding: 0 0 0 0.2em;
vertical-align: middle;
white-space: nowrap;
width: 1px;
font-family: monospace;
}
table.docutils tr + tr {
border-top: 0.2em solid #aaa;
}
.error {
font-family: monospace;
font-weight: bold;
color: #c00;
}
.warning {
font-family: monospace;
font-weight: bold;
color: #80a;
}
.remark {
font-family: monospace;
font-weight: bold;
color: #00c;
}
.diagtext {
font-family: monospace;
font-weight: bold;
}
</style>
.. FIXME: rST doesn't support formatting this, so we format all <td> elements
as monospace font face instead.
.. |nbsp| unicode:: 0xA0
:trim:
.. Roles generated by clang-tblgen.
.. role:: error
.. role:: warning
.. role:: remark
.. role:: diagtext
.. role:: placeholder(emphasis)
=========================
Diagnostic flags in Clang
=========================
.. contents::
:local:
Introduction
============
This page lists the diagnostic flags currently supported by Clang.
Diagnostic flags
================
-W
--
Synonym for `-Wextra`_.
-W#pragma-messages
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-W#warnings
-----------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-WCFString-literal
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`|
+------------------------------------------------------------------------------------------------------------------------------------+
-WCL4
-----
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wall`_, `-Wextra`_.
-WIndependentClass-attribute
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`|
+------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+
-WNSObject-attribute
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`|
+--------------------------------------------------------------------------------------------------------------+
-Wabi
-----
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wabsolute-value
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`|
| ||:diagtext:`pointer` || |
| |+--------------------+| |
| ||:diagtext:`function`|| |
| |+--------------------+| |
| ||:diagtext:`array` || |
| |+--------------------+| |
+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`|
+------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`|
| ||:diagtext:`integer` || ||:diagtext:`integer` || |
| |+--------------------------+| |+--------------------------+| |
| ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| |
| |+--------------------------+| |+--------------------------+| |
| ||:diagtext:`complex` || ||:diagtext:`complex` || |
| |+--------------------------+| |+--------------------------+| |
+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
-Wabstract-final-class
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------+--------------------+-------------+
|:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`|
| ||:diagtext:`final` || |
| |+------------------+| |
| ||:diagtext:`sealed`|| |
| |+------------------+| |
+-----------------------------------------------------------------+--------------------+-------------+
-Wabstract-vbase-init
---------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Waddress
---------
This diagnostic is enabled by default.
Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_.
-Waddress-of-packed-member
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Waddress-of-temporary
----------------------
This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`|
+-----------------------------------------------------------------------------------------------------------+
-Waggregate-return
------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wall
-----
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_.
-Walloca-with-align-alignof
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`|
+--------------------------------------------------------------------------------------------------------------------+
-Wambiguous-delete
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wambiguous-ellipsis
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+---------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+|
| ||:diagtext:`, not a function parameter pack`||
| |+-------------------------------------------+|
| || ||
| |+-------------------------------------------+|
+------------------------------------------------------------------------------------------------+---------------------------------------------+
-Wambiguous-macro
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------+
-Wambiguous-member-template
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wanalyzer-incompatible-plugin
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`|
+----------------------------------------------------------------------------------------------------------------------------------------+
-Wanonymous-pack-parens
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`|
+---------------------------------------------------------------------------------------------------------+
-Warc
-----
This diagnostic is enabled by default.
Controls `-Warc-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_.
-Warc-bridge-casts-disallowed-in-nonarc
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`|
+-------------------------------------------------------------------------------------------------------------+
-Warc-maybe-repeated-use-of-weak
--------------------------------
**Diagnostic text:**
+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`|
| ||:diagtext:`variable` || ||:diagtext:`function`|| |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`property` || ||:diagtext:`method` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`implicit property`|| ||:diagtext:`block` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || |
| |+-----------------------------+| |+--------------------+| |
+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
-Warc-non-pod-memaccess
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`|
| ||:diagtext:`destination for`|| |
| |+---------------------------+| |
| ||:diagtext:`source of` || |
| |+---------------------------+| |
+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
-Warc-performSelector-leaks
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`|
+-------------------------------------------------------------------------------------------------------+
-Warc-repeated-use-of-weak
--------------------------
Also controls `-Warc-maybe-repeated-use-of-weak`_.
**Diagnostic text:**
+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`|
| ||:diagtext:`variable` || ||:diagtext:`function`|| |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`property` || ||:diagtext:`method` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`implicit property`|| ||:diagtext:`block` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || |
| |+-----------------------------+| |+--------------------+| |
+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
-Warc-retain-cycles
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`|
+------------------------------------------------------------------------------------------------------------------------------------------------------+
-Warc-unsafe-retained-assign
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`|
| ||:diagtext:`array literal` || ||:diagtext:`property`|| |
| |+-------------------------------+| |+--------------------+| |
| ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| |
| |+-------------------------------+| |+--------------------+| |
| ||:diagtext:`numeric literal` || | | |
| |+-------------------------------+| | | |
| ||:diagtext:`boxed expression` || | | |
| |+-------------------------------+| | | |
| ||:diagtext:`<should not happen>`|| | | |
| |+-------------------------------+| | | |
| ||:diagtext:`block literal` || | | |
| |+-------------------------------+| | | |
+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`|
| ||:diagtext:`weak` || ||:diagtext:`property`|| |
| |+------------------------------+| |+--------------------+| |
| ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| |
| |+------------------------------+| |+--------------------+| |
+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`|
+-----------------------------------------------------------------------------------------------------------------------------+
-Wargument-outside-range
------------------------
This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Warray-bounds
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`|
| || || |
| |+-------------+| |
| ||:diagtext:`s`|| |
| |+-------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`|
+----------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array argument is too small; contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements, callee requires at least` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on zero-length arrays`|
+-----------------------------------------------------------------------------------+
-Warray-bounds-pointer-arithmetic
---------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
|:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`|
| || || |
| |+-------------+| |
| ||:diagtext:`s`|| |
| |+-------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the array`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wasm
-----
This diagnostic is enabled by default.
Controls `-Wasm-ignored-qualifier`_, `-Wasm-operand-widths`_.
-Wasm-ignored-qualifier
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignored` |nbsp| :placeholder:`A` |nbsp| :diagtext:`qualifier on asm`|
+----------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`meaningless 'volatile' on asm outside function`|
+-------------------------------------------------------------------------------------+
-Wasm-operand-widths
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`value size does not match register size specified by the constraint and modifier`|
+-----------------------------------------------------------------------------------------------------------------------+
-Wassign-enum
-------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of enumerated type` |nbsp| :placeholder:`A`|
+---------------------------------------------------------------------------------------------------------------+
-Wassume
--------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`|
+-----------------------------------------------------------------------------------------------------------------------------------------+
-Wat-protocol
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`@protocol is using a forward protocol declaration of` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------+
-Watimport-in-framework-header
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`|
+------------------------------------------------------------------------------------------------------------------------------------+
-Watomic-alignment
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`misaligned or large atomic operation may incur significant performance penalty`|
+---------------------------------------------------------------------------------------------------------------------+
-Watomic-memory-ordering
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`|
+-------------------------------------------------------------------------------------------+
-Watomic-properties
-------------------
Controls `-Wcustom-atomic-properties`_, `-Wimplicit-atomic-properties`_.
-Watomic-property-with-user-defined-accessor
--------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
|:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+|
| ||:diagtext:`getter`|| ||:diagtext:`getter`||
| |+------------------+| |+------------------+|
| ||:diagtext:`setter`|| ||:diagtext:`setter`||
| |+------------------+| |+------------------+|
+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
-Wattribute-packed-for-bitfield
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wattributes
------------
This diagnostic is enabled by default.
Controls `-Wignored-attributes`_, `-Wunknown-attributes`_.
-Wauto-disable-vptr-sanitizer
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`|
+------------------------------------------------------------------------------------------------------+
-Wauto-import
-------------
**Diagnostic text:**
+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`|
| ||:diagtext:`include` || |
| |+-------------------------------+| |
| ||:diagtext:`import` || |
| |+-------------------------------+| |
| ||:diagtext:`include\_next` || |
| |+-------------------------------+| |
| ||:diagtext:`\_\_include\_macros`|| |
| |+-------------------------------+| |
+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
-Wauto-storage-class
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`|
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wauto-var-id
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------+
-Wavailability
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`|
+--------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring availability attribute` |nbsp| |+--------------------------------------+|
| ||:diagtext:`on '+load' method` ||
| |+--------------------------------------+|
| ||:diagtext:`with constructor attribute`||
| |+--------------------------------------+|
| ||:diagtext:`with destructor attribute` ||
| |+--------------------------------------+|
+------------------------------------------------------------------------------+----------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`|
+------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B` |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version` |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`|
| ||:diagtext:`introduced`|| ||:diagtext:`introduced`|| |
| |+----------------------+| |+----------------------+| |
| ||:diagtext:`deprecated`|| ||:diagtext:`deprecated`|| |
| |+----------------------+| |+----------------------+| |
| ||:diagtext:`obsoleted` || ||:diagtext:`obsoleted` || |
| |+----------------------+| |+----------------------+| |
+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`|
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`availability does not match previous declaration`|
+---------------------------------------------------------------------------------------+
+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
| || || ||:diagtext:`introduced after` || ||:diagtext:`the protocol method it implements`|| |
| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`deprecated before`|| ||:diagtext:`overridden method` || |
| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
| | | ||:diagtext:`obsoleted before` || | | |
| | | |+-----------------------------+| | | |
+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`is available`|
| || || ||:diagtext:`the protocol method it implements`|| |
| |+------------------------------+| |+---------------------------------------------+| |
| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`its overridden method` || |
| |+------------------------------+| |+---------------------------------------------+| |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
-Wbackend-plugin
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Wbackslash-newline-escape
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by space`|
+-------------------------------------------------------------------------------+
-Wbad-function-cast
-------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbinary-literal
----------------
Controls `-Wc++14-binary-literal`_, `-Wc++98-c++11-compat-binary-literal`_, `-Wgnu-binary-literal`_.
-Wbind-to-temporary-copy
------------------------
Also controls `-Wc++98-compat-bind-to-temporary-copy`_.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+|
| ||:diagtext:`private` ||
| |+---------------------+|
| ||:diagtext:`protected`||
| |+---------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
+--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
| ||:diagtext:`copying variable` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`copying parameter` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`returning object` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`initializing statement expression result`|| |
| |+----------------------------------------------------+| |
| ||:diagtext:`throwing object` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`copying member subobject` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`copying array element` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`allocating object` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`copying temporary` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`initializing base subobject` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`initializing vector element` || |
| |+----------------------------------------------------+| |
| ||:diagtext:`capturing value` || |
| |+----------------------------------------------------+| |
+--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
-Wbinding-in-condition
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`|
+--------------------------------------------------------------------------------------------------------------+
-Wbitfield-constant-conversion
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbitfield-enum-conversion
--------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbitfield-width
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
|:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+|
| || ||
| |+-------------+|
| ||:diagtext:`s`||
| |+-------------+|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
|:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+|
| || ||
| |+-------------+|
| ||:diagtext:`s`||
| |+-------------+|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
-Wbitwise-op-parentheses
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------+
-Wblock-capture-autoreleasing
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`|
+-----------------------------------------------------------------------------------------------------------------------------+
-Wbool-conversion
-----------------
This diagnostic is enabled by default.
Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbool-conversions
------------------
Synonym for `-Wbool-conversion`_.
-Wbraced-scalar-init
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`|
+-----------------------------------------------------------------------+
-Wbridge-cast
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`|
+------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`|
+-------------------------------------------------------------------------------------------------------+
-Wbuiltin-macro-redefined
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`|
+---------------------------------------------------------------+
+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`|
+---------------------------------------------------------------+
-Wbuiltin-memcpy-chk-size
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will always overflow destination buffer`|
+------------------------------------------------------------------------------------------------------+
-Wbuiltin-requires-header
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++-compat
------------
**Diagnostic text:**
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`|
| || |||:diagtext:`struct`|| ||:diagtext:`size 1` || |
| |+-------------------------+|+------------------+| |+-------------------------+| |
| ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| |
| |+-------------------------+|+------------------+| |+-------------------------+| |
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
-Wc++0x-compat
--------------
Synonym for `-Wc++11-compat`_.
-Wc++0x-extensions
------------------
Synonym for `-Wc++11-extensions`_.
-Wc++0x-narrowing
-----------------
Synonym for `-Wc++11-narrowing`_.
-Wc++11-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-narrowing`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`|
| ||:diagtext:`have type 'long long'`|| |
| |+---------------------------------+| |
| ||:diagtext:`be ill-formed` || |
| |+---------------------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`|
+--------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`|
+-------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`|
+-------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`|
+--------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`|
+--------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`|
+--------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`|
| ||:diagtext:`have type 'long long'`|| |
| |+---------------------------------+| |
| ||:diagtext:`be ill-formed` || |
| |+---------------------------------+| |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
-Wc++11-compat-deprecated-writable-strings
------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+---------------------------------------------------------------------------------------------------------------------------------+
-Wc++11-compat-pedantic
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wc++11-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_.
-Wc++11-compat-reserved-user-defined-literal
--------------------------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`|
+----------------------------------------------------------------------------------------------------------------------------------+
-Wc++11-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_.
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`|
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
| ||:diagtext:`integral` || |
| |+-----------------------+| |
| ||:diagtext:`enumeration`|| |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`|
+---------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`|
+-----------------------------------------------------------------------------------------------------------+
+---------------------------+-----------------------+--------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`|
| ||:diagtext:`defaulted`|| |
| |+---------------------+| |
| ||:diagtext:`deleted` || |
| |+---------------------+| |
+---------------------------+-----------------------+--------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
+-----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`|
+--------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`|
+------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`|
+-----------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`|
+--------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`|
+------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`|
+---------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
+----------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`|
+-------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`|
+--------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`|
+----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`|
+------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`|
+--------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`|
+----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`|
| ||:diagtext:`function`|| |
| |+--------------------+| |
| ||:diagtext:`object` || |
| |+--------------------+| |
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`|
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`|
+---------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`|
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`|
| ||:diagtext:`struct` || |
| |+---------------------+| |
| ||:diagtext:`interface`|| |
| |+---------------------+| |
| ||:diagtext:`union` || |
| |+---------------------+| |
| ||:diagtext:`class` || |
| |+---------------------+| |
| ||:diagtext:`enum` || |
| |+---------------------+| |
+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`|
+-------------------------------------------------------------------------------+
-Wc++11-extra-semi
------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`|
+-------------------------------------------------------------------------------------------+
-Wc++11-inline-namespace
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`|
+----------------------------------------------------------------------------+
-Wc++11-long-long
-----------------
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`|
+-----------------------------------------------------------------------+
-Wc++11-narrowing
-----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
| |+--------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ||
| ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext:`non-type template argument`|| ||+----------------------------------------------------------------------------------------------------------------------+||
| |+--------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`|||
| ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+||
| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext:`constexpr if condition` || | |
| |+--------------------------------------+| | |
+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++14-binary-literal
----------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`|
+------------------------------------------------------------------------------------+
-Wc++14-compat
--------------
Controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_.
-Wc++14-compat-pedantic
-----------------------
Controls `-Wc++14-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_.
-Wc++14-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++14-binary-literal`_.
**Diagnostic text:**
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`|
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`|
+-------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`|
+----------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`|
+-------------------------------------------------------------------------------+
-Wc++17-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wc++17-compat-mangling`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_.
-Wc++17-compat-mangling
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++17-compat-pedantic
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wc++17-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_.
-Wc++17-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`|
+------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++17 extension`|
+---------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++17 extension`|
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++17 extension`|
+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++17 extension`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`|
+----------------------------------------------------------------------------------------+
+----------------------------------------+--------------------+-------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++17 extension`|
| ||:diagtext:`if` || |
| |+------------------+| |
| ||:diagtext:`switch`|| |
| |+------------------+| |
+----------------------------------------+--------------------+-------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++17 extension`|
+-----------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++17 extension`|
+---------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++17 extension; define each namespace separately`|
+-------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`|
| ||:diagtext:`a namespace` || |
| |+-------------------------+| |
| ||:diagtext:`an enumerator`|| |
| |+-------------------------+| |
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++17 extension`|
+---------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++17 extension`|
+------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++17 extension`|
+--------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++17 extension`|
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++17 extension`|
+-----------------------------------------------------------------------------------------------+
-Wc++1y-extensions
------------------
Synonym for `-Wc++14-extensions`_.
-Wc++1z-compat
--------------
Synonym for `-Wc++17-compat`_.
-Wc++1z-compat-mangling
-----------------------
Synonym for `-Wc++17-compat-mangling`_.
-Wc++1z-extensions
------------------
Synonym for `-Wc++17-extensions`_.
-Wc++2a-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++2a; add a space to avoid a change in behavior`|
+------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++2a`|
+-------------------------------------------------------------------------------------------+
-Wc++2a-compat-pedantic
-----------------------
Synonym for `-Wc++2a-compat`_.
-Wc++2a-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++2a extension`|
+----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++2a extension`|
+--------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension`|
+--------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-c++17-compat
--------------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++2a`|
+-------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++2a`|
+-----------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`|
+----------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-c++17-compat-pedantic
-----------------------------------------
Also controls `-Wc++98-c++11-c++14-c++17-compat`_.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-compat
--------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++17`|
+----------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------+
+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++17`|
| ||:diagtext:`if` || |
| |+------------------+| |
| ||:diagtext:`switch`|| |
| |+------------------+| |
+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++17`|
+--------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++17`|
+-------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++17`|
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++17`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-compat-pedantic
-----------------------------------
Also controls `-Wc++98-c++11-c++14-compat`_.
**Diagnostic text:**
+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++17`|
| ||:diagtext:`a namespace` || |
| |+-------------------------+| |
| ||:diagtext:`an enumerator`|| |
| |+-------------------------+| |
+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-compat
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`|
+---------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`|
+-----------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`|
+----------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible with C++ standards before C++14`|
+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are incompatible with C++ standards before C++14`|
+-------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable templates are incompatible with C++ standards before C++14`|
+----------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-compat-binary-literal
-----------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`|
+---------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-compat-pedantic
-----------------------------
Controls `-Wc++98-c++11-compat`_, `-Wc++98-c++11-compat-binary-literal`_.
-Wc++98-compat
--------------
Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_, `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_.
**Diagnostic text:**
+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`|
+-------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`|
+---------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`|
+--------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`|
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`|
+---------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`|
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`|
+-------------------------------------------------------------------------------------------+
+---------------------------+-----------------------+--------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`|
| ||:diagtext:`defaulted`|| |
| |+---------------------+| |
| ||:diagtext:`deleted` || |
| |+---------------------+| |
+---------------------------+-----------------------+--------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`|
+------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`|
+----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are incompatible with C++98`|
+-----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
+-----------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name specifier is incompatible with C++98`|
+-----------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are incompatible with C++98`|
+------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is incompatible with C++98`|
+--------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member of the declaring class is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are incompatible with C++98`|
+------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is incompatible with C++98`|
+------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`jump from this indirect goto statement to one of its possible targets is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialization of initializer\_list object is incompatible with C++98`|
+------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible with C++98`|
+------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`lambda expressions are incompatible with C++98`|
+-------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98`|
+-----------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible with C++98`|
+------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`universal character name referring to a control character is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`specifying character '`:placeholder:`A`:diagtext:`' with a universal character name is incompatible with C++98`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are incompatible with C++98`|
+------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are incompatible with C++98`|
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
+----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data members is incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------------------+
+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`|
| ||:diagtext:`anonymous struct`|| ||:diagtext:`default constructor` || |
| |+----------------------------+| |+------------------------------------+| |
| ||:diagtext:`union` || ||:diagtext:`copy constructor` || |
| |+----------------------------+| |+------------------------------------+| |
| | | ||:diagtext:`move constructor` || |
| | | |+------------------------------------+| |
| | | ||:diagtext:`copy assignment operator`|| |
| | | |+------------------------------------+| |
| | | ||:diagtext:`move assignment operator`|| |
| | | |+------------------------------------+| |
| | | ||:diagtext:`destructor` || |
| | | |+------------------------------------+| |
+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`|
+---------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`block` || |
| |+-----------------------+| |
| ||:diagtext:`method` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`|
+--------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`|
+----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`|
+------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`|
+--------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`|
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`|
+----------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`|
+----------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`|
| ||:diagtext:`function`|| |
| |+--------------------+| |
| ||:diagtext:`object` || |
| |+--------------------+| |
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`|
+-----------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`|
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`|
+---------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`|
| ||:diagtext:`struct` || |
| |+---------------------+| |
| ||:diagtext:`interface`|| |
| |+---------------------+| |
| ||:diagtext:`union` || |
| |+---------------------+| |
| ||:diagtext:`class` || |
| |+---------------------+| |
| ||:diagtext:`enum` || |
| |+---------------------+| |
+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`|
+-----------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`|
+------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`|
+-------------------------------------------------------------------------------------+
-Wc++98-compat-bind-to-temporary-copy
-------------------------------------
**Diagnostic text:**
+---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
|:warning:`warning:` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`|
| ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| |
| |+----------------------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || |
| |+----------------------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || |
| |+----------------------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext:`initializing statement expression result`|| ||:diagtext:`invoke a deleted constructor` || |
| |+----------------------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext:`throwing object` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`copying member subobject` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`copying array element` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`allocating object` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`copying temporary` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`initializing base subobject` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`initializing vector element` || | | |
| |+----------------------------------------------------+| | | |
| ||:diagtext:`capturing value` || | | |
| |+----------------------------------------------------+| | | |
+---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
-Wc++98-compat-extra-semi
-------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------+
-Wc++98-compat-local-type-template-args
---------------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-compat-pedantic
-----------------------
Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`|
| ||:diagtext:`integral` || |
| |+-----------------------+| |
| ||:diagtext:`enumeration`|| |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`|
+------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`|
+----------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`|
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`|
+-----------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`|
+-----------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`|
+----------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`|
+----------------------------------------------------------------------------------+
-Wc++98-compat-unnamed-type-template-args
-----------------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`|
+---------------------------------------------------------------------------------------------------+
-Wc11-extensions
----------------
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`|
+---------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11-specific feature`|
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11 extension`|
+----------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`generic selections are a C11-specific feature`|
+------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`\_Noreturn functions are a C11-specific feature`|
+--------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`\_Static\_assert is a C11-specific feature`|
+---------------------------------------------------------------------------------+
-Wc99-compat
------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+---------------------------+--------------------------------------------------------+--------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C99`|
| ||:diagtext:`using this character in an identifier` || |
| |+------------------------------------------------------+| |
| ||:diagtext:`starting an identifier with this character`|| |
| |+------------------------------------------------------+| |
+---------------------------+--------------------------------------------------------+--------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C99`|
+---------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C99 onwards`|
| ||:diagtext:`have type 'long long'`|| |
| |+---------------------------------+| |
| ||:diagtext:`be ill-formed` || |
| |+---------------------------------+| |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
-Wc99-extensions
----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`|
+-----------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
| ||:diagtext:`qualifier in` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| ||:diagtext:`static` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| || || ||:diagtext:`'\[\*\] '`|| |
| |+--------------------------------+| |+---------------------+| |
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`|
+-----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`|
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`|
+-------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after the macro name`|
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
+--------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
+------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`|
+-------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`|
+---------------------------------------------------------------------------------------+
-Wcast-align
------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-calling-convention
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling conventions '`:placeholder:`A`:diagtext:`' and '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at runtime`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-of-sel-type
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated; use sel\_getName instead`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-qual
-----------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops` |nbsp| |+-----------------------------------------+|
| ||:diagtext:`const and volatile qualifiers`||
| |+-----------------------------------------+|
| ||:diagtext:`const qualifier` ||
| |+-----------------------------------------+|
| ||:diagtext:`volatile qualifier` ||
| |+-----------------------------------------+|
+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have all intermediate pointers const qualified to be safe`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-qual-unrelated
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`|
| ||:diagtext:`const\_cast` || |
| |+---------------------------------+| |
| ||:diagtext:`static\_cast` || |
| |+---------------------------------+| |
| ||:diagtext:`reinterpret\_cast` || |
| |+---------------------------------+| |
| ||:diagtext:`dynamic\_cast` || |
| |+---------------------------------+| |
| ||:diagtext:`C-style cast` || |
| |+---------------------------------+| |
| ||:diagtext:`functional-style cast`|| |
| |+---------------------------------+| |
+---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wchar-align
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wchar-subscripts
-----------------
**Diagnostic text:**
+------------------------------------------------------------+-------------------------+-------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`|
| ||:diagtext:`lower bound`|| |
| |+-----------------------+| |
| ||:diagtext:`length` || |
| |+-----------------------+| |
+------------------------------------------------------------+-------------------------+-------------------------------------+
+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`|
+------------------------------------------------------------------------+
-Wclang-cl-pch
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`|
+-------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`|
+------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a filename not implemented yet; flag ignored`|
+--------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not implemented yet; flag ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wclass-varargs
---------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wnon-pod-varargs`_.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext:`function` ||| ||
| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext:`block` |||+------------------------------------------------------------------+||
| |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`|||
| ||:diagtext:`method` |||+------------------------------------------------------------------+||
| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
-Wcomma
-------
**Diagnostic text:**
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`|
+-----------------------------------------------------------------------------+
-Wcomment
---------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`|
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`|
+-----------------------------------------------------------------------------------+
+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
+------------------------------------------------------------+
+-----------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`|
+-----------------------------------------------------------------+
-Wcomments
----------
Synonym for `-Wcomment`_.
-Wcompare-distinct-pointer-types
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`|
+---------------------------------------------------------------------------+
-Wcomplex-component-init
------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`|
+----------------------------------------------------------------------------------------------------------------------+
-Wconditional-type-mismatch
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in conditional expression`|
+----------------------------------------------------------------------------------------------+
-Wconditional-uninitialized
---------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be uninitialized when` |nbsp| |+-----------------------------+|
| ||:diagtext:`used here` ||
| |+-----------------------------+|
| ||:diagtext:`captured by block`||
| |+-----------------------------+|
+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
-Wconfig-macros
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no effect on the import of '`:placeholder:`C`:diagtext:`'; pass '`|+------------------------------------------------+|:diagtext:`' on the command line to configure the module`|
| ||:diagtext:`definition`|| ||+----------------------------------------------+|| |
| |+----------------------+| |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`||| |
| ||:diagtext:`#undef` || ||+----------------------------------------------+|| |
| |+----------------------+| |+------------------------------------------------+| |
| | | ||+------------------------------+ || |
| | | |||:diagtext:`-U`:placeholder:`B`| || |
| | | ||+------------------------------+ || |
| | | |+------------------------------------------------+| |
+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
-Wconstant-conversion
---------------------
This diagnostic is enabled by default.
Also controls `-Wbitfield-constant-conversion`_.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconstant-logical-operand
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of logical '`:placeholder:`A`:diagtext:`' with constant operand`|
+----------------------------------------------------------------------------------------------------------+
-Wconstexpr-not-const
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconsumed
----------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is attached to member of class '`:placeholder:`A`:diagtext:`' which isn't marked as consumable`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`state of variable '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`|
+--------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not in expected state when the function returns: expected '`:placeholder:`B`:diagtext:`', observed '`:placeholder:`C`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`argument not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`return state set for an unconsumable type '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`return value not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`' while it is in the '`:placeholder:`C`:diagtext:`' state`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the '`:placeholder:`B`:diagtext:`' state`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconversion
------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wshorten-64-to-32`_, `-Wsign-conversion`_, `-Wstring-conversion`_.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion when assigning computation result loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template argument with value '`:placeholder:`A`:diagtext:`' converted to '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type` |nbsp| :placeholder:`C`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template argument value '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`' for template parameter of type` |nbsp| :placeholder:`C`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconversion-null
-----------------
Synonym for `-Wnull-conversion`_.
-Wcoroutine
-----------
Synonym for `-Wcoroutine-missing-unhandled-exception`_.
-Wcoroutine-missing-unhandled-exception
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcovered-switch-default
------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`|
+--------------------------------------------------------------------------------------------------+
-Wcpp
-----
Synonym for `-W#warnings`_.
-Wcstring-format-directive
--------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+|
| ||:diagtext:`NSString`|| ||:diagtext:`method` ||
| |+--------------------+| |+----------------------+|
| ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`||
| |+--------------------+| |+----------------------+|
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
-Wctor-dtor-privacy
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wcuda-compat
-------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will be ignored`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`|
+---------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`|
+------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`|
+--------------------------------------------------------------------------------------------------------------+
-Wcustom-atomic-properties
--------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`|
| ||:diagtext:`getter`|| |
| |+------------------+| |
| ||:diagtext:`setter`|| |
| |+------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
-Wdangling
----------
This diagnostic is enabled by default.
Also controls `-Wdangling-field`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_.
**Diagnostic text:**
+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`|
| ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| ||+------------------------+|| |
| |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+||| |||:placeholder:`D` |nbsp| ||| |
| ||| ||:diagtext:`whose address is used as value of` || ||+-------------------------------+------------------------------------+|||| ||+------------------------+|| |
| ||| |+-------------------------------------------------------+| |||+-----------------------------+|:diagtext:`member of local variable`||||| |+--------------------------+| |
| ||| ||+--------------------------------+--------------------+|| |||| || ||||| || || |
| ||| |||+------------------------------+|:diagtext:`bound to`||| |||+-----------------------------+| ||||| |+--------------------------+| |
| ||| |||| || ||| ||||:diagtext:`reference` |nbsp| || ||||| | | |
| ||| |||+------------------------------+| ||| |||+-----------------------------+| ||||| | | |
| ||| ||||:diagtext:`implicitly` |nbsp| || ||| ||+-------------------------------+------------------------------------+|||| | | |
| ||| |||+------------------------------+| ||| |+----------------------------------------------------------------------+||| | | |
| ||| ||+--------------------------------+--------------------+|| ||+-------------------------+-----------------------+ |||| | | |
| ||| |+-------------------------------------------------------+| |||:diagtext:`local` |nbsp| |+---------------------+| |||| | | |
| ||| | | ||| ||:diagtext:`variable` || |||| | | |
| ||| | | ||| |+---------------------+| |||| | | |
| ||| | | ||| ||:diagtext:`reference`|| |||| | | |
| ||| | | ||| |+---------------------+| |||| | | |
| ||| | | ||+-------------------------+-----------------------+ |||| | | |
| ||| | | |+----------------------------------------------------------------------+||| | | |
| ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| | | |
| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | |
| ||+---------------------------------+----------------------------------------------------------+ || | | |
| |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+| || | | |
| ||| ||:diagtext:`initializer list subobject of local variable`|| || | | |
| ||| |+--------------------------------------------------------+| || | | |
| ||| ||:diagtext:`local initializer list` || || | | |
| ||| |+--------------------------------------------------------+| || | | |
| ||+---------------------------------+----------------------------------------------------------+ || | | |
| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | |
+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+
+---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`|
| ||:diagtext:`temporary` || ||:diagtext:`temporary` || |
| |+---------------------------------------------+| |+-------------------------+| |
| ||:diagtext:`backing array of initializer list`|| ||:diagtext:`backing array`|| |
| |+---------------------------------------------+| |+-------------------------+| |
+---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+
-Wdangling-else
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`|
+---------------------------------------------------------------------------------+
-Wdangling-field
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
| ||:diagtext:`variable` || |
| |+---------------------+| |
| ||:diagtext:`parameter`|| |
| |+---------------------+| |
+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
+---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`|
| ||:diagtext:`reference` || || || ||:diagtext:`binds to`|| |
| |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| |
| ||:diagtext:`backing array for 'std::initializer\_list'`|| ||:diagtext:`subobject of` |nbsp| || ||:diagtext:`is` || |
| |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| |
+---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
| ||:diagtext:`variable` || |
| |+---------------------+| |
| ||:diagtext:`parameter`|| |
| |+---------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdangling-initializer-list
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`|
| ||:diagtext:`initializer list subobject of the allocated object`|| |
| |+--------------------------------------------------------------+| |
| ||:diagtext:`the allocated initializer list` || |
| |+--------------------------------------------------------------+| |
+------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
-Wdate-time
-----------
**Diagnostic text:**
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is not reproducible`|
+------------------------------------------------------------------------------------------+
-Wdealloc-in-category
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a category`|
+---------------------------------------------------------------------------------+
-Wdebug-compression-unavailable
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections (zlib not installed)`|
+------------------------------------------------------------------------------------------+
-Wdeclaration-after-statement
-----------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing declarations and code`|
+-----------------------------------------------------------------------------------+
-Wdelegating-ctor-cycles
------------------------
This diagnostic is an error by default, but the flag ``-Wno-delegating-ctor-cycles`` can be used to disable the error.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`|
+------------------------------------------------------------------------------------------------------------------------+
-Wdelete-incomplete
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined behavior`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdelete-non-virtual-dtor
-------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is abstract but has non-virtual destructor`|
| ||:diagtext:`delete` || |
| |+----------------------+| |
| ||:diagtext:`destructor`|| |
| |+----------------------+| |
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that has virtual functions but non-virtual destructor`|
| ||:diagtext:`delete` || |
| |+----------------------+| |
| ||:diagtext:`destructor`|| |
| |+----------------------+| |
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated
------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-writable-strings`_.
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`|
+---------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`access declarations are deprecated; use using declarations instead`|
+---------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared` |nbsp| |+------------------------------------------------------------+|
| ||:diagtext:`constructor` || ||+------------------------+---------------------------------+||
| |+-------------------------------+| |||:diagtext:`copy` |nbsp| |+-------------------------------+|||
| ||:diagtext:`assignment operator`|| ||| ||:diagtext:`assignment operator`||||
| |+-------------------------------+| ||| |+-------------------------------+|||
| | | ||| ||:diagtext:`constructor` ||||
| | | ||| |+-------------------------------+|||
| | | ||+------------------------+---------------------------------+||
| | | |+------------------------------------------------------------+|
| | | ||:diagtext:`destructor` ||
| | | |+------------------------------------------------------------+|
+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated`|
+-------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' is deprecated, use '`:placeholder:`B`:diagtext:`' instead`|
+----------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`treating '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when in C++ mode, this behavior is deprecated`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not support the option '`:placeholder:`B`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is deprecated`|
+------------------------------------------------------------------------------------+
-Wdeprecated-attributes
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`|
+------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-declarations
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead`|
+--------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`|
+-----------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+----------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`|
+---------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`|
+-------------------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-dynamic-exception-spec
-----------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`|
+--------------------------------------------------------------------------------------+
-Wdeprecated-implementations
----------------------------
**Diagnostic text:**
+----------------------------------------------------------------------+----------------------+
|:warning:`warning:` |nbsp| :diagtext:`implementing deprecated` |nbsp| |+--------------------+|
| ||:diagtext:`method` ||
| |+--------------------+|
| ||:diagtext:`class` ||
| |+--------------------+|
| ||:diagtext:`category`||
| |+--------------------+|
+----------------------------------------------------------------------+----------------------+
+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implementing unavailable method`|
+----------------------------------------------------------------------+
-Wdeprecated-increment-bool
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++17`|
+---------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-isa-usage
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`|
+-------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`|
+----------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-pointer-introspection
---------------------------------------
This diagnostic is enabled by default.
Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`|
+--------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-pointer-introspection-performSelector
-------------------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`|
+--------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-register
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++17`|
+-------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-this-capture
-------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`|
+-------------------------------------------------------------------------------------------------------------+
-Wdeprecated-writable-strings
-----------------------------
Synonym for `-Wc++11-compat-deprecated-writable-strings`_.
-Wdirect-ivar-access
--------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`|
+------------------------------------------------------------------------------------------------------------------------------+
-Wdisabled-macro-expansion
--------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`|
+----------------------------------------------------------------------------+
-Wdisabled-optimization
-----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wdiscard-qual
--------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wdistributed-object-modifiers
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`|
+----------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wdiv-by-zero
-------------
Synonym for `-Wdivision-by-zero`_.
-Wdivision-by-zero
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-----------------------+----------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`|
| ||:diagtext:`remainder`|| |
| |+---------------------+| |
| ||:diagtext:`division` || |
| |+---------------------+| |
+---------------------------+-----------------------+----------------------------------------+
-Wdll-attribute-on-redeclaration
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdllexport-explicit-instantiation-decl
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`|
+---------------------------------------------------------------------------------------------------+
-Wdllimport-static-field-def
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`|
+---------------------------------------------------------------------------+
-Wdocumentation
---------------
Also controls `-Wdocumentation-deprecated-sync`_, `-Wdocumentation-html`_.
**Diagnostic text:**
+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`|
| ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || |
| |+--------------+|+---------------------+| |+---------------------+| |
| ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| |
| |+--------------+|+---------------------+| |+---------------------+| |
| | ||:diagtext:`protocol` || ||:diagtext:`protocol` || |
| | |+---------------------+| |+---------------------+| |
| | ||:diagtext:`struct` || ||:diagtext:`struct` || |
| | |+---------------------+| |+---------------------+| |
| | ||:diagtext:`union` || ||:diagtext:`union` || |
| | |+---------------------+| |+---------------------+| |
+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
+-----------------------------------------------------------+----------------+-----------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+-----------------------------------------------------------+----------------+-----------------------------+
+------------------------------------------------------------------+----------------+-------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+------------------------------------------------------------------+----------------+-------------------------------------+
+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`|
| ||:diagtext:`\\`|||:diagtext:`classdesign` || |
| |+--------------+|+------------------------+| |
| ||:diagtext:`@` |||:diagtext:`coclass` || |
| |+--------------+|+------------------------+| |
| | ||:diagtext:`dependency` || |
| | |+------------------------+| |
| | ||:diagtext:`helper` || |
| | |+------------------------+| |
| | ||:diagtext:`helperclass` || |
| | |+------------------------+| |
| | ||:diagtext:`helps` || |
| | |+------------------------+| |
| | ||:diagtext:`instancesize`|| |
| | |+------------------------+| |
| | ||:diagtext:`ownership` || |
| | |+------------------------+| |
| | ||:diagtext:`performance` || |
| | |+------------------------+| |
| | ||:diagtext:`security` || |
| | |+------------------------+| |
| | ||:diagtext:`superclass` || |
| | |+------------------------+| |
+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`|
| ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || |
| |+--------------+|+-------------------------+| |+---------------------------------+| |
| ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || |
| |+--------------+|+-------------------------+| |+---------------------------------+| |
| | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| |
| | |+-------------------------+| |+---------------------------------+| |
| | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| |
| | |+-------------------------+| |+---------------------------------+| |
| | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| |
| | |+-------------------------+| |+---------------------------------+| |
+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`|
+-------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`|
+-------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`|
+-----------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`|
+------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`|
+---------------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+|
| ||:diagtext:`\\`|| ||:diagtext:`function returning void`||
| |+--------------+| |+-----------------------------------+|
| ||:diagtext:`@` || ||:diagtext:`constructor` ||
| |+--------------+| |+-----------------------------------+|
| | | ||:diagtext:`destructor` ||
| | | |+-----------------------------------+|
| | | ||:diagtext:`method returning void` ||
| | | |+-----------------------------------+|
+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`|
+--------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`|
+------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`|
+---------------------------------------------------------------------+
+----------------------------------------+----------------+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`|
| ||:diagtext:`\\`|| |
| |+--------------+| |
| ||:diagtext:`@` || |
| |+--------------+| |
+----------------------------------------+----------------+------------------------------------------------------------------------------+
-Wdocumentation-deprecated-sync
-------------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '\\deprecated' command but does not have a deprecation attribute`|
+----------------------------------------------------------------------------------------------------------------------------------+
-Wdocumentation-html
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`|
+-----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`|
+--------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`|
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------------------------+
-Wdocumentation-pedantic
------------------------
Also controls `-Wdocumentation-unknown-command`_.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`|
+-----------------------------------------------------------------------------------------------+
-Wdocumentation-unknown-command
-------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`|
+--------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`|
+---------------------------------------------------------------+
-Wdollar-in-identifier-extension
--------------------------------
**Diagnostic text:**
+--------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`|
+--------------------------------------------------------+
-Wdouble-promotion
------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wduplicate-decl-specifier
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
+-----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`|
+-------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
+-----------------------------------------------------------------------------------------------------+
-Wduplicate-enum
----------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wduplicate-method-arg
----------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`|
+------------------------------------------------------------------------------------------------+
-Wduplicate-method-match
------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`|
+-----------------------------------------------------------------------------------------------------------------------------------+
-Wduplicate-protocol
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored`|
+-----------------------------------------------------------------------------------------------------------------------------+
-Wdynamic-class-memaccess
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+|
| ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`||
| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
| ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` ||
| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
| ||:diagtext:`first operand of` || | | ||:diagtext:`moved` ||
| |+-----------------------------+| | | |+-----------------------+|
| ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` ||
| |+-----------------------------+| | | |+-----------------------+|
+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
-Wdynamic-exception-spec
------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wdeprecated-dynamic-exception-spec`_.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow dynamic exception specifications`|
+--------------------------------------------------------------------------------------------+
-Weffc++
--------
Synonym for `-Wnon-virtual-dtor`_.
-Wembedded-directive
--------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`|
+----------------------------------------------------------------------------------------------------------+
-Wempty-body
------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`|
+--------------------------------------------------------------+
+------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`|
+------------------------------------------------------------------+
+--------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`|
+--------------------------------------------------------------------------+
+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`|
+----------------------------------------------------------------------+
+----------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`|
+----------------------------------------------------------------+
-Wempty-decomposition
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not allow a decomposition group to be empty`|
+-------------------------------------------------------------------------------------------------+
-Wempty-translation-unit
------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`|
+------------------------------------------------------------------------------------------------------------+
-Wencode-type
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wendif-labels
--------------
Synonym for `-Wextra-toke