[Insight-developers] itk::VariableLengthVector (and probably other similer classes) allows boundless recursion in operators

Williams, Norman K norman-k-williams at uiowa.edu
Mon Feb 24 14:26:42 EST 2014


Logged as a bug; I'd write a patch if I can figure out how to do the C++ template metaprogramming magic.

I ran into this when I needed to multiply an itk::VectorImage by a scalar constant.  Using the MultiplyImageFilter, the SetConstant (and SetConstant1 and SetConstant2) methods only accept InputImage1PixelType as a constant.

So, because I was deep into abstruse code, my naïve solution was to instantiate an itk::VariableLengthVector as the constant to pass to SetConstant, where each element was the scalar constant.

This is, upon further reflection, absurd, because A * B for vectors doesn't even make sense in matrix math, and there's no operator for pairwise multiplication of vector elements.

But what I found out running my program is that itk::VariableLengthVector will instantiate an operator * with boundless recursion.

There are two problems: not disallowing boundless recursion, and not supporting scalar constants for vector Images in itk::BinaryFunctorImageFilter.

https://issues.itk.org/jira/browse/SIMPLEITK-498



________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged.  If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited.  Please reply to the sender that you have received the message in error, then delete it.  Thank you.
________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-developers/attachments/20140224/c5b62b90/attachment.html>


More information about the Insight-developers mailing list