为了为给定类型np.all(res1[np.lexsort(res1.T), :] == res3)
创建std::shared_ptr
,其他方法有两种:std::allocate_shared
和std::make_shared
。
主要区别(或者至少是我对这个问题感兴趣的那个)是前者通过给定分配器的副本进行所有内存分配。
从文档中,T
具有以下签名:
std::allocate_shared
另一方面,template< class T, class Alloc, class... Args >
shared_ptr<T> allocate_shared( const Alloc& alloc, Args... args );
被描述为:
std::make_shared
对于他们两人,都说:
args ... - 将构造T实例的参数列表。
从现在开始,一切似乎都是正确的(额外的分配器,参数等) 无论如何,据我所知,他们都应该将参数声明为通用引用而事实并非如此(至少从我在文档中看到的内容)。
换句话说,template< class T, class... Args >
shared_ptr<T> make_shared( Args&&... args );
的签名不应该是以下内容吗?
std::allocate_shared
他们是不同的或者是该网站的错误吗? 如果这是第一个案例,我在推理中错过了什么?