Opened 6 years ago

Last modified 6 years ago

#12873 reopened Bugs

boost.heap calls non-existing constructor of iterator_adaptor

Reported by: Bart van Merrienboer <bart.vanmerrienboer@…> Owned by: timblechmann
Milestone: To Be Determined Component: heap
Version: Boost 1.63.0 Severity: Problem
Keywords: Cc:

Description

boost.heap tries to call the constructor boost::iterator_adaptor(0), which doesn't exist, in several places. For example in boost/heap/detail/mutable_heap.hpp (lines 225-243):

        typedef boost::iterator_adaptor<ordered_iterator,
                                        const_list_iterator,
                                        value_type const,
                                        boost::forward_traversal_tag
                                      > adaptor_type;

        typedef const_list_iterator iterator;
        typedef typename q_type::ordered_iterator_dispatcher ordered_iterator_dispatcher;

        friend class boost::iterator_core_access;

    public:
        ordered_iterator(void):
            adaptor_type(0), unvisited_nodes(indirect_cmp()), q_(NULL)
        {}

        ordered_iterator(const priority_queue_mutable_wrapper * q, indirect_cmp const & cmp):
            adaptor_type(0), unvisited_nodes(cmp), q_(q)
        {}

This will result in "no matching constructor" compilation errors when trying to construct e.g. an ordered_iterator for a d_ary_heap (see attached program).

The same non-existing call is made on detail/mutable_heap.hpp:193, detail/stable_heap.hpp:534, and detail/tree_iterator.hpp:214,218,231,340

Attachments (1)

test.cpp (393 bytes ) - added by Bart van Merrienboer <bart.vanmerrienboer@…> 6 years ago.
trigger no matching constructor compilation error in boost.heap

Download all attachments as: .zip

Change History (3)

by Bart van Merrienboer <bart.vanmerrienboer@…>, 6 years ago

Attachment: test.cpp added

trigger no matching constructor compilation error in boost.heap

comment:1 by timblechmann, 6 years ago

Resolution: fixed
Status: newclosed

comment:2 by anonymous, 6 years ago

Resolution: fixed
Status: closedreopened

had to revert the fix, as it broke all other heaps

Note: See TracTickets for help on using tickets.