title: Why does "auto" declare strings as const char* instead of std::string?
body: <p>I made a template which adds the data it is given. If I use it like this, the compiler declares in_1 and in_2 as const char *, and the code doesn't compile.</p>
  
  <pre><code>#include &lt;iostream&gt;
  using namespace std;
  template &lt;class T&gt;
  T addstuff(T part_1, T part_2){
      return(part_1+part_2);
  }
  
  int main(int argc, char const *argv[])
  {
      auto in_1="Shut ";
      auto in_2="up.";
      cout&lt;&lt;addstuff(in_1, in_2)&lt;&lt;endl;
      return 0;
  }
  </code></pre>
  
  <p>If I declare in_1 and in_2 std::string, it works like a charm.</p>
  
  <p>Why can't (or doesn't) the compiler declare those strings automatically std::string?</p>