Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From cppreference.net
basic_stacktrace & operator = ( const basic_stacktrace & other ) ;
(1) (C++23 이후)
basic_stacktrace & operator = ( basic_stacktrace && other )
noexcept ( /* 아래 참조 */ ) ;
(2) (C++23 이후)

basic_stacktrace 의 내용을 교체합니다.

1) 복사 할당 연산자. 내용을 other 의 내용 복사본으로 대체합니다.
만약 std:: allocator_traits < allocator_type > :: propagate_on_container_copy_assignment :: value true 인 경우, * this 의 할당자는 other 의 할당자 사본으로 대체됩니다. 만약 할당 후 * this 의 할당자가 이전 값과 비교하여 같지 않을 경우, 기존 할당자를 사용하여 메모리를 해제한 후 새로운 할당자를 사용하여 메모리를 할당하고 항목들을 복사합니다. 그렇지 않으면, * this 가 소유한 메모리는 가능한 경우 재사용될 수 있습니다.
2) 이동 할당 연산자. 이동 의미론을 사용하여 내용을 other 의 내용으로 대체합니다(즉, other 의 데이터가 other 에서 * this 로 이동됩니다). other 는 이후 유효하지만 지정되지 않은 상태가 됩니다.
만약 std:: allocator_traits < allocator_type > :: propagate_on_container_move_assignment :: value true 이면, * this 의 할당자는 other 의 할당자 사본으로 대체됩니다. 만약 false 이고 * this other 의 할당자가 동일하지 않다면, * this other 가 소유한 메모리의 소유권을 취할 수 없으며, 필요에 따라 자체 할당자를 사용하여 추가 메모리를 할당하면서 각 항목을 개별적으로 할당해야 합니다.

어떤 경우든, 스택 트레이스 항목들은 원래 * this 에 속한 것들이 요소 단위 할당에 의해 파괴되거나 교체될 수 있습니다.

* this 는 구현이 예외 사양을 강화하는 경우 할당 실패 시 빈 상태로 설정될 수 있습니다.

목차

매개변수

other - 소스로 사용할 다른 basic_stacktrace

반환값

* this

복잡도

1) * this other 의 크기에 선형적으로 비례합니다.
2) * this 의 크기에 대해 선형적이며, 할당자(allocator)가 동등하지 않고 전파(propagate)되지 않는 경우에는 * this other 의 크기에 대해 선형적입니다.

예외

1) 구현 정의 예외를 발생시킬 수 있습니다.
2)
noexcept 명세:
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_move_assignment :: value
|| std:: allocator_traits < Allocator > :: is_always_equal :: value )

참고 사항

컨테이너 이동 할당(오버로드 ( 2 ) ) 이후, 호환되지 않는 할당자에 의한 요소별 이동 할당이 강제되지 않는 한, other 에 대한 참조, 포인터 및 반복자(끝 반복자 제외)는 유효하게 유지되지만, 이제는 * this 에 있는 요소를 참조합니다. 현재 표준은 [container.reqmts]/67 의 포괄적 명시를 통해 이 보장을 제공하며, LWG issue 2321 를 통해 더 직접적인 보장이 검토 중에 있습니다.

예제

참고 항목

새로운 basic_stacktrace 를 생성합니다
(public 멤버 함수)