如何理解 unique_ptr 的定义?(uniqueptr move)
我发觉要理解这个代码,先得理解 enable_if, 我刚在 enable_if - C++ Reference 找到例子代码;
又发觉要理解这个例子代码方法1里面的typename 关键字,得看 c++类模板template中的typename使用方法-超级棒 - 唯一诺 - 博客园 , 我把typename 删了,就报错:

然后关键是 enable_if 例子代码里 使用方法2 的那种形式,把class 关键字换成同意的typename关键字后就和下图unique_ptr 定义中 constructors 上
template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
形式类似

到目前为止,我一直对 typename = blabla 这种形式很不解,哪里有讲c++ template 语法的讲这个的?
template<typename T>
template<typename T=某个具体类名>
这都好理解,但
template<typename T, typename=blabla>
是啥?
更新:我发现了这样的提示:

然后搜到了 Anonymous template typename/class declarations , 说是定义匿名模板参数,就是为了强调这个参数不被引用。
既然这个匿名模板参数接下来不会被使用,如同
using _DeleterConstraint = enable_if<
__and_<__not_<is_pointer<_Dp>>,
is_default_constructible<_Dp>>::value, _Dp>;
另外,估计也是因为 unique_ptr 里 _DeleterConstrain 定义等号右边已经包含了 typename 关键字,否则如我刚才测试,会出现 typename = typename blabla 这样的奇怪语法:登录 - Gitee.com
以上就是关于《如何理解 unique_ptr 的定义?(uniqueptr move)》的全部内容,本文网址:https://www.7ca.cn/baike/60664.shtml,如对您有帮助可以分享给好友,谢谢。