Sembra che il tuo programma richieda una quantità irragionevole di memoria (forse a causa delle troppe espansioni dei template).
Utilizzando un g++-trunk
recente :
gcc version 4.8.0 20121026 (experimental) [trunk revision 192860] (GCC)
con i seguenti limiti zsh:
% 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
(questo su Debian/Sid/AMD64 con processore Intel i3770K e 16 Gb di RAM)
Sto ricevendo:
% 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
Quindi sembra che l'espansione del template richieda così tanta memoria che la tua programmazione non è ragionevole.
Non sono sicuro che questo verrà accettato come bug GCC. L'espansione macro per i modelli C++ è nota per essere Turing completa e hai appena colpito il muro. E il trunk GCC segnala un errore fatale, ma comprensibile.
La morale della favola potrebbe essere setrlimit(2) in modo appropriato (con limiti compatibili con il tuo sistema e hardware), magari usando limit
zsh integrato o ulimit
bash integrato.