Page 1 of 1

Verwenden der Laufzeitbedingung, um Vorlagenparameter in C ++ auszuwählen

Posted: 01 Feb 2025, 08:37
by Anonymous
Ich habe also eine Vorlagenklasse < /p>

Code: Select all

template 
class Operator {
public:
Operator(const State& state);
// ...
}
< /code>
Und ich möchte es mit verschiedenen Vorlagenparametern initialisieren: < /p>
bool condition = foo();  // runtime condition
Operator op(state);  // not possible because condition is not constexpr
< /code>
Ich habe diesen Thread gefunden, aber ich habe immer noch ein paar Probleme: < /p>
[list]
[*]std::variant
funktioniert nicht, da der Operator keine Standardkonstruktor hat. (bearbeiten: Mein schlechtes, folge einfach der akzeptierten Antwort im Beitrag, den ich verlinkt habe)
[*] Polymorphismus funktioniert nicht, weil der Operator

Code: Select all

union
scheint nicht sicher zu type.
[*]

Code: Select all

std::any
Benötigt einen komplizierten Typ, wenn ich ihn richtig erhalte.
[/list]
Gibt es eine einfachere und elegantere Lösung dafür? Wenn nicht, muss ich diese Klasse nur neu gestalten?