Why is it necessary to explicitly call Myclass::operator string() with std::string::operator+()?
<p>Consider the code below. I don't understand why my GCC compiler does not try to implicitly use Myclass::operator string(), although Myclass::operator string() is defined:</p>

<pre><code>#include &lt;string&gt;

using namespace std;

struct T {
};

T operator+(const T&amp; a, const T&amp;b) { }

struct Myclass {
    operator string() const { }
    operator T() const { }
};

int main() {
    T a;
    string b;
    Myclass c;
    c + a;  // OK
    c.operator  string() + b; // OK
    c + b; // Not OK
    /* The above line does not compile, although in &lt;string&gt; I see:
    basic_string&lt;_CharT, _Traits, _Alloc&gt;
    operator+(const basic_string&lt;_CharT, _Traits, _Alloc&gt;&amp; __lhs,
          const basic_string&lt;_CharT, _Traits, _Alloc&gt;&amp; __rhs)
     */
}
</code></pre>
