mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 22:44:02 +08:00
Merge pull request #9577 from mshabunin:const-foreach
This commit is contained in:
commit
4970a56341
@ -1214,7 +1214,7 @@ void Mat::forEach(const Functor& operation) {
|
||||
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
|
||||
|
@ -671,6 +671,13 @@ struct InitializerFunctor5D{
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Pixel>
|
||||
struct EmptyFunctor
|
||||
{
|
||||
void operator()(const Pixel &, const int *) const {}
|
||||
};
|
||||
|
||||
|
||||
void Core_ArrayOpTest::run( int /* start_from */)
|
||||
{
|
||||
int errcount = 0;
|
||||
@ -799,6 +806,17 @@ void Core_ArrayOpTest::run( int /* start_from */)
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
|
Loading…
Reference in New Issue
Block a user