Introducing the C/C++ libraries
===============================

Overview
--------

There is an extensive QL library for analyzing snapshots extracted from C/C++ projects. The QL classes in this library present the data from a snapshot 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 of 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 available QL classes and corresponding C/C++ constructs.

NOTE: You can find related classes and features using the query console's auto-complete feature.  You can also press *F3* to jump to the definition of any element; QL library files are opened in new tabs in the console.

Summary of the library classes
------------------------------

The most commonly used standard QL library classes are listed below.  The listing is broken down by functionality.  Each QL library class is annotated with a C/C++ construct it corresponds to.

Declaration classes
~~~~~~~~~~~~~~~~~~~

This table lists `Declaration <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Declaration.qll/type.Declaration$Declaration.html>`__ classes representing C/C++ declarations.

 
| Example syntax                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | QL class                                                                                                                                                              | Remarks                                                                                                                                                                                            |
 
| ``int`` *var* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `GlobalVariable <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Variable.qll/type.Variable$GlobalVariable.html>`__                                                 |                                                                                                                                                                                                    |
 
| ``namespace`` *N* ``{`` ... ``float`` *var* ``;`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `NamespaceVariable <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Variable.qll/type.Variable$NamespaceVariable.html>`__                                           |                                                                                                                                                                                                    |
 
| ``int`` *func* ``( void ) {`` ... ``float`` *var* ``;`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `LocalVariable <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Variable.qll/type.Variable$LocalVariable.html>`__                                                   |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ... ``int`` *var* ``;`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `MemberVariable <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Variable.qll/type.Variable$MemberVariable.html>`__                                                 |                                                                                                                                                                                                    |
 
| ``int`` *func* ``(const char`` *param* ``);``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `Function <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$Function.html>`__                                                             |                                                                                                                                                                                                    |
 
| | ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `TemplateFunction <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$TemplateFunction.html>`__                                             |                                                                                                                                                                                                    |
| | ``void`` *func* ``(`` *T* ``param);``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``int`` *func* ``(const char*`` *format* ``, ...)``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `FormattingFunction <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/models/interfaces/FormattingFunction.qll/type.FormattingFunction$FormattingFunction.html>`__   |                                                                                                                                                                                                    |
| |  ``{`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| *func* ``< int, float > (`` ... ``);``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `FunctionTemplateInstantiation <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$FunctionTemplateInstantiation.html>`__                   |                                                                                                                                                                                                    |
 
| | ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `FunctionTemplateSpecialization <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$FunctionTemplateSpecialization.html>`__                 |                                                                                                                                                                                                    |
| | *func* ``< int,`` *T* ``> (`` ... ``) {`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `MemberFunction <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$MemberFunction.html>`__                                                 |                                                                                                                                                                                                    |
| |  ``int`` *func* ``( float`` *param* ``);`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `ConstMemberFunction <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$ConstMemberFunction.html>`__                                       |                                                                                                                                                                                                    |
| |  ``int`` *func* ``( float`` *param* ``) const;`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ... ``virtual int`` *func* ``(`` ... ``) {`` ... ``} };``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `VirtualFunction <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$VirtualFunction.html>`__                                               |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ... *C* ``(`` ... ``) {`` ... ``}`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | `Constructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$Constructor.html>`__                                                       |                                                                                                                                                                                                    |
 
| ``C::operator float () const;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `ConversionOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$ConversionOperator.html>`__                                         |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ...  ``~`` *C* ``( void ) {`` ... ``}`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `Destructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$Destructor.html>`__                                                         |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `ConversionConstructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$ConversionConstructor.html>`__                                   |                                                                                                                                                                                                    |
| |  *C* ``( const`` *D* ``&`` *d* ``) {`` ... ``}`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| *C* ``&`` *C* ``:: operator= (const`` *C* ``& );``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | `CopyAssignmentOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$CopyAssignmentOperator.html>`__                                 |                                                                                                                                                                                                    |
 
| *C* ``&`` *C* ``:: operator= (`` *C* ``&& );``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `MoveAssignmentOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$MoveAssignmentOperator.html>`__                                 |                                                                                                                                                                                                    |
 
| *C* ``::`` *C* ``(const`` *C* ``& );``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `CopyConstructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$CopyConstructor.html>`__                                               |                                                                                                                                                                                                    |
 
| *C* ``::`` *C* ``(`` *C* ``&& );``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | `MoveConstructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$MoveConstructor.html>`__                                               |                                                                                                                                                                                                    |
 
| *C* ``::`` *C* ``(void);``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `NoArgConstructor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Function.qll/type.Function$NoArgConstructor.html>`__                                             | Default constructor                                                                                                                                                                                |
 
| ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `EnumConstant <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Enum.qll/type.Enum$EnumConstant.html>`__                                                             |                                                                                                                                                                                                    |
 
| | ``friend void`` *func* ``( int );``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `FriendDecl <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/FriendDecl.qll/type.FriendDecl$FriendDecl.html>`__                                                     |                                                                                                                                                                                                    |
| | ``friend class`` *B* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``int`` *func* ``( void ) {`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `LocalEnum <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Enum.qll/type.Enum$LocalEnum.html>`__                                                                   |                                                                                                                                                                                                    |
| |  ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``};`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `NestedEnum <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Enum.qll/type.Enum$NestedEnum.html>`__                                                                 |                                                                                                                                                                                                    |
| |  ``enum`` *en* ``{`` *val1* ``,`` *val2* ... ``}`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``enum class`` *en* ``: short {`` *val1* ``,`` *val2* ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `ScopedEnum <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Enum.qll/type.Enum$ScopedEnum.html>`__                                                                 |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `AbstractClass <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$AbstractClass.html>`__                                                         |                                                                                                                                                                                                    |
| |  ``virtual void`` *func* ``( int ) = 0;`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``template < int , float > class`` *C* ``{`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | `ClassTemplateInstantiation <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$ClassTemplateInstantiation.html>`__                               |                                                                                                                                                                                                    |
 
| ``template < > class`` *C* ``<`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``> {`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `FullClassTemplateSpecialization <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$FullClassTemplateSpecialization.html>`__                     |                                                                                                                                                                                                    |
 
| | ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `PartialClassTemplateSpecialization <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$PartialClassTemplateSpecialization.html>`__               |                                                                                                                                                                                                    |
| | ``class`` *C* ``<`` *T* ``,`` *5* ``> {`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``int`` *func* ``( void ) {`` ... ``class`` *C* ``{`` ... ``};`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `LocalClass <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$LocalClass.html>`__                                                               |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ... ``class`` *D* ``{`` ... ``};`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `NestedClass <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$NestedClass.html>`__                                                             |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `Class <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$Class.html>`__                                                                         |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *var* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |                                                                                                                                                                       |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *func* ``(`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``) {`` ... ``}``... ``};``                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``struct`` *S* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | | `Struct <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Struct.qll/type.Struct$Struct.html>`__                                                                   |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *var* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `Class <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$Class.html>`__                                                                       |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *func* ``(`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``) {`` ... ``}``... ``};``                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``union`` *U* ``{``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | | `Union <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Union.qll/type.Union$Union.html>`__                                                                       |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *var1* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | | `Struct <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Struct.qll/type.Struct$Struct.html>`__                                                                   |                                                                                                                                                                                                    |
| |  `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *var2* ``;`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | | `Class <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$Class.html>`__                                                                       |                                                                                                                                                                                                    |
 
| | ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `ProxyClass <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$ProxyClass.html>`__                                                               | Appears only in *uninstantiated* templates                                                                                                                                                         |
| | ``struct`` *C* ``:`` *T* ``{`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``int`` *func* ``( void ) {`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `LocalStruct <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Struct.qll/type.Struct$LocalStruct.html>`__                                                           |                                                                                                                                                                                                    |
| |  ``struct`` *S* ``{`` ... ``};`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `NestedStruct <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Struct.qll/type.Struct$NestedStruct.html>`__                                                         |                                                                                                                                                                                                    |
| |  ``struct`` *S* ``{`` ... ``};`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``int *`` *func* ``( void ) {`` ... ``union`` *U* ``{`` ... ``};`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `LocalUnion <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Union.qll/type.Union$LocalUnion.html>`__                                                               |                                                                                                                                                                                                    |
 
| ``class`` *C* ``{`` ... ``union`` *U* ``{`` ... ``};`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `NestedUnion <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Union.qll/type.Union$NestedUnion.html>`__                                                             |                                                                                                                                                                                                    |
 
| ``typedef int`` *T* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `TypedefType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$TypedefType.html>`__                                                 |                                                                                                                                                                                                    |
 
| | ``int`` *func* ``( void ) {`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `LocalTypedefType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$LocalTypedefType.html>`__                                       |                                                                                                                                                                                                    |
| |  ``typedef int`` *T* ``;`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| | ``class`` *C* ``{`` ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | `NestedTypedefType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/TypedefType.qll/type.TypedefType$NestedTypedefType.html>`__                                     |                                                                                                                                                                                                    |
| |  ``typedef int`` *T* ``;`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``class`` *V* ``:`` ... ``public`` *B* ... ``{`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `ClassDerivation <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$ClassDerivation.html>`__                                                     |                                                                                                                                                                                                    |
 
| ``class`` *V* ``:`` ... ``virtual`` *B* ... ``{`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `VirtualClassDerivation <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$VirtualClassDerivation.html>`__                                       |                                                                                                                                                                                                    |
 
| | ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `TemplateClass <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$TemplateClass.html>`__                                                         |                                                                                                                                                                                                    |
| |  ``class`` *C* ``{`` ... ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                       |                                                                                                                                                                                                    |
 
| ``int`` *foo* ``(`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *param1* ``,`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *param2* ... ``);``                                                                                                                                                                                                                                                                                                                                                                                      | `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__                                                         |                                                                                                                                                                                                    |
 
| ``template <typename`` *T* ``>`` *T* *t* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `TemplateVariable <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Variable.qll/type.Variable$TemplateVariable.html>`__                                             | Since C++14                                                                                                                                                                                        |
 


Statement classes
~~~~~~~~~~~~~~~~~

This table lists subclasses of `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__ representing C/C++ statements.

 
| Example syntax                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | QL class                                                                                                                                                         | Remarks                                                                                                                                                                                                                                                                                           |
 
| ``__asm__ ("`` *movb %bh, (%eax)* ``");``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `AsmStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$AsmStmt.html>`__                                                            | Specific to a given CPU instruction set                                                                                                                                                                                                                                                           |
 
| ``{`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                | `Block <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Block.qll/type.Block$Block.html>`__                                                              |                                                                                                                                                                                                                                                                                                   |
 
| ``catch (`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__ ``)`` `Block <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Block.qll/type.Block$Block.html>`__                                                                                                                                                                                                                                                                                                                           | `CatchBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchBlock.html>`__                                                      |                                                                                                                                                                                                                                                                                                   |
 
| ``catch ( ... )`` `Block <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Block.qll/type.Block$Block.html>`__                                                                                                                                                                                                                                                                                                                                                                                                                                         | `CatchAnyBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchAnyBlock.html>`__                                                |                                                                                                                                                                                                                                                                                                   |
 
| ``goto *`` *labelptr* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `ComputedGotoStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ComputedGotoStmt.html>`__                                          | GNU extension; use with `LabelLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$LabelLiteral.html>`__                                                                                                                                                     |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *i* ``,`` *j* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `DeclStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DeclStmt.html>`__                                                          |                                                                                                                                                                                                                                                                                                   |
 
| ``if (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__ ``else`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__                                                                                                                                                                                                                                       | `IfStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$IfStmt.html>`__                                                              |                                                                                                                                                                                                                                                                                                   |
 
| ``switch (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``) {`` `SwitchCase <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$SwitchCase.html>`__... ``}``                                                                                                                                                                                                                                                                                                                     | `SwitchStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$SwitchStmt.html>`__                                                      |                                                                                                                                                                                                                                                                                                   |
 
| ``do`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__ ``while (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                      | `DoStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DoStmt.html>`__                                                              |                                                                                                                                                                                                                                                                                                   |
 
| ``for (`` `DeclStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DeclStmt.html>`__ ``;`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``;`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__                                                                                                                           | `ForStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ForStmt.html>`__                                                            |                                                                                                                                                                                                                                                                                                   |
 
| ``for (`` `DeclStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$DeclStmt.html>`__ ``:`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__                                                                                                                                                                                                                                 | `RangeBasedForStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$RangeBasedForStmt.html>`__                                        |                                                                                                                                                                                                                                                                                                   |
 
| ``while (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__                                                                                                                                                                                                                                                                                                                                             | `WhileStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$WhileStmt.html>`__                                                        |                                                                                                                                                                                                                                                                                                   |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                         | `ExprStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ExprStmt.html>`__                                                          |                                                                                                                                                                                                                                                                                                   |
 
| ``__try {`` ... ``} __except (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``) {`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                            | `MicrosoftTryExceptStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$MicrosoftTryExceptStmt.html>`__                              | Structured exception handling (SEH) under Windows                                                                                                                                                                                                                                                 |
 
| ``__try {`` ... ``} __finally {`` ... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `MicrosoftTryFinallyStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$MicrosoftTryFinallyStmt.html>`__                            | Structured exception handling (SEH) under Windows                                                                                                                                                                                                                                                 |
 
| ``return`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                              | `ReturnStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ReturnStmt.html>`__                                                      |                                                                                                                                                                                                                                                                                                   |
 
| ``case`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``:``                                                                                                                                                                                                                                                                                                                                                                                                                                                | `SwitchCase <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$SwitchCase.html>`__                                                      |                                                                                                                                                                                                                                                                                                   |
 
| ``try {`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__... ``}`` `CatchBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchBlock.html>`__... `CatchAnyBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchAnyBlock.html>`__                                                                                                                                                                                                           | `TryStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$TryStmt.html>`__                                                            |                                                                                                                                                                                                                                                                                                   |
 
| | ``void`` *func* ``(void) try {`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__... ``}``                                                                                                                                                                                                                                                                                                                                                                                                                   | `FunctionTryStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$FunctionTryStmt.html>`__                                            |                                                                                                                                                                                                                                                                                                   |
| |  `CatchBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchBlock.html>`__... `CatchAnyBlock <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$CatchAnyBlock.html>`__                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                   |
 
| ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | `EmptyStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$EmptyStmt.html>`__                                                        |                                                                                                                                                                                                                                                                                                   |
 
| ``break;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `BreakStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$BreakStmt.html>`__                                                        |                                                                                                                                                                                                                                                                                                   |
 
| ``continue;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `ContinueStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ContinueStmt.html>`__                                                  |                                                                                                                                                                                                                                                                                                   |
 
| ``goto`` `LabelStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$LabelStmt.html>`__ ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                      | `GotoStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$GotoStmt.html>`__                                                          |                                                                                                                                                                                                                                                                                                   |
 
| *slabel* ``:``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `LabelStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$LabelStmt.html>`__                                                        |                                                                                                                                                                                                                                                                                                   |
 
| ``float`` *arr* ``[`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``] [`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``];``                                                                                                                                                                                                                                                                                                                          | `VlaDeclStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$VlaDeclStmt.html>`__                                                    | C99 variable-length array                                                                                                                                                                                                                                                                         |
 


Expression classes
~~~~~~~~~~~~~~~~~~

This table lists subclasses of `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ representing C/C++ expressions.

 
| Example syntax                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | QL class(es)                                                                                                                                                                                             | Remarks                                                                                                                                                                                                                                                                                                     |
 
| ``{`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__...  ``}``                                                                                                                                                                                                                                                                                                                                                                                        | | `ArrayAggregateLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$ArrayAggregateLiteral.html>`__                                                                |                                                                                                                                                                                                                                                                                                             |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ClassAggregateLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$ClassAggregateLiteral.html>`__                                                                |                                                                                                                                                                                                                                                                                                             |
 
| ``alignof (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                    | `AlignofExprOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$AlignofExprOperator.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| ``alignof (`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                          | `AlignofTypeOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$AlignofTypeOperator.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``[`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``]``                                                                                                                                                                                                                                                                                            | `ArrayExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Access.qll/type.Access$ArrayExpr.html>`__                                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| ``__assume (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                   | `AssumeExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$AssumeExpr.html>`__                                                                                              | Microsoft extension                                                                                                                                                                                                                                                                                         |
 
| ``static_assert (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``,`` `StringLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$StringLiteral.html>`__ ``)``                                                                                                                                                                                                                                                | `StaticAssert <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Element.qll/type.Element$StaticAssert.html>`__                                                                                          | | C++11                                                                                                                                                                                                                                                                                                     |                       
| ``_Static_assert (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``,`` `StringLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$StringLiteral.html>`__ ``)``                                                                                                                                                                                                                                               |                                                                                                                                                                                                          | | C11                                                                                                                                                                                                                                                                                                       |
 
| ``__noop;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | `BuiltInNoOp <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BuiltInOperations.qll/type.BuiltInOperations$BuiltInNoOp.html>`__                                                                  | Microsoft extension                                                                                                                                                                                                                                                                                         |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``(`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__... ``)``                                                                                                                                                                                                                                                                                         | `ExprCall <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$ExprCall.html>`__                                                                                                  |                                                                                                                                                                                                                                                                                                             |
 
| | *func* ``(`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__... ``)``                                                                                                                                                                                                                                                                                                                                                                                | `FunctionCall <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$FunctionCall.html>`__                                                                                          |                                                                                                                                                                                                                                                                                                             |
| | *instance* ``.`` *func* ``(`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__... ``)``                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``,`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `CommaExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$CommaExpr.html>`__                                                                                                |                                                                                                                                                                                                                                                                                                             |
 
| ``if (`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ *arg* ``=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                   | `ConditionDeclExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$ConditionDeclExpr.html>`__                                                                    |                                                                                                                                                                                                                                                                                                             |
 
| ``(`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``)`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `CStyleCast <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$CStyleCast.html>`__                                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| ``const_cast <`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``> (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                               | `ConstCast <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$ConstCast.html>`__                                                                                                |                                                                                                                                                                                                                                                                                                             |
 
| ``dynamic_cast <`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``> (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                             | `DynamicCast <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$DynamicCast.html>`__                                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| ``reinterpret_cast <`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``> (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                         | `ReinterpretCast <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$ReinterpretCast.html>`__                                                                                    |                                                                                                                                                                                                                                                                                                             |
 
| ``static_cast <`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``> (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                              | `StaticCast <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$StaticCast.html>`__                                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| | ``template < typename...``  *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `FoldExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$FoldExpr.html>`__                                                                                                  | Appears only in *uninstantiated* templates                                                                                                                                                                                                                                                                  |
| | ``auto`` *sum* ``(`` *T* `...` *t* ``)``                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
| |  ``{ return (`` *t* ``+ ... + 0 ); }``                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``int`` *func* ``(`` *format* ``, ... );``                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `FormattingFunctionCall <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/commons/Printf.qll/type.Printf$FormattingFunctionCall.html>`__                                                                |                                                                                                                                                                                                                                                                                                             |
 
| | ``[ = ] ( float`` *b* ``) -> float``                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `LambdaExpression <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Lambda.qll/type.Lambda$LambdaExpression.html>`__                                                                              | C++11                                                                                                                                                                                                                                                                                                       |
| |  ``{ return`` *captured* ``*`` *b* ``; }``                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| | ``^ int ( int`` *x* ``, int`` *y* ``) {``                                                                                                                                                                                                                                                                                                                                                                                                                                                            | `BlockExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$BlockExpr.html>`__                                                                                                | Apple extension                                                                                                                                                                                                                                                                                             |
| |  ``{`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__... ``; return`` *x* ``+`` *y* ``; }``                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``void *`` *labelptr* ``= &&`` *label* ``;``                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `LabelLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$LabelLiteral.html>`__                                                                                    | GNU extension; use with `ComputedGotoStmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$ComputedGotoStmt.html>`__                                                                                                                                                             |
 
| *"%3d %s\\n"*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `FormatLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/commons/Printf.qll/type.Printf$FormatLiteral.html>`__                                                                                  |                                                                                                                                                                                                                                                                                                             |
 
| *0xdbceffca*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `HexLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$HexLiteral.html>`__                                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| *0167*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `OctalLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$OctalLiteral.html>`__                                                                                    |                                                                                                                                                                                                                                                                                                             |
 
| *'c'*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `CharLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$CharLiteral.html>`__                                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| *"abcdefgh"*, *L"wide"*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `StringLiteral <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Literal.qll/type.Literal$StringLiteral.html>`__                                                                                  |                                                                                                                                                                                                                                                                                                             |
 
| ``new`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``[`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``]``                                                                                                                                                                                                                                                                                          | `NewArrayExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NewArrayExpr.html>`__                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``new`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__                                                                                                                                                                                                                                                                                                                                                                                                      | `NewExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NewExpr.html>`__                                                                                                    |                                                                                                                                                                                                                                                                                                             |
 
| ``delete [ ]`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``;``                                                                                                                                                                                                                                                                                                                                                                                   | `DeleteArrayExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$DeleteArrayExpr.html>`__                                                                                    |                                                                                                                                                                                                                                                                                                             |
 
| ``delete`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``;``                                                                                                                                                                                                                                                                                                                                                                                       | `DeleteExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$DeleteExpr.html>`__                                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| ``noexcept (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                   | `NoExceptExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$NoExceptExpr.html>`__                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``+=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | | `AssignAddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignAddExpr.html>`__                                                                          |                                                                                                                                                                                                                                                                                                             |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `AssignPointerAddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignPointerAddExpr.html>`__                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``/=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignDivExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignDivExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``*=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignMulExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignMulExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``%=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignRemExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignRemExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``-=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | | `AssignSubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignSubExpr.html>`__                                                                          |                                                                                                                                                                                                                                                                                                             |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `AssignPointerSubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignPointerSubExpr.html>`__                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``&=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignAndExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignAndExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``<<=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                | `AssignLShiftExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignLShiftExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``|=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignOrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignOrExpr.html>`__                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``>>=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                | `AssignRShiftExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignRShiftExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``^=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `AssignXorExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Assignment.qll/type.Assignment$AssignXorExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``+`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | | `AddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$AddExpr.html>`__                                                                    | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `PointerAddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerAddExpr.html>`__                                                      | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ImaginaryRealAddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryRealAddExpr.html>`__                                          | | C99                                                                                                                                                                                                                                                                                                       |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `RealImaginaryAddExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealImaginaryAddExpr.html>`__                                          | | C99                                                                                                                                                                                                                                                                                                       |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``/`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | | `DivExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$DivExpr.html>`__                                                                    | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ImaginaryDivExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryDivExpr.html>`__                                                  | | C99                                                                                                                                                                                                                                                                                                       |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``>?`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `MaxExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MaxExpr.html>`__                                                                      | GNU extension                                                                                                                                                                                                                                                                                               |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``<?`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `MinExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MinExpr.html>`__                                                                      | GNU extension                                                                                                                                                                                                                                                                                               |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``*`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | | `MulExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$MulExpr.html>`__                                                                    | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ImaginaryMulExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryMulExpr.html>`__                                                  | | C99                                                                                                                                                                                                                                                                                                       |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``%`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `RemExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RemExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``-`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | | `SubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$SubExpr.html>`__                                                                    | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `PointerDiffExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerDiffExpr.html>`__                                                    | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `PointerSubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PointerSubExpr.html>`__                                                      | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ImaginaryRealSubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryRealSubExpr.html>`__                                          | | C99                                                                                                                                                                                                                                                                                                       |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `RealImaginarySubExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealImaginarySubExpr.html>`__                                          | | C99                                                                                                                                                                                                                                                                                                       |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``&`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `BitwiseAndExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseAndExpr.html>`__                                                              |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``|`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `BitwiseOrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseOrExpr.html>`__                                                                |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``^`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `BitwiseXorExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$BitwiseXorExpr.html>`__                                                              |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``<<`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `LShiftExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$LShiftExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``>>`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `RShiftExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$RShiftExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``&&`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `LogicalAndExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$LogicalAndExpr.html>`__                                                              |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``||`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `LogicalOrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$LogicalOrExpr.html>`__                                                                |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``==`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `EQExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$EQExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``!=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `NEExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$NEExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``>=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `GEExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$GEExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``>`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `GTExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$GTExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``<=`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                 | `LEExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$LEExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``<`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                  | `LTExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ComparisonOperation.qll/type.ComparisonOperation$LTExpr.html>`__                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``?`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``:`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                            | `ConditionalExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$ConditionalExpr.html>`__                                                            |                                                                                                                                                                                                                                                                                                             |
 
| ``&`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | `AddressOfExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$AddressOfExpr.html>`__                                                                                        |                                                                                                                                                                                                                                                                                                             |
 
| ``*`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | `PointerDereferenceExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$PointerDereferenceExpr.html>`__                                                                      |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``--``                                                                                                                                                                                                                                                                                                                                                                                                 | `PostfixDecrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PostfixDecrExpr.html>`__                                                      |                                                                                                                                                                                                                                                                                                             |
 
| ``--`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                 | `PrefixDecrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PrefixDecrExpr.html>`__                                                        |                                                                                                                                                                                                                                                                                                             |
 
| `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``++``                                                                                                                                                                                                                                                                                                                                                                                                 | `PostfixIncrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PostfixIncrExpr.html>`__                                                      |                                                                                                                                                                                                                                                                                                             |
 
| ``++`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                 | `PrefixIncrExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$PrefixIncrExpr.html>`__                                                        |                                                                                                                                                                                                                                                                                                             |
 
| ``__imag (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                     | `ImaginaryPartExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ImaginaryPartExpr.html>`__                                                  | GNU extension                                                                                                                                                                                                                                                                                               |
 
| ``__real (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                     | `RealPartExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$RealPartExpr.html>`__                                                            | GNU extension                                                                                                                                                                                                                                                                                               |
 
| ``-`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | `UnaryMinusExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$UnaryMinusExpr.html>`__                                                        |                                                                                                                                                                                                                                                                                                             |
 
| ``+`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | `UnaryPlusExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$UnaryPlusExpr.html>`__                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``~`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | | `ComplementExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BitwiseOperation.qll/type.BitwiseOperation$ComplementExpr.html>`__                                                            | |                                                                                                                                                                                                                                                                                                           |
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | `ConjugationExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/ArithmeticOperation.qll/type.ArithmeticOperation$ConjugationExpr.html>`__                                                    | | GNU extension                                                                                                                                                                                                                                                                                             |
 
| ``!`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__                                                                                                                                                                                                                                                                                                                                                                                                  | `NotExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/LogicalOperation.qll/type.LogicalOperation$NotExpr.html>`__                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| | ``int`` *vect* ``__attribute__``                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `VectorFillOperation <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/BuiltInOperations.qll/type.BuiltInOperations$VectorFillOperation.html>`__                                                  | GNU extension                                                                                                                                                                                                                                                                                               |
| |  ``( ( vector_size (`` *16* ``) ) )``                                                                                                                                                                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
| |  ``= {`` *3* ``,`` *8* ``,`` *32* ``,`` *33* ``};``                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``sizeof (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                     | `SizeofExprOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofExprOperator.html>`__                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| ``sizeof (`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                           | `SizeofTypeOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofTypeOperator.html>`__                                                                              |                                                                                                                                                                                                                                                                                                             |
 
| | ``template < typename...`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `SizeofPackOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$SizeofPackOperator.html>`__                                                                              |                                                                                                                                                                                                                                                                                                             |
| | ``int`` *count* ``(`` *T*  ``&&...`` *t* ``)``                                                                                                                                                                                                                                                                                                                                                                                                                                                       |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
| |  ``{ return sizeof... (`` *t* ``); }``                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``( {`` `Stmt <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/stmts/Stmt.qll/type.Stmt$Stmt.html>`__... ``;`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``} )``                                                                                                                                                                                                                                                                               | `StmtExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$StmtExpr.html>`__                                                                                                  | GNU/Clang extension                                                                                                                                                                                                                                                                                         |
 
| ``this``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | `ThisExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$ThisExpr.html>`__                                                                                                  |                                                                                                                                                                                                                                                                                                             |
 
| ``throw (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``);``                                                                                                                                                                                                                                                                                                                                                                                     | `ThrowExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$ThrowExpr.html>`__                                                                                                |                                                                                                                                                                                                                                                                                                             |
 
| ``throw;``                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `ReThrowExpr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Call.qll/type.Call$ReThrowExpr.html>`__                                                                                            |                                                                                                                                                                                                                                                                                                             |
 
| | ``typeid (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                   | `TypeidOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$TypeidOperator.html>`__                                                                                      |                                                                                                                                                                                                                                                                                                             |
| | ``typeid (`` `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                             |
 
| ``__uuidof (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                                                                                   | `UuidofOperator <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Cast.qll/type.Cast$UuidofOperator.html>`__                                                                                      | Microsoft extension                                                                                                                                                                                                                                                                                         |
 


Type classes
~~~~~~~~~~~~

This table lists subclasses of `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ representing C/C++ types.

 
| Example syntax                                                                                                                                                                                                                                                                                                                                                                                                                              | QL class                                                                                                                                                         | Remarks                                                                                                                                                                                                                                                                          |
 
| ``void``                                                                                                                                                                                                                                                                                                                                                                                                                                    | `VoidType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$VoidType.html>`__                                                                |                                                                                                                                                                                                                                                                                  |
 
| ``_Bool`` or ``bool``                                                                                                                                                                                                                                                                                                                                                                                                                       | `BoolType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$BoolType.html>`__                                                                |                                                                                                                                                                                                                                                                                  |
 
| ``char16_t``                                                                                                                                                                                                                                                                                                                                                                                                                                | `Char16Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Char16Type.html>`__                                                            | C11, C++11                                                                                                                                                                                                                                                                       |
 
| ``char32_t``                                                                                                                                                                                                                                                                                                                                                                                                                                | `Char32Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Char32Type.html>`__                                                            | C11, C++11                                                                                                                                                                                                                                                                       |
 
| ``char``                                                                                                                                                                                                                                                                                                                                                                                                                                    | `PlainCharType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$PlainCharType.html>`__                                                      |                                                                                                                                                                                                                                                                                  |
 
| ``signed char``                                                                                                                                                                                                                                                                                                                                                                                                                             | `SignedCharType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$SignedCharType.html>`__                                                    |                                                                                                                                                                                                                                                                                  |
 
| ``unsigned char``                                                                                                                                                                                                                                                                                                                                                                                                                           | `UnsignedCharType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$UnsignedCharType.html>`__                                                |                                                                                                                                                                                                                                                                                  |
 
| ``int``                                                                                                                                                                                                                                                                                                                                                                                                                                     | `IntType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$IntType.html>`__                                                                  |                                                                                                                                                                                                                                                                                  |
 
| ``long long``                                                                                                                                                                                                                                                                                                                                                                                                                               | `LongLongType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$LongLongType.html>`__                                                        |                                                                                                                                                                                                                                                                                  |
 
| ``long``                                                                                                                                                                                                                                                                                                                                                                                                                                    | `LongType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$LongType.html>`__                                                                |                                                                                                                                                                                                                                                                                  |
 
| ``short``                                                                                                                                                                                                                                                                                                                                                                                                                                   | `ShortType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$ShortType.html>`__                                                              |                                                                                                                                                                                                                                                                                  |
 
| ``wchar_t``                                                                                                                                                                                                                                                                                                                                                                                                                                 | `WideCharType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$WideCharType.html>`__                                                        |                                                                                                                                                                                                                                                                                  |
 
| ``nullptr_t``                                                                                                                                                                                                                                                                                                                                                                                                                               | `NullPointerType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$NullPointerType.html>`__                                                  |                                                                                                                                                                                                                                                                                  |
 
| ``double``                                                                                                                                                                                                                                                                                                                                                                                                                                  | `DoubleType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$DoubleType.html>`__                                                            |                                                                                                                                                                                                                                                                                  |
 
| ``long double``                                                                                                                                                                                                                                                                                                                                                                                                                             | `LongDoubleType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$LongDoubleType.html>`__                                                    |                                                                                                                                                                                                                                                                                  |
 
| ``float``                                                                                                                                                                                                                                                                                                                                                                                                                                   | `FloatType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$FloatType.html>`__                                                              |                                                                                                                                                                                                                                                                                  |
 
| ``auto``                                                                                                                                                                                                                                                                                                                                                                                                                                    | `AutoType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$AutoType.html>`__                                                                |                                                                                                                                                                                                                                                                                  |
 
| ``decltype (`` `Expr <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/exprs/Expr.qll/type.Expr$Expr.html>`__ ``)``                                                                                                                                                                                                                                                                                                                        | `Decltype <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Decltype.html>`__                                                                |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``[`` *n* ``]``                                                                                                                                                                                                                                                                                                                                   | `ArrayType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$ArrayType.html>`__                                                              |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``( ^`` *blockptr* ``) (`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``)``                                                                                                                                                                                                 | `BlockType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$BlockType.html>`__                                                              | Apple extension                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``( *``  *funcptr* ``) (`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``)``                                                                                                                                                                                                 | `FunctionPointerType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$FunctionPointerType.html>`__                                          |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``( &`` *funcref* ``) (`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``)``                                                                                                                                                                                                  | `FunctionReferenceType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$FunctionReferenceType.html>`__                                      |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``__attribute__ ( ( vector_size (`` *n* ``) ) )``                                                                                                                                                                                                                                                                                                 | `GNUVectorType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$GNUVectorType.html>`__                                                      |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__  ``*``                                                                                                                                                                                                                                                                                                                                            | `PointerType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$PointerType.html>`__                                                          |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``&``                                                                                                                                                                                                                                                                                                                                             | `LValueReferenceType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$LValueReferenceType.html>`__                                          |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``&&``                                                                                                                                                                                                                                                                                                                                            | `RValueReferenceType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$RValueReferenceType.html>`__                                          |                                                                                                                                                                                                                                                                                  |
 
| `Type <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$Type.html>`__ ``(`` `Class <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Class.qll/type.Class$Class.html>`__ ``*::``  *membptr* ``) (`` `Parameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Parameter.qll/type.Parameter$Parameter.html>`__... ``)``                                                                                             | `PointerToMemberType <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$PointerToMemberType.html>`__                                          |                                                                                                                                                                                                                                                                                  |
 
| ``template < template < typename > class`` *C* ``>``                                                                                                                                                                                                                                                                                                                                                                                        | `TemplateTemplateParameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$TemplateTemplateParameter.html>`__                              |                                                                                                                                                                                                                                                                                  |
 
| ``template < typename`` *T* ``>``                                                                                                                                                                                                                                                                                                                                                                                                           | `TemplateParameter <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Type.qll/type.Type$TemplateParameter.html>`__                                              |                                                                                                                                                                                                                                                                                  |
 


Preprocessor classes
~~~~~~~~~~~~~~~~~~~~

This table lists `Preprocessor <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/module.Preprocessor.html>`__ classes representing C/C++ preprocessing directives.

 
| Example syntax                                                                                                                                                                                                                                                                                                                                                                                                                              | QL class                                                                                                                                                         | Remarks                                                                                                                                                                                                                                                                           |
 
| ``#elif`` *condition*                                                                                                                                                                                                                                                                                                                                                                                                                       | `PreprocessorElif <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorElif.html>`__                                |                                                                                                                                                                                                                                                                                   |
 
| ``#if`` *condition*                                                                                                                                                                                                                                                                                                                                                                                                                         | `PreprocessorIf <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIf.html>`__                                    |                                                                                                                                                                                                                                                                                   |
 
| ``#ifdef`` *macro*                                                                                                                                                                                                                                                                                                                                                                                                                          | `PreprocessorIfdef <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIfdef.html>`__                              |                                                                                                                                                                                                                                                                                   |
 
| ``#ifndef`` *macro*                                                                                                                                                                                                                                                                                                                                                                                                                         | `PreprocessorIfndef <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorIfndef.html>`__                            |                                                                                                                                                                                                                                                                                   |
 
| ``#else``                                                                                                                                                                                                                                                                                                                                                                                                                                   | `PreprocessorElse <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorElse.html>`__                                |                                                                                                                                                                                                                                                                                   |
 
| ``#endif``                                                                                                                                                                                                                                                                                                                                                                                                                                  | `PreprocessorEndif <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorEndif.html>`__                              |                                                                                                                                                                                                                                                                                   |
 
| ``#line`` *line_number* *file_name*                                                                                                                                                                                                                                                                                                                                                                                                         | `PreprocessorLine <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorLine.html>`__                                |                                                                                                                                                                                                                                                                                   |
 
| ``#pragma`` *pragma_property*                                                                                                                                                                                                                                                                                                                                                                                                               | `PreprocessorPragma <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorPragma.html>`__                            |                                                                                                                                                                                                                                                                                   |
 
| ``#undef`` *macro*                                                                                                                                                                                                                                                                                                                                                                                                                          | `PreprocessorUndef <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorUndef.html>`__                              |                                                                                                                                                                                                                                                                                   |
 
| ``#warning`` *message*                                                                                                                                                                                                                                                                                                                                                                                                                      | `PreprocessorWarning <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorWarning.html>`__                          |                                                                                                                                                                                                                                                                                   |
 
| ``#error`` *message*                                                                                                                                                                                                                                                                                                                                                                                                                        | `PreprocessorError <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Preprocessor.qll/type.Preprocessor$PreprocessorError.html>`__                              |                                                                                                                                                                                                                                                                                   |
 
| ``#include`` *file_name*                                                                                                                                                                                                                                                                                                                                                                                                                    | `Include <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Include.qll/type.Include$Include.html>`__                                                            |                                                                                                                                                                                                                                                                                   |
 
| ``#import`` *file_name*                                                                                                                                                                                                                                                                                                                                                                                                                     | `Import <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Include.qll/type.Include$Import.html>`__                                                              | Apple/NeXT extension                                                                                                                                                                                                                                                              |
 
| ``#include_next`` *file_name*                                                                                                                                                                                                                                                                                                                                                                                                               | `IncludeNext <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Include.qll/type.Include$IncludeNext.html>`__                                                    | Apple/NeXT extension                                                                                                                                                                                                                                                              |
 
| ``#define`` *macro* ...                                                                                                                                                                                                                                                                                                                                                                                                                     | `Macro <https://help.semmle.com/qldoc/cpp/semmle/code/cpp/Macro.qll/type.Macro$Macro.html>`__                                                                    |                                                                                                                                                                                                                                                                                   |
 


What next?
----------

-  Experiment with the worked examples in the QL for C/C++ topics: :doc:`Function classes <function-classes>`, :doc:`Expressions, types and statements <expressions-types>`, :doc:`Conversions and classes <conversions-classes>`, and :doc:`Analyzing data flow in C/C++ <dataflow>`.
-  Find out more about QL in the `QL language handbook <https://help.semmle.com/QL/ql-handbook/index.html>`__ and `QL language specification <https://help.semmle.com/QL/ql-spec/language.html>`__.
-  Learn more about the query console in `Using the query console <https://lgtm.com/help/lgtm/using-query-console>`__.
