Files
codeql/docs/codeql/codeql-language-guides/codeql-library-for-cpp.rst
2021-01-07 15:45:28 +00:00

757 lines
99 KiB
ReStructuredText

.. _codeql-library-for-cpp:
CodeQL library for C and C++
============================
When analyzing C or C++ code, you can use the large collection of classes in the CodeQL library for C and C++.
About the CodeQL library for C and C++
--------------------------------------
There is an extensive library for analyzing CodeQL databases extracted from C/C++ projects. The classes in this library present the data from a database in an object-oriented form and provide abstractions and predicates to help you with common analysis tasks.
The library is implemented as a set of QL modules, that is, files with the extension ``.qll``. The module ``cpp.qll`` imports all the core C/C++ library modules, so you can include the complete library by beginning your query with:
.. code-block:: ql
import cpp
The rest of this topic summarizes the available CodeQL classes and corresponding C/C++ constructs.
Commonly-used library classes
------------------------------
The most commonly used standard library classes are listed below. The listing is broken down by functionality. Each library class is annotated with a C/C++ construct it corresponds to.
Declaration classes
~~~~~~~~~~~~~~~~~~~
This table lists Declaration_ classes representing C/C++ declarations.
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| Example syntax | CodeQL class | Remarks |
+===============================================================================+======================================+=====================================+
| ``int`` *var* ``;`` | GlobalVariable_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``namespace`` *N* ``{`` ... ``float`` *var* ``;`` ... ``}`` | NamespaceVariable_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``int`` *func* ``( void ) {`` ... ``float`` *var* ``;`` ... ``}`` | LocalVariable_ | See also Initializer_ |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... ``int`` *var* ``;`` ... ``}`` | MemberVariable_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``int`` *func* ``(const char`` *param* ``);`` | Function_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``template < typename`` *T* ``>`` | TemplateFunction_ | |
| | ``void`` *func* ``(`` *T* ``param);`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``int`` *func* ``(const char*`` *format* ``, ...)`` | FormattingFunction_ | |
| | ``{`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *func* ``< int, float > (`` ... ``);`` | FunctionTemplateInstantiation_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``template < typename`` *T* ``>`` | FunctionTemplateSpecialization_ | |
| | *func* ``< int,`` *T* ``> (`` ... ``) {`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | MemberFunction_ | |
| | ``int`` *func* ``( float`` *param* ``);`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | ConstMemberFunction_ | |
| | ``int`` *func* ``( float`` *param* ``) const;`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... ``virtual int`` *func* ``(`` ... ``) {`` ... ``} };`` | VirtualFunction_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... *C* ``(`` ... ``) {`` ... ``}`` ... ``};`` | Constructor_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``C::operator float () const;`` | ConversionOperator_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... ``~`` *C* ``( void ) {`` ... ``}`` ... ``};`` | Destructor_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | ConversionConstructor_ | |
| | *C* ``( const`` *D* ``&`` *d* ``) {`` ... ``}`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *C* ``&`` *C* ``:: operator= (const`` *C* ``& );`` | CopyAssignmentOperator_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *C* ``&`` *C* ``:: operator= (`` *C* ``&& );`` | MoveAssignmentOperator_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *C* ``::`` *C* ``(const`` *C* ``& );`` | CopyConstructor_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *C* ``::`` *C* ``(`` *C* ``&& );`` | MoveConstructor_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| *C* ``::`` *C* ``(void);`` | NoArgConstructor_ | Default constructor |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``}`` | EnumConstant_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``friend void`` *func* ``( int );`` | FriendDecl_ | |
| | ``friend class`` *B* ``;`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``int`` *func* ``( void ) {`` ... | LocalEnum_ | |
| | ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``};`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | NestedEnum_ | |
| | ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``}`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``enum class`` *en* ``: short {`` *val1* ``,`` *val2* ... ``}`` | ScopedEnum_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | AbstractClass_ | |
| | ``virtual void`` *func* ``( int ) = 0;`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``template < int , float > class`` *C* ``{`` ... ``};`` | ClassTemplateInstantiation_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``template < > class`` *C* ``<`` Type_ ``> {`` ... ``};`` | FullClassTemplateSpecialization_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``template < typename`` *T* ``>`` | PartialClassTemplateSpecialization_ | |
| | ``class`` *C* ``<`` *T* ``,`` *5* ``> {`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``int`` *func* ``( void ) {`` ... ``class`` *C* ``{`` ... ``};`` ... ``}`` | LocalClass_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... ``class`` *D* ``{`` ... ``};`` ... ``};`` | NestedClass_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` | Class_ | |
| | Type_ *var* ``;`` | | |
| | Type_ *func* ``(`` Parameter_... ``) {`` ... ``}``... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``struct`` *S* ``{`` ... | | Struct_ | |
| | Type_ *var* ``;`` | | Class_ | |
| | Type_ *func* ``(`` Parameter_... ``) {`` ... ``}``... ``};`` | | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``union`` *U* ``{`` | | Union_ | |
| | Type_ *var1* ``;`` | | Struct_ | |
| | Type_ *var2* ``;`` ... ``};`` | | Class_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``template < typename`` *T* ``>`` | ProxyClass_ | Appears only in *uninstantiated* |
| | ``struct`` *C* ``:`` *T* ``{`` ... ``};`` | | templates |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``int`` *func* ``( void ) {`` ... | LocalStruct_ | |
| | ``struct`` *S* ``{`` ... ``};`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | NestedStruct_ | |
| | ``struct`` *S* ``{`` ... ``};`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``int *`` *func* ``( void ) {`` ... ``union`` *U* ``{`` ... ``};`` ... ``}`` | LocalUnion_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *C* ``{`` ... ``union`` *U* ``{`` ... ``};`` ... ``};`` | NestedUnion_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``typedef int`` *T* ``;`` | TypedefType_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``int`` *func* ``( void ) {`` ... | LocalTypedefType_ | |
| | ``typedef int`` *T* ``;`` ... ``}`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``class`` *C* ``{`` ... | NestedTypedefType_ | |
| | ``typedef int`` *T* ``;`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *V* ``:`` ... ``public`` *B* ... ``{`` ... ``};`` | ClassDerivation_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``class`` *V* ``:`` ... ``virtual`` *B* ... ``{`` ... ``};`` | VirtualClassDerivation_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| | ``template < typename`` *T* ``>`` | TemplateClass_ | |
| | ``class`` *C* ``{`` ... ``};`` | | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``int`` *foo* ``(`` Type_ *param1* ``,`` Type_ *param2* ... ``);`` | Parameter_ | |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
| ``template <typename`` *T* ``>`` *T* *t* ``;`` | TemplateVariable_ | Since C++14 |
+-------------------------------------------------------------------------------+--------------------------------------+-------------------------------------+
Statement classes
~~~~~~~~~~~~~~~~~
This table lists subclasses of Stmt_ representing C/C++ statements.
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| Example syntax | CodeQL class | Remarks |
+==========================================================+================================+===================================================+
| ``__asm__ ("`` *movb %bh, (%eax)* ``");`` | AsmStmt_ | Specific to a given CPU instruction set |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``{`` Stmt_... ``}`` | BlockStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``catch (`` Parameter_ ``)`` BlockStmt_ | CatchBlock_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``catch ( ... )`` BlockStmt_ | CatchAnyBlock_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``goto *`` *labelptr* ``;`` | ComputedGotoStmt_ | GNU extension; use with LabelLiteral_ |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| Type_ *i* ``,`` *j* ``;`` | DeclStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``if (`` Expr_ ``)`` Stmt_ ``else`` Stmt_ | IfStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``switch (`` Expr_ ``) {`` SwitchCase_... ``}`` | SwitchStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``do`` Stmt_ ``while (`` Expr_ ``)`` | DoStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``for (`` DeclStmt_ ``;`` Expr_ ``;`` Expr_ ``)`` Stmt_ | ForStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``for (`` DeclStmt_ ``:`` Expr_ ``)`` Stmt_ | RangeBasedForStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``while (`` Expr_ ``)`` Stmt_ | WhileStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| Expr_ ``;`` | ExprStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``__try {`` ... ``} __except (`` Expr_ ``) {`` ... ``}`` | MicrosoftTryExceptStmt_ | Structured exception handling (SEH) under Windows |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``__try {`` ... ``} __finally {`` ... ``}`` | MicrosoftTryFinallyStmt_ | Structured exception handling (SEH) under Windows |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``return`` Expr_ ``;`` | ReturnStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``case`` Expr_ ``:`` | SwitchCase_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``try {`` Stmt_... ``}`` CatchBlock_... CatchAnyBlock_ | TryStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| | ``void`` *func* ``(void) try {`` Stmt_... ``}`` | FunctionTryStmt_ | |
| | CatchBlock_... CatchAnyBlock_ | | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``;`` | EmptyStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``break;`` | BreakStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``continue;`` | ContinueStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``goto`` LabelStmt_ ``;`` | GotoStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| *slabel* ``:`` | LabelStmt_ | |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
| ``float`` *arr* ``[`` Expr_ ``] [`` Expr_ ``];`` | VlaDeclStmt_ | C99 variable-length array |
+----------------------------------------------------------+--------------------------------+---------------------------------------------------+
Expression classes
~~~~~~~~~~~~~~~~~~
This table lists subclasses of Expr_ representing C/C++ expressions.
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Example syntax | CodeQL class(es) | Remarks |
+=======================================================+====================================================+===========================================+
| ``{`` Expr_... ``}`` | | ArrayAggregateLiteral_ | |
| | | ClassAggregateLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``alignof (`` Expr_ ``)`` | AlignofExprOperator_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``alignof (`` Type_ ``)`` | AlignofTypeOperator_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``[`` Expr_ ``]`` | ArrayExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``__assume (`` Expr_ ``)`` | AssumeExpr_ | Microsoft extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``static_assert (`` Expr_ ``,`` StringLiteral_ ``)`` | StaticAssert_ | | C++11 |
| ``_Static_assert (`` Expr_ ``,`` StringLiteral_ ``)`` | | | C11 |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``__noop;`` | BuiltInNoOp_ | Microsoft extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``(`` Expr_... ``)`` | ExprCall_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | *func* ``(`` Expr_... ``)`` | FunctionCall_ | |
| | *instance* ``.`` *func* ``(`` Expr_... ``)`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``,`` Expr_ | CommaExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``if (`` Type_ *arg* ``=`` Expr_ ``)`` | ConditionDeclExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``(`` Type_ ``)`` Expr_ | CStyleCast_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``const_cast <`` Type_ ``> (`` Expr_ ``)`` | ConstCast_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``dynamic_cast <`` Type_ ``> (`` Expr_ ``)`` | DynamicCast_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``reinterpret_cast <`` Type_ ``> (`` Expr_ ``)`` | ReinterpretCast_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``static_cast <`` Type_ ``> (`` Expr_ ``)`` | StaticCast_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``template < typename...`` *T* ``>`` | FoldExpr_ | Appears only in *uninstantiated* |
| | ``auto`` *sum* ``(`` *T* `...` *t* ``)`` | | templates |
| | ``{ return (`` *t* ``+ ... + 0 ); }`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``int`` *func* ``(`` *format* ``, ... );`` | FormattingFunctionCall_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``[ = ] ( float`` *b* ``) -> float`` | LambdaExpression_ | C++11 |
| | ``{ return`` *captured* ``*`` *b* ``; }`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``^ int ( int`` *x* ``, int`` *y* ``) {`` | BlockExpr_ | Apple extension |
| | ``{`` Stmt_... ``; return`` *x* ``+`` *y* ``; }``| | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``void *`` *labelptr* ``= &&`` *label* ``;`` | LabelLiteral_ | GNU extension; use with ComputedGotoStmt_ |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| *"%3d %s\\n"* | FormatLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| *0xdbceffca* | HexLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| *0167* | OctalLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| *'c'* | CharLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| *"abcdefgh"*, *L"wide"* | StringLiteral_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``new`` Type_ ``[`` Expr_ ``]`` | NewArrayExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``new`` Type_ | NewExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``delete [ ]`` Expr_ ``;`` | DeleteArrayExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``delete`` Expr_ ``;`` | DeleteExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``noexcept (`` Expr_ ``)`` | NoExceptExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``=`` Expr_ | AssignExpr_ | See also Initializer_ |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``+=`` Expr_ | | AssignAddExpr_ | |
| | | AssignPointerAddExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``/=`` Expr_ | AssignDivExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``*=`` Expr_ | AssignMulExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``%=`` Expr_ | AssignRemExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``-=`` Expr_ | | AssignSubExpr_ | |
| | | AssignPointerSubExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``&=`` Expr_ | AssignAndExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``<<=`` Expr_ | AssignLShiftExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ `` | =`` Expr_ | AssignOrExpr_ |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``>>=`` Expr_ | AssignRShiftExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``^=`` Expr_ | AssignXorExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``+`` Expr_ | | AddExpr_ | | |
| | | PointerAddExpr_ | | |
| | | ImaginaryRealAddExpr_ | | C99 |
| | | RealImaginaryAddExpr_ | | C99 |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``/`` Expr_ | | DivExpr_ | | |
| | | ImaginaryDivExpr_ | | C99 |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``>?`` Expr_ | MaxExpr_ | GNU extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``<?`` Expr_ | MinExpr_ | GNU extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``*`` Expr_ | | MulExpr_ | | |
| | | ImaginaryMulExpr_ | | C99 |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``%`` Expr_ | RemExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``-`` Expr_ | | SubExpr_ | | |
| | | PointerDiffExpr_ | | |
| | | PointerSubExpr_ | | |
| | | ImaginaryRealSubExpr_ | | C99 |
| | | RealImaginarySubExpr_ | | C99 |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``&`` Expr_ | BitwiseAndExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``|`` Expr_ | BitwiseOrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``^`` Expr_ | BitwiseXorExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``<<`` Expr_ | LShiftExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``>>`` Expr_ | RShiftExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``&&`` Expr_ | LogicalAndExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``||`` Expr_ | LogicalOrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``==`` Expr_ | EQExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``!=`` Expr_ | NEExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``>=`` Expr_ | GEExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``>`` Expr_ | GTExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``<=`` Expr_ | LEExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``<`` Expr_ | LTExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``?`` Expr_ ``:`` Expr_ | ConditionalExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``&`` Expr_ | AddressOfExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``*`` Expr_ | PointerDereferenceExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``--`` | PostfixDecrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``--`` Expr_ | PrefixDecrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| Expr_ ``++`` | PostfixIncrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``++`` Expr_ | PrefixIncrExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``__imag (`` Expr_ ``)`` | ImaginaryPartExpr_ | GNU extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``__real (`` Expr_ ``)`` | RealPartExpr_ | GNU extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``-`` Expr_ | UnaryMinusExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``+`` Expr_ | UnaryPlusExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``~`` Expr_ | | ComplementExpr_ | | |
| | | ConjugationExpr_ | | GNU extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``!`` Expr_ | NotExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``int`` *vect* ``__attribute__`` | VectorFillOperation_ | GNU extension |
| | ``( ( vector_size (`` *16* ``) ) )`` | | |
| | ``= {`` *3* ``,`` *8* ``,`` *32* ``,`` | | |
| *33* ``};`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``sizeof (`` Expr_ ``)`` | SizeofExprOperator_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``sizeof (`` Type_ ``)`` | SizeofTypeOperator_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``template < typename...`` *T* ``>`` | SizeofPackOperator_ | |
| | ``int`` *count* ``(`` *T* ``&&...`` *t* ``)`` | | |
| | ``{ return sizeof... (`` *t* ``); }`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``( {`` Stmt_... ``;`` Expr_ ``} )`` | StmtExpr_ | GNU/Clang extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``this`` | ThisExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``throw (`` Expr_ ``);`` | ThrowExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``throw;`` | ReThrowExpr_ | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| | ``typeid (`` Expr_ ``)`` | TypeidOperator_ | |
| | ``typeid (`` Type_ ``)`` | | |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
| ``__uuidof (`` Expr_ ``)`` | UuidofOperator_ | Microsoft extension |
+-------------------------------------------------------+----------------------------------------------------+-------------------------------------------+
Type classes
~~~~~~~~~~~~
This table lists subclasses of Type_ representing C/C++ types.
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Example syntax | CodeQL class | Remarks |
+===================================================================+=================================+=================+
| ``void`` | VoidType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``_Bool`` or ``bool`` | BoolType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``char16_t`` | Char16Type_ | C11, C++11 |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``char32_t`` | Char32Type_ | C11, C++11 |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``char`` | PlainCharType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``signed char`` | SignedCharType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``unsigned char`` | UnsignedCharType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``int`` | IntType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``long long`` | LongLongType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``long`` | LongType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``short`` | ShortType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``wchar_t`` | WideCharType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``nullptr_t`` | NullPointerType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``double`` | DoubleType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``long double`` | LongDoubleType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``float`` | FloatType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``auto`` | AutoType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``decltype (`` Expr_ ``)`` | Decltype_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``[`` *n* ``]`` | ArrayType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``( ^`` *blockptr* ``) (`` Parameter_... ``)`` | BlockType_ | Apple extension |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``( *`` *funcptr* ``) (`` Parameter_... ``)`` | FunctionPointerType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``( &`` *funcref* ``) (`` Parameter_... ``)`` | FunctionReferenceType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``__attribute__ ( ( vector_size (`` *n* ``) ) )`` | GNUVectorType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``*`` | PointerType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``&`` | LValueReferenceType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``&&`` | RValueReferenceType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| Type_ ``(`` Class_ ``*::`` *membptr* ``) (`` Parameter_... ``)`` | PointerToMemberType_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``template < template < typename > class`` *C* ``>`` | TemplateTemplateParameter_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
| ``template < typename`` *T* ``>`` | TemplateParameter_ | |
+-------------------------------------------------------------------+---------------------------------+-----------------+
Preprocessor classes
~~~~~~~~~~~~~~~~~~~~
This table lists Preprocessor_ classes representing C/C++ preprocessing directives.
+-------------------------------------+----------------------+----------------------+
| Example syntax | CodeQL class | Remarks |
+=====================================+======================+======================+
| ``#elif`` *condition* | PreprocessorElif_ | |
+-------------------------------------+----------------------+----------------------+
| ``#if`` *condition* | PreprocessorIf_ | |
+-------------------------------------+----------------------+----------------------+
| ``#ifdef`` *macro* | PreprocessorIfdef_ | |
+-------------------------------------+----------------------+----------------------+
| ``#ifndef`` *macro* | PreprocessorIfndef_ | |
+-------------------------------------+----------------------+----------------------+
| ``#else`` | PreprocessorElse_ | |
+-------------------------------------+----------------------+----------------------+
| ``#endif`` | PreprocessorEndif_ | |
+-------------------------------------+----------------------+----------------------+
| ``#line`` *line_number* *file_name* | PreprocessorLine_ | |
+-------------------------------------+----------------------+----------------------+
| ``#pragma`` *pragma_property* | PreprocessorPragma_ | |
+-------------------------------------+----------------------+----------------------+
| ``#undef`` *macro* | PreprocessorUndef_ | |
+-------------------------------------+----------------------+----------------------+
| ``#warning`` *message* | PreprocessorWarning_ | |
+-------------------------------------+----------------------+----------------------+
| ``#error`` *message* | PreprocessorError_ | |
+-------------------------------------+----------------------+----------------------+
| ``#include`` *file_name* | Include_ | |
+-------------------------------------+----------------------+----------------------+
| ``#import`` *file_name* | Import_ | Apple/NeXT extension |
+-------------------------------------+----------------------+----------------------+
| ``#include_next`` *file_name* | IncludeNext_ | Apple/NeXT extension |
+-------------------------------------+----------------------+----------------------+
| ``#define`` *macro* ... | Macro_ | |
+-------------------------------------+----------------------+----------------------+
Further reading
---------------
.. include:: ../reusables/cpp-further-reading.rst
.. include:: ../reusables/codeql-ref-tools-further-reading.rst
.. Links used in tables. For information about using these links, see
https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#hyperlinks.
.. _Declaration: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Declaration.qll/type.Declaration$Declaration.html
.. _GlobalVariable: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Variable.qll/type.Variable$GlobalVariable.html
.. _NamespaceVariable: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Variable.qll/type.Variable$NamespaceVariable.html
.. _LocalVariable: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Variable.qll/type.Variable$LocalVariable.html
.. _Initializer: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Initializer.qll/type.Initializer$Initializer.html
.. _MemberVariable: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Variable.qll/type.Variable$MemberVariable.html
.. _Function: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Function.qll/type.Function$Function.html
.. _TemplateFunction: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Function.qll/type.Function$TemplateFunction.html
.. _FormattingFunction: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/models/interfaces/FormattingFunction.qll/type.FormattingFunction$FormattingFunction.html
.. _FunctionTemplateInstantiation: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Function.qll/type.Function$FunctionTemplateInstantiation.html
.. _FunctionTemplateSpecialization: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Function.qll/type.Function$FunctionTemplateSpecialization.html
.. _MemberFunction: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$MemberFunction.html
.. _ConstMemberFunction: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$ConstMemberFunction.html
.. _VirtualFunction: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$VirtualFunction.html
.. _Constructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$Constructor.html
.. _ConversionOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$ConversionOperator.html
.. _Destructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$Destructor.html
.. _ConversionConstructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$ConversionConstructor.html
.. _CopyAssignmentOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$CopyAssignmentOperator.html
.. _MoveAssignmentOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$MoveAssignmentOperator.html
.. _CopyConstructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$CopyConstructor.html
.. _MoveConstructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$MoveConstructor.html
.. _NoArgConstructor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/MemberFunction.qll/type.MemberFunction$NoArgConstructor.html
.. _EnumConstant: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Enum.qll/type.Enum$EnumConstant.html
.. _FriendDecl: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/FriendDecl.qll/type.FriendDecl$FriendDecl.html
.. _LocalEnum: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Enum.qll/type.Enum$LocalEnum.html
.. _NestedEnum: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Enum.qll/type.Enum$NestedEnum.html
.. _ScopedEnum: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Enum.qll/type.Enum$ScopedEnum.html
.. _AbstractClass: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$AbstractClass.html
.. _ClassTemplateInstantiation: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$ClassTemplateInstantiation.html
.. _Type: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html
.. _FullClassTemplateSpecialization: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$FullClassTemplateSpecialization.html
.. _PartialClassTemplateSpecialization: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$PartialClassTemplateSpecialization.html
.. _LocalClass: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$LocalClass.html
.. _NestedClass: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$NestedClass.html
.. _Class: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$Class.html
.. _Parameter: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html
.. _Struct: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Struct.qll/type.Struct$Struct.html
.. _Union: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Union.qll/type.Union$Union.html
.. _ProxyClass: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$ProxyClass.html
.. _LocalStruct: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Struct.qll/type.Struct$LocalStruct.html
.. _NestedStruct: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Struct.qll/type.Struct$NestedStruct.html
.. _LocalUnion: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Union.qll/type.Union$LocalUnion.html
.. _NestedUnion: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Union.qll/type.Union$NestedUnion.html
.. _TypedefType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$TypedefType.html
.. _LocalTypedefType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$LocalTypedefType.html
.. _NestedTypedefType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$NestedTypedefType.html
.. _ClassDerivation: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$ClassDerivation.html
.. _VirtualClassDerivation: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$VirtualClassDerivation.html
.. _TemplateClass: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Class.qll/type.Class$TemplateClass.html
.. _TemplateVariable: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Variable.qll/type.Variable$TemplateVariable.html
.. _Stmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html
.. _AsmStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$AsmStmt.html
.. _BlockStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Block.qll/type.Block$BlockStmt.html
.. _CatchBlock: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchBlock.html
.. _CatchAnyBlock: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchAnyBlock.html
.. _ComputedGotoStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ComputedGotoStmt.html
.. _LabelLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$LabelLiteral.html
.. _DeclStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DeclStmt.html
.. _Expr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html
.. _IfStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$IfStmt.html
.. _SwitchCase: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$SwitchCase.html
.. _SwitchStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$SwitchStmt.html
.. _DoStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DoStmt.html
.. _ForStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ForStmt.html
.. _RangeBasedForStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$RangeBasedForStmt.html
.. _WhileStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$WhileStmt.html
.. _ExprStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ExprStmt.html
.. _MicrosoftTryExceptStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$MicrosoftTryExceptStmt.html
.. _MicrosoftTryFinallyStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$MicrosoftTryFinallyStmt.html
.. _ReturnStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ReturnStmt.html
.. _TryStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$TryStmt.html
.. _FunctionTryStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$FunctionTryStmt.html
.. _EmptyStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$EmptyStmt.html
.. _BreakStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$BreakStmt.html
.. _ContinueStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ContinueStmt.html
.. _LabelStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$LabelStmt.html
.. _GotoStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$GotoStmt.html
.. _VlaDeclStmt: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$VlaDeclStmt.html
.. _ArrayAggregateLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$ArrayAggregateLiteral.html
.. _ClassAggregateLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$ClassAggregateLiteral.html
.. _AlignofExprOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$AlignofExprOperator.html
.. _AlignofTypeOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$AlignofTypeOperator.html
.. _ArrayExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Access.qll/type.Access$ArrayExpr.html
.. _AssumeExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$AssumeExpr.html
.. _StringLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$StringLiteral.html
.. _StaticAssert: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Element.qll/type.Element$StaticAssert.html
.. _BuiltInNoOp: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BuiltInOperations.qll/type.BuiltInOperations$BuiltInNoOp.html
.. _ExprCall: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$ExprCall.html
.. _FunctionCall: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$FunctionCall.html
.. _CommaExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$CommaExpr.html
.. _ConditionDeclExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$ConditionDeclExpr.html
.. _CStyleCast: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$CStyleCast.html
.. _ConstCast: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$ConstCast.html
.. _DynamicCast: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$DynamicCast.html
.. _ReinterpretCast: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$ReinterpretCast.html
.. _StaticCast: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$StaticCast.html
.. _FoldExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$FoldExpr.html
.. _FormattingFunctionCall: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/commons/Printf.qll/type.Printf$FormattingFunctionCall.html
.. _LambdaExpression: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Lambda.qll/type.Lambda$LambdaExpression.html
.. _BlockExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$BlockExpr.html
.. _FormatLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/commons/Printf.qll/type.Printf$FormatLiteral.html
.. _HexLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$HexLiteral.html
.. _OctalLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$OctalLiteral.html
.. _CharLiteral: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$CharLiteral.html
.. _NewArrayExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NewArrayExpr.html
.. _NewExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NewExpr.html
.. _DeleteArrayExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$DeleteArrayExpr.html
.. _DeleteExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$DeleteExpr.html
.. _NoExceptExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NoExceptExpr.html
.. _AssignExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignExpr.html
.. _AssignAddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignAddExpr.html
.. _AssignPointerAddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignPointerAddExpr.html
.. _AssignDivExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignDivExpr.html
.. _AssignMulExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignMulExpr.html
.. _AssignRemExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignRemExpr.html
.. _AssignSubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignSubExpr.html
.. _AssignPointerSubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignPointerSubExpr.html
.. _AssignAndExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignAndExpr.html
.. _AssignLShiftExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignLShiftExpr.html
.. _AssignOrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignOrExpr.html
.. _AssignRShiftExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignRShiftExpr.html
.. _AssignXorExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignXorExpr.html
.. _AddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$AddExpr.html
.. _PointerAddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerAddExpr.html
.. _ImaginaryRealAddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryRealAddExpr.html
.. _RealImaginaryAddExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealImaginaryAddExpr.html
.. _DivExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$DivExpr.html
.. _ImaginaryDivExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryDivExpr.html
.. _MaxExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MaxExpr.html
.. _MinExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MinExpr.html
.. _MulExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MulExpr.html
.. _ImaginaryMulExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryMulExpr.html
.. _RemExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RemExpr.html
.. _SubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$SubExpr.html
.. _PointerDiffExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerDiffExpr.html
.. _PointerSubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerSubExpr.html
.. _ImaginaryRealSubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryRealSubExpr.html
.. _RealImaginarySubExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealImaginarySubExpr.html
.. _BitwiseAndExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseAndExpr.html
.. _BitwiseOrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseOrExpr.html
.. _BitwiseXorExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseXorExpr.html
.. _LShiftExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$LShiftExpr.html
.. _RShiftExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$RShiftExpr.html
.. _LogicalAndExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$LogicalAndExpr.html
.. _LogicalOrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$LogicalOrExpr.html
.. _EQExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$EQExpr.html
.. _NEExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$NEExpr.html
.. _GEExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$GEExpr.html
.. _GTExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$GTExpr.html
.. _LEExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$LEExpr.html
.. _LTExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$LTExpr.html
.. _ConditionalExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$ConditionalExpr.html
.. _AddressOfExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$AddressOfExpr.html
.. _PointerDereferenceExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$PointerDereferenceExpr.html
.. _PostfixDecrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PostfixDecrExpr.html
.. _PrefixDecrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PrefixDecrExpr.html
.. _PostfixIncrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PostfixIncrExpr.html
.. _PrefixIncrExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PrefixIncrExpr.html
.. _ImaginaryPartExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryPartExpr.html
.. _RealPartExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealPartExpr.html
.. _UnaryMinusExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$UnaryMinusExpr.html
.. _UnaryPlusExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$UnaryPlusExpr.html
.. _ComplementExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$ComplementExpr.html
.. _ConjugationExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ConjugationExpr.html
.. _NotExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$NotExpr.html
.. _VectorFillOperation: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/BuiltInOperations.qll/type.BuiltInOperations$VectorFillOperation.html
.. _SizeofExprOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofExprOperator.html
.. _SizeofTypeOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofTypeOperator.html
.. _SizeofPackOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofPackOperator.html
.. _StmtExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$StmtExpr.html
.. _ThisExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$ThisExpr.html
.. _ThrowExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$ThrowExpr.html
.. _ReThrowExpr: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$ReThrowExpr.html
.. _TypeidOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$TypeidOperator.html
.. _UuidofOperator: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$UuidofOperator.html
.. _VoidType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$VoidType.html
.. _BoolType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$BoolType.html
.. _PlainCharType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$PlainCharType.html
.. _SignedCharType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$SignedCharType.html
.. _UnsignedCharType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$UnsignedCharType.html
.. _IntType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$IntType.html
.. _LongLongType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$LongLongType.html
.. _LongType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$LongType.html
.. _ShortType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$ShortType.html
.. _WideCharType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$WideCharType.html
.. _NullPointerType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$NullPointerType.html
.. _DoubleType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$DoubleType.html
.. _LongDoubleType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$LongDoubleType.html
.. _FloatType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$FloatType.html
.. _AutoType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$AutoType.html
.. _Decltype: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$Decltype.html
.. _ArrayType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$ArrayType.html
.. _BlockType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$BlockType.html
.. _FunctionPointerType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$FunctionPointerType.html
.. _FunctionReferenceType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$FunctionReferenceType.html
.. _GNUVectorType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$GNUVectorType.html
.. _PointerType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$PointerType.html
.. _LValueReferenceType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$LValueReferenceType.html
.. _RValueReferenceType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$RValueReferenceType.html
.. _PointerToMemberType: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$PointerToMemberType.html
.. _TemplateTemplateParameter: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$TemplateTemplateParameter.html
.. _TemplateParameter: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$TemplateParameter.html
.. _Preprocessor: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/module.Preprocessor.html
.. _PreprocessorElif: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorElif.html
.. _PreprocessorIf: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIf.html
.. _PreprocessorIfdef: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIfdef.html
.. _PreprocessorIfndef: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIfndef.html
.. _PreprocessorElse: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorElse.html
.. _PreprocessorEndif: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorEndif.html
.. _PreprocessorLine: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorLine.html
.. _PreprocessorPragma: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorPragma.html
.. _PreprocessorUndef: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorUndef.html
.. _PreprocessorWarning: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorWarning.html
.. _PreprocessorError: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorError.html
.. _Include: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Include.qll/type.Include$Include.html
.. _Import: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Include.qll/type.Include$Import.html
.. _IncludeNext: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Include.qll/type.Include$IncludeNext.html
.. _Macro: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Macro.qll/type.Macro$Macro.html
.. _Char16Type: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$Char16Type.html
.. _Char32Type: https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/Type.qll/type.Type$Char32Type.html