ct complex
{
    typedef complex_tag tag;
    typedef complex type;
    typedef Re real;
    typedef Im imag;
};

template&lt; typename C &gt; struct real : C::real {};
template&lt; typename C &gt; struct imag : C::imag {};

namespace boost { namespace mpl {

template&lt;&gt;
struct plus_impl&lt; complex_tag,complex_tag &gt;
{
    template&lt; typename N1, typename N2 &gt; struct <a href="./apply.html" class="identifier">apply</a>
        : complex&lt;
              <a href="./plus.html" class="identifier">