Re: [Boost-bugs] [Boost C++ Libraries] #13318: key_of_value now changes the type in the priority comparison for intrusive::treap_set

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #13318: key_of_value now changes the type in the priority comparison for intrusive::treap_set
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-12-04 23:55:03


#13318: key_of_value now changes the type in the priority comparison for
intrusive::treap_set
--------------------------------------------+---------------------------
  Reporter: Jan Martin Mikkelsen <janm@…> | Owner: Ion Gaztañaga
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: intrusive
   Version: Boost 1.65.0 | Severity: Regression
Resolution: | Keywords:
--------------------------------------------+---------------------------

Comment (by Jan Martin Mikkelsen <janm@…>):

 For reference, this is the error message produced. The compiler is Clang
 from Xcode 9.

 {{{
 $ c++ -std=c++14 -I/usr/local/include/boost-1_65_1 test.cpp
 In file included from test.cpp:1:
 In file included from /usr/local/include/boost-
 1_65_1/boost/intrusive/treap_set.hpp:17:
 In file included from /usr/local/include/boost-
 1_65_1/boost/intrusive/treap.hpp:28:
 /usr/local/include/boost-
 1_65_1/boost/intrusive/priority_compare.hpp:46:14: error:
       no matching function for call to 'priority_order'
       return priority_order(val, val2);
              ^~~~~~~~~~~~~~
 /usr/local/include/boost-
 1_65_1/boost/intrusive/detail/tree_value_compare.hpp:90:14: note:
       in instantiation of member function
       'boost::intrusive::priority_compare<int>::operator()' requested here
    { return this->key_comp()(key1, KeyOfValue()(value2)); }
              ^
 /usr/local/include/boost-
 1_65_1/boost/intrusive/detail/key_nodeptr_comp.hpp:110:14: note:
       in instantiation of member function
       'boost::intrusive::tree_value_compare<Test *,
       boost::intrusive::priority_compare<int>, TestKey,
 false>::operator()'
       requested here
    { return base()(t1, *traits_->to_value_ptr(t2)); }
              ^
 /usr/local/include/boost-
 1_65_1/boost/intrusive/treap_algorithms.hpp:651:33: note:
       in instantiation of function template specialization
 'boost::intrusive::detail::key_nodeptr_comp<boost::intrusive::priority_compare<int>,
       boost::intrusive::bhtraits<Test,
 boost::intrusive::tree_node_traits<void
       *>, boost::intrusive::link_mode_type::safe_link,
       boost::intrusive::dft_tag, 6>, TestKey>::operator()<int, const
       boost::intrusive::tree_node<void *> *>' requested here
       while(upnode != header && pcomp(k, upnode)){
                                 ^
 /usr/local/include/boost-
 1_65_1/boost/intrusive/treap_algorithms.hpp:493:10: note:
       in instantiation of function template specialization
 'boost::intrusive::treap_algorithms<boost::intrusive::tree_node_traits<void
       *> >::rebalance_after_insertion_check<int,
 boost::intrusive::detail::key_nodeptr_comp<boost::intrusive::priority_compare<int>,
       boost::intrusive::bhtraits<Test,
 boost::intrusive::tree_node_traits<void
       *>, boost::intrusive::link_mode_type::safe_link,
       boost::intrusive::dft_tag, 6>, TestKey> >' requested here
          rebalance_after_insertion_check(header, commit_data.node, key,
 ...
          ^
 /usr/local/include/boost-1_65_1/boost/intrusive/treap.hpp:662:28: note: in
       instantiation of function template specialization
 'boost::intrusive::treap_algorithms<boost::intrusive::tree_node_traits<void
       *> >::insert_unique_check<int,
       boost::intrusive::detail::key_nodeptr_comp<std::__1::less<int>,
       boost::intrusive::bhtraits<Test,
 boost::intrusive::tree_node_traits<void
       *>, boost::intrusive::link_mode_type::safe_link,
       boost::intrusive::dft_tag, 6>, TestKey>,
 boost::intrusive::detail::key_nodeptr_comp<boost::intrusive::priority_compare<int>,
       boost::intrusive::bhtraits<Test,
 boost::intrusive::tree_node_traits<void
       *>, boost::intrusive::link_mode_type::safe_link,
       boost::intrusive::dft_tag, 6>, TestKey> >' requested here
          (node_algorithms::insert_unique_check
                            ^
 /usr/local/include/boost-1_65_1/boost/intrusive/treap.hpp:585:20: note: in
       instantiation of function template specialization
       'boost::intrusive::treap_impl<boost::intrusive::bhtraits<Test,
       boost::intrusive::tree_node_traits<void *>,
       boost::intrusive::link_mode_type::safe_link,
 boost::intrusive::dft_tag,
       6>, TestKey, void, void, unsigned long, true,
       void>::insert_unique_check<int, std::__1::less<int>,
       boost::intrusive::priority_compare<int> >' requested here
    { return this->insert_unique_check(key, this->key_comp(),
 this->priv...
                    ^
 /usr/local/include/boost-1_65_1/boost/intrusive/treap.hpp:499:45: note: in
       instantiation of member function
       'boost::intrusive::treap_impl<boost::intrusive::bhtraits<Test,
       boost::intrusive::tree_node_traits<void *>,
       boost::intrusive::link_mode_type::safe_link,
 boost::intrusive::dft_tag,
       6>, TestKey, void, void, unsigned long, true,
 void>::insert_unique_check'
       requested here
       std::pair<iterator, bool> ret =
 this->insert_unique_check(key_of_v...
                                             ^
 /usr/local/include/boost-1_65_1/boost/intrusive/treap_set.hpp:240:25:
 note: in
       instantiation of member function
       'boost::intrusive::treap_impl<boost::intrusive::bhtraits<Test,
       boost::intrusive::tree_node_traits<void *>,
       boost::intrusive::link_mode_type::safe_link,
 boost::intrusive::dft_tag,
       6>, TestKey, void, void, unsigned long, true, void>::insert_unique'
       requested here
    { return tree_type::insert_unique(value); }
                         ^
 test.cpp:37:7: note: in instantiation of member function
       'boost::intrusive::treap_set_impl<boost::intrusive::bhtraits<Test,
       boost::intrusive::tree_node_traits<void *>,
       boost::intrusive::link_mode_type::safe_link,
 boost::intrusive::dft_tag,
       6>, TestKey, void, void, unsigned long, true, void>::insert'
 requested
       here
     c.insert(t1);
       ^
 /usr/local/include/boost-1_65_1/boost/intrusive/priority_compare.hpp:32:6:
 note:
       candidate function template not viable: requires 0 arguments, but 2
 were
       provided
 void priority_order();
      ^
 1 error generated.

 }}}

-- 
Ticket URL: <https://svn.boost.org/trac10/boost/ticket/13318#comment:1>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-12-05 00:01:50 UTC