 vector_unary_traits&lt;E, scalar_negate&lt;typename E::value_type&gt; &gt;::result_type
    operator - (const vector_expression&lt;E&gt; &amp;e);

    // (conj v) [i] = conj (v [i])
    template&lt;class E&gt;
     typename vector_unary_traits&lt;E, scalar_conj&lt;typename E::value_type&gt; &gt;::result_type
    conj (const vector_expression&lt;E&gt; &amp;e);

    // (real v) [i] = real (v [i])
    template&lt;class E&gt;
     typename vector_unary_traits&lt;E, scalar_real&lt;typename E::value_type&gt; &gt