【发布时间】:2016-11-27 05:43:10
【问题描述】:
This page 显示std::shared_ptr 具有模板化和非模板化版本的复制/移动构造函数(页面上的 (9) 和 (10))。同样,它也有两个版本的复制/移动赋值运算符(参见here)。
为什么我们需要非模板版本?单独的模板版本不够吗?
【问题讨论】:
-
模板永远不是(!)复制/移动构造函数
-
@DieterLücking 如果我们删除(非模板化的)复制/移动构造函数,什么样的代码会中断?
-
...如果没有非模板构造函数,可能会生成默认构造函数(如果可能的话)。
-
@DieterLücking 但是,它可以“隐藏”复制/移动构造函数(例如,从非常量左值复制时)。
标签: c++ templates c++11 shared-ptr