I am very new to C++ and am trying to wrapping a C++ codebase at GitHub - NVIDIA/MatX: An efficient C++17 GPU numerical computing library with Python-like syntax. It has a class that looks like

```
template <typename T,
int RANK,
typename Storage = DefaultStorage<T>,
typename Desc = DefaultDescriptor<RANK>>
class tensor_t : public detail::tensor_impl_t<T,RANK,Desc>
```

and a `make_tensor`

function

```
template <typename T, int RANK>
auto make_tensor( const index_t (&shape)[RANK],
matxMemorySpace_t space = MATX_MANAGED_MEMORY,
cudaStream_t stream = 0)
```

to create the tensor. In C++, I have a minimal function

```
matx::tensor_t<float, 2> make_f32_2d() {
auto x = matx::make_tensor<float>({2, 3});
return x;
}
```

but in the autocxx generated Rust code, this function is created as a `pub struct make_f32_2d`

. The doc message is autocxx bindings couldn't be generated: This function or method uses a type where one of the template parameters was incomprehensible to bindgen/autocxx - probably because it uses template specialization.

How should I work around template specialization problem? Thanks!