On 10 April 2013 00:07, kenji hara <k.hara...@gmail.com> wrote: > 2013/4/9 Dicebot <m.stras...@gmail.com> > >> On Tuesday, 9 April 2013 at 12:56:04 UTC, Andrei Alexandrescu wrote: >> >>> It is valid code. It is "weak pure". "pure' keyword means both >>>> "strong pure" or "weak pure" depending on function body. Crap. >>>> >>> >>> s/body/signature/ >>> s/Crap/Awesome/ >>> >> >> Not gonna argue latter but former is just wrong. >> >> struct Test >> { >> int a; >> pure int foo1() // strong pure >> { >> return 42; >> } >> >> pure int foo2() // weak pure >> { >> return a++; >> } >> } >> >> Signature is the same for both functions. >> > > Both have weak pure. Purity is always calculated only from the function > signature. > If you make member function "strong pure", _at least_ it should be > qualified with "immutable". > > pure int foo3() immutable // strong pure > { > return 10; > } > > Kenji Hara >
What is an immutable function? Why is const not sufficient?