Zdá se, že váš program vyžaduje nepřiměřené množství paměti (možná kvůli příliš velkému počtu rozšíření šablon).
Použití aktuálního g++-trunk
:
gcc version 4.8.0 20121026 (experimental) [trunk revision 192860] (GCC)
s následujícími limity 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
(toto na Debian/Sid/AMD64 s procesorem intel i3770K a 16Gb RAM)
Dostávám:
% 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
Zdá se tedy, že rozšíření šablony vyžaduje tolik paměti, že programování není rozumné.
Nejsem si jistý, zda to bude přijato jako chyba GCC. Je známo, že rozšíření maker pro šablony C++ je dokončeno Turingem a vy prostě narazíte na zeď. A kmen GCC skutečně hlásí fatální, ale pochopitelnou chybu.
Morálka příběhu by mohla spočívat v tom, že vhodně setrlimit(2) (s limity kompatibilními s vaším systémem a hardwarem), možná pomocí limit
zsh vestavěný nebo ulimit
vestavěný bash.