Следующая программа не может быть скомпилирована с g++ -std=c++11 -Wall -Werror test.cpp -o test.o
:
#include <thread>
using namespace std;
void fill(int n) {
return;
}
int main() {
thread test(fill, 5);
}
test.cpp:9:12: error: no matching constructor for initialization of 'std::__1::thread'
thread test(fill, 5);
^ ~~~~~~~
Это потому, что fill
конфликтует с std::fill
из #include <algorithm>
?Я не включил это, но я полагаю, что <thread>
возможно.
Изменение имени моей функции на fillie
(или что-то еще) позволяет правильно компилировать ее без ссылки pthread
.
Я спрашиваю, потому что это странное сообщение об ошибке компилятора, а также это означает, что конструктор потока не может определить, какую функцию я использую, основываясь на параметрах (что имеет смысл, но требует подтверждения).