Компилятор CUDA поддерживает классы, наследование, конструкторы, деструкторы для всех устройств, хотя для некоторых эта поддержка не является официальной.
Не все устройства поддерживают (не встроенные) вызовы функций, рекурсию, вызовы виртуальных функций,и даже если это произойдет, это довольно медленная операция, и я настоятельно рекомендую вам избегать этого, если только это не встречается в вашем коде редко.
Если я не ошибаюсь, исключений нет.
Подобный, но немного более широкий вопрос: Каковы реальные языковые конструкции C ++, поддерживаемые кодом устройства CUDA?