efinição de const estática fora da definição de clas

Devemos definir umstatic const membro fora da definição de classe, mesmo que seja inicializado dentro da class

#include<iostream>  
using namespace std;  
class abc  
{  
    static const int period=5;  
    int arr[period];  
  public:  
    void display()   
    {   
        cout<<period<<endl;  
    }  
};

const int abc::period;   

int main()   
{   
    abc a;  
    a.display();   
    return 0;  
}

Depois de comentar// const int abc::period;, ambas as versões do código funcionam bem no gcc 4.3.4. Então, eu quero perguntar por que as duas versões funcionam e qual é compatível com o padrão?

questionAnswers(1)

yourAnswerToTheQuestion