| begin() | Accessor for begin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with begin() method. | 
| begin() const | Accessor for begin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with begin() method. | 
| Cast() const | Casts pointer to its type itself. | 
| Cast() const | Casts pointer to base type using static_cast. | 
| Cast() const | Casts pointer to derived type dynamic_cast. | 
| Cast() const | Casts pointer to derived type dynamic_cast. | 
| cbegin() const | Accessor for cbegin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with cbegin() method. | 
| cend() const | Accessor for cend() method of an underling collection. Only compiles if SmartPtr_ is specialization type with cend() method. | 
| const_pointer_cast() const | Casts pointer to different type using const_cast on pointed object. | 
| dynamic_pointer_cast() const | Casts pointer to different type using dynamic_cast on pointed object. | 
| end() | Accessor for end() method of an underling collection. Only compiles if SmartPtr_ is specialization type with end() method. | 
| end() const | Accessor for end() method of an underling collection. Only compiles if SmartPtr_ is specialization type with end() method. | 
| get() const | Gets pointed object. | 
| get_Mode() const | Gets pointer mode. | 
| get_shared() const | Gets pointed object, but asserts that pointer is in shared mode. | 
| get_shared_count() const | Gets number of shared pointers existing to referenced object, including current one. Asserts current pointer being in shared mode. | 
| GetHashCode() const | Calls GetHashCode() on pointed object. | 
| GetObjectNotNull() const | Gets currently referenced object (if any) or throws. | 
| GetObjectOrNull() const | Gets pointed object (if any) or nullptr. Same as get(). | 
| GetObjectOwner() const | Gets referenced object. | 
| GetPointer() const | Gets pointed object (if any) or nullptr. Same as get(). | 
| Is(const System::TypeInfo&) const | Checks if pointed object is of specific type or its child type. Follows C# ‘is’ semantics. | 
| IsAliasingPtr() const | Checks if pointer is pointed to another object than owned (created by an aliasing constructor). | 
| IsShared() const | Checks if pointer is in shared mode. | 
| IsWeak() const | Checks if pointer is in weak mode. | 
| explicit operator bool() const | Checks if pointer is not null. | 
| operator!() const | Checks if pointer is null. | 
| operator*() const | Gets reference to pointed object. Asserts that pointer is not null. | 
| operator->() const | Allows to access members of referenced object. | 
| operator<(Y *) const | Provides less-compare semantics for SmartPtr class. | 
| operator<(SmartPtr<Y> const&) const | Provides less-compare semantics for SmartPtr class. | 
| operator=(SmartPtr_&&) | Move-assigns SmartPtr object. x becomes unusable. | 
| operator=(const SmartPtr_&) | Copy-assigns SmartPtr object. | 
| operator=(const SmartPtr<Q>&) | Copy-assigns SmartPtr object. Does required type conversions. | 
| operator=(Pointee_ *) | Assigns raw pointer to SmartPtr object. | 
| operator=(std::nullptr_t) | Sets pointer value to nullptr. | 
| operator==(std::nullptr_t) const | Checks if pointer points to nullptr. | 
| operator[](IdxType) const | Accessor for array elements. Only compiles if SmartPtr_ is specialization of System::Array. | 
| RemoveAliasing() const | Removes aliasing (created by an aliasing constructor) from pointer, makes sure it manages (if shared) or tracks (if weak) the same object it points to. | 
| reset(Pointee_ *) | Sets pointed object. | 
| reset() | Makes pointer pointing to nullptr. | 
| set_Mode(SmartPtrMode) | Sets pointer mode. May alter referenced object’s reference counts. | 
| SetContainedTemplateWeakPtr(uint32_t) const | Calls SetTemplateWeakPtr() method on pointed object (if any). | 
| SmartPtr(SmartPtrMode) | Creates SmartPtr object of required mode. | 
| SmartPtr(std::nullptr_t, SmartPtrMode) | Creates null-pointer SmartPtr object of required mode. | 
| SmartPtr(Pointee_ *, SmartPtrMode) | Creates SmartPtr pointing to specified object, or converts raw pointer to SmartPtr. | 
| SmartPtr(const SmartPtr_&, SmartPtrMode) | Copy constructs SmartPtr object. Both pointers point to the same object afterwards. | 
| SmartPtr(const SmartPtr<Q>&, SmartPtrMode) | Copy constructs SmartPtr object. Both pointers point to the same object afterwards. Performs type conversion if allowed. | 
| SmartPtr(SmartPtr_&&, SmartPtrMode) | Move constructs SmartPtr object. Effectively, swaps two pointers, if they are both of same mode. x may be unusable after call. | 
| explicit SmartPtr(const SmartPtr<Array<Y>>&, SmartPtrMode) | Converts type of referenced array by creating a new array of different type. Useful if in C# there is an array type cast which is unsupported in C++. | 
| explicit SmartPtr(const Y&) | Initializes empty array. Used to translate some C# code constructs. | 
| SmartPtr(const SmartPtr<P>&, Pointee_ *, SmartPtrMode) | Constructs a SmartPtr which shares ownership information with the initial value of ptr, but holds an unrelated and unmanaged pointer p. | 
| static_pointer_cast() const | Casts pointer to different type using static_cast on pointed object. | 
| ToObjectPtr() const | Converts any pointer type to pointer to Object. Doesn’t require Pointee_ type to be complete. | 
| static Type() | Shortcut to get System::TypeInfo object for the Pointee_ type. | 
| ~SmartPtr() | Destroys SmartPtr object. If required, decreases pointed object’s reference counter and deletes object. |