Спецификация выражения сгиба в спецификации C ++ начинается следующим образом:
8.1.6 Выражения сгиба [expr.prim.fold]
Выражение сгиба выполняет сгибпакета параметров шаблона (17.5.3) через бинарный оператор ...
Это продолжается для пары параграфов.Ничто в них не устанавливает минимальный или максимальный размер выражения свертки, которое должен поддерживать компилятор C ++.Это не определено в этом разделе стандарта C ++;так что это полностью зависит от индивидуальной реализации C ++.Не существует определенных средств для определения ограничений конкретного компилятора.Вы обнаружили, что ваш конкретный компилятор ограничивает выражение сгиба до 745 значений.Причина этого ограничения, очевидно, связана с деталями внутренней реализации вашего компилятора;и не будучи знакомыми с ними, на самом деле не так много можно сказать об этом.Ограничения других компиляторов могут быть меньше или больше или ограничиваться только объемом доступной памяти.
PS.Что касается ссылки на спецификацию для пакета параметров шаблона, то эта часть стандарта C ++ не определяет минимальный / максимальный размер пакета параметров, который должен поддерживать компилятор C ++.
РЕДАКТИРОВАТЬ: было отмечено, чтоПриложение B перечисляет некоторые рекомендации, но не определяет их как абсолютные требования;и явно не вызывает максимальные пределы выражения сгиба.
Однако в Приложении B действительно вызываются:
Аргументы шаблона в объявлении шаблона [1 024].
Можно утверждать, что, если это использование «аргументов» включает аргументы в пакете параметров, это косвенно повлияет на выражения сгиба.