 D T::*pm);

    template &lt;class D&gt;
    class_&amp; def_readwrite(char const* name, D T::*pm);

    // exposing static data members
    template &lt;class D&gt;
    class_&amp; def_readonly(char const* name, D const&amp; d);
    template &lt;class D&gt;
    class_&amp; def_readwrite(char const* name, D&amp; d);

    // property creation
    template &lt;class Get&gt;
    void add_property(char const* name, Get const&amp; fget, char const* doc=0);
    template &lt;class Get, class Set&gt;
    void add_