I also happen to have a few levels of typedef:
template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
class CmnMap
{
public:
#ifdef CMN_MAP_USE_STD
typedef std::map<_Key, _Tp, _Compare, _Alloc> type;
#else
typedef boost::container::map<_Key, _Tp, _Compare, _Alloc> type;
#endif
};
typedef CmnMap<int, TaskStats>::type TaskStatsMap;