return (const _Tp*)p;
}
+template<int n> inline
+uchar* Mat::ptr(const Vec<int, n>& idx)
+{
+ return Mat::ptr(idx.val);
+}
+
+template<int n> inline
+const uchar* Mat::ptr(const Vec<int, n>& idx) const
+{
+ return Mat::ptr(idx.val);
+}
+
+template<typename _Tp, int n> inline
+_Tp* Mat::ptr(const Vec<int, n>& idx)
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ return Mat::ptr<_Tp>(idx.val);
+}
+
+template<typename _Tp, int n> inline
+const _Tp* Mat::ptr(const Vec<int, n>& idx) const
+{
+ CV_DbgAssert( elemSize() == sizeof(_Tp) );
+ return Mat::ptr<_Tp>(idx.val);
+}
+
+
template<typename _Tp> inline
_Tp& Mat::at(int i0, int i1)
{
}
+TEST(Mat, ptrVecni_20044)
+{
+ Mat_<int> m(3,4); m << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
+ Vec2i idx(1,1);
+
+ uchar *u = m.ptr(idx);
+ EXPECT_EQ(int(6), *(int*)(u));
+ const uchar *cu = m.ptr(idx);
+ EXPECT_EQ(int(6), *(int*)(cu));
+
+ int *i = m.ptr<int>(idx);
+ EXPECT_EQ(int(6), *(i));
+ const int *ci = m.ptr<int>(idx);
+ EXPECT_EQ(int(6), *(ci));
+}
+
}} // namespace