why error happend, I think const auto data_0 should be the same with const Data* data_1, what's the difference bwtween data_0 and data_1?
class Data { public: Data(int val_) : val(val_) { } ~Data() { } void SetVal(int val_) { val = val_; } private: int val; }; Data* GetData(int val) { return new Data(val); } int main () { const auto data_0 = GetData(0); const Data* data_1 = GetData(0); data_0->SetVal(1); // OK data_1->SetVal(1); // error: passing ‘const Data’ as ‘this’ argument discards qualifiers return 0; }
data_0's type isData* const data_0;.