транспонировать логические аргументы функции шаблона в аргументы функции времени выполнения с метапрограммированием шаблона

У меня есть функция, которая принимает несколько логических аргументов шаблона:

template<bool par1, bool par2, bool par2>
void function(int arg1, int arg2, int arg3);

Я хочу автоматически генерировать во время компиляции (с любым волшебством шаблона, с C ++ 11, если необходимо) таблицу (или что-то эквивалентное, как в забавных структурах метапрограммирования C ++) функции, указывающей на все комбинации значений параметры шаблонаpar*, так что я могу построить функцию, которая принимает эти параметры шаблона в качестве аргументов времени выполнения и переходит к правильной реализации шаблона:

void runtime_function(bool par1, bool par2, bool par3, int arg1, int arg2, int arg3);

Я думаю, что это можно сделать, если вместо функции шаблона сделать то же самое с классами, благодаря аргументам шаблона шаблона:

template<template<bool> class T> class CombinationsOfTemplateParameters;
template<template<bool, bool> class T> class CombinationsOfTemplateParameters;
template<template<bool, bool, bool> class T> class CombinationsOfTemplateParameters;
//and so on, up to some implementation defined hard limit.

Но, насколько я знаю, нет никакого способа указать на универсальную функцию шаблона, оставив ее параметры шаблона неуказанными. Следовательно, я не знаю, как передать его какому-нибудь вспомогательному классу из списка параметров шаблона.

Есть ли способ решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос