title: Pass temporary object with standard constructor
body: <p>I'd like to pass a temporary object(std::string for example) to the constructor of my object:</p>
  
  <pre><code>class MyClass{
    public:
      MyClass(string a):
        a(a)
      {
  
      }
      string a;
  };
  
  int main(int argc, char *argv[]){
    MyClass a(string());
    cout&lt;&lt;a.a&lt;&lt;endl;
    return 0;
  }
  </code></pre>
  
  <p>But I receive this error:</p>
  
  <pre><code>main.cpp: In function ‘int main(int, char**)’:
  main.cpp:28:11: error: request for member ‘a’ in ‘a’, which is of non-class type ‘MyClass(std::string (*)()) {aka MyClass(std::basic_string&lt;char&gt; (*)())}’
  </code></pre>
  
  <p>Everything works ok if I pass anything to the constructor of temporary object(for example string("")). Why?</p>