在我的代码中,我有一个函数:
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/