deduction guides for
std::unordered_multiset
|
헤더 파일에 정의됨
<unordered_set>
|
||
|
template
<
class
InputIt,
|
(1) | (C++17부터) |
|
template
<
class
T,
class
Hash
=
std::
hash
<
T
>
,
|
(2) | (C++17부터) |
|
template
<
class
InputIt,
class
Alloc
>
unordered_multiset
(
InputIt, InputIt,
typename
/* 아래 참조 */
::
size_type
, Alloc
)
|
(3) | (C++17부터) |
|
template
<
class
InputIt,
class
Hash,
class
Alloc
>
unordered_multiset
(
InputIt, InputIt,
typename
/* 아래 참조 */
::
size_type
, Hash, Alloc
)
|
(4) | (C++17 이후) |
|
template
<
class
T,
class
Alloc
>
unordered_multiset
(
std::
initializer_list
<
T
>
,
typename
/* 아래 참조 */
::
size_type
, Alloc
)
|
(5) | (C++17부터) |
|
template
<
class
T,
class
Hash,
class
Alloc
>
unordered_multiset
(
std::
initializer_list
<
T
>
,
typename
/* 아래 참조 */
::
size_type
,
|
(6) | (C++17부터) |
|
template
<
ranges::
input_range
R,
class
Hash
=
std::
hash
<
ranges::
range_value_t
<
R
>>
,
|
(7) | (C++23부터) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
,
|
(8) | (C++23 이후) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
, Alloc
)
|
(9) | (C++23 이후) |
|
template
<
ranges::
input_range
R,
class
Hash,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
,
|
(10) | (C++23 이후) |
unordered_multiset
에 대해 제공되어 이터레이터 범위(오버로드
(1,3,4)
)와
std::initializer_list
(오버로드
(2,5,6)
)로부터의 추론을 허용합니다. 이 오버로드는
InputIt
가
LegacyInputIterator
를 만족하고,
Alloc
가
Allocator
를 만족하며,
Hash
와
Pred
모두
Allocator
를 만족하지 않고,
Hash
가 정수 타입이 아닌 경우에만 오버로드 해결에 참여합니다.
참고: 라이브러리가 특정 타입이
LegacyInputIterator
요구사항을 만족하지 않는다고 판단하는 범위는 명시되지 않았으나, 최소한 정수 타입들은 입력 반복자로 적격이 아닙니다. 마찬가지로, 특정 타입이
Allocator
요구사항을 만족하지 않는다고 판단하는 범위도 명시되지 않았으나, 최소한 멤버 타입
Alloc::value_type
이 존재해야 하며 표현식
std::
declval
<
Alloc
&
>
(
)
.
allocate
(
std::
size_t
{
}
)
가 평가되지 않은 피연산자로 취급될 때 형식이 올바르게 구성되어야 합니다.
이 가이드에서의 size_type 매개변수 타입은 추론 가이드에 의해 추론된 타입의 size_type 멤버 타입을 가리킵니다.
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-aware 생성 및 삽입; 오버로드 (7-10) |
예제
#include <unordered_set> int main() { // 가이드 #2는 std::unordered_multiset<int>로 추론됨 std::unordered_multiset s = {1, 2, 3, 4}; // 가이드 #1은 std::unordered_multiset<int>로 추론됨 std::unordered_multiset s2(s.begin(), s.end()); }