내 프로젝트를 위해 일부 라이브러리를 읽고 있습니다. 대부분은 이동 생성자에서 "noexcept"를 지정합니다. 이동 생성자에 "noexcept"라고 써야하나요, 아니면 가끔 독서 코드에서 방금 발생 했습니까?mov 생성자에는 noexcept 지정자가 항상 필요합니까?
감사합니다.
내 프로젝트를 위해 일부 라이브러리를 읽고 있습니다. 대부분은 이동 생성자에서 "noexcept"를 지정합니다. 이동 생성자에 "noexcept"라고 써야하나요, 아니면 가끔 독서 코드에서 방금 발생 했습니까?mov 생성자에는 noexcept 지정자가 항상 필요합니까?
감사합니다.
나는 이것이 당신이 이동 생성자에 noexcept를 볼 이유에 대해 설명 생각한다. 예외가 발생한 후, 객체가 원래 값을 유지하는 경우
가"A 클래스는 강력한 예외 보증을 제공을 명시 적으로 클래스의 움직임 회원 인수의 상태를 변경한다 일부의 멤버가 이동 한 후에 예외가 슬로우되면 (자), from 예외 오브젝트가 변경되었을 때에 Strong Exception Guarantee가 보관 유지되지 않게 될 가능성이 있습니다. 의도되고있는 형태에는 noexcept를 사용하는 것이 특히 중요합니다 표준 라이브러리 컨테이너와 함께 사용 컨테이너의 요소 유형에 대한 이동 생성자가 noexcept가 아닌 경우 컨테이너는 이동 생성자가 아닌 복사 생성자를 사용합니다. "
질문에 대답하기 위해 생성자가 예외를 throw 할 수있는 모든 경우에 noexcept를 사용해야합니다. 하나를 사용하지 않고 예외가 발생하면 강력한 예외 보장이 실패하여 코드의 오류 복구에 문제가 발생할 수 있습니다.