On Nov 21, 2007 8:19 PM, Joseph Lisee &lt;<a href="mailto:jlisee@gmail.com">jlisee@gmail.com</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br><br>I am trying to wrap a std::vector&lt;boost::shared_ptr&lt;MyType&gt; &gt;, and Py++ will<br>have none of it. &nbsp;I am using indexing suite version 2, and telling Py++ to right<br>the module as multiple files. &nbsp;I exclude everything at the global namespace
<br>level then I find the namespace_t that corresponds to the &quot;sample&quot; namespace and<br>&nbsp;include all of it. &nbsp;When I attempt to compile the resulting files I get the<br>following error:<br><br>Here is the compile error (with lots of &quot;instantiated here&quot;, before this):
<br>/opt/ram/local/include/boost-1_34_1/boost/python/suite/indexing/value_traits.hpp<br>:56:<br>error: no match for 'operator&lt;' in '((const<br>boost::shared_ptr&lt;samples::A&gt;*)p1)-&gt;boost::shared_ptr&lt;T&gt;::operator* [with T =
<br>samples::A]() &lt; ((const<br>boost::shared_ptr&lt;samples::A&gt;*)p2)-&gt;boost::shared_ptr&lt;T&gt;::operator* [with T =<br>samples::A]()'<br>scons: ***<br>[build/wrappers/samples/generated/vector_less_boost_scope_shared_ptr_less_sample
<br>s_scope_A_grate__comma_std_scope_allocator_less_boost_scope_shared_ptr_less_sam<br>ples_scope_A_grate___grate___grate_.pypp.os]<br>Error 1<br></blockquote><div><br>Py++ is not as smart as it could be :-). The root of the problem is class A, it doesn&#39;t defines operator== and operator&lt;. On the other side indexing suite v2 is smart enough to understand, that container contains pointers, so it will not compare pointers but pointee. 
<br><br>I was not aware to this functionality so didn&#39;t implemented it. <br></div></div><br clear="all">Solution: <br>0. to create patch to Py++ to support this functionality :-)))<br>or<br>1. add comparison operators to the class ( you can use free operators too )
<br>or<br>2. disable methods, which require&nbsp; compare operators:<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f = mb.free_fun( &#39;funcVectorShared&#39; )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = declarations.remove_declarated( f.return_type )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.indexing_suite.disable_method( &#39;sort&#39; )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.indexing_suite.disable_method( &#39;count&#39; )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.indexing_suite.disable_method( &#39;index&#39; )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.indexing_suite.disable_method( &#39;contains&#39; )
<br><br>HTH<br><br>-- <br>Roman Yakovenko<br>C++ Python language binding<br><a href="http://www.language-binding.net/">http://www.language-binding.net/</a>