Re: boost::shared_ptr<T> and Gtk::TreeModelColumn<T>



On Wed, 2006-09-20 at 08:42 +0200, Murray Cumming wrote:
> > On Mon, 2006-09-18 at 23:08 +0200, Murray Cumming wrote:
> >> On Mon, 2006-09-18 at 16:26 -0400, Paul Davis wrote:
> >> > any opinions on the best way to have:
> >> >
> >> > 	Gtk::TreeModelColumn<boost::shared_ptr<T> >
> >> >
> >> > at the moment, g++ appears to pick the void* partial specialization of
> >> > TreeModelColumn,
> >>
> >> Are you sure that there is void* partial specialization? What exactly
> >> does it look like?
> >
> > well, gdb let me know that this was going on, and the stack trace showed
> > we were in Value<void*> ... not really a partial specialization.
> 
> Ah, I think the experts call that a "template instantiation". Still it's
> odd, though I imagine that it might be a compiler optimisation.

as could be expected, the problem was all my fault. there was a place
where i call TreeRow::get_value (column_index, a_void_ptr), which ends
up in Value<void*>::get () and thus in g_value_get_pointer(). the
problem wasn't with the way things were stored in the ListStore at all -
rather it was that i switched from storing naked pointers and instead
switched to boost::shared_ptr<T>. this means that passing a_void_ptr to
TreeRow::get_value() was fundamentally the wrong thing to do.

sorry as usual for any diversion and thanks for pushing me to create a
little test case.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]