3
我想编写一个函数,看起来像这样:演绎的shared_ptr牛逼
template<class T>
void Foo(const std::shared_ptr<const T>& ptr);
,这样我可以这样调用:
std::shared_ptr<int> ptr;
Foo(ptr);
然而,编译器不能推演T,我必须明确:
Foo<int>(ptr);
或与void Foo(const std::shared_ptr<T>& ptr)
超载它。
我可以有一个单一的声明Foo
与const T
,这样T
可以推断?
共享指针被设计为复制 - 它是g通常是一个坏主意,通过引用 – UKMonkey
@UKMonkey来传递它们并不完全正确。看到这里http://stackoverflow.com/questions/3310737/shared-ptr-by-reference-or-by-value – Hayt
@Hayt公平 - 就像那里说的,这是选择的问题。我只是点头回去睡觉。 – UKMonkey