2012-12-08 3 views
1

map, unordered_map과 같은 다른 키 - 값 컨테이너를 사용하는 래퍼 클래스를 구현하고 싶습니다. STL 컨테이너의 템플릿 템플릿 매개 변수

나는 사용자가이 방법으로 같은 코드를 사용할 수 있기를 바랍니다 :

MyWrapper<std::map> w1; 
MyWrapper<std::tr1::unordered_map> w2; 

내가이,지도 및 unordered_map도의 하지만 템플릿 매개 변수 다른입니다 달성하기 위해 "템플릿 템플릿 paramteres"을 사용 ..

// but this Wrapper is for std::map only.... 
template< template<typename,typename,typename,typename> class CONTAINER> 
class MyWrapper 
{ 
    CONTAINER<string, string, 
      std::less<string>, 
      std::allocator<std::pair<const string, string> > > c_; 
}; 

MyWrapper<std::map> w1; 
MyWrapper<std::tr1::unordered_map> w1; // not compiled!!! 

템플릿 매개 변수로 map 또는 unordered_map을 전달할 수있는 클래스를 만드는 방법은 무엇입니까 ?? 덕분에 !

+1

그냥 사용자가이 이후 꽤 쓸모없는 ... – Xeo

답변

-1

당신은 당신이 원하는 것을 할 ++ (11)와 가변 인자 템플릿 c를 사용할 수 있습니다 :

template< template<typename, typename...> class CONTAINER> 
+0

주 당신에게 전체 형식을 통과 한 템플리트에는 다른 매개 변수가 있으므로 어쨌든 매개 변수를 구별해야합니다. – Xeo

+0

유일한 관심사가 키와 값이면 완벽하게 잘 작동하는 것 같습니다. – EHuhtala