【发布时间】:2017-02-13 18:49:36
【问题描述】:
我想写一个如下所示的函数:
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 吗?
【问题讨论】:
-
共享指针被设计为被复制——通过引用传递它们通常是个坏主意
-
@UKMonkey 不完全正确。见这里stackoverflow.com/questions/3310737/…
-
@Hayt 很公平 - 正如那里所说,这是选项问题。我就点点头就回去睡觉了。
-
@UKMonkey 这就是为什么我没有说你错了;)在这个话题上并不是非黑即白
标签: c++ templates c++11 shared-ptr