title: Bad array initialization vs assignment copy constructor initialization
body: <pre><code>#include&lt;iostream&gt;
  using namespace std;
  
  class Test
  {
  public:
      Test(){}
      Test(int param):i(param){}
      int i;
  };
  
  int main()
  {
  
      Test obj1(100);
      //Test obj2[100](obj1) ;  - This doesn't work I know
      Test obj3[10] = obj1; //This works
      cout&lt;&lt;obj3[9].i&lt;&lt;endl;
      return 1;
  }
  </code></pre>
  
  <p>In the above code <code>Test obj2[100](obj1);</code> doesn't work but <code>Test obj3[10] = obj1;</code></p>
  
  <p>Why is the former supported but latter.(Both would be calling the copy constructor.)</p>
  
  <p>Is that the former isn't supported because of implementation constrains in compilers?</p>
  
  <p>Edit: I am not using c++11.
  gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)
  Qt 5.3.1</p>
  
  <p>Any conclusion?</p>