.. SPDX-FileCopyrightText: 2019-2020 Intel Corporation .. .. SPDX-License-Identifier: CC-BY-4.0 ================ Deduction guides ================ Where possible, constructors of ``concurrent_multiset`` support class template argument deduction (since C++17): .. code:: cpp template >, typename Allocator = tbb_allocator>> concurrent_multiset( InputIterator, InputIterator, Compare = Compare(), Allocator = Allocator() ) -> concurrent_multiset, Compare, Allocator>; template concurrent_multiset( InputIterator, InputIterator, Allocator ) -> concurrent_multiset, std::less>, Allocator>; template , typename Allocator = tbb_allocator> concurrent_multiset( std::initializer_list, Compare = Compare(), Allocator = Allocator() ) -> concurrent_multiset; template concurrent_multiset( std::initializer_list, Allocator ) -> concurrent_multiset, Allocator>; Where the type alias ``iterator_value_t`` is defined as follows: .. code:: cpp template using iterator_value_t = typename std::iterator_traits::value_type; **Example** .. code:: cpp #include #include int main() { std::vector v; // Deduces cs1 as concurrent_multiset tbb::concurrent_multiset cs1(v.begin(), v.end()); // Deduces cs2 as concurrent_multiset tbb::concurrent_multiset cs2({1, 2, 3}); }