Вдогонку: ну и предполагаем, что ваш компилятор реально осилит построить семигигабайтную константу. Я тут поигрался под древней 32-битной WindowsXP (так получилось, не смейтесь больно!), ломается где-то примерно на n=20_000. Но техника в принципе работает, именно что выходная строка строится во время компиляции и кладётся в бинарник, и исходник отличается от максимально наивного ровно на одно ключевое слово. Как и было обещано. Проверял на dlang, но подозреваю, что как минимум на rust, nim и zig так тоже можно, только ключевое слово будет другое. Подозреваю, что даже на современных плюсах последних стандартов уже можно, но тут я полный ноль.
(подумав) Вообще-то можно было на PL/I достаточно полной реализации, но не настолько чисто. Потому что препроцессором PL/I был PL/I (подмножество, но ифы, циклы и операции со строками точно входили... более того, если я правильно помню, то именно в препроцессорном режиме строки были "условно бесконечными" (в настоящем скомпилированном PL/I только с максимальной длиной)).
no subject
(подумав) Вообще-то можно было на PL/I достаточно полной реализации, но не настолько чисто. Потому что препроцессором PL/I был PL/I (подмножество, но ифы, циклы и операции со строками точно входили... более того, если я правильно помню, то именно в препроцессорном режиме строки были "условно бесконечными" (в настоящем скомпилированном PL/I только с максимальной длиной)).
... No, raba ji brili ga aurmo ...