namespace my
{
template <typename> struct less;
template <typename, typename> struct pair;
template <typename> struct page_allocator;
template <typename> struct cached_alloc;
template <typename, typename, typename, typename, typename, typename> struct set_base {};
struct select1st;
struct ins_unique;
// my custom map
template<typename K, typename V, typename order = less<K>, typename allocator = cached_alloc<page_allocator<pair<K,V> > > >
class map : public set_base<pair<K, V>, K, select1st, order, ins_unique, allocator>
{
};
}
template <typename T>
class Base
{
protected:
typedef my::map<T, double> MyMap;
MyMap m_map; // this is line NN
public:
void func(const T& key)
{
typename MyMap::iterator it = m_map.find(key);
if(it != m_map.end()) {
// ....
}
}
};
class Inherited1 : public Base <char>
{ };
class Inherited2 : public Base <int>
{ };
int main() {}
bmFtZXNwYWNlIG15IAp7Cgl0ZW1wbGF0ZSA8dHlwZW5hbWU+IHN0cnVjdCBsZXNzOwoJdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IHBhaXI7Cgl0ZW1wbGF0ZSA8dHlwZW5hbWU+IHN0cnVjdCBwYWdlX2FsbG9jYXRvcjsKCXRlbXBsYXRlIDx0eXBlbmFtZT4gc3RydWN0IGNhY2hlZF9hbGxvYzsKCXRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3Qgc2V0X2Jhc2Uge307CgoJc3RydWN0IHNlbGVjdDFzdDsKCXN0cnVjdCBpbnNfdW5pcXVlOwoJCiAgICAvLyBteSBjdXN0b20gbWFwCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBvcmRlciA9IGxlc3M8Sz4sIHR5cGVuYW1lIGFsbG9jYXRvciA9IGNhY2hlZF9hbGxvYzxwYWdlX2FsbG9jYXRvcjxwYWlyPEssVj4gPiA+ID4KICAgICAgICBjbGFzcyBtYXAgOiBwdWJsaWMgc2V0X2Jhc2U8cGFpcjxLLCBWPiwgSywgc2VsZWN0MXN0LCBvcmRlciwgaW5zX3VuaXF1ZSwgYWxsb2NhdG9yPgogICAgICAgIHsKICAgICAgICB9Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gICAgCmNsYXNzIEJhc2UKewpwcm90ZWN0ZWQ6CiAgICB0eXBlZGVmIG15OjptYXA8VCwgZG91YmxlPiBNeU1hcDsKICAgIE15TWFwIG1fbWFwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBsaW5lIE5OCgpwdWJsaWM6CiAgICB2b2lkIGZ1bmMoY29uc3QgVCYga2V5KQogICAgewogICAgICAgIHR5cGVuYW1lIE15TWFwOjppdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICBpZihpdCAhPSBtX21hcC5lbmQoKSkgewogICAgICAgICAgICAvLyAuLi4uCiAgICAgICAgfQogICAgfQp9OwoKY2xhc3MgSW5oZXJpdGVkMSA6IHB1YmxpYyBCYXNlIDxjaGFyPgp7IH07CmNsYXNzIEluaGVyaXRlZDIgOiBwdWJsaWMgQmFzZSA8aW50Pgp7IH07CgppbnQgbWFpbigpIHt9