Способ сократить декларацию - PullRequest
2 голосов
/ 08 декабря 2010

У меня есть что-то вроде этого:

 template<class Key,
                 class Value,
                 class Compare_p = Compare<ByKey>,
                 template<class,class> class Insert_p = NoOverride,
                 template<class> class FailureSignal_p = ThrowOnFailure,
                 class AllocFactor_p = AllocFactorScientific<>,
                 class Alloc = Allocator<FailureSignal_p>
                >
        class Map : private Map_Base<Implementation> //Implementation is a Link with identical  
//params to Map
        {
        public:  
//I've tried to use typedef here but it's too late
            typedef LinkImplementation<Pair<Key,Value>,Compare_p,Insert_p,FailureSignal_p,AllocFactor_p,Alloc> Implementation;
    };

Итак, большой вопрос: есть ли способ сократить это объявление (LinkImplementation <>)?

1 Ответ

1 голос
/ 08 декабря 2010

может создать шаблон "struct" для параметров карты, например:

template <class Key, ...  blablabla > 
struct MapParams{
typedef Key key_t;
typedef Value value_t;
..................
};

затем используйте эту "структуру" как один параметр шаблона для шаблонов Map и Map_Base?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...