- Shiboken
- » Type System Reference

# Built-in Types

## Primitive C++ Types

Shiboken knows the C++ primitive types like int and float and gathers information about typedefs like int32_t and size_t at runtime while parsing C++ headers. Function overloads using these types will be automatically generated. To suppress a primitive type, use the rejection tag.

In principle, there is no need to specify them in the typesystem file using the primitive-type tag.

However, specifying a type means that the type name is used for matching signatures of functions for modification. So, it might make sense to specify architecture-dependent types like size_t to avoid having to spell out the resolved type, which might differ depending on platform.

std::string, std::wstring and their associated view types std::string_view, std::wstring_view are also supported.

## C++ Container Types

The C++ containers `std::list`, `std::vector`, `std::pair`, `std::map`, `std::span` and `std::unordered_map` are built-in. To specify Opaque Containers, use the opaque-container element. container-type can still be specified to modify the built-in behavior. For this case, a number of pre-defined conversion templates are provided (see Predefined Templates).

## CPython Types

Python types like str match types like PyUnicode in the Concrete Objects Layer of CPython. They have check functions like PyUnicode_Check(), which Shiboken generates into the code checking the function arguments.

These types occur as parameters when adding functions or modifying types, as type on add-conversion within a conversion-rule or as target language API types on primitive-type.

They are built into Shiboken as custom types along with their check functions.