<div dir="ltr">Indeed, I was not aware of argument-dependent name lookup. Thanks for sharing!<div><br></div><div>-- Taylor</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 1, 2014 at 8:55 AM, Bradley Lowekamp <span dir="ltr"><<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hello,<div><br></div><div>I am looking over your patch now.</div><div><br></div><div>
I just had a comment on you code here... You have place the operator in the std namespace. Modifying the std namespace is not allowed, and can give warnings or error on some compilers.</div><div><br></div><div>These operators should be in the same namespace as the object. C++ should find the correct operator called from any namespace due to argument-dependent name lookup[1]. This is an advance C++ concept that many people don't know they are using, so I'd thought I'd just share the info.</div>
<div><br></div><div>Brad</div><div><br></div><div><br></div><div>[1] <a href="http://en.wikipedia.org/wiki/Argument-dependent_name_lookup" target="_blank">http://en.wikipedia.org/wiki/Argument-dependent_name_lookup</a></div>
<div><br><div><div><div class="h5"><div>On Mar 21, 2014, at 2:38 PM, Taylor Braun-Jones <<a href="mailto:taylor@braun-jones.org" target="_blank">taylor@braun-jones.org</a>> wrote:</div><br></div></div><blockquote type="cite">
<div><div class="h5"><div dir="ltr">Hello Insight-users,<div><br></div><div>I'm trying to print an itk::LightObject-derived class with something like:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div><font face="courier new, monospace">MyClass::Pointer fooBar = MyClass::New();</font></div>
<div><font face="courier new, monospace">std::cout << *fooBar;</font></div></blockquote><div><br></div><div>But it doesn't seem to be possible because the declaration of operator<< is not exposed in itkLightObject.h (although one is defined in itkLightObject.cxx). I know I can use fooBar->Print(std::cout), but this doesn't work when I'm trying to print to a logging system that was designed to support any object with an overloaded operator<< defined. I am able to get things to work by defining the operator myself:</div>

<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="courier new, monospace">namespace std</font></div><div><div><font face="courier new, monospace">{</font></div>
</div><div><font face="courier new, monospace">ostream &</font></div><div><font face="courier new, monospace">operator<<(ostream & os, const itk::LightObject & o)</font></div><div>
<font face="courier new, monospace">{</font></div><div><font face="courier new, monospace">   o.Print(os);</font></div><div><font face="courier new, monospace">   return os;</font></div><div>
<font face="courier new, monospace">}</font></div><div><font face="courier new, monospace">}</font></div></blockquote><div><div><br></div><div>But is this the intended usage?</div><div><br></div><div>Thanks,</div>
<div>Taylor</div></div></div></div></div><div class="">
_____________________________________<br>Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>Kitware offers ITK Training Courses, for more information visit:<br><a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br><br>Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</div></blockquote></div><br></div></div></blockquote></div><br></div>