"Effective Modern C++"의 항목 14에서는 예외를 방출하지 않을 때마다 함수 noexcept
을 선언 할 것을 권장합니다. 매우 작은 사유로 throw 할 수없는 여러 소규모 멤버 함수가있는 클래스가 있습니다. POD에 대한 간단한 수학 연산 만 수행합니다. 그러한 함수를 선언해야합니까? noexcept
? 컴파일러조차도 던질 가능성이 없다는 것을 확실하게 감지 할 수있을 때 과도한 것처럼 보입니다.분명히 던질 수없는 간단한 함수에 noexcept를 사용해야합니까?
편집 : 내 질문을 다소 명확히하기 위해 this 질문에 주어진 조언은 "함수가 결코 throw되지 않는다는 것이 명백 할 때 사용하는 것"입니다. 그러나 함수가 결코 던지지 않을 것이 확실하다면 (컴파일러에게조차도) 왜 noexcept
을 사용해야합니까? 압도적 인 다수의 기능을 내 프로그램 인 noexcept
으로 표시해야 할 것입니다. 이는 설득력있는 이유가있을 경우에만 수행 할 것입니다.
@JesperJuhl 나는 그 질문을 보았지만 아무런 근거도 제시하지 않고 "함수가 결코 던지지 않을 것"이라면 조언을 줄여 도움이되는 것을 찾지 못했습니다. 함수가 던지지 않는 것이 확실하다면 왜 noexcept를 추가해야할까요? –
이므로 컴파일러에서 명확하지 않을 수 있으며 API 사용자에게 추가 문서를 제공하기 때문입니다. –
@JesperJuhl이 질문을 명확하게하기 위해 편집했지만 컴파일러는 분수, 단순 산술, 루프 등으로 구성되어 있기 때문에 문제의 함수를 던질 수 없습니다. 메모리 할당이나 생각할 수있는 사항은 없습니다. 던지다. –