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?