#include<iostream>
template<typename Iterator>
struct foo
{
public:
typedef typename Iterator::value_type value_type;
};
class MyIterator
{
public:
typedef MyIterator value_type;
typedef MyIterator* pointer;
};
int main()
{
// foo<MyIterator> f;
MyIterator it = foo<MyIterator>::value_type;
}
I2luY2x1ZGU8aW9zdHJlYW0+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4Kc3RydWN0IGZvbwp7CnB1YmxpYzoKdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwp9OwoKCmNsYXNzIE15SXRlcmF0b3IKewpwdWJsaWM6CnR5cGVkZWYgTXlJdGVyYXRvciB2YWx1ZV90eXBlOwp0eXBlZGVmIE15SXRlcmF0b3IqIHBvaW50ZXI7Cn07CgppbnQgbWFpbigpCnsKLy8gICBmb288TXlJdGVyYXRvcj4gZjsKICAgTXlJdGVyYXRvciBpdCA9IGZvbzxNeUl0ZXJhdG9yPjo6dmFsdWVfdHlwZTsKfQ==