C++ 표준은 "평범한 오래된 기능"의 개념을 정의한다 :
POF ("일반 이전 기능")는 [C/C++] 공통 하위 집합의 기능 만 사용하고 POF가 아닌 다른 기능을 직접 또는 간접적으로 사용하지 않는 기능입니다 일반 잠금없는 원자 작업을 사용할 수 있습니다. 또한
:
는 C++ 프로그램 신호 처리기로서 이용 POF 이외 함수의 동작하는 구현 정의된다.
분명히 C++ 클래스 객체는 C/C++ 공통 하위 집합의 일부가 아니므로 신호 처리기에서이를 사용하면 구현 정의 동작을 얻을 수 있습니다.
이제 많은 구현에서 제한된 C++ 기능 사용을 허용합니다. 구현시 메모리 할당이나 예외를 허용하지 않으면 스마트 포인터 유형에 대해 알고있는 것입니다.
모든 weak_ptr
constructors은 명시 적으로 noexcept
으로 선언됩니다. 그래서 그들은 예외를 던질 수 없습니다. 이것은 또한 메모리를 할당하지 못하면 예외가 발생하기 때문에 메모리를 할당 할 수 없다는 것을 의미합니다. 예, 그들은 메모리를 할당 할 수 있고 실패 할 경우 std::terminate
을 구현할 수 있습니다.
copy&move constructors of shared_ptr
도 마찬가지로 noexcept
이므로 동일하게 적용됩니다. shared_ptr
의 별칭 생성자에도 해당됩니다.
당신이 적어도 하나의 shared_ptr
가 여전히 존재 것이다하는 shared_ptr
명시 적으로 언급되어 다음 파괴하는 부작용이없는 확신 을 경우. 아마도 메모리 할당 해제가 포함됩니다.
표준 라이브러리에서 제공하는 보증 사항입니다.