
On 17.7.2013 16:07, Horváth Imre wrote:
Hi,
I want to use boost::multi_index_container with a class that have protected constructors, but the compile fails. I think I should make multi_index_container a friend of my class, but I don't know how.
I guess you don't want to do that (as quite likely you'd like to pass the instance around, ie. P, not create new n copies of Item), but add: explicit
Item(P item) : source(item->get_source()) , target(item->get_target()) { }
and it compiles. Yes, copy constructing via create(P item) works as expected with that trick done. My compiler choked on types too much, so didn't look where it actually tries to construct shared_ptr< Item > and feed that to constructor. But I think this is the main cause anyway and explicit keyword is there to help you out. -- Pekka