G++ с большим std:: array freezes

Я написал очень маленькую программу:

#include <array>
#include <tuple>
#include <iostream>

const unsigned int NUM = 500;

void simple()
{
    using namespace std;
    array<tuple<float, float, float>, NUM> vectors;
}

int main(int argc, char **argv) 
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

Я скомпилировал его с помощью g++ -std=c++0x.

Эта версия работает нормально, но если я увеличиваю NUM до 50 000 000, g++ использует 90% CPU, и моя система полностью зависнет.

Я понимаю, что во время выполнения программы может произойти сбой, если недостаточно памяти стека. Но почему компилятор замораживается во время компиляции?

Является ли это ошибкой в ​​g++ или компилятор должен по какой-то причине выделять стек памяти во время компиляции?