Недавно я увидел странную С++-функцию: имя введенного класса.
class X { };
X x1;
class X::X x2; // class X::X is equal to X
class X::X::X x3; // ...and so on...
Но я не могу понять, почему эта функция необходима. Существует ли какая-либо практика, требующая этой функции?
И я слышал, что эта функция не существовала в старом С++. Тогда, когда это было введено? С++ 03? С++ 11?