2010-06-07 3 views
3

메타 프로그래밍에서는 많은 수의 클래스가 매우 빠르게 증가합니다. 현대 컴파일러가 허용하는 최대 클래스 수 (예 : g ++)가 걱정됩니까? 컴파일러의 구문 분석 나무는 단지 내가 그 컴파일러 한계 전반적인 복잡성의 문제가 아니라 기업 중 어느 하나의 종류의 수 있다고 가정하는 것이 안전하다고 생각하는 — 나무 — 것을 C++ 컴파일러 최대 클래스 수

당신에게 주어

+15

부스트가 아직 히트하지 않았다면 ... – Thanatos

+0

하드 코딩 된 제한이없는 것 같습니다 개발 상자에있는 RAM의 양 이외의. –

답변

2

나는이 질문에 가장 C++위원회에서 발표 한 표준에 대한 답변 추측에는 요를 제공 할 수 있습니다. 그러나 this place을 보면, 많은 항목에 최소 수량 제한이 있지만 클래스의 수에 대한 상한선은 볼 수 없습니다 (적어도 각 유형의 항목 수는 컴파일러에서 지원해야한다고 말하면서 바인딩 제한). 컴파일러가 이러한 최소 제한을 지원할 수 있으면 OK 여야합니다.

그러나 클래스의 수에 대한 상한선에 대한 어떤 요소가 내 학문적 호기심을 불러 일으 킵니다. 나는 컴파일러 전문가가 대답 할 수 있는지 알고 기뻐할 것입니다.

+3

구현 수량은 실제 최저 수준이 아닙니다. 최소 권장량 일뿐입니다. 구현이 무언가에 대한 최소 요구 사항을 충족시키지 못하면 지원할 수있는 수량을 문서화해야합니다. –

+0

당신은 나를 잡았어, 나는 그것을 놓치지 않고 두 번째 읽어야했다. 어쨌든,이 지점을 반영하도록 답을 수정하십시오. – vpit3833

0

감사드립니다. 물론

, 그들의 앞에 소스를 가진 사람은 더 명확한 답 :

1

64 비트 컴퓨터에서 실행하는 경우 현대 컴파일러의 제한 사항이 모두 소진되지는 않습니다. 유형 정보는 하드 코딩 된 제한된 크기의 컨테이너에 배치되는 것이 아니라 동적으로 할당 될 가능성이 있습니다.

32 비트 컴퓨터의 경우와 같이 2GB 메모리 공간에서 컴파일하기가 어려울 수도있는 시스템이 있다고 생각할 수 있습니다. 그러나, 비록 많은 꽤 많은 C++ 코드 기반에서 템플릿 메타 프로그래밍을 많이 사용해 왔지만 실제로는 실제로 문제가되지 않았습니다. 컴파일 속도가 느리고 디버깅 성가심이 메모리 크기보다 먼저 죽을 수도 있습니다 :-)