Boolesche Argumente der Vorlagenfunktion in Laufzeitfunktionsargumente mit Vorlagenmetaprogrammierung umwandeln

Ich habe eine Funktion, die mehrere boolesche Template-Argumente akzeptiert:

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

Ich möchte zur Kompilierungszeit automatisch (mit welcher Vorlage auch immer, bei Bedarf mit C ++ 11) eine Tabelle (oder etwas Ähnliches wie in den lustigen Strukturen der C ++ - Metaprogrammierung) der Funktionszeiger auf alle Kombinationen der Werte von generieren die Vorlagenparameterpar*, damit ich eine Funktion konstruieren kann, die diese Vorlagenparameter als Laufzeitargumente verwendet und zur richtigen Vorlageninstanziierung weiterleitet:

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

Ich denke, dass dies getan werden kann, wenn man anstelle einer Template-Funktion dasselbe mit Klassen machen möchte, dank Template-Template-Argumenten:

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.

Aber meines Wissens gibt es keine Möglichkeit, auf eine generische Template-Funktion zu verweisen, ohne dass die Template-Parameter angegeben werden. Daher weiß ich überhaupt nicht, wie ich es an eine Hilfsklasse in ihrer Vorlagenparameterliste übergeben soll.

Gibt es eine Möglichkeit, dieses Problem zu lösen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage