title: make function argument default to surrounding scope
body: <p>Considering the following code/scheme provided below, is it somehow possible to omit the necessity to specify the <code>this</code>?</p>
  
  <p>Is there a way to change the code so that a function/constructor automatically get the surrounding scope, maybe even as a template argument?</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  class AttrBase{
  public:
    virtual int g()const = 0;
  };
  
  class ABase{
  public:
   void reg(const char* name, AttrBase* att){
    std::cout &lt;&lt; name &lt;&lt; ": " &lt;&lt; att-&gt;g()&lt;&lt; std::endl;
   }
  };
  
  
  class Attr : public AttrBase{
  public: 
    Attr(const char* name, int val, ABase* parent /* = this */) // something like this
     :v(val)
    { 
      parent-&gt;reg(name, this);
    };
    int g()const override{return  v;};
    int v;
  };
  
  
  class D:public ABase{
    Attr a{"a", 1, this};
    Attr b{"b", 2, this};
    Attr c{"c", 3};    //&lt; is this somehow possible
  };
  
  int main(){
   D d;
  }
  </code></pre>