Template Naming Convention
When creating bindings for a templated class tolc will choose a name based on the template parameters.
For example:
template <typename T>
class Example {
public:
T f(T type) {
    return type;
}
};
template class Example<int>;
The specialized class Example<int> will be available from python as Example_int:
import MyLib
example = MyLib.Example_int()
# Prints 5
print(example.f(5))
Multiple template parameters are separated with an underscore (_). The names are meant to be as predictable as possible. The rules are:
std::is removed from any standard library type._is removed from any standard library type.- User defined types are left untouched (i.e. the class 
MyNamespace::MyClasswill result in appendingMyClass). 
Type to string conversions
| C++ type | Resulting name | 
|---|---|
| std::array | array | 
| std::complex | complex | 
| std::deque | deque | 
| std::filesystem::path | path | 
| std::forward_list | forwardlist | 
| std::function | function | 
| std::list | list | 
| std::map | map | 
| std::multimap | multimap | 
| std::multiset | multiset | 
| std::optional | optional | 
| std::pair | pair | 
| std::priority_queue | priorityqueue | 
| std::queue | queue | 
| std::set | set | 
| std::shared_ptr | sharedptr | 
| std::stack | stack | 
| std::tuple | tuple | 
| std::unique_ptr | uniqueptr | 
| std::unordered_map | unorderedmap | 
| std::unordered_multimap | unorderedmultimap | 
| std::unordered_multiset | unorderedmultiset | 
| std::unordered_set | unorderedset | 
| std::valarray | valarray | 
| std::variant | variant | 
| std::vector | vector | 
| bool | bool | 
| char | char | 
| char16_t | char16t | 
| char32_t | char32t | 
| double | double | 
| float | float | 
| int | int | 
| Integral | Integral literal* | 
| long double | longdouble | 
| long int | longint | 
| long long int | longlongint | 
| short int | shortint | 
| signed char | signedchar | 
| string | string | 
| string_view | stringview | 
| unsigned char | unsignedchar | 
| unsigned int | unsignedint | 
| unsigned long int | unsignedlongint | 
| unsigned long long int | unsignedlonglongint | 
| unsigned short int | unsignedshortint | 
| wchar_t | wchart | 
* For example the 3 in MyClass<std::array<int, 3>> results in MyClass_array_int_3.