使用g ++ - 4.8或g ++ - 4.7,以下cpp代码无法在Ubuntu 13.10上运行。我不知道如何解决这个问题。似乎在较旧的Ubuntu版本(例如13.04)上,下面的代码工作正常。
#include <future>
#include <iostream>
int main(int argc, char** argv)
{
int step = 0;
std::cout << "step " << ++step << std::endl;
std::promise<int> promise;
std::cout << "step " << ++step << std::endl;
try
{
promise.set_value(42);
std::cout << "step " << ++step << std::endl;
}
catch (const std::system_error& ex)
{
std::cout << "Exception: " << ex.what() << "\n";
}
}
g++ promise_test.cpp -o promise_test -pthread -std=c++11 && ./promise_test
step 1
step 2
Exception: Unknown error -1
答案 0 :(得分:2)
bug report。提供的工作是-Wl,--no-as-needed
。请参阅此other question。
答案 1 :(得分:1)
作为替代方案,我们使用-static-libstdc++
标志修复它。