C ++ 템플릿과 이와 같은 C # / Java 제네릭 간의 다른 비교에서
C ++ 템플릿은 컴파일하지 않고 일종의 전처리 (구문 분석하기 전에 일반 텍스트 교체)에 의해 구현된다는 인식을 얻었습니다. C ++ 템플릿의 유형 검사는 C 매크로와 유사하기 때문입니다. 내 말은, 오류가있는 경우 템플릿 자체가 아닌 템플릿 코드 블록을 처리 한 후 생성 된 코드의 오류입니다. 즉, C에서 매크로의 상위 버전 일뿐입니다.
그런 다음 이것을 뒷받침하는 다른 사실을 발견했습니다.
전처리로 C ++ 템플릿을 구현하면 동적 연결 (.dll 사용)에 문제가 있다고 생각했습니다. 그리고 빠른 인터넷 검색이이를 지원했습니다.
또 다른 요점은 정수 상수가 템플릿에 인수로 전달 될 수 있다는 것입니다. 그리고 그것은 어떤 종류의 재귀를 지원합니다. 그러나이 재귀는 컴파일 된 어셈블리 / 머신 코드에서 찾을 수 없습니다. 재귀는 모든 재귀 호출에 대한 함수를 생성하여 더 크지 만 빠른 실행 바이너리를 가지고 컴파일 타임에 관리됩니다.
C 매크로와는 달리 뛰어난 기능을 가지고 있습니다. 그러나 C ++ 템플릿은 어떤 종류의 전처리로 구현되지 않습니까? 이것은 다른 C ++ 컴파일러에서 어떻게 구현됩니까?