| .. |
| ------------------------------------------------------------------- |
| NOTE: This file is automatically generated by running clang-tblgen |
| -gen-diag-docs. Do not edit this file by hand!! |
| ------------------------------------------------------------------- |
| |
| .. Add custom CSS to output. FIXME: This should be put into <head> rather |
| than the start of <body>. |
| .. raw:: html |
| |
| <style> |
| table.docutils { |
| width: 1px; |
| } |
| table.docutils td { |
| border: none; |
| padding: 0 0 0 0.2em; |
| vertical-align: middle; |
| white-space: nowrap; |
| width: 1px; |
| font-family: monospace; |
| } |
| table.docutils tr + tr { |
| border-top: 0.2em solid #aaa; |
| } |
| .error { |
| font-family: monospace; |
| font-weight: bold; |
| color: #c00; |
| } |
| .warning { |
| font-family: monospace; |
| font-weight: bold; |
| color: #80a; |
| } |
| .remark { |
| font-family: monospace; |
| font-weight: bold; |
| color: #00c; |
| } |
| .diagtext { |
| font-family: monospace; |
| font-weight: bold; |
| } |
| </style> |
| |
| .. FIXME: rST doesn't support formatting this, so we format all <td> elements |
| as monospace font face instead. |
| .. |nbsp| unicode:: 0xA0 |
| :trim: |
| |
| .. Roles generated by clang-tblgen. |
| .. role:: error |
| .. role:: warning |
| .. role:: remark |
| .. role:: diagtext |
| .. role:: placeholder(emphasis) |
| |
| ========================= |
| Diagnostic flags in Clang |
| ========================= |
| .. contents:: |
| :local: |
| |
| Introduction |
| ============ |
| |
| This page lists the diagnostic flags currently supported by Clang. |
| |
| Diagnostic flags |
| ================ |
| |
| -W |
| -- |
| Synonym for `-Wextra`_. |
| |
| |
| -W#pragma-messages |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -W#warnings |
| ----------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -WCFString-literal |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -WCL4 |
| ----- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wall`_, `-Wextra`_. |
| |
| |
| -WIndependentClass-attribute |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -WNSObject-attribute |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wabi |
| ----- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wabsolute-value |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`| |
| | ||:diagtext:`pointer` || | |
| | |+--------------------+| | |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`array` || | |
| | |+--------------------+| | |
| +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`| |
| | ||:diagtext:`integer` || ||:diagtext:`integer` || | |
| | |+--------------------------+| |+--------------------------+| | |
| | ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| | |
| | |+--------------------------+| |+--------------------------+| | |
| | ||:diagtext:`complex` || ||:diagtext:`complex` || | |
| | |+--------------------------+| |+--------------------------+| | |
| +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ |
| |
| |
| -Wabstract-final-class |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------+--------------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`| |
| | ||:diagtext:`final` || | |
| | |+------------------+| | |
| | ||:diagtext:`sealed`|| | |
| | |+------------------+| | |
| +-----------------------------------------------------------------+--------------------+-------------+ |
| |
| |
| -Wabstract-vbase-init |
| --------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waddress |
| --------- |
| This diagnostic is enabled by default. |
| |
| Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_. |
| |
| |
| -Waddress-of-packed-member |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waddress-of-temporary |
| ---------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waggregate-return |
| ------------------ |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wall |
| ----- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_. |
| |
| |
| -Walloca-with-align-alignof |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-delete |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-ellipsis |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+| |
| | ||:diagtext:`, not a function parameter pack`|| |
| | |+-------------------------------------------+| |
| | || || |
| | |+-------------------------------------------+| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------+ |
| |
| |
| -Wambiguous-macro |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-member-template |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wanalyzer-incompatible-plugin |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wanonymous-pack-parens |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc |
| ----- |
| This diagnostic is enabled by default. |
| |
| Controls `-Warc-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_. |
| |
| |
| -Warc-bridge-casts-disallowed-in-nonarc |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-maybe-repeated-use-of-weak |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`| |
| | ||:diagtext:`variable` || ||:diagtext:`function`|| | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`property` || ||:diagtext:`method` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | |
| | |+-----------------------------+| |+--------------------+| | |
| +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-non-pod-memaccess |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`| |
| | ||:diagtext:`destination for`|| | |
| | |+---------------------------+| | |
| | ||:diagtext:`source of` || | |
| | |+---------------------------+| | |
| +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-performSelector-leaks |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-repeated-use-of-weak |
| -------------------------- |
| Also controls `-Warc-maybe-repeated-use-of-weak`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`| |
| | ||:diagtext:`variable` || ||:diagtext:`function`|| | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`property` || ||:diagtext:`method` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | |
| | |+-----------------------------+| |+--------------------+| | |
| +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-retain-cycles |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-unsafe-retained-assign |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| |
| | ||:diagtext:`array literal` || ||:diagtext:`property`|| | |
| | |+-------------------------------+| |+--------------------+| | |
| | ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| | |
| | |+-------------------------------+| |+--------------------+| | |
| | ||:diagtext:`numeric literal` || | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`boxed expression` || | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`<should not happen>`|| | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`block literal` || | | | |
| | |+-------------------------------+| | | | |
| +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| |
| | ||:diagtext:`weak` || ||:diagtext:`property`|| | |
| | |+------------------------------+| |+--------------------+| | |
| | ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| | |
| | |+------------------------------+| |+--------------------+| | |
| +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wargument-outside-range |
| ------------------------ |
| This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warray-bounds |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| |
| | || || | |
| | |+-------------+| | |
| | ||:diagtext:`s`|| | |
| | |+-------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array argument is too small; contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements, callee requires at least` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on zero-length arrays`| |
| +-----------------------------------------------------------------------------------+ |
| |
| |
| -Warray-bounds-pointer-arithmetic |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| |
| | || || | |
| | |+-------------+| | |
| | ||:diagtext:`s`|| | |
| | |+-------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the array`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wasm |
| ----- |
| This diagnostic is enabled by default. |
| |
| Controls `-Wasm-ignored-qualifier`_, `-Wasm-operand-widths`_. |
| |
| |
| -Wasm-ignored-qualifier |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignored` |nbsp| :placeholder:`A` |nbsp| :diagtext:`qualifier on asm`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`meaningless 'volatile' on asm outside function`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -Wasm-operand-widths |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`value size does not match register size specified by the constraint and modifier`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wassign-enum |
| ------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of enumerated type` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wassume |
| -------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wat-protocol |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`@protocol is using a forward protocol declaration of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watimport-in-framework-header |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-alignment |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`misaligned or large atomic operation may incur significant performance penalty`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-memory-ordering |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-properties |
| ------------------- |
| Controls `-Wcustom-atomic-properties`_, `-Wimplicit-atomic-properties`_. |
| |
| |
| -Watomic-property-with-user-defined-accessor |
| -------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+| |
| | ||:diagtext:`getter`|| ||:diagtext:`getter`|| |
| | |+------------------+| |+------------------+| |
| | ||:diagtext:`setter`|| ||:diagtext:`setter`|| |
| | |+------------------+| |+------------------+| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ |
| |
| |
| -Wattribute-packed-for-bitfield |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wattributes |
| ------------ |
| This diagnostic is enabled by default. |
| |
| Controls `-Wignored-attributes`_, `-Wunknown-attributes`_. |
| |
| |
| -Wauto-disable-vptr-sanitizer |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`| |
| +------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wauto-import |
| ------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`| |
| | ||:diagtext:`include` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`import` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`include\_next` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`\_\_include\_macros`|| | |
| | |+-------------------------------+| | |
| +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ |
| |
| |
| -Wauto-storage-class |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wauto-var-id |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wavailability |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring availability attribute` |nbsp| |+--------------------------------------+| |
| | ||:diagtext:`on '+load' method` || |
| | |+--------------------------------------+| |
| | ||:diagtext:`with constructor attribute`|| |
| | |+--------------------------------------+| |
| | ||:diagtext:`with destructor attribute` || |
| | |+--------------------------------------+| |
| +------------------------------------------------------------------------------+----------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B` |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version` |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`| |
| | ||:diagtext:`introduced`|| ||:diagtext:`introduced`|| | |
| | |+----------------------+| |+----------------------+| | |
| | ||:diagtext:`deprecated`|| ||:diagtext:`deprecated`|| | |
| | |+----------------------+| |+----------------------+| | |
| | ||:diagtext:`obsoleted` || ||:diagtext:`obsoleted` || | |
| | |+----------------------+| |+----------------------+| | |
| +----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`availability does not match previous declaration`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| |
| | || || ||:diagtext:`introduced after` || ||:diagtext:`the protocol method it implements`|| | |
| | |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | |
| | ||:diagtext:`overriding` |nbsp| || ||:diagtext:`deprecated before`|| ||:diagtext:`overridden method` || | |
| | |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | |
| | | | ||:diagtext:`obsoleted before` || | | | |
| | | | |+-----------------------------+| | | | |
| +---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`is available`| |
| | || || ||:diagtext:`the protocol method it implements`|| | |
| | |+------------------------------+| |+---------------------------------------------+| | |
| | ||:diagtext:`overriding` |nbsp| || ||:diagtext:`its overridden method` || | |
| | |+------------------------------+| |+---------------------------------------------+| | |
| +---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ |
| |
| |
| -Wbackend-plugin |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Wbackslash-newline-escape |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by space`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wbad-function-cast |
| ------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbinary-literal |
| ---------------- |
| Controls `-Wc++14-binary-literal`_, `-Wc++98-c++11-compat-binary-literal`_, `-Wgnu-binary-literal`_. |
| |
| |
| -Wbind-to-temporary-copy |
| ------------------------ |
| Also controls `-Wc++98-compat-bind-to-temporary-copy`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| |
| | ||:diagtext:`private` || |
| | |+---------------------+| |
| | ||:diagtext:`protected`|| |
| | |+---------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| |
| | ||:diagtext:`copying variable` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying parameter` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`returning object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing statement expression result`|| | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`throwing object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying member subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying array element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`allocating object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying temporary` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing base subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing vector element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`capturing value` || | |
| | |+----------------------------------------------------+| | |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbinding-in-condition |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-constant-conversion |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-enum-conversion |
| -------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-width |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+| |
| | || || |
| | |+-------------+| |
| | ||:diagtext:`s`|| |
| | |+-------------+| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+| |
| | || || |
| | |+-------------+| |
| | ||:diagtext:`s`|| |
| | |+-------------+| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |
| |
| -Wbitwise-op-parentheses |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wblock-capture-autoreleasing |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbool-conversion |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbool-conversions |
| ------------------ |
| Synonym for `-Wbool-conversion`_. |
| |
| |
| -Wbraced-scalar-init |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`| |
| +-----------------------------------------------------------------------+ |
| |
| |
| -Wbridge-cast |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-macro-redefined |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`| |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`| |
| +---------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-memcpy-chk-size |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will always overflow destination buffer`| |
| +------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-requires-header |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++-compat |
| ------------ |
| **Diagnostic text:** |
| |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| |
| | || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| | ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |
| |
| -Wc++0x-compat |
| -------------- |
| Synonym for `-Wc++11-compat`_. |
| |
| |
| -Wc++0x-extensions |
| ------------------ |
| Synonym for `-Wc++11-extensions`_. |
| |
| |
| -Wc++0x-narrowing |
| ----------------- |
| Synonym for `-Wc++11-narrowing`_. |
| |
| |
| -Wc++11-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-narrowing`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| |
| | ||:diagtext:`have type 'long long'`|| | |
| | |+---------------------------------+| | |
| | ||:diagtext:`be ill-formed` || | |
| | |+---------------------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| |
| | ||:diagtext:`have type 'long long'`|| | |
| | |+---------------------------------+| | |
| | ||:diagtext:`be ill-formed` || | |
| | |+---------------------------------+| | |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |
| |
| -Wc++11-compat-deprecated-writable-strings |
| ------------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-compat-pedantic |
| ----------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++11-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_. |
| |
| |
| -Wc++11-compat-reserved-user-defined-literal |
| -------------------------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| |
| | ||:diagtext:`integral` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`enumeration`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`| |
| +---------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-----------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`| |
| | ||:diagtext:`defaulted`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`deleted` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+--------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`| |
| +------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`object` || | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`| |
| +-------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`| |
| +------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-extra-semi |
| ------------------ |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-inline-namespace |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-long-long |
| ----------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`| |
| +-----------------------------------------------------------------------+ |
| |
| |
| -Wc++11-narrowing |
| ----------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ || |
| | |+--------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| || |
| | ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ || |
| | |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`non-type template argument`|| ||+----------------------------------------------------------------------------------------------------------------------+|| |
| | |+--------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`||| |
| | ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+|| |
| | |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`constexpr if condition` || | | |
| | |+--------------------------------------+| | | |
| +-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++14-binary-literal |
| ---------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`| |
| +------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++14-compat |
| -------------- |
| Controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_. |
| |
| |
| -Wc++14-compat-pedantic |
| ----------------------- |
| Controls `-Wc++14-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_. |
| |
| |
| -Wc++14-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++14-binary-literal`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wc++17-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++17-compat-mangling`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_. |
| |
| |
| -Wc++17-compat-mangling |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++17-compat-pedantic |
| ----------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++17-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_. |
| |
| |
| -Wc++17-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`| |
| +------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++17 extension`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++17 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++17 extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+--------------------+-------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++17 extension`| |
| | ||:diagtext:`if` || | |
| | |+------------------+| | |
| | ||:diagtext:`switch`|| | |
| | |+------------------+| | |
| +----------------------------------------+--------------------+-------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++17 extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++17 extension; define each namespace separately`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`| |
| | ||:diagtext:`a namespace` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`an enumerator`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++17 extension`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++17 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++17 extension`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++17 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++17 extension`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++1y-extensions |
| ------------------ |
| Synonym for `-Wc++14-extensions`_. |
| |
| |
| -Wc++1z-compat |
| -------------- |
| Synonym for `-Wc++17-compat`_. |
| |
| |
| -Wc++1z-compat-mangling |
| ----------------------- |
| Synonym for `-Wc++17-compat-mangling`_. |
| |
| |
| -Wc++1z-extensions |
| ------------------ |
| Synonym for `-Wc++17-extensions`_. |
| |
| |
| -Wc++2a-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++2a; add a space to avoid a change in behavior`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++2a`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++2a-compat-pedantic |
| ----------------------- |
| Synonym for `-Wc++2a-compat`_. |
| |
| |
| -Wc++2a-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++2a extension`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++2a extension`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-c++17-compat |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++2a`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-c++17-compat-pedantic |
| ----------------------------------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-compat |
| -------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++17`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++17`| |
| | ||:diagtext:`if` || | |
| | |+------------------+| | |
| | ||:diagtext:`switch`|| | |
| | |+------------------+| | |
| +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++17`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++17`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++17`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++17`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-compat-pedantic |
| ----------------------------------- |
| Also controls `-Wc++98-c++11-c++14-compat`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++17`| |
| | ||:diagtext:`a namespace` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`an enumerator`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-compat |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible with C++ standards before C++14`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are incompatible with C++ standards before C++14`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable templates are incompatible with C++ standards before C++14`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-compat-binary-literal |
| ----------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-compat-pedantic |
| ----------------------------- |
| Controls `-Wc++98-c++11-compat`_, `-Wc++98-c++11-compat-binary-literal`_. |
| |
| |
| -Wc++98-compat |
| -------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_, `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`| |
| +---------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-----------------------+--------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`| |
| | ||:diagtext:`defaulted`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`deleted` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+--------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name specifier is incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`range-based for loop is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member of the declaring class is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump from this indirect goto statement to one of its possible targets is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialization of initializer\_list object is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible with C++98`| |
| +------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`lambda expressions are incompatible with C++98`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible with C++98`| |
| +------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`universal character name referring to a control character is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`specifying character '`:placeholder:`A`:diagtext:`' with a universal character name is incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are incompatible with C++98`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data members is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`| |
| | ||:diagtext:`anonymous struct`|| ||:diagtext:`default constructor` || | |
| | |+----------------------------+| |+------------------------------------+| | |
| | ||:diagtext:`union` || ||:diagtext:`copy constructor` || | |
| | |+----------------------------+| |+------------------------------------+| | |
| | | | ||:diagtext:`move constructor` || | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`copy assignment operator`|| | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`move assignment operator`|| | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`destructor` || | |
| | | | |+------------------------------------+| | |
| +---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`| |
| +---------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`block` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`method` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`| |
| +------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`object` || | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-bind-to-temporary-copy |
| ------------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`| |
| | ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`initializing statement expression result`|| ||:diagtext:`invoke a deleted constructor` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`throwing object` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying member subobject` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying array element` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`allocating object` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying temporary` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`initializing base subobject` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`initializing vector element` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`capturing value` || | | | |
| | |+----------------------------------------------------+| | | | |
| +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ |
| |
| |
| -Wc++98-compat-extra-semi |
| ------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-local-type-template-args |
| --------------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-pedantic |
| ----------------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`| |
| | ||:diagtext:`integral` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`enumeration`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`| |
| +-----------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`| |
| +----------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`| |
| +----------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-unnamed-type-template-args |
| ----------------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc11-extensions |
| ---------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`| |
| +---------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11-specific feature`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11 extension`| |
| +----------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`generic selections are a C11-specific feature`| |
| +------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_Noreturn functions are a C11-specific feature`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_Static\_assert is a C11-specific feature`| |
| +---------------------------------------------------------------------------------+ |
| |
| |
| -Wc99-compat |
| ------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+--------------------------------------------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C99`| |
| | ||:diagtext:`using this character in an identifier` || | |
| | |+------------------------------------------------------+| | |
| | ||:diagtext:`starting an identifier with this character`|| | |
| | |+------------------------------------------------------+| | |
| +---------------------------+--------------------------------------------------------+--------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C99`| |
| +---------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C99 onwards`| |
| | ||:diagtext:`have type 'long long'`|| | |
| | |+---------------------------------+| | |
| | ||:diagtext:`be ill-formed` || | |
| | |+---------------------------------+| | |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ |
| |
| |
| -Wc99-extensions |
| ---------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| |
| | ||:diagtext:`qualifier in` |nbsp| || || || | |
| | |+--------------------------------+| |+---------------------+| | |
| | ||:diagtext:`static` |nbsp| || || || | |
| | |+--------------------------------+| |+---------------------+| | |
| | || || ||:diagtext:`'\[\*\] '`|| | |
| | |+--------------------------------+| |+---------------------+| | |
| +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| |
| +-------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after the macro name`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| |
| +--------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| |
| +------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| |
| +---------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-align |
| ------------ |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-calling-convention |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling conventions '`:placeholder:`A`:diagtext:`' and '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at runtime`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-of-sel-type |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated; use sel\_getName instead`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-qual |
| ----------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops` |nbsp| |+-----------------------------------------+| |
| | ||:diagtext:`const and volatile qualifiers`|| |
| | |+-----------------------------------------+| |
| | ||:diagtext:`const qualifier` || |
| | |+-----------------------------------------+| |
| | ||:diagtext:`volatile qualifier` || |
| | |+-----------------------------------------+| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have all intermediate pointers const qualified to be safe`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-qual-unrelated |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`| |
| | ||:diagtext:`const\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`static\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`reinterpret\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`dynamic\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`C-style cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`functional-style cast`|| | |
| | |+---------------------------------+| | |
| +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wchar-align |
| ------------ |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wchar-subscripts |
| ----------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+-------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`| |
| | ||:diagtext:`lower bound`|| | |
| | |+-----------------------+| | |
| | ||:diagtext:`length` || | |
| | |+-----------------------+| | |
| +------------------------------------------------------------+-------------------------+-------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`| |
| +------------------------------------------------------------------------+ |
| |
| |
| -Wclang-cl-pch |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a filename not implemented yet; flag ignored`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not implemented yet; flag ignored`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wclass-varargs |
| --------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wnon-pod-varargs`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`function` ||| || |
| | |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`block` |||+------------------------------------------------------------------+|| |
| | |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`||| |
| | ||:diagtext:`method` |||+------------------------------------------------------------------+|| |
| | |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ |
| |
| |
| -Wcomma |
| ------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`| |
| +-----------------------------------------------------------------------------+ |
| |
| |
| -Wcomment |
| --------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| |
| +------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`| |
| +-----------------------------------------------------------------+ |
| |
| |
| -Wcomments |
| ---------- |
| Synonym for `-Wcomment`_. |
| |
| |
| -Wcompare-distinct-pointer-types |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wcomplex-component-init |
| ------------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconditional-type-mismatch |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in conditional expression`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconditional-uninitialized |
| --------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be uninitialized when` |nbsp| |+-----------------------------+| |
| | ||:diagtext:`used here` || |
| | |+-----------------------------+| |
| | ||:diagtext:`captured by block`|| |
| | |+-----------------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ |
| |
| |
| -Wconfig-macros |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no effect on the import of '`:placeholder:`C`:diagtext:`'; pass '`|+------------------------------------------------+|:diagtext:`' on the command line to configure the module`| |
| | ||:diagtext:`definition`|| ||+----------------------------------------------+|| | |
| | |+----------------------+| |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`||| | |
| | ||:diagtext:`#undef` || ||+----------------------------------------------+|| | |
| | |+----------------------+| |+------------------------------------------------+| | |
| | | | ||+------------------------------+ || | |
| | | | |||:diagtext:`-U`:placeholder:`B`| || | |
| | | | ||+------------------------------+ || | |
| | | | |+------------------------------------------------+| | |
| +---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ |
| |
| |
| -Wconstant-conversion |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wbitfield-constant-conversion`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconstant-logical-operand |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of logical '`:placeholder:`A`:diagtext:`' with constant operand`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconstexpr-not-const |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconsumed |
| ---------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is attached to member of class '`:placeholder:`A`:diagtext:`' which isn't marked as consumable`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`state of variable '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not in expected state when the function returns: expected '`:placeholder:`B`:diagtext:`', observed '`:placeholder:`C`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`return state set for an unconsumable type '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`return value not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`' while it is in the '`:placeholder:`C`:diagtext:`' state`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the '`:placeholder:`B`:diagtext:`' state`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconversion |
| ------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wshorten-64-to-32`_, `-Wsign-conversion`_, `-Wstring-conversion`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion when assigning computation result loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument with value '`:placeholder:`A`:diagtext:`' converted to '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type` |nbsp| :placeholder:`C`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument value '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`' for template parameter of type` |nbsp| :placeholder:`C`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wconversion-null |
| ----------------- |
| Synonym for `-Wnull-conversion`_. |
| |
| |
| -Wcoroutine |
| ----------- |
| Synonym for `-Wcoroutine-missing-unhandled-exception`_. |
| |
| |
| -Wcoroutine-missing-unhandled-exception |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcovered-switch-default |
| ------------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcpp |
| ----- |
| Synonym for `-W#warnings`_. |
| |
| |
| -Wcstring-format-directive |
| -------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+| |
| | ||:diagtext:`NSString`|| ||:diagtext:`method` || |
| | |+--------------------+| |+----------------------+| |
| | ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`|| |
| | |+--------------------+| |+----------------------+| |
| +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ |
| |
| |
| -Wctor-dtor-privacy |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wcuda-compat |
| ------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will be ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcustom-atomic-properties |
| -------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`| |
| | ||:diagtext:`getter`|| | |
| | |+------------------+| | |
| | ||:diagtext:`setter`|| | |
| | |+------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ |
| |
| |
| -Wdangling |
| ---------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdangling-field`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`| |
| | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| ||+------------------------+|| | |
| | |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+||| |||:placeholder:`D` |nbsp| ||| | |
| | ||| ||:diagtext:`whose address is used as value of` || ||+-------------------------------+------------------------------------+|||| ||+------------------------+|| | |
| | ||| |+-------------------------------------------------------+| |||+-----------------------------+|:diagtext:`member of local variable`||||| |+--------------------------+| | |
| | ||| ||+--------------------------------+--------------------+|| |||| || ||||| || || | |
| | ||| |||+------------------------------+|:diagtext:`bound to`||| |||+-----------------------------+| ||||| |+--------------------------+| | |
| | ||| |||| || ||| ||||:diagtext:`reference` |nbsp| || ||||| | | | |
| | ||| |||+------------------------------+| ||| |||+-----------------------------+| ||||| | | | |
| | ||| ||||:diagtext:`implicitly` |nbsp| || ||| ||+-------------------------------+------------------------------------+|||| | | | |
| | ||| |||+------------------------------+| ||| |+----------------------------------------------------------------------+||| | | | |
| | ||| ||+--------------------------------+--------------------+|| ||+-------------------------+-----------------------+ |||| | | | |
| | ||| |+-------------------------------------------------------+| |||:diagtext:`local` |nbsp| |+---------------------+| |||| | | | |
| | ||| | | ||| ||:diagtext:`variable` || |||| | | | |
| | ||| | | ||| |+---------------------+| |||| | | | |
| | ||| | | ||| ||:diagtext:`reference`|| |||| | | | |
| | ||| | | ||| |+---------------------+| |||| | | | |
| | ||| | | ||+-------------------------+-----------------------+ |||| | | | |
| | ||| | | |+----------------------------------------------------------------------+||| | | | |
| | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| | | | |
| | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | |
| | ||+---------------------------------+----------------------------------------------------------+ || | | | |
| | |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+| || | | | |
| | ||| ||:diagtext:`initializer list subobject of local variable`|| || | | | |
| | ||| |+--------------------------------------------------------+| || | | | |
| | ||| ||:diagtext:`local initializer list` || || | | | |
| | ||| |+--------------------------------------------------------+| || | | | |
| | ||+---------------------------------+----------------------------------------------------------+ || | | | |
| | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | |
| +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`| |
| | ||:diagtext:`temporary` || ||:diagtext:`temporary` || | |
| | |+---------------------------------------------+| |+-------------------------+| | |
| | ||:diagtext:`backing array of initializer list`|| ||:diagtext:`backing array`|| | |
| | |+---------------------------------------------+| |+-------------------------+| | |
| +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ |
| |
| |
| -Wdangling-else |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`| |
| +---------------------------------------------------------------------------------+ |
| |
| |
| -Wdangling-field |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`variable` || | |
| | |+---------------------+| | |
| | ||:diagtext:`parameter`|| | |
| | |+---------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |
| +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`| |
| | ||:diagtext:`reference` || || || ||:diagtext:`binds to`|| | |
| | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | |
| | ||:diagtext:`backing array for 'std::initializer\_list'`|| ||:diagtext:`subobject of` |nbsp| || ||:diagtext:`is` || | |
| | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | |
| +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`variable` || | |
| | |+---------------------+| | |
| | ||:diagtext:`parameter`|| | |
| | |+---------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdangling-initializer-list |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`| |
| | ||:diagtext:`initializer list subobject of the allocated object`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`the allocated initializer list` || | |
| | |+--------------------------------------------------------------+| | |
| +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ |
| |
| |
| -Wdate-time |
| ----------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is not reproducible`| |
| +------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdealloc-in-category |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a category`| |
| +---------------------------------------------------------------------------------+ |
| |
| |
| -Wdebug-compression-unavailable |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections (zlib not installed)`| |
| +------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeclaration-after-statement |
| ----------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing declarations and code`| |
| +-----------------------------------------------------------------------------------+ |
| |
| |
| -Wdelegating-ctor-cycles |
| ------------------------ |
| This diagnostic is an error by default, but the flag ``-Wno-delegating-ctor-cycles`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdelete-incomplete |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined behavior`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdelete-non-virtual-dtor |
| ------------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is abstract but has non-virtual destructor`| |
| | ||:diagtext:`delete` || | |
| | |+----------------------+| | |
| | ||:diagtext:`destructor`|| | |
| | |+----------------------+| | |
| +---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that has virtual functions but non-virtual destructor`| |
| | ||:diagtext:`delete` || | |
| | |+----------------------+| | |
| | ||:diagtext:`destructor`|| | |
| | |+----------------------+| | |
| +---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated |
| ------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-writable-strings`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`| |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`access declarations are deprecated; use using declarations instead`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared` |nbsp| |+------------------------------------------------------------+| |
| | ||:diagtext:`constructor` || ||+------------------------+---------------------------------+|| |
| | |+-------------------------------+| |||:diagtext:`copy` |nbsp| |+-------------------------------+||| |
| | ||:diagtext:`assignment operator`|| ||| ||:diagtext:`assignment operator`|||| |
| | |+-------------------------------+| ||| |+-------------------------------+||| |
| | | | ||| ||:diagtext:`constructor` |||| |
| | | | ||| |+-------------------------------+||| |
| | | | ||+------------------------+---------------------------------+|| |
| | | | |+------------------------------------------------------------+| |
| | | | ||:diagtext:`destructor` || |
| | | | |+------------------------------------------------------------+| |
| +--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' is deprecated, use '`:placeholder:`B`:diagtext:`' instead`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when in C++ mode, this behavior is deprecated`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not support the option '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is deprecated`| |
| +------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-attributes |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-declarations |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| |
| +----------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-dynamic-exception-spec |
| ----------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`| |
| +--------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-implementations |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implementing deprecated` |nbsp| |+--------------------+| |
| | ||:diagtext:`method` || |
| | |+--------------------+| |
| | ||:diagtext:`class` || |
| | |+--------------------+| |
| | ||:diagtext:`category`|| |
| | |+--------------------+| |
| +----------------------------------------------------------------------+----------------------+ |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implementing unavailable method`| |
| +----------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-increment-bool |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-isa-usage |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-pointer-introspection |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-pointer-introspection-performSelector |
| ------------------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-register |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++17`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-this-capture |
| ------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-writable-strings |
| ----------------------------- |
| Synonym for `-Wc++11-compat-deprecated-writable-strings`_. |
| |
| |
| -Wdirect-ivar-access |
| -------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdisabled-macro-expansion |
| -------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wdisabled-optimization |
| ----------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wdiscard-qual |
| -------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wdistributed-object-modifiers |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdiv-by-zero |
| ------------- |
| Synonym for `-Wdivision-by-zero`_. |
| |
| |
| -Wdivision-by-zero |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`| |
| | ||:diagtext:`remainder`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`division` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+----------------------------------------+ |
| |
| |
| -Wdll-attribute-on-redeclaration |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdllexport-explicit-instantiation-decl |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdllimport-static-field-def |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation |
| --------------- |
| Also controls `-Wdocumentation-deprecated-sync`_, `-Wdocumentation-html`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || | |
| | |+--------------+|+---------------------+| |+---------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| | |
| | |+--------------+|+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`protocol` || ||:diagtext:`protocol` || | |
| | | |+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`struct` || ||:diagtext:`struct` || | |
| | | |+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`union` || ||:diagtext:`union` || | |
| | | |+---------------------+| |+---------------------+| | |
| +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ |
| |
| +-----------------------------------------------------------+----------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +-----------------------------------------------------------+----------------+-----------------------------+ |
| |
| +------------------------------------------------------------------+----------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +------------------------------------------------------------------+----------------+-------------------------------------+ |
| |
| +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`classdesign` || | |
| | |+--------------+|+------------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`coclass` || | |
| | |+--------------+|+------------------------+| | |
| | | ||:diagtext:`dependency` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helper` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helperclass` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helps` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`instancesize`|| | |
| | | |+------------------------+| | |
| | | ||:diagtext:`ownership` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`performance` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`security` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`superclass` || | |
| | | |+------------------------+| | |
| +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || | |
| | |+--------------+|+-------------------------+| |+---------------------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || | |
| | |+--------------+|+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`| |
| +-------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+| |
| | ||:diagtext:`\\`|| ||:diagtext:`function returning void`|| |
| | |+--------------+| |+-----------------------------------+| |
| | ||:diagtext:`@` || ||:diagtext:`constructor` || |
| | |+--------------+| |+-----------------------------------+| |
| | | | ||:diagtext:`destructor` || |
| | | | |+-----------------------------------+| |
| | | | ||:diagtext:`method returning void` || |
| | | | |+-----------------------------------+| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ |
| |
| +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`| |
| +---------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-deprecated-sync |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '\\deprecated' command but does not have a deprecation attribute`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-html |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-pedantic |
| ------------------------ |
| Also controls `-Wdocumentation-unknown-command`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-unknown-command |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`| |
| +---------------------------------------------------------------+ |
| |
| |
| -Wdollar-in-identifier-extension |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`| |
| +--------------------------------------------------------+ |
| |
| |
| -Wdouble-promotion |
| ------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-decl-specifier |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-enum |
| ---------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-method-arg |
| ---------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-method-match |
| ------------------------ |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-protocol |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdynamic-class-memaccess |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+| |
| | ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`|| |
| | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| |
| | ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` || |
| | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| |
| | ||:diagtext:`first operand of` || | | ||:diagtext:`moved` || |
| | |+-----------------------------+| | | |+-----------------------+| |
| | ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` || |
| | |+-----------------------------+| | | |+-----------------------+| |
| +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ |
| |
| |
| -Wdynamic-exception-spec |
| ------------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wdeprecated-dynamic-exception-spec`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow dynamic exception specifications`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Weffc++ |
| -------- |
| Synonym for `-Wnon-virtual-dtor`_. |
| |
| |
| -Wembedded-directive |
| -------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wempty-body |
| ------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`| |
| +--------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`| |
| +------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`| |
| +--------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`| |
| +----------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`| |
| +----------------------------------------------------------------+ |
| |
| |
| -Wempty-decomposition |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not allow a decomposition group to be empty`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wempty-translation-unit |
| ------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wencode-type |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wendif-labels |
| -------------- |
| Synonym for `-Wextra-toke
|