我正在尝试将指向堆栈变量的指针传递给仅需要boost::shared_ptr
.
根据这个答案,使用boost::make_shared
是要走的路。为了测试这个功能,我写了这个:
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
int main(int argc, char const *argv[])
{
int i = 10;
boost::shared_ptr<int> int_ptr = boost::make_shared(i); // doesn't work
some_function(int_ptr); // this function takes only shared_ptr
return 0;
}
但它会引发以下错误:
error: no matching function for call to ‘make_shared(int&)’
boost::shared_ptr<int> int_ptr = boost::make_shared(i);
^
如果我像这样添加模板参数,它可以工作,但这是什么原因?
boost::shared_ptr<int> int_ptr = boost::make_shared<int>(i);
谢谢!