Libtorch uses CRTP to make cloneable modules. For example,
torch::nn::Softmax is a
SoftmaxImpl is a
Say I want a
std::vector<Module> or a function that returns a activation function that’s also a
Module. I have to cast various modules such as
torch::nn:Module. This means I loose
Cloneable which I’m not sure is a problem. If I return a reference by simply dereferencing
ModuleHolder, since it’s a shared pointer, I’m not sure if the underlying module is guaranteed to survive.
Any advice on how to get around
ModuleHolder to work with generic
torch::nn::Module (so I can have a function that returns it or a
std::vector of it) is much appreciated!