Yes. It does support creating C# wrapper classes for the instantiated C++ template classes.
For example, if you have an instantiated template class, such as std::vector<int>, the wrapper generator will generate StdIntVector for it, any type of std::vector<int>*, std::vector<int>&, return type of std::vector<int> (object, pointer or reference) can then be marshaled to StdIntVector automatically by the C# wrapper code generator.
There is limited support if class object is passed by value to any method of a class. Since the SDK Tool only builds fully managed .NET wrapper library, it does not use unsafe keyword, any class object passed by value can not be passed by using the native pointer of the C++ class object. So far, we have only tried passing a std::string by value. So the support of passing class object by value is limited.