template <typename blah>
class MyTemplateBaseClass
{
    public: 
    typedef blah my_blah_typedef;
};
 
template <typename arg>
class DerivedFromTemplated : private MyTemplateBaseClass<arg>
{
public:
    //Either giving the full name:
    typename MyTemplateBaseClass<arg>::my_blah_typedef GetBlahType()
    {
        return typename MyTemplateBaseClass<arg>::my_blah_typedef();
    }
 
    //Or typedef-ing it locally:
    typedef typename MyTemplateBaseClass<arg>::my_blah_typedef my_blah_typedef;
    my_blah_typedef GetBlahType2() 
    {
        return my_blah_typedef();
    }
};
 
int main()
{
    DerivedFromTemplated<int> test;
}
				CnRlbXBsYXRlIDx0eXBlbmFtZSBibGFoPgpjbGFzcyBNeVRlbXBsYXRlQmFzZUNsYXNzCnsKICAgIHB1YmxpYzogCiAgICB0eXBlZGVmIGJsYWggbXlfYmxhaF90eXBlZGVmOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIGFyZz4KY2xhc3MgRGVyaXZlZEZyb21UZW1wbGF0ZWQgOiBwcml2YXRlIE15VGVtcGxhdGVCYXNlQ2xhc3M8YXJnPgp7CnB1YmxpYzoKICAgIC8vRWl0aGVyIGdpdmluZyB0aGUgZnVsbCBuYW1lOgogICAgdHlwZW5hbWUgTXlUZW1wbGF0ZUJhc2VDbGFzczxhcmc+OjpteV9ibGFoX3R5cGVkZWYgR2V0QmxhaFR5cGUoKQogICAgewogICAgICAgIHJldHVybiB0eXBlbmFtZSBNeVRlbXBsYXRlQmFzZUNsYXNzPGFyZz46Om15X2JsYWhfdHlwZWRlZigpOwogICAgfQoKICAgIC8vT3IgdHlwZWRlZi1pbmcgaXQgbG9jYWxseToKICAgIHR5cGVkZWYgdHlwZW5hbWUgTXlUZW1wbGF0ZUJhc2VDbGFzczxhcmc+OjpteV9ibGFoX3R5cGVkZWYgbXlfYmxhaF90eXBlZGVmOwogICAgbXlfYmxhaF90eXBlZGVmIEdldEJsYWhUeXBlMigpIAogICAgewogICAgICAgIHJldHVybiBteV9ibGFoX3R5cGVkZWYoKTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgRGVyaXZlZEZyb21UZW1wbGF0ZWQ8aW50PiB0ZXN0Owp9