Рассмотрим этот фрагмент кода:
class shy {
private:
int dont_touch; // Private member
public:
static const shy object;
};
const shy shy::object = []{
shy obj;
obj.dont_touch = 42; // Accessing a private member; compiles; WHY?
return obj;
}();
int main()
{
}
Кажется, это действительно неинтуитивно для меня. Что говорит об этом стандарт С++ 11/14? Является ли это ошибкой GCC/Clang?