W ramach eksperymentu właśnie skompilowałem kod, aby wygenerować std::array<uint32_t, 256>
w czasie kompilacji. Same treści tabel są dość typową tabelą odnośników CRC - jedyną nową rzeczą jest użycie funkcji constexpr
do obliczania wpisów w przeciwieństwie do umieszczania automatycznie generowanej magicznej tabeli bezpośrednio w kodzie źródłowym.Praktyczne ograniczenia dotyczące liczby obliczeń constexpr
W każdym razie, to ćwiczenie mnie zainteresowało: czy istnieją jakiekolwiek praktyczne ograniczenia dotyczące wielkości obliczeń, które kompilator byłby skłonny zrobić, aby ocenić funkcję lub definicję zmiennej w czasie kompilacji? na przykład coś takiego jak parametr gcc -ftemplate-depth
tworząc praktyczne ograniczenia ilości metaprogramowania szablonu. (Również zastanawiać, czy nie może być praktyczne ograniczenia na długość opakowania parametr - co ograniczenia rozmiaru kompilacji std::array
utworzony za pomocą std::integer_sequence
pośredni obiektu).
Jeśli dobrze pamiętam, tak, istnieje limit, ale ma on być o rząd wielkości większy niż rekursywny limit instancji. – MikeMB