В указателе this
[class.this] в стандарте С++ указано:
Тип
this
в функции-члене классX
X*
.
то есть. this
не const
. Но почему тогда это
struct M {
M() { this = new M; }
};
дает
error: invalid lvalue in assignment <-- gcc
'=' : left operand must be l-value <-- VC++
'=' : left operand must be l-value <-- clang++
'=' : left operand must be l-value <-- ICC
(source: some online compiler frontends)
Другими словами, this
не const
, но это действительно так!