Kent,
I bet if you tried a ScalarImage as a template argument it would work as
expected.
If disallow the case where:
template< typename TValueType, typename T >
inline
VariableLengthVector< TValueType >
operator*(const T & scalar, const VariableLengthVector< TValueType > & v)
{ return v * scalar; }
T is also of type variable length vector. Perhaps this would work:
template< typename TValueType, typename TValueType2 >
inline
VariableLengthVector< TValueType >
operator*(const VariableLengthVector< TValueType2 > & v, const
VariableLengthVector< TValueType > & v); // Intentionally not implemented
On Feb 24, 2014, at 2:26 PM, Williams, Norman K <[email protected]>
wrote:
> 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.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers