The device::proprties_::max_in_flight_threads_on_device() method currently returns an unsigned long long; but - that is excessive, since that number fits very well within an unsigned. Typical values do not exceed 2048 max resident threads per SM x number of SMs (according to this table in the programming guide.)), which is well under 200 these days . So under 1 << (11 + 8) = 1 << 19, i.e. fitting within 19 bits. An unsigned has 32 bits, and is quite enough.