http://ikpil.com/1021

인라인이 무엇인지 알기(exceptional C++ 에 무척 자세히 나온다: 항목 25 : inline 해부 http://www.ikpil.com/821)기 때문에 생략 한다. 

템플릿의 특성상 번역단위마다 코드 인스턴스화가 일어 나지만, 동일한 인스턴스일 때는 단 1개의 정의로 컴파일러는 관리 한다. 그러므로 대부분의 컴파일러에서 "재정의 오류"가 일어나지 않는다. 일어 나는 컴파일러도 있다고 책에 적혀 있지만, 그건 프로그래머 잘못이 아니다. .. 그러므로 프로그래머는 당장 컴파일러를 바꾸어야 한다.(이건 책에 내용이 없다 : ) )

하여튼, 번역단위마다 코드 인스턴스화가 일어 난다고 해서 자동으로 인라인이 된다고 착각 할 수 있다. 이 착각은 인라인과 동일하게 번역 단위마다 코드 붙이기가 일어 난다고 생각 하기 때문이다.

다시 말하지만 이건 착각이다. 그러므로 함수 템플릿이라 하더라도 빠른 호출을 하기 위해선 inline 키워드를 써 주어야 한다.


반응형

+ Recent posts