(C++ : Template) 명시적/암시적 instatitation

Posted by : at

Category : Cpp


template<typename T> 
class Test
{
public:
  void foo() {}
  void goo() {}
};

template<typename T>
T square(T a)
{
  return a * a;
}

// 명시적 인스턴스화
template int square<int>(int);    // 기계어 코드를 미리 만들어 달라
// template int square<>(int);    // 동일표현

template void Test<int>::foo();   // 부분적으로 인스턴스화도 가능하다

int main()
{
  // 암시적 인스턴스화
  square(3);
  square<int>(3);
  
  Test<int> t1;
  t1.foo();     // goo는 인스턴스화 되지 않음.(주의) - lazy instantiation
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links