|
Boost : |
From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2007-10-24 12:39:03
Peter Dimov schrieb:
> Markus Schöpflin wrote:
>
>> But I still get:
>>
>> cxx: Error: ../../../boost/interprocess/smart_ptr/intrusive_ptr.hpp,
>> line 77: identifier "intrusive_ptr_add_ref" is undefined
>> (undeclared) detected during instantiation of
>> "boost::interprocess::intrusive_ptr<T,
>> VoidPointer>::intrusive_ptr(const
>> boost::interprocess::intrusive_ptr<T,
>> VoidPointer>::pointer &, bool) [with
>> T=n_transitive::X, VoidPointer=VP]" at line 468
>> of "intrusive_ptr_test.cpp" intrusive_ptr_add_ref(p);
>> --------^
>
> This is a point of instantiation error. It's caused by intrusive_ptr_add_ref
> not being defined in one of the associated namespaces of n_transitive::X.
> Looking at the test, it looks like namespace N, the home of N::base, is the
> appropriate place for standard-conforming compilers.
>
> In
>
> http://svn.boost.org/trac/boost/browser/trunk/libs/smart_ptr/test/intrusive_ptr_test.cpp
>
> I've defined intrusive_ptr_* as inline friends of base, but an out of class
> definition in N will also work.
Thank you very much for your help, tomorrow I'll try to move those two
functions to N to see if it works then.
But I still think that this kind of implicit interfacing with client
code should be avoided. Or is this considered OK by others?
Markus
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk