在下面的代码中,我希望移入use_count()
的是:shared_ptr
std::async
1
#include <memory>
#include <iostream>
#include <future>
using namespace std;
void fun(shared_ptr<int> sp)
{
cout << "fun: sp.use_count() == " << sp.use_count() <<
" (in gcc 4.6.3, is there a way to make this 1?)\n";
}
int main()
{
auto sp1 = make_shared<int>(5);
auto fut = async(
launch::async,
fun,
move(sp1)
);
}
我的平台使用 gcc 4.6.3,上面的代码给出了这个输出(fun: sp.use_count() == 2
):
fun: sp.use_count() == 2 (in gcc 4.6.3, is there a way to make this 1?)
在coliru.stacked-crooked.com 上,我得到了我想要的行为(fun: sp.use_count() == 1
):
fun: sp.use_count() == 1 (in gcc 4.6.3, is there a way to make this 1?)
我不确定 coliru 使用的是什么编译器,但我猜它比 gcc 4.6.3 更新。
是否有某种方法,一些解决方法,可以获得我想要的行为,而不必从 gcc 4.6.3 升级我的编译器?