std:: owner_less
|
헤더 파일에 정의됨
<memory>
|
||
| (1) | ||
|
template
<
class
T
>
struct owner_less ; /* 정의되지 않음 */ |
(C++11부터)
(C++17까지) |
|
|
template
<
class
T
=
void
>
struct owner_less ; /* 정의되지 않음 */ |
(C++17부터) | |
|
template
<
class
T
>
struct owner_less < std:: shared_ptr < T >> ; |
(2) | (C++11부터) |
|
template
<
class
T
>
struct owner_less < std:: weak_ptr < T >> ; |
(3) | (C++11부터) |
|
template
<>
struct owner_less < void > ; |
(4) | (C++17부터) |
이 함수 객체는
std::weak_ptr
와
std::shared_ptr
모두에 대해 값 기반이 아닌 소유자 기반의 혼합 타입 순서 지정을 제공합니다. 이 순서는 두 스마트 포인터가 모두 비어있거나 소유권을 공유하는 경우에만 동등하게 비교되며,
get()
로 얻은 원시 포인터 값이 다르더라도 (예: 동일한 객체 내의 다른 하위 객체를 가리키는 경우) 마찬가지입니다.
기본 operator < 는 weak pointer에 대해 정의되어 있지 않으며, 동일한 객체를 가리키는 두 shared pointer를 비동등하다고 잘못 판단할 수 있습니다 (참조: std::shared_ptr::owner_before ).
특수화
표준 라이브러리는
|
(C++17부터) |
중첩 타입
|
(C++20 이전) |
멤버 함수
|
operator()
|
인자를 소유자 기반 의미론을 사용하여 비교합니다
(함수) |
std::owner_less:: operator()
|
전문화 멤버만 해당
(2)
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(C++11 이후) | |
|
전문화 멤버만 해당
(3)
|
||
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(C++11 이후) | |
|
두 템플릿 전문화 모두의 멤버
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(C++11 이후) | |
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(C++11 이후) | |
lhs 와 rhs 를 소유자 기반 의미론을 사용하여 비교합니다. 효과적으로 lhs. owner_before ( rhs ) 를 호출합니다.
순서는 엄격한 약순서 관계입니다.
lhs 와 rhs 는 둘 다 비어있거나 소유권을 공유하는 경우에만 동등합니다.
매개변수
| lhs, rhs | - | 비교할 공유 소유권 포인터 |
반환값
소유자 기반 순서에 따라 lhs 가 rhs 보다 작은 경우 true , 그렇지 않으면 false 를 반환합니다.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2873 | C++11 | operator ( ) noexcept로 지정되지 않음 | noexcept로 지정해야 함 |
참고 항목
|
shared pointer의 소유자 기반 순서 제공
(
std::shared_ptr<T>
의 public 멤버 함수)
|
|
|
weak pointer의 소유자 기반 순서 제공
(
std::weak_ptr<T>
의 public 멤버 함수)
|