후보 집합 축소
비슷한 의미의 overload가 너무 많으면 호출자와 컴파일러 모두 선택이 어려워진다.
오버로드는 인자 타입과 개수로 후보를 고른다. 편리함보다 어떤 호출이 어느 함수로 가는지 예측 가능해야 한다.
비슷한 의미의 overload가 너무 많으면 호출자와 컴파일러 모두 선택이 어려워진다.
한 인자 생성자와 기본 매개변수가 예상치 못한 후보를 만들 수 있다.
타입만 다르고 의미가 크게 다르면 overload보다 다른 함수 이름이 낫다.
void open(const char* path);
void open(std::filesystem::path path);
open(nullptr); // 어떤 계약인지 의도적으로 막거나 분리한다.