Scope resolution in templated inheritance (possibly what is called mixin)

In that case i think you are making inheritance (using template). So Context::x refers to the x property of the parent. in that case A3, since A3 doesn't overwrite this property, you have the same as A1::x. In the second (gunc) you refer directly to the A1 using "this" thus no problem. In the third one (hunc, which is not used so) that the same is gunc with an implicite reference to self. (but i'm not entirely sure)

Also if you add in the A2 class :

template<typename Context>
class A2 : public Context {
public :
    int x{45678};
};

The first one will print "45678"

If now you add in A3 while keeping A2

template<typename Context>
class A3 : public Context {
public :
    int x{67890};
};

the first output will be 67890