.. SPDX-FileCopyrightText: 2019-2020 Intel Corporation .. .. SPDX-License-Identifier: CC-BY-4.0 ================ Deduction guides ================ Where possible, constructors of ``tbb::concurrent_priority_queue`` support class template argument deduction (since C++17): .. code:: cpp template concurrent_priority_queue( InputIterator, InputIterator) -> concurrent_priority_queue>>; template concurrent_priority_queue( InputIterator, InputIterator, const Compare& ) -> concurrent_priority_queue, Compare>; template concurrent_priority_queue( InputIterator, InputIterator, const Allocator& alloc ) -> concurrent_priority_queue, std::less, Allocator>; template concurrent_priority_queue( InputIterator, InputIterator, const Compare&, const Allocator& ) -> concurrent_priority_queue, Compare, Allocator>; template concurrent_priority_queue( std::initializer_list ) -> concurrent_priority_queue; template concurrent_priority_queue( std::initializer_list, const Compare& ) -> concurrent_priority_queue; template concurrent_priority_queue( std::initializer_list, const Allocator& ) -> concurrent_priority_queue, Allocator>; template concurrent_priority_queue( std::initializer_list, const Compare&, const Allocator& ) -> concurrent_priority_queue; 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 #include int main() { std::vector vec; // Deduces cpq1 as tbb::concurrent_priority_queue tbb::concurrent_priority_queue cpq1(vec.begin(), vec.end()); // Deduces cpq2 as tbb::concurrent_priority_queue tbb::concurrent_priority_queue cpq2(vec.begin(), vec.end(), std::greater{}); }