c++ - 用 foo(T) 替换模板函数 foo(T*)

标签 c++ templates pointers method-signature

在我的代码中,我有一个函数:

template<typename T>
void foo (T*); // make sure that 'foo()' is passed only pointers

现在在新的实现中,我还传递了一个智能指针(类似于 shared_ptr<> 。所以我将函数的签名更改为,

template<typename T>
void foo (T);  // pointers or smart-pointers

代码应该可以正常工作。但是,我缺少任何副作用吗?

最佳答案

如果需要,您可以使用 enable_if 仅允许编译 shared_ptr 的指针或实例。这样您就可以恢复之前进行的编译时检查(不过,您的函数实现可能也会这样做)。

关于c++ - 用 foo(T) 替换模板函数 foo(T*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762668/

相关文章:

C++ 模板和内存分配

c++ - clang 与 gcc 运行时差异 : c++ class template built w clang crashes w/o copy constructor, 使用复制构造函数构建 gcc 崩溃

c - 我熟悉 Ruby/DL,但不确定如何使用具有返回参数指针的 C 函数调用

c++ - 当守护线程在后台工作时返回一个函数 (c++)

c++ - Double.parseDouble() 等同于 C++?

c++ - 如何使用C++读取PAC文件

c++ - 在 C++ 中,参数中的引用和指针实际上是如何工作的?他们的固定协议(protocol)/"rule"是什么?

c++ - 具有特定类型作为泛型参数的 STL 容器

c++ - 如何在 C++ 中实现通用 DOM 数据结构?

c - 关于数组和指针的存储