Theme in C ++ on MacOS X

I am trying to run some code using threads in standard C ++ (installed with Xcode) on MacOS X Mavericks. But I get some errors. Here is a minimal working example:

#include <thread>
#include <iostream>

void run (int x) {
    std::cout<<".";
}

int main (int argc, char const *argv[])
{
    std::thread t(run);
}

The error I get is:

minimal.cpp:10:17: error: no matching constructor for initialization of 'std::thread'
std::thread t(run,0);
            ^ ~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:372:9: note: candidate constructor template not viable: requires single argument '__f', but 2 arguments
  were provided
thread::thread(_Fp __f)
    ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:261:5: note: candidate constructor not viable: requires 1 argument, but 2 were provided
thread(const thread&);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/thread:268:5: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
thread() _NOEXCEPT : __t_(0) {}
^
1 error generated.

I was able to track down the problem with my compiler defining _LIBCPP_HAS_NO_VARIADICSwhich is determined due to

#if !(__has_feature(cxx_variadic_templates))
#define _LIBCPP_HAS_NO_VARIADICS
#endif

Any help would be greatly appreciated.

Thank!

+3
source share
1 answer

Thanks pwnyand PeterT, I understood the error.

I just needed to compile with clang++ -std=c++11 minimal.cpp, and it worked like a charm. I also needed t.join()at the end to prevent a runtime error from executing.

+12
source

All Articles