2017-02-12 10 views

답변

0

나는 이것이 당신이 이동 생성자에 noexcept를 볼 이유에 대해 설명 생각한다. 예외가 발생한 후, 객체가 원래 값을 유지하는 경우

"A 클래스는 강력한 예외 보증을 제공을 명시 적으로 클래스의 움직임 회원 인수의 상태를 변경한다 일부의 멤버가 이동 한 후에 예외가 슬로우되면 (자), from 예외 오브젝트가 변경되었을 때에 Strong Exception Guarantee가 보관 유지되지 않게 될 가능성이 있습니다. 의도되고있는 형태에는 noexcept를 사용하는 것이 특히 중요합니다 표준 라이브러리 컨테이너와 함께 사용 컨테이너의 요소 유형에 대한 이동 생성자가 noexcept가 아닌 경우 컨테이너는 이동 생성자가 아닌 복사 생성자를 사용합니다. "

질문에 대답하기 위해 생성자가 예외를 throw 할 수있는 모든 경우에 noexcept를 사용해야합니다. 하나를 사용하지 않고 예외가 발생하면 강력한 예외 보장이 실패하여 코드의 오류 복구에 문제가 발생할 수 있습니다.

출처 : http://www.codingstandard.com/rule/12-5-4-declare-noexcept-the-move-constructor-and-move-assignment-operator/