### 8.7 The ‘`#`’ Type Descriptor

This is used to describe a class method. This is a function which takes an extra argument as its first argument, for the `this` pointer.

If the ‘`#`’ is immediately followed by another ‘`#`’, the second one will be followed by the return type and a semicolon. The class and argument types are not specified, and must be determined by demangling the name of the method if it is available.

Otherwise, the single ‘`#`’ is followed by the class type, a comma, the return type, a comma, and zero or more parameter types separated by commas. The list of arguments is terminated by a semicolon. In the debugging output generated by gcc, a final argument type of `void` indicates a method which does not take a variable number of arguments. If the final argument type of `void` does not appear, the method was declared with an ellipsis.

Note that although such a type will normally be used to describe fields in structures, unions, or classes, for at least some versions of the compiler it can also be used in other contexts.