gpt4 book ai didi

c++ - 在函数声明中推导 shared_ptr T

转载 作者:太空狗 更新时间:2023-10-29 19:51:36 25 4
gpt4 key购买 nike

我想编写一个如下所示的函数:

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) 重载它.

我可以有一个单一的声明Fooconst T这样T可以推导出来吗?

最佳答案

你的问题是ptr声明为 std::shared_ptr<int>同时foo需要 std::shared_ptr<const int> .要么你声明 ptr使用 const 限定符:

std::shared_ptr<const int> ptr;
Foo(ptr);

或者您从 foo 的声明中删除 const 限定符:

template<class T>
void Foo(const shared_ptr<T>& ptr);

或者,除非你真的需要知道 foo你正在处理一个 shared_ptr , 使 foo真正通用的:

template<class T>
void Foo(const T& ptr);

关于c++ - 在函数声明中推导 shared_ptr T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39872033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com