Simplifying wrapper creation
<p>Sometimes I find myself writing really simple wrappers, where a wrappers method directly corresponds to one method of the adapted class, i.e.:</p>

<pre><code>class ToBeAdapted
{
    public:
    void a();
    void b(int arg);
};

class Wrapper
{
   public:
   void newA()
   {
      _adapted.a();
   }

   void newB(int arg)
   {
      _adapted.b(arg);
   }

   private:
   ToBeAdapted _adapted;
};
</code></pre>

<p>Can this (perhaps with the use of template magic and/or dark preprocessor rituals?) be generalized somewhat, simply to save writing time and make it easier to switch the wrapper interface later?</p>

<p>Something like this would be cool:</p>

<pre><code>wrap_around&lt;ToBeAdapted&gt;(ToBeAdapted::a, newA, ToBeAdapted::b,newB) Wrapper; //Creates the same wrapper class as specified above.
</code></pre>
