We have both cuda::context::current::scoped_override_t and cuda::context::current::detail_scoped_override_t . We mostly use the latter in API function implementations, but - in some places we use the former. Why? Actually, no good reason. The way we construct them, this could trigger additional actions - e.g. primary context pushing; but we don't actually need that to happen. So, let's be uniform again.