blob: 2fab8b5f30268ae172c15924d9bf233e7aafb475 [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 `-Wmisleading-indentation`_, `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_.
-Walloca
--------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-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`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wambiguous-reversed-operator
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 considers use of overloaded operator '`:placeholder:`A`:diagtext:`' (with operand types` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`:diagtext:`) to be ambiguous despite there being a unique best viable function`|+-----------------------------------------------+|
| || |nbsp| :diagtext:`with non-reversed arguments`||
| |+-----------------------------------------------+|
| || ||
| |+-----------------------------------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+
-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`|
+----------------------------------------------------------------------------------------------------------------------------------------+
-Wanon-enum-enum-conversion
---------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wdeprecated-anon-enum-enum-conversion`_.
**Diagnostic text:**
+---------------------------+--------------------------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`|
| ||:diagtext:`arithmetic between` || |
| |+------------------------------------------+| |
| ||:diagtext:`bitwise operation between` || |
| |+------------------------------------------+| |
| ||:diagtext:`comparison of` || |
| |+------------------------------------------+| |
| ||:diagtext:`conditional expression between`|| |
| |+------------------------------------------+| |
| ||:diagtext:`compound assignment of` || |
| |+------------------------------------------+| |
+---------------------------+--------------------------------------------+-----------------------------------------------+
-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;` |nbsp| |+--------------------------------------------------------------------------+|:diagtext:`, callee requires at least` |nbsp| :placeholder:`B`|
| ||+------------------------------------------------------------------------+|| |
| |||:diagtext:`contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements`||| |
| ||+------------------------------------------------------------------------+|| |
| |+--------------------------------------------------------------------------+| |
| ||+----------------------------------------------+ || |
| |||:diagtext:`is of size` |nbsp| :placeholder:`A`| || |
| ||+----------------------------------------------+ || |
| |+--------------------------------------------------------------------------+| |
+---------------------------------------------------------------------------+----------------------------------------------------------------------------+--------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|: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
-----
Synonym for `-Wasm-operand-widths`_.
-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 flag exists for GCC compatibility, and has no effect in Clang.
-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| |+----------------------+| |nbsp| :diagtext:`atomic operation may incur significant performance penalty`|
| ||:diagtext:`large` || |
| |+----------------------+| |
| ||:diagtext:`misaligned`|| |
| |+----------------------+| |
+---------------------------+------------------------+------------------------------------------------------------------------------+
-Watomic-implicit-seq-cst
-------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary`|
+---------------------------------------------------------------------------------------------------------------------------------------+
-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:`only 'unavailable' and 'deprecated' are supported for Swift availability`|
+---------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|: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` || |
| |+------------------------------+| |+---------------------------------------------+| |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
-Wavr-rtlib-linking-quirks
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for linking stdlibs for microcontroller '`:placeholder:`A`:diagtext:`' is not implemented`|
+----------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no avr-gcc installation can be found on the system, cannot link standard libraries`|
+-------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no avr-libc installation can be found on the system, cannot link standard libraries`|
+--------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no target microcontroller specified on command line, cannot link standard libraries, please pass -mmcu=<mcu name>`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`standard library not linked and so no interrupt vector table or compiler runtime routines will be linked`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+
-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-conditional-parentheses
---------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbitwise-op-parentheses
------------------------
**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`_.
-Wbool-operation
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitwise negation of a boolean expression`|+-----------------------------------------------+| |nbsp| :diagtext:`did you mean logical negation?`|
| ||:diagtext:`;` || |
| |+-----------------------------------------------+| |
| || |nbsp| :diagtext:`always evaluates to 'true';`|| |
| |+-----------------------------------------------+| |
+-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+
-Wbraced-scalar-init
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+----------------------------+-----------------------+
|:warning:`warning:` |nbsp| :diagtext:`braces around` |nbsp| |+--------------------------+|:diagtext:`initializer`|
| ||:diagtext:`scalar` |nbsp| || |
| |+--------------------------+| |
| || || |
| |+--------------------------+| |
+------------------------------------------------------------+----------------------------+-----------------------+
-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-assume-aligned-alignment
----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`requested alignment must be` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes or smaller; maximum alignment assumed`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-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| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-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` || | |
| |+---------------------------------------+| | |
| ||:diagtext:`explicit specifier argument`|| | |
| |+---------------------------------------+| | |
+-----------------------+-----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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++20-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`aggregate initialization of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with user-declared constructors is incompatible with C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'consteval' specifier is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constinit' specifier is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`this expression will be parsed as explicit(bool) in C++20`|
+------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++20; add a space to avoid a change in behavior`|
+------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type of UTF-8 string literal will change from array of const char to array of const char8\_t in C++20`|
+--------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++20`|
+-------------------------------------------------------------------------------------------+
-Wc++20-compat-pedantic
-----------------------
Synonym for `-Wc++20-compat`_.
-Wc++20-designator
------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C++20 extension`|
+------------------------------------------------------------------------------------+
-Wc++20-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++20-designator`_.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior declaration in function call with explicit template arguments is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++20 extension`|
+----------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is a C++20 extension`|
+----------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is a C++20 extension`|
| ||+------------------------------------------+ || |
| |||:diagtext:`'`:placeholder:`B`:diagtext:`'`| || |
| ||+------------------------------------------+ || |
| |+------------------------------------------------------------+| |
| ||+----------------------------------------------------------+|| |
| |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`||| |
| ||+----------------------------------------------------------+|| |
| |+------------------------------------------------------------+| |
+---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are a C++20 extension`|
+-------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is a C++20 extension`|
+--------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are a C++20 extension`|
+-----------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda pack captures are a C++20 extension`|
+---------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is a C++20 extension`|
+----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------------------------+
-Wc++2a-compat
--------------
Synonym for `-Wc++20-compat`_.
-Wc++2a-compat-pedantic
-----------------------
Synonym for `-Wc++20-compat-pedantic`_.
-Wc++2a-extensions
------------------
Synonym for `-Wc++20-extensions`_.
-Wc++98-c++11-c++14-c++17-compat
--------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior function template declaration in function call with explicit template arguments is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
| ||:diagtext:`function` || |
| |+-----------------------+| |
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
+------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`virtual constexpr functions are incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
| ||+------------------------------------------+ || |
| |||:diagtext:`'`:placeholder:`B`:diagtext:`'`| || |
| ||+------------------------------------------+ || |
| |+------------------------------------------------------------+| |
| ||+----------------------------------------------------------+|| |
| |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`||| |
| ||+----------------------------------------------------------+|| |
| |+------------------------------------------------------------+| |
+---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are incompatible with C++ standards before C++20`|
+----------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulting this` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`with a type different from the implicit type is incompatible with C++ standards before C++20`|
| ||:diagtext:`default constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`copy constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`move constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`copy assignment operator`|| |
| |+------------------------------------+| |
| ||:diagtext:`move assignment operator`|| |
| |+------------------------------------+| |
| ||:diagtext:`destructor` || |
| |+------------------------------------+| |
+-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are incompatible with C++ standards before C++20`|
+--------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda capture packs are incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`of lambda is incompatible with C++ standards before C++20`|
| ||:diagtext:`default construction`|| |
| |+--------------------------------+| |
| ||:diagtext:`assignment` || |
| |+--------------------------------+| |
+---------------------------+----------------------------------+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|: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:`designated initializers are incompatible with C++ standards before C++20`|
+---------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-compat
--------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`class template argument deduction is incompatible with C++ standards before C++17`|+---------------------------------------------------------------------------------+|
| || ||
| |+---------------------------------------------------------------------------------+|
| ||+-------------------------------------------------------------------------------+||
| |||:diagtext:`; for compatibility, use explicit type name` |nbsp| :placeholder:`B`|||
| ||+-------------------------------------------------------------------------------+||
| |+---------------------------------------------------------------------------------+|
+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------+
|: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:`return type deduction 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:`generic lambdas are incompatible with C++11`|
+----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|: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:`initializing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`from an 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` |nbsp| |+--------------------+| |nbsp| :diagtext:`goto statement to one of its possible targets is incompatible with C++98`|
| ||:diagtext:`indirect`|| |
| |+--------------------+| |
| ||:diagtext:`asm` || |
| |+--------------------+| |
+-------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|: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| :diagtext:`anonymous structs are a C11 extension`|
+----------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a C11 extension`|
+----------------------------------------------------------------------------------------+
-Wc2x-extensions
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`omitting the parameter name in a function definition is a C2x extension`|
+--------------------------------------------------------------------------------------------------------------+
-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-designator
----------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++20-designator`_.
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
+--------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array designators are a C99 extension`|
+----------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`mixture of designated and non-designated initializers in the same initializer list is a C99 extension`|
+--------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested designators are a C99 extension`|
+-----------------------------------------------------------------------------+
-Wc99-extensions
----------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc99-designator`_.
**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:`'`:placeholder:`A`:diagtext:`' is a C99 extension`|
+----------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|: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:`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`|
+---------------------------------------------------------------------------------------+
-Wcall-to-pure-virtual-from-ctor-dtor
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`call to pure virtual member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior; overrides of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in subclasses are not available in the` |nbsp| |+-----------------------+| |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`|
| ||:diagtext:`constructor`|| |
| |+-----------------------+| |
| ||:diagtext:`destructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
-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:`#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename`|
+-------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|: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`|| |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
-Wcmse-union-leak
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing union across security boundary via` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`may leak information`|
| ||+---------------------------------------------+|| |
| |||:diagtext:`parameter` |nbsp| :placeholder:`B`||| |
| ||+---------------------------------------------+|| |
| |+-----------------------------------------------+| |
| ||:diagtext:`return value` || |
| |+-----------------------------------------------+| |
+-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+
-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`|
+----------------------------------------------------------------------------------------------------------------------+
-Wconcepts-ts-compat
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit the 'bool' keyword after 'concept'`|
+---------------------------------------------------------------------------------------------------+
-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`_, `-Wobjc-bool-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-evaluated
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always evaluate to 'true' in a manifestly constant-evaluated expression`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-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` |nbsp| :placeholder:`A` |nbsp| :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`_, `-Wimplicit-float-conversion`_, `-Wimplicit-int-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 turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing non-generic address space pointer to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause dynamic conversion affecting performance`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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`||
| |+--------------------+| |+----------------------+|
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
-Wctad-maybe-unsupported
------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not intend to support class template argument deduction`|
+--------------------------------------------------------------------------------------------------------------------------+
-Wctor-dtor-privacy
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wctu
-----
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`imported AST from '`:placeholder:`A`:diagtext:`' had been generated for a different target, current:` |nbsp| :placeholder:`B`:diagtext:`, imported:` |nbsp| :placeholder:`C`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-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-gsl`_, `-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-gsl
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`object backing the pointer will be destroyed at the end of the full-expression`|
+---------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to point to a temporary object whose lifetime is shorter than the lifetime of the constructed object`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-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` || |
| |+--------------------------------------------------------------+| |
+------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
-Wdarwin-sdk-settings
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`SDK settings were ignored as 'SDKSettings.json' could not be parsed`|
+----------------------------------------------------------------------------------------------------------+
-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`|
+-----------------------------------------------------------------------------------+
-Wdefaulted-function-deleted
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison operator` |nbsp| :diagtext:`is implicitly deleted`|
| ||:diagtext:`<ERROR>` || |
| |+----------------------+| |
| ||:diagtext:`equality` || |
| |+----------------------+| |
| ||:diagtext:`three-way` || |
| |+----------------------+| |
| ||:diagtext:`equality` || |
| |+----------------------+| |
| ||:diagtext:`relational`|| |
| |+----------------------+| |
+-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is implicitly deleted`|
| ||:diagtext:`default constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`copy constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`move constructor` || |
| |+------------------------------------+| |
| ||:diagtext:`copy assignment operator`|| |
| |+------------------------------------+| |
| ||:diagtext:`move assignment operator`|| |
| |+------------------------------------+| |
| ||:diagtext:`destructor` || |
| |+------------------------------------+| |
+-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+
-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-abstract-non-virtual-dtor
----------------------------------
This diagnostic is 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`|| |
| |+----------------------+| |
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
-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-abstract-non-virtual-dtor
--------------------------------------
**Diagnostic text:**
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|: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`|| |
| |+----------------------+| |
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-Wdelete-non-virtual-dtor
-------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wdelete-abstract-non-virtual-dtor`_, `-Wdelete-non-abstract-non-virtual-dtor`_.
-Wdeprecated
------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wdeprecated-anon-enum-enum-conversion`_, `-Wdeprecated-array-compare`_, `-Wdeprecated-attributes`_, `-Wdeprecated-comma-subscript`_, `-Wdeprecated-copy`_, `-Wdeprecated-copy-dtor`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-enum-compare`_, `-Wdeprecated-enum-compare-conditional`_, `-Wdeprecated-enum-enum-conversion`_, `-Wdeprecated-enum-float-conversion`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-volatile`_, `-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:`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:`-fconcepts-ts is deprecated - use '-std=c++20' for Concepts support`|
+----------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-anon-enum-enum-conversion
--------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`|
| ||:diagtext:`arithmetic between` || |
| |+------------------------------------------+| |
| ||:diagtext:`bitwise operation between` || |
| |+------------------------------------------+| |
| ||:diagtext:`comparison of` || |
| |+------------------------------------------+| |
| ||:diagtext:`conditional expression between`|| |
| |+------------------------------------------+| |
| ||:diagtext:`compound assignment of` || |
| |+------------------------------------------+| |
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
-Wdeprecated-array-compare
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comparison between two arrays is deprecated; to compare array addresses, use unary '+' to decay operands to pointers`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
-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-comma-subscript
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`top-level comma expression in array subscript is deprecated`|
+--------------------------------------------------------------------------------------------------+
-Wdeprecated-copy
-----------------
**Diagnostic text:**
+--------------------------------------------------------------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------+---------------------------------+
|: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 copy` |nbsp| |+-------------------------------+|