title: Default copy constructor and assignment for class with move constructor and assignment
body: <p>Let's say I have this class:</p>
  
  <pre><code>class Test
  {
  public:
      Test();
  };
  </code></pre>
  
  <p>AFAIK, compiler provides default copy constructor and assignment operators, which assign every member of other instance to the current instance. Now I add move constructor and assignment:</p>
  
  <pre><code>class Test
  {
  public:
      Test();
      Test(Test&amp;&amp; other);
      Test&amp; operator=(Test&amp;&amp; other);
  };
  </code></pre>
  
  <p>Does this class still contain compiler-generated copy constructor and assignment operators, or I need to implement them?</p>
  
  <p><strong>Edit</strong>. This is my test:</p>
  
  <pre><code>class Test
  {
  public:
      Test(){}
  
      Test(Test&amp;&amp; other){}
      Test&amp; operator=(Test&amp;&amp; other)
      {
          return *this;
      }
  
      int n;
      char str[STR_SIZE];
  };
  
  int main()
  {
      Test t1;
      t1.n = 2;
      strcpy(t1.str, "12345");
  
      Test t2(t1);
  
      Test t3;
      t3 = t1;
  
      cout &lt;&lt; t2.n &lt;&lt; " " &lt;&lt; t2.str &lt;&lt; " " &lt;&lt; t3.n &lt;&lt; " " &lt;&lt; t3.str &lt;&lt; endl;
  
      return 0;
  }
  </code></pre>
  
  <p>Prints <code>2 12345 2 12345</code>. Compiler: VC++ 2010. According to this test, copy constructor and assignment are still here. Is this standard behavior, can I be sure that this will work on every C++ compiler?</p>