I was trying to implement a simple matrix class below is its code. Can any one tell me why the the print statement "CALLED CONST" isn't getting executed ? It was supposed to get printed while executing these two statements .

Code:

int x=M(3,4)+5;
cout<<M(3,4)<<endl;

Can someone help ?

Code:

#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
template<class T>
class Matrix
{
private:
unsigned r,c;
vector<T>data;
public:
Matrix(){};
Matrix(unsigned _r,unsigned _c):r(_r),c(_c)
{
data.resize(r*c);
}
T& operator ()(unsigned _r,unsigned _c)
{
puts("CALLED");
return data[c*_r+_c];
}
T operator ()(unsigned _r,unsigned _c) const
{
puts("CALLED CONST");
return data[c*_r+_c];
}
};
int main()
{
Matrix<int>M(5,5);
M(3,4)=19191;
int x=M(3,4)+5;
cout<<M(3,4)<<endl;
return 0;
}