c++ - 为什么一个模板的模板参数列表和它的模板成员不能合并?
问题描述
我正在阅读“Stroustrup 的 C++ 编程语言”,其中提到它为
请注意,模板的模板参数列表及其模板成员不能合并。
示例如下。
template<class T>
template<class T2> Ptr<T>::operator Ptr<T2> () { return Ptr<T2>(p); }
template<class T, class T2> // error
Ptr<T>::operator Ptr<T2> () { return Ptr<T2>(p); }
我不明白为什么不允许这样做,有人可以解释为什么不允许吗?
解决方案
因为这是两个不同的模板(一个模板化的类和该类的一个模板化的成员函数),而起草规范的人决定有必要在函数定义中保持可见性。
我认为这完全合乎逻辑。如果按照您建议的方式完成,阅读您的代码的程序员可能会认为有一个带有两个参数的模板类,他会错的。
推荐阅读
- java - 如何将本地EngineeringCRS中的坐标转换为WGS84?
- javascript - 过滤数组,如果它有一个特定的键值对
- python-3.x - 从 pandas 数据框中为 pytorch lstm 准备数据的最有效方法
- php - 将 PHP 代码与联系表单 7 字段集成
- computer-vision - 如何在pytorch中实现融合层技术?
- sql - 在连接视图中使用子查询、“Stuff”、“For XML Path”
- flutter - 渲染 streamBuilder 之前的延迟
- email - GKE 上的 GitLab:配置邮件服务器
- python - 如何在Python中的字符串前后添加一个字符?
- json - 将某些对象的字段名称替换为另一个对象的值