template<typename _Tp, typename Functor> inline
void Mat::forEach(const Functor& operation) const {
// call as not const
- (const_cast<Mat*>(this))->forEach<const _Tp>(operation);
+ (const_cast<Mat*>(this))->forEach<_Tp>(operation);
}
template<typename _Tp> inline
}
};
+template<typename Pixel>
+struct EmptyFunctor
+{
+ void operator()(const Pixel &, const int *) const {}
+};
+
+
void Core_ArrayOpTest::run( int /* start_from */)
{
int errcount = 0;
}
}
+ // test const cv::Mat::forEach
+ {
+ const Mat a(10, 10, CV_32SC3);
+ Mat b(10, 10, CV_32SC3);
+ const Mat & c = b;
+ a.forEach<Point3i>(EmptyFunctor<Point3i>());
+ b.forEach<Point3i>(EmptyFunctor<const Point3i>());
+ c.forEach<Point3i>(EmptyFunctor<Point3i>());
+ // tests compilation, no runtime check is needed
+ }
+
RNG rng;
const int MAX_DIM = 5, MAX_DIM_SZ = 10;
// sparse matrix operations