[정리] 지연된 인스턴스화


[정리] 지연된 인스턴스화

템플릿은 함수 또는 클래스를 만드는 틀일 뿐이다. 즉 사용자가 템플릿을 사용할 경우에만 비로소 실제 함수로 생성된다. 위의 코드는 에러를 발생한다. 하지만 이를 template으로 바꿔보면, 위의 코드는 에러가 나지 않는다. 이는 foo라는 함수를 인스턴스화 하지 않았기 때문에 foo라는 함수를 생성하지 않은 것이다. 그럼 좀 더 고민하여 아래와 같은 코드를 보자 비록 foo(0)는 실행시간에 절대 호출되지 않지만 foo(int a)는 생성된다. 따라서 컴파일 에러 발생하게 된다. C++17에서 if constexpr 이란 문법이 새롭게 추가되었다. 이는 컴파일 시간에 조건을 검사하므로 조건이 거짓으로 결정될 경우 아래와 같은 코드는 에러가 발생하지 않는다....

[정리] 지연된 인스턴스화에 대한 요약내용입니다.

자세한 내용은 아래에 원문링크를 확인해주시기 바랍니다.


#class #delay #instance #template #인스턴스 #지연된 #클래스 #템플릿

원문링크 : [정리] 지연된 인스턴스화