Il semble que votre programme nécessite une quantité de mémoire déraisonnable (peut-être à cause d'un trop grand nombre d'extensions de modèles).
Utilisation d'un g++-trunk
récent :
gcc version 4.8.0 20121026 (experimental) [trunk revision 192860] (GCC)
avec les limites zsh suivantes :
% limit
cputime unlimited
filesize unlimited
datasize 15000MB
stacksize 8MB
coredumpsize 400MB
memoryuse 15000MB
maxproc 128166
descriptors 1024
memorylocked 64kB
addressspace 16000MB
maxfilelocks unlimited
sigpending 128166
msgqueue 819200
nice 0
rt_priority 0
rt_time unlimited
(ceci sur Debian/Sid/AMD64 avec processeur Intel i3770K et 16 Go de RAM)
Je reçois :
% time g++-trunk -std=gnu++11 andrew.cc -o andrew
virtual memory exhausted: Cannot allocate memory
g++-trunk -std=gnu++11 andrew.cc -o andrew :
108.25s user 3.28s system 89% cpu 2:03.98 total
Il semble donc que l'expansion des modèles nécessite tellement de mémoire que vous programmez n'est pas raisonnable.
Je ne sais pas si cela sera accepté comme un bogue GCC. L'extension de macro pour les modèles C++ est connue pour être complète de Turing et vous venez de vous heurter au mur. Et le tronc GCC signale une erreur fatale, mais compréhensible.
La morale de l'histoire pourrait être de setrlimit(2) de manière appropriée (avec des limites compatibles avec votre système et votre matériel), peut-être en utilisant limit
zsh intégré ou ulimit
bash intégré.