std::basic_stacktrace<Allocator>:: operator=
From ko.cppreference.net
<
cpp
|
utility
|
basic stacktrace
|
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 는 구현이 예외 사양을 강화하는 경우 할당 실패 시 빈 상태로 설정될 수 있습니다.
목차매개변수
반환값* 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)) 이후, 호환되지 않는 할당자로 인해 요소별 이동 할당이 강제되지 않는 한, 예제
참고 항목
|