It's not a compiler bug, it fails by design. I asked this on stack overflow and got some pretty comprehensive answers. I'll try to fix it later today when I come back from work.
On a warm Saturday afternoon, I'll have to review what you changed, to see if I can understand these complex new c++11 changes.