Description: multi_convolution: Fix for incorrect template parameter type when using unsigned int N for TinyVector SIZE
Author: Jaime Ivan Cervantes
Origin: https://github.com/ukoethe/vigra/commit/81958d3
Bug: https://github.com/ukoethe/vigra/issues/414
Bug-Debian: https://bugs.debian.org/897800

diff --git a/include/vigra/multi_convolution.hxx b/include/vigra/multi_convolution.hxx
index 1b5efa740..ec89bcf58 100644
--- a/include/vigra/multi_convolution.hxx
+++ b/include/vigra/multi_convolution.hxx
@@ -1423,7 +1423,7 @@ gaussianSmoothMultiArray(MultiArrayView<N, T1, S1> const & source,
                   class T2, class S2>
         void
         gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                   MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                   MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                    double sigma,
                                    ConvolutionOptions<N> opt = ConvolutionOptions<N>());
 
@@ -1432,7 +1432,7 @@ gaussianSmoothMultiArray(MultiArrayView<N, T1, S1> const & source,
                                   class T2, class S2>
         void
         gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                   MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                   MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                    ConvolutionOptions<N> opt);
 
         // likewise, but execute algorithm in parallel
@@ -1440,7 +1440,7 @@ gaussianSmoothMultiArray(MultiArrayView<N, T1, S1> const & source,
                                   class T2, class S2>
         void
         gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                   MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                   MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                    BlockwiseConvolutionOptions<N> opt);
     }
     \endcode
@@ -1587,7 +1587,7 @@ template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void
 gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                           MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                           MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                            ConvolutionOptions<N> opt )
 {
     if(opt.to_point != typename MultiArrayShape<N>::type())
@@ -1611,7 +1611,7 @@ template <unsigned int N, class T1, class S1,
           class T2, class S2>
 inline void
 gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                           MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                           MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                            double sigma,
                            ConvolutionOptions<N> opt = ConvolutionOptions<N>())
 {
@@ -1650,7 +1650,7 @@ gaussianGradientMagnitudeImpl(MultiArrayView<N+1, T1, S1> const & src,
     dest.init(0.0);
 
     typedef typename NumericTraits<T1>::RealPromote TmpType;
-    MultiArray<N, TinyVector<TmpType, N> > grad(dest.shape());
+    MultiArray<N, TinyVector<TmpType, int(N)> > grad(dest.shape());
 
     using namespace multi_math;
 
@@ -1764,7 +1764,7 @@ gaussianGradientMagnitude(MultiArrayView<N+1, Multiband<T1>, S1> const & src,
                                   class T2, class S2>
         void
         symmetricGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                    MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                    MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                     ConvolutionOptions<N> opt = ConvolutionOptions<N>());
 
         // execute algorithm in parallel
@@ -1772,7 +1772,7 @@ gaussianGradientMagnitude(MultiArrayView<N+1, Multiband<T1>, S1> const & src,
                                   class T2, class S2>
         void
         symmetricGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                    MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                    MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                     BlockwiseConvolutionOptions<N> opt);
     }
     \endcode
@@ -1888,7 +1888,7 @@ template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void
 symmetricGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                            MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                            MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                             ConvolutionOptions<N> opt = ConvolutionOptions<N>())
 {
     if(opt.to_point != typename MultiArrayShape<N>::type())
@@ -2199,14 +2199,14 @@ laplacianOfGaussianMultiArray(MultiArrayView<N, T1, S1> const & source,
         template <unsigned int N, class T1, class S1,
                                   class T2, class S2>
         void
-        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                                      MultiArrayView<N, T2, S2> divergence,
                                      ConvolutionOptions<N> const & opt);
 
         template <unsigned int N, class T1, class S1,
                                   class T2, class S2>
         void
-        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                                      MultiArrayView<N, T2, S2> divergence,
                                      double sigma,
                                      ConvolutionOptions<N> opt = ConvolutionOptions<N>());
@@ -2216,7 +2216,7 @@ laplacianOfGaussianMultiArray(MultiArrayView<N, T1, S1> const & source,
         template <unsigned int N, class T1, class S1,
                                   class T2, class S2>
         void
-        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                                      MultiArrayView<N, T2, S2> divergence,
                                      BlockwiseConvolutionOptions<N> const & opt);
     }
@@ -2309,7 +2309,7 @@ gaussianDivergenceMultiArray(Iterator vectorField, Iterator vectorFieldEnd,
 template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void
-gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                              MultiArrayView<N, T2, S2> divergence,
                              ConvolutionOptions<N> const & opt)
 {
@@ -2323,7 +2323,7 @@ gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & ve
 template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void
-gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                              MultiArrayView<N, T2, S2> divergence,
                              double sigma,
                              ConvolutionOptions<N> opt = ConvolutionOptions<N>())
