cppIntegration compiles the c++ code with g++ directly, not through the nvcc translation.
“The CUDA compiler driver NVCC” does seem to indicate that c++ host code should work, but it does not. Sure, some things will pass through properly, but most things do not. For instance, write a class with a private member variable and try compiling in device emulation mode. It doesn’t work because the translated code tries to access the private member from outside the class. Or this nested class problem you have.
It doesn’t say in the current release notes, but in a previous version of CUDA the release notes mentioned that --host-compilation=c++ is considered an alpha feature.