Сегодня я помогаю с последующим неправильным куском коды (func
был объявлено с int
парами, но int*
был принят в качестве второго паров для std::thread
конструктора):Как интерпретировать этот тип C++?
#include <thread>
void func(int);
int* ptr;
void start()
{
std::thread t = std::thread(func, ptr);
}
Когда я попытался скомпилировать это с GCC 5.3.0, напечатанное сообщение об ошибке с следующим типом:
class std::result_of<void (*(int*))(int)>
Теперь интересно, как интерпретировать тип, передаваемый в качестве параметра class std::result_of<>
. Он похож на указатель на функцию (в данном случае void(*)(int)
), но с дополнительным (int*)
после звезды в скобках. Как интерпретировать этот тип?
Если 'func' требует' int', почему вы передаете 'int *'? – NathanOliver
Это была ошибка в коде, который я видел сегодня - вероятно, это была опечатка. –
Аналогичное утверждение дает [это согласно cdecl] (http://cdecl.ridiculousfish.com/?q=void+%28*f%28int*%29%29%28int%29). – ArchbishopOfBanterbury