Als ein Experiment, ich nur einige Code zusammen, um eine std::array<uint32_t, 256>
zur Kompilierzeit zu erzeugen. Der Tabelleninhalt selbst ist eine ziemlich typische CRC-Nachschlagetabelle - über die einzige neue Sache ist die Verwendung von constexpr
Funktionen, um die Einträge zu berechnen, anstatt eine automatisch erzeugte magische Tabelle direkt in den Quellcode zu setzen.Praktische Einschränkungen für die Menge der consExpr Berechnung
Wie auch immer, diese Übung hat mich neugierig gemacht: Gibt es irgendwelche praktischen Einschränkungen in Bezug auf die Menge an Berechnungen, die ein Compiler machen würde, um eine constexpr
Funktion oder eine Variablendefinition zur Kompilierzeit auszuwerten? z.B. etwas wie gcc -ftemplate-depth
Parameter schafft praktische Grenzen für die Menge der Vorlage Metaprogrammierung Auswertung. (Ich frage mich auch, ob es praktische Grenzen sein könnte auf die Länge eines Parameters Pack -, die die Größe eines Compile-Zeit begrenzen würde std::array
erstellt ein std::integer_sequence
Zwischen Objekt.)
Wenn ich mich recht erinnere, ja, es gibt ein Limit, aber es soll Größenordnungen größer als das rekursive sein Instanziierungsgrenze. – MikeMB