std::in_place, std::in_place_type, std::in_place_index, std::in_place_t, std::in_place_type_t, std::in_place_index_t
來自 cppreference.com
在標頭檔案 <utility> 中定義 |
||
struct in_place_t { explicit in_place_t() = default; }; |
(1) | (C++17 起) |
inline constexpr std::in_place_t in_place {}; |
(2) | (C++17 起) |
template< class T > struct in_place_type_t { explicit in_place_type_t() = default; }; |
(3) | (C++17 起) |
template< class T > constexpr std::in_place_type_t<T> in_place_type {}; |
(4) | (C++17 起) |
template< std::size_t I > struct in_place_index_t { explicit in_place_index_t() = default; }; |
(5) | (C++17 起) |
template< std::size_t I > constexpr std::in_place_index_t<I> in_place_index {}; |
(6) | (C++17 起) |
1,3,5) 型別/型別模板
std::in_place_t
、std::in_place_type_t
和 std::in_place_index_t
可用於建構函式的引數列表,以匹配預期的標籤。2,4,6) 相應的
std::in_place
、std::in_place_type
和 std::in_place_index
例項(來自 (1,3,5))是消除歧義的標籤,可以傳遞給建構函式,以指示包含的物件應該就地構造,並且(對於後兩者)指定要構造的物件的型別。[編輯] 標準庫
以下標準庫型別使用 (1-6) 作為消歧標籤
(C++17) |
儲存任意 可複製構造 型別例項的物件 (類) |
(C++23) |
一個包裝器,包含預期值或錯誤值 (類模板) |
(C++23) |
任何支援給定呼叫簽名中限定符的可呼叫物件的僅移動包裝器 (類模板) |
(C++17) |
可能包含或不包含物件的包裝器 (類模板) |
(C++17) |
一種型別安全的帶判別聯合體 (類模板) |
[編輯] 另請參閱
(C++23) |
表示範圍的元素已排序且唯一 (標籤) |
表示範圍的元素已排序(不要求唯一性) (標籤) |