Modify

Ticket #2755 (closed Bugs: fixed)

Opened 5 years ago

Last modified 5 years ago

compile error in boost_intrusive 1.38.0: a set of classes with protected destructor

Reported by: fmot.fics@… Owned by: igaztanaga
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@…

Attachments

Change History

comment:1 Changed 5 years ago by igaztanaga

Fixed in SVN, revision 51290.

comment:2 Changed 5 years ago by igaztanaga

  • Status changed from new to closed
  • Resolution set to fixed
View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.