size_t i{0};
instead of the more common size_t i = 0;
Apparently, braced initialization does not allow narrowing conversion, so you'd get a compiler error for e.g. casting double to float size_t i{0.0};
and a warning for double d = 0.0;
size_t i{d};
which might silently overflow size_t otherwise, so this is a bit safer.In C++, you can get the same effect without the unusual syntax by passing -Wfloat-conversion to gcc/clang, but not sure how to do that with CUDA: