Opened 14 years ago
Closed 14 years ago
#2755 closed Bugs (fixed)
compile error in boost_intrusive 1.38.0: a set of classes with protected destructor
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | Boost 1.39.0 | Component: | intrusive |
Version: | Boost 1.38.0 | Severity: | Problem |
Keywords: | intrusive is_convertible destructor | Cc: |
Description
the following short code generates a compiler error:
#include <stdio.h>
#include <boost/intrusive/set.hpp> #include <boost/noncopyable.hpp>
using namespace boost::intrusive;
struct node_t :
set_base_hook<optimize_size<true> >
{
bool operator < (const node_t& right) const;
protected:
~node_t();
};
int main(int argc, char* argv[]) {
set<node_t> nodes; nodes.insert(* new node_t); return 0;
}
end of code
reason of compiler error:
in /boost/intrusive/detail/mpl.hpp, line 69:
static const bool value = sizeof(dispatch(trigger())) == sizeof(true_t);
trigger() function (line 67) returns an instance, thus forcing a compiler to look for destructor. it the sample above the destructor is protected, so it can't be accessed.
suggested solution: in /boost/intrusive/detail/mpl.hpp, line 67: static const T& trigger();
boost 1.37.0 had no such problem
best regards, vlad fmot.fics@…
Change History (2)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fixed in SVN, revision 51290.