C++ std::call_once()在第一次调用中抛出callable之后挂起第二次调用
鉴于这段代码:C++ std::call_once()在第一次调用中抛出callable之后挂起第二次调用,c++,c++11,g++,libstdc++,compiler-bug,C++,C++11,G++,Libstdc++,Compiler Bug,鉴于这段代码: #包括 #包括 空f(布尔多斯罗){ if(doThrow){ STD::CUT< P>这看起来是GNU C++库中的一个bug。 当然这是一个bug,因为如果您尝试使用提供的在线编译器(Coliru),即使是默认的std::call\u once也会挂起:) 错误发生在使用pthreads的g++linux实现中。让我困惑的是,它运行得很好。我检查了libstdc++的版本: 魔盒:GLIBCXX:20130411 科里鲁:GLIBCXX:20161221 因此,我认为这
#包括
#包括
空f(布尔多斯罗){
if(doThrow){
STD::CUT< P>这看起来是GNU C++库中的一个bug。
当然这是一个bug,因为如果您尝试使用提供的在线编译器(Coliru),即使是默认的std::call\u once
也会挂起:)
错误发生在使用pthreads的g++linux实现中。让我困惑的是,它运行得很好。我检查了libstdc++
的版本:
- 魔盒:
GLIBCXX:20130411
- 科里鲁:
GLIBCXX:20161221
因此,我认为这可能是一个libstdc++
错误,或者更准确地说。gcc
和g++
不是一回事!复制的,似乎是一个错误。@Meninx-メネンックス 那又怎样?一个是另一个的一部分。@Meninx-メネンックス 这是关于GCC(如中所示),而不是GCC
@SamVarshavchik我认为您在编译时缺少-pthread
。请参阅GCC。