transponuj argumenty boolowskie funkcji szablonu do argumentów funkcji wykonawczych za pomocą metaprogramowania szablonu
Mam funkcję, która pobiera kilka logicznych argumentów szablonu:
template<bool par1, bool par2, bool par2>
void function(int arg1, int arg2, int arg3);
Chcę generować automatycznie w czasie kompilacji (z dowolną magią szablonów, w razie potrzeby z C ++ 11) tabelę (lub coś równoważnego jak w zabawnych strukturach metaprogramowania C ++) wskaźników funkcji do wszystkich kombinacji wartości parametry szablonupar*
, dzięki czemu mogę skonstruować funkcję, która pobiera te parametry szablonu jako argumenty środowiska wykonawczego i przesyła dalej do właściwej instancji szablonu:
void runtime_function(bool par1, bool par2, bool par3, int arg1, int arg2, int arg3);
Myślę, że można to zrobić, jeśli zamiast funkcji szablonu chcieliśmy zrobić to samo z klasami, dzięki argumentom szablonów:
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.
Ale o ile wiem, nie ma sposobu na wskazanie ogólnej funkcji szablonu, pozostawiając jej parametry szablonu nieokreślone. Dlatego nie wiem, jak przekazać ją do jakiejś klasy pomocniczej na liście parametrów szablonu, w pierwszej kolejności.
Czy istnieje sposób na rozwiązanie tego problemu?