#include <iostream>
template<class T>
class Model
{
class Texture;
public:
T f(T);
};
template<typename T>
class Model<T>::Texture
{
//you should be able to use T here, even though Texture is not a template!
public:
T m_data; //T here
Texture(T data) : m_data(data) //T here also!
{}
};
template<typename T>
T Model<T>::f(T data)
{
Texture t(data);
return t.m_data; //access member data
}
int main() {
Model<int> m;
std::cout << m.f(100) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgTW9kZWwKewogICAgY2xhc3MgVGV4dHVyZTsKICAgIHB1YmxpYzoKICAgICAgVCBmKFQpOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgTW9kZWw8VD46OlRleHR1cmUgCnsKICAvL3lvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgVCBoZXJlLCBldmVuIHRob3VnaCBUZXh0dXJlIGlzIG5vdCBhIHRlbXBsYXRlIQpwdWJsaWM6CiAgIFQgbV9kYXRhOyAgIC8vVCBoZXJlCiAgIFRleHR1cmUoVCBkYXRhKSA6IG1fZGF0YShkYXRhKSAvL1QgaGVyZSBhbHNvIQogICB7fQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBNb2RlbDxUPjo6ZihUIGRhdGEpCnsKICAgIFRleHR1cmUgdChkYXRhKTsKICAgIHJldHVybiB0Lm1fZGF0YTsgLy9hY2Nlc3MgbWVtYmVyIGRhdGEKfQoKaW50IG1haW4oKSB7CglNb2RlbDxpbnQ+IG07CiAgICAgICAgc3RkOjpjb3V0IDw8IG0uZigxMDApIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9