The constructor for an InputOutputArray takes a const cv::Mat& reference in the constructor. I'm wondering why this call doesn't fail:
void this_shouldnt_compile(const cv::Mat& mat) { //const, so the header should not be modifiable (I realize the data is) putText(mat, "some text", cvPoint(0,10), FONT_HERSHEY_COMPLEX_SMALL, 0.8, cvScalar({0,255,0}), 1, CV_AA); }