gpt4 book ai didi

c++ - 调用 std::call_once 时出现异常

转载 作者:行者123 更新时间:2023-12-03 21:04:48 25 4
gpt4 key购买 nike

我正在尝试一个简单的例子来检查 std::call_once() 的行为.我尝试了以下代码,但没有做任何有用的工作。

class Test {
private:
std::string obj_name;
std::once_flag init_flag;

public:
Test(std::string name) : obj_name(name) {}

void Init() {
std::cout << "Initialization of " << obj_name << std::endl;
}

void Print() {
try {
std::call_once(init_flag, &Test::Init, this);
} catch (const std::exception& ex) {
std::cout << "Error: " << ex.what() << std::endl;
}
std::cout << "Inside Print() of "<< obj_name << std::endl;
}
};

int main() {
Test b1{"First object"};

b1.Print();
b1.Print();

return 0;
}
我期待看到 Print()调用了两次但在调用 std::call_once() 时出现异常.我得到的输出是 -
Error: Unknown error -1
Inside Print() of First object
Error: Unknown error -1
Inside Print() of First object
编译我用过 -
g++ -g -std=c++11 -Wall -Werror
我的问题是为什么 std::call_once()抛出异常?或者是我的 Print() 出错了方法?如果我改变 Print() 的正文只用一个 return 语句,它不会改变任何东西。

最佳答案

这是一个 GCC/libstdc++ 错误,用 -pthread 编译修理。见:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55394

关于c++ - 调用 std::call_once 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67945806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com