title: definition of static const outside the class definition
body: <p>Should we define a <code>static const</code> member outside of the class definition even if it is initialised inside the class?</p>
  
  <pre><code>#include&lt;iostream&gt;  
  using namespace std;  
  class abc  
  {  
      static const int period=5;  
      int arr[period];  
    public:  
      void display()   
      {   
          cout&lt;&lt;period&lt;&lt;endl;  
      }  
  };
  
  const int abc::period;   
  
  int main()   
  {   
      abc a;  
      a.display();   
      return 0;  
  }
  </code></pre>
  
  <p>After commenting <code>// const int abc::period;</code>, both versions of the code run fine on gcc 4.3.4. So I want to ask why do both versions work and which one is standard compliant?</p>