Недопонимание с приватной статической переменной класса
Почему к приватной статической переменной класса я могу получить доступ из глобальной области видимости, а из функции не могу ?
#include <iostream>
class test
{
private:
static int a;
};
int test::a = 5; // ОК
int main()
{
test::a = 10; // ОШИБКА
return 0;
}