C ++ компилятор максимальное количество классов - PullRequest
3 голосов
/ 07 июня 2010

В метапрограммировании количество классов растет довольно быстро. Максимальное количество классов, которое современный компилятор позволяет, например, g ++, беспокоить?

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Полагаю, на этот вопрос лучше всего ответить по стандарту, опубликованному комитетом C ++. Но, глядя на это место , я не вижу никакого верхнего предела количества классов, хотя существует минимальный предел количества для многих предметов (говоря, что по крайней мере данное количество предметов каждого типа должно компилятор, но это не является обязательным пределом). Если ваш компилятор может поддерживать эти минимальные ограничения, вы должны быть в порядке.

Но какие факторы скажут на верхних границах количества классов, разжигают мое академическое любопытство. Я был бы рад узнать, может ли гуру компилятора ответить на этот вопрос.

1 голос
/ 07 июня 2010

Если вы работаете на 64-битном компьютере, у вас вряд ли будут какие-либо ограничения в современных компиляторах. Информация о типах, скорее всего, будет динамически размещаться, а не помещаться в какой-то жестко заданный контейнер ограниченного размера.

Я могу подумать о некоторых системах, которые, возможно, станут трудно компилировать в пространстве памяти объемом 2 ГБ, как это будет иметь место для 32-разрядного компьютера. Однако, несмотря на то, что я работал над некоторыми довольно большими базами кода C ++ с большим количеством шаблонов метапрограммирования, на практике это не было проблемой. Медлительность компиляции и раздражение отладки, вероятно, убьют вас раньше, чем объем памяти: -)

0 голосов
/ 07 июня 2010

Учитывая, что деревья синтаксического анализа компилятора - это просто деревья - я думаю, можно с уверенностью предположить, что ограничения компилятора являются вопросом общей сложности, а не количества какого-либо одного вида сущностей.

Конечно, кто-то с источником перед ним может дать более определенный ответ:)

...