Если вы вызываете свою функцию создания потока, как это
pthread_create(&thread, NULL, myFcn, reinterpret_cast<void*>(5));
тогда void*
, поступающий внутрь myFcn
, имеет значение int
, которое вы в него положили. Итак, вы знаете, что можете отбросить его обратно, как это
int myData = reinterpret_cast<int>(arg);
, хотя компилятор не знает, что вы когда-либо передаете myFcn
в pthread_create
вместе с целым числом.
Редактировать
Как указывал Мартин, это предполагает, что sizeof(void*)>=sizeof(int)
. Если у вашего кода есть шанс когда-либо перенести его на какую-либо платформу, где это не выполняется, это не сработает.