There is no such thing as a inner template parameters for data members. If a data member depends on a type template parameter, such a parameter must be available in the signature of the class. That does not mean, however, that you need to specify all template parameters when instantiating a class, because, in c++17, they can be deduced by the constructor, see here.
Example:
#include <string>
template <typename U>
class A {
U m_data;
public:
A(U data) : m_data{data} { }
};
int main()
{
A a(3); // Here U = int
A b(std::string("hello")); // Here U = std::string
return 0;
}
Test it live on Coliru.
In the code above, I do not need (although I could) specify the template parameter U when creating the variables a and b. This is because the type of the variable passed to the constructor is used to deduce U for the entire class. Still, A is a template class.