Любой способ метапрограммирования для создания перегрузок для различного количества параметров шаблона?

Я пытаюсь создать набор шаблонов функций, которые могут принимать разные типы и количество параметров, например:

template <T0>
void call(T0 arg0);

template <T0, T1>
void call(T0 arg0, T1 arg1);

template <T0, T1, T2>
void call(T0 arg0, T1 arg1, T2 arg2);

template <T0, T1, T2, T3>
void call(T0 arg0, T1 arg1, T2 arg2, T3 arg3);

template <T0, T1, T2, T3, T4>
void call(T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4);

[...]

Все параметры обрабатываются одинаково внутри функций (как аргументы для функции шаблона с одним параметром ). Это для библиотеки, поэтому дополнительные усилия с моей стороны приемлемы, если это означает меньше усилий или более приятный интерфейс для пользователя библиотеки.

Мне приходилось проделывать это несколько раз для разных проектов, и я очень устал от необходимости вручную писать их все вручную. Становится хуже, когда я заранее не знаю максимальное количество параметров, которое понадобится проекту, использующему библиотеку.

Прежде чем я начну писать сценарий Python для генерации всех перегрузок, есть ли какой-нибудь способ метапрограммирования, чтобы компилятор сделал это вместо меня?

7
задан Xeo 16 January 2012 в 21:14
поделиться