The splitting of host and device code isn’t as simple as you might think. From what I understand, all code is properly parsed by the EDG frontend, and at least in the past it was the case that the host code passed to the host compiler wasn’t simply a verbatim copy of the original source code, but functionally equivalent.
One limitation of that process is that not all gcc extensions may be properly modeled right away.In addition, C++11 support in nvcc may not be 100% yet (not sure). Are you using the latest CUDA tool chain and is gcc 4.9 officially supported by that CUDA version? If the answer to both is “yes”, consider filing a bug report with NVIDIA (reporting form is linked from the CUDA registered developer website).