Вот что я хочу набрать:
class foo : public watchKeys<A, B, C> {}; //Or any list of keys
Boost :: mpl имеет последовательности, которые позволяют вам делать это, но я не хочу делать:
class foo : public watchKeys<mpl::list<A, B, C> > {};
Я не возражаю против того, чтобы быть "уродливым" или многословным внутри, но я хочу, чтобы в конечном итоге watchKeys был очень простым и интуитивно понятным. Я также не могу понять, как boost делает это, но, похоже, это потому, что между мной и шаблонами есть слой макросов.
Как я могу пойти по этому поводу? Я бы предпочел , а не , чтобы сделать огромный список шаблонов для каждого количества типов, но если это единственный, то единственный способ ...
Редактировать: Я стал совершенно уверен, что нет никакого способа сделать то, что я хочу сделать (почти, но у вас не может быть переменного числа макро аргументов), но вопрос все еще генерирует полезные и информативные ответы.