Scott Meyer의 const_cast() 패턴
- const overloading와 비 const overloading버전으로 리턴 하는 방식.
- C++은 반환 타입만 다를 경우 Overloading를 할 수 없기 때문에 const 함수로 만들어 줘서 Overloading을 성립 시킨다.
- 이를 이용해서 const 반환 값과 비 const 반환 값을 Overloading 하는 패턴.
export class Spreadsheet
{
public:
SpreadsheetCell& getcellAt(size_t x, size_t y);
const SpreadsheetCell& getCellAt(size x, size y) const;
}
selective instantiation
- 딱 사용하는 메서드만 코드를 생성한다.
- 그렇기 때문에 템플릿 메서드에 문법적 오류가 있어도 사용 전에 모를 수가 있다.
explicit template instantiation
- selective instantiation 때문에 컴파일 되지 않는 부분들이 존재할 수 있는데, 명시적으로 모든 함수를 컴파일 시키는 방법
template class Grid<int>;
템플릿 코드를 여러 파일로 나누기
- 모듈 파티션을 이용해서 다른 파일에 정의를 한다.