транспонировать логические аргументы функции шаблона в аргументы функции времени выполнения с метапрограммированием шаблона
У меня есть функция, которая принимает несколько логических аргументов шаблона:
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.
Но, насколько я знаю, нет никакого способа указать на универсальную функцию шаблона, оставив ее параметры шаблона неуказанными. Следовательно, я не знаю, как передать его какому-нибудь вспомогательному классу из списка параметров шаблона.
Есть ли способ решить эту проблему?