I read:

Const Member Functions
Const member functions are functions that are not allowed to change any part of the object through the member function's this reference.

I'm not changing anything. Just returning it.

Is this a try to avoid something like the following, then?

... B getter() const { return this.b; }
... void getter2() const { B var = getter(); var.non_const_method(); }

I don't think it's the right way, is it?
getter2() shouldn't be allowed becouse var is a reference to this.b, that's ok. But enforcing constness of return type IMHO is wrong.

Something like:

void main()
{
   B value = myclass.getter();
   b.non_const();
}

seems correct to me. Also this seems correct:

void getter2() /*non-const*/ { getter().non_const_method(); }



On Saturday, 14 December 2013 at 00:01:31 UTC, Adam D. Ruppe wrote:
On Friday, 13 December 2013 at 23:46:14 UTC, Andrea Fontana wrote:
class A
{
   auto getter() const
   {
       return property;
   }

   int property = 0;

Why this method return "const int"?

Inside getter, "this" is const. Due to transitive const, all the members through this are const too.

So inside getter, property is a const int. The auto return value returns the *exact* type, thus const.

Reply via email to