は増えません。STDはSTDをバインド:: :: shared_ptrのパラメータには、次のコードはuse_count
#include <stdio.h>
#include <memory>
#include <functional>
struct Foo{
Foo():
m_p(std::make_shared<int>())
{}
Foo(const Foo &foo)
{
printf("copy\n");
}
std::shared_ptr<int> m_p;
};
void func(Foo foo)
{}
int main()
{
Foo foo;
std::function<void (void)> f = std::bind(func, foo);
printf("use count : %ld\n", foo.m_p.use_count());
f();
}
が結果だ:Fooのがコピーされているので
copy
copy
use count : 1
copy
を、私はm_pのはuse_countがあるべきと思いました2.
私が打ち鳴らす++
アップルLLVMのバージョン5.0(打ち鳴らす-500.2.79)
を使用していますコードをデバッグモードでコンパイルします。
+1だけSSCCE – Praetorian