The documentation, https://swig.org/Doc4.1/SWIGPlus.html#SWIGPlus_template_class_inheritance, does clearly state that you need to instantiate a template before it is used as a base class. Any change from this behaviour will be a major change.
[csharp] getCPtr should use object.ReferenceEquals
I'm not sure it will be easy to keep the code based maintained to always cover this corner case. The relevant typemaps can be easily changed by the user to use ReferenceEquals instead and so I'm closing as won't change. I can't there being a runtime overhead when there is no operator== overload.
SWIG-4.2.1 released
Identifier warning for friend methods in a namespace
Fixed in a6ab9145115aa124ff9c98e2b3c39fde9f205760
Namespace breaks %ignore with unbound C++ operator<<
Fixed by a6ab9145115aa124ff9c98e2b3c39fde9f205760. All 6 of the %ignore directives shown now work.