Hi,
Let me start off by saying that I consider multi_index to be the most
stunningly clever AND useful piece of c++ around. Thanks!
A PowerDNS user on RHEL 3 with a gcc that calls itself 'gcc 3.2.3' reports
the following error compiling PowerDNS snapshot 576
(http://svn.powerdns.com/snapshots/576/pdns-2.9.20.20060311.576.tar.gz):
Message:
http://mailman.powerdns.com/pipermail/pdns-users/2006-March/003134.html
mtasker.cc: In member function `bool MTasker::schedule()
[with EventKey = PacketID, EventVal = std::string]':
pdns_recursor.cc:723: instantiated from here
mtasker.cc:286: no matching function for call to `boost::multi_index::multi_index_container::Waiter,
boost::multi_index::indexed_by::Waiter, PacketID, &MTasker::Waiter::key>, mpl_::na, mpl_::na>,
boost::multi_index::ordered_non_unique::KeyTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>,
boost::multi_index::member::Waiter, time_t,
&MTasker::Waiter::ttd>, mpl_::na>, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na,
mpl_::na, mpl_::na, mpl_::na>, std::allocator::Waiter> >::get()'
make[3]: *** [pdns_recursor.o] Error 1
make[3]: Leaving directory /temp/pdns-2.9.20.20060311.576/pdns'
To reproduce, download the tar file, run ./configure --with-modules="" ; cd
pdns ; make pdns_recursor, besides boost there are no dependencies when
compiled like this.
Relevant details from mtasker.hh
http://wiki.powerdns.com/projects/trac/browser/trunk/pdns/pdns/mtasker.cc?re...
60 struct KeyTag {};
61 typedef multi_index_container<
62 Waiter,
63 indexed_by <
64 ordered_unique >,
65 ordered_non_unique >
66 >
67 > waiters_t;
68
69 waiters_t d_waiters;
From mtasker.cc:
http://wiki.powerdns.com/projects/trac/browser/trunk/pdns/pdns/mtasker.hh?re...
285 typedef typename waiters_t::template index<KeyTag>::type waiters_by_ttd_index_t;
286 waiters_by_ttd_index_t& ttdindex=d_waiters.get<KeyTag>();
Any ideas, especially on a workaround? It compiles fine on all gcc's I have
access to.
Thanks!
--
http://www.PowerDNS.com Open source, database driven DNS Software
http://netherlabs.nl Open and Closed source services