title: Ambiguous overload for 'operator='
body: <p>I am trying to compile some <code>C++</code> code from the <code>Festival</code> project. When I compile <code>Festival</code>, I get the following errors:</p>
  
  <pre><code>Making in directory ./src ...
  Making in directory src/arch ...
  Making in directory src/arch/festival ...
  Making in directory src/modules ...
  Making in directory src/modules/rxp ...
  Making in directory src/modules/clunits ...
  Making in directory src/modules/clustergen ...
  Making in directory src/modules/MultiSyn ...
  Making in directory src/modules/MultiSyn/inst_tmpl ...
  Making in directory src/modules/hts_engine ...
  Making in directory src/modules/diphone ...
  gcc -c -g -I../include -I../../../src/include -I../../../../speech_tools/include di_io.cc
  di_io.cc: In function ‘void load_index(DIPHONE_DATABASE*)’:
  di_io.cc:111: error: ambiguous overload for ‘operator=’ in ‘line = EST_TokenStream::get_upto_eoln()()’
  ../../../../speech_tools/include/EST_String.h:477: note: candidates are: EST_String&amp; EST_String::operator=(const char*) &lt;near match&gt;
  ../../../../speech_tools/include/EST_String.h:479: note:                 EST_String&amp; EST_String::operator=(char) &lt;near match&gt;
  ../../../../speech_tools/include/EST_String.h:481: note:                 EST_String&amp; EST_String::operator=(const EST_String&amp;) &lt;near match&gt;
  make[3]: *** [di_io.o] Error 1
  make[2]: *** [diphone] Error 2
  make[1]: *** [modules] Error 2
  make: *** [src] Error 2  
  </code></pre>
  
  <p>The function where the error occurs:  </p>
  
  <pre><code>static void load_index(DIPHONE_DATABASE *database)
  {
      EST_TokenStream ts;
      int i;
      EST_String line;
  
      if (ts.open(database-&gt;index_file) == -1)
      {
      cerr &lt;&lt; "Diphone: Can't open file " &lt;&lt; database-&gt;index_file &lt;&lt; endl;
      festival_error();
      }
  
      for (i=0; (!ts.eof()) &amp;&amp; (i&lt;database-&gt;ndiphs);)
      {
      line = ts.get_upto_eoln();   //this is di_io.cc:111
      if ((line.length() &gt; 0) &amp;&amp; (line[0] != ';'))
      {
          EST_TokenStream ls;
          ls.open_string(line);
          database-&gt;indx[i]-&gt;diph = wstrdup(ls.get().string());
          database-&gt;indx[i]-&gt;file = wstrdup(ls.get().string());
          database-&gt;indx[i]-&gt;beg = atof(ls.get().string());
          database-&gt;indx[i]-&gt;mid = atof(ls.get().string());
          database-&gt;indx[i]-&gt;end = atof(ls.get().string());
          ls.close();
          i++;
      }
      }
  
      if (i == database-&gt;ndiphs)
      {
      cerr &lt;&lt; "Diphone: too many diphones in DB" &lt;&lt; endl;
      festival_error();
      }
  
      database-&gt;nindex = i;
      database-&gt;ndiphs = i;
  
      ts.close();
  }
  </code></pre>
  
  <p>How can I get rid of the above error?</p>